topical media & game development

talk show tell print

student-ar-org-papervision3d-core-render-material-MaterialManager.ax

student-ar-org-papervision3d-core-render-material-MaterialManager.ax [swf] [flash] flex


  package org.papervision3d.core.render.material
  {
          import flash.utils.Dictionary;
          
          import org.papervision3d.core.proto.MaterialObject3D;
          import org.papervision3d.core.render.data.RenderSessionData;
          
          
@Author Ralph Hauwert <code>@ax-student-ar-org-papervision3d-core-render-material-MaterialManager</code> (used internally) is a singleton that tracks all materials. Each time a material is created, the <code>@ax-student-ar-org-papervision3d-core-render-material-MaterialManager</code> registers the material for access in the render engine.

  
          public class @ax-student-ar-org-papervision3d-core-render-material-MaterialManager
          {
                  private static var instance:@ax-student-ar-org-papervision3d-core-render-material-MaterialManager;
                  private var materials:Dictionary;
          
                  
@ax-student-ar-org-papervision3d-core-render-material-MaterialManager singleton constructor

  
                  public function @ax-student-ar-org-papervision3d-core-render-material-MaterialManager():void
                  {
                          if(instance){
                                  throw new Error("Only 1 instance of materialmanager allowed");
                          }
                          init();
                  }
                  
                  
@private

  
                  private function init():void
                  {
                          materials = new Dictionary(true);
                  }
                  
                  
@private

  
                  private function _registerMaterial(material:MaterialObject3D):void
                  {
                          materials[material] = material;
                  
                  }
                  
                  
@private

  
                  private function _unRegisterMaterial(material:MaterialObject3D):void
                  {
                          delete materials[material];
                  }
                  
                  
Allows for materials that animate or change (e.g., MovieMaterial) to be updated prior to the render
parameter: renderSessionData the data used in updating the material

  
                  public function updateMaterialsBeforeRender(renderSessionData:RenderSessionData):void
                  {
                          var um:IUpdateBeforeMaterial;
                          var m:MaterialObject3D;
                          for each(m in materials){
                                  if(m is IUpdateBeforeMaterial){
                                          um = m as IUpdateBeforeMaterial;
                                          um.updateBeforeRender(renderSessionData);
                                  }
                          }
                  }
                  
                  
Allows for materials that animate or change (e.g., MovieMaterial) to be updated after the render
parameter: renderSessionData the data used in updating the material

  
                  public function updateMaterialsAfterRender(renderSessionData:RenderSessionData):void
                  {
                          var um:IUpdateAfterMaterial;
                          var m:MaterialObject3D;
                          for each(m in materials){
                                  if(m is IUpdateAfterMaterial){
                                          um = m as IUpdateAfterMaterial;
                                          um.updateAfterRender(renderSessionData);
                                  }
                          }
                  }
                  
                  
Registers a material

  
                  public static function registerMaterial(material:MaterialObject3D):void
                  {
                          getInstance()._registerMaterial(material);
                  }
                  
                  
Unregisters a material

  
                  public static function unRegisterMaterial(material:MaterialObject3D):void
                  {
                          getInstance()._unRegisterMaterial(material);
                  }
                  
                  
Returns a singleton instance of the <code>@ax-student-ar-org-papervision3d-core-render-material-MaterialManager</code>

  
                  public static function getInstance():@ax-student-ar-org-papervision3d-core-render-material-MaterialManager
                  {
                          if(!instance){
                                  instance = new @ax-student-ar-org-papervision3d-core-render-material-MaterialManager;
                          }
                          return instance;
                  }
                  
          }
  }


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.