topical media & game development
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.