package org.papervision3d.materials.special { import flash.utils.Dictionary; import flash.utils.getDefinitionByName; import org.papervision3d.core.log.PaperLogger; import org.papervision3d.core.render.draw.IParticleDrawer; /** * @author Seb Lee-Delisle * * version 0.1 of MovieAssetParticleMaterial that uses a reference to a * library symbol to create a particle. * */ public class MovieAssetParticleMaterial extends MovieParticleMaterial implements IParticleDrawer { // TODO create object to store bitmap and spriterectdata (and USECOUNT!!!) for each type of bitmap public static var movieLibrary : Dictionary = new Dictionary(true); private var movieAsset : Class; //public var allowAutoResize:Boolean = true; // FOR FUTURE USE! // __________________________________________________ NEW /** * A Particle material that is made from a single DisplayObject (Sprite, MovieClip, etc) or a * Class that extends a DisplayObject (ie a library symbol) * * v0.1 - TODO implement reusable assets in the same way as MovieAssetMaterial * * @param linkageID The Library symbol to make the material out of. * @param transparent [optional] - whether the image is transparent or not * @param animated [optional] If true, then the bitmap updates every frame. * @param forceMipMap If true, we'll make a bitmap that scales up or down to * the nearest mip-map-able size. Thus making your particles * appear smoother. * */ public function MovieAssetParticleMaterial(classRef:*, transparent:Boolean = true, animated : Boolean = false) { if(classRef is String) movieAsset = Class(getDefinitionByName(classRef as String)); else if(classRef is Class) movieAsset = classRef as Class; else PaperLogger.error("MovieAssetParticleMaterial classRef requires string or class, instead got "+(typeof classRef)); movie = new movieAsset(); if(!movie) PaperLogger.error("MovieAssetParticleMaterial : invalid classRef - cannot instantiate clip"); super(movie, transparent, animated); } override public function destroy() :void { super.destroy(); // not sure if we have to do anything extra here? } } }