// void Update() // { // } void LateUpdate() { float TimeDelta = Time.deltaTime * RateSpeed; if((null == DataEffect) || (null == DataCellMap)) { return; } /* DrawManager Get */ if((null == InstanceManagerDraw) && (null == InstanceRootParent)) { /* MEMO: "Instance" and "Effect" cannot have Manager-Draw. */ InstanceManagerDraw = Library_SpriteStudio.Utility.Parts.ManagerDrawGetParent(gameObject); } /* DrawParts-Cluster Create */ LateUpdateBase(); /* Animation Play-Check */ if(0 == (Status & FlagBitStatus.PLAYING)) { /* Not-Playing */ return; } bool FlagPause = (0 != (Status & FlagBitStatus.PAUSING)) ? true : false; /* Random Create */ if(null == InstanceRandom) { InstanceRandom = new RandomGenerator(); SeedRandom = (uint)SeedRandomInitialize; InstanceRandom.InitSeed(SeedRandom); } /* Particle&Emitter Control WorkArea Create */ if(null == PoolParts) { PoolBootUpParts(); } if(0 != (Status & FlagBitStatus.PLAYING_START)) { /* Root's Emitter Generate */ PoolParts.PartsGenerate(null, this); } /* Update Emitter & Particle */ ChainClusterDrawParts.ChainCleanUp(); /* DrawParts-Cluster-Chain Clear */ TimeElapsed += TimeDelta; int Index = 0; int CountExecuteParts = 0; Library_SpriteStudio.Control.PartsEffect InstanceParts = null; for( ; ; ) { InstanceParts = PoolParts.InstancePeekRunning(ref Index); if(null == InstanceParts) { break; } if(false == InstanceParts.Update(ref CountExecuteParts, TimeDelta, PoolParts, FlagPause)) { /* Duration is over. (Delete) */ PoolParts.InstanceSetWaiting(ref Index); } } Status &= ~FlagBitStatus.PLAYING_START; /* End Check */ if(0 >= CountExecuteParts) { /* All Emitter & Particle is waiting ... Play-End */ if(null != FunctionPlayEnd) { if(false == FunctionPlayEnd(this)) { /* Destroy (Request) */ /* MEMO: Destroy at end of "LateUpdate" */ Status |= FlagBitStatus.REQUEST_DESTROY; } } AnimationStop(); } else { /* Set to DrawManager */ /* MEMO: Test */ if(((null != InstanceManagerDraw) && (null != DrawObject)) && (false == FlagHideForce)) { /* Set To Draw-Manager */ InstanceManagerDraw.DrawSet(this); } } /* Checking Destroy-Request */ if(0 != (Status & FlagBitStatus.REQUEST_DESTROY)) { Object.Destroy(gameObject); } }
// void Update() // { // } void LateUpdate() { float TimeDelta = Time.deltaTime * RateSpeed; if ((null == DataEffect) || (null == DataCellMap)) { return; } /* DrawManager Get */ if ((null == InstanceManagerDraw) && (null == InstanceRootParent)) { /* MEMO: "Instance" and "Effect" cannot have Manager-Draw. */ InstanceManagerDraw = Library_SpriteStudio.Utility.Parts.ManagerDrawGetParent(gameObject); } /* DrawParts-Cluster Create */ LateUpdateBase(); /* Animation Play-Check */ if (0 == (Status & FlagBitStatus.PLAYING)) { /* Not-Playing */ return; } bool FlagPause = (0 != (Status & FlagBitStatus.PAUSING)) ? true : false; /* Random Create */ if (null == InstanceRandom) { InstanceRandom = new RandomGenerator(); SeedRandom = (uint)SeedRandomInitialize; InstanceRandom.InitSeed(SeedRandom); } /* Particle&Emitter Control WorkArea Create */ if (null == PoolParts) { PoolBootUpParts(); } if (0 != (Status & FlagBitStatus.PLAYING_START)) { /* Root's Emitter Generate */ PoolParts.PartsGenerate(null, this); } /* Update Emitter & Particle */ ChainClusterDrawParts.ChainCleanUp(); /* DrawParts-Cluster-Chain Clear */ TimeElapsed += TimeDelta; int Index = 0; int CountExecuteParts = 0; Library_SpriteStudio.Control.PartsEffect InstanceParts = null; for ( ; ;) { InstanceParts = PoolParts.InstancePeekRunning(ref Index); if (null == InstanceParts) { break; } if (false == InstanceParts.Update(ref CountExecuteParts, TimeDelta, PoolParts, FlagPause)) { /* Duration is over. (Delete) */ PoolParts.InstanceSetWaiting(ref Index); } } Status &= ~FlagBitStatus.PLAYING_START; /* End Check */ if (0 >= CountExecuteParts) { /* All Emitter & Particle is waiting ... Play-End */ if (null != FunctionPlayEnd) { if (false == FunctionPlayEnd(this)) { /* Destroy (Request) */ /* MEMO: Destroy at end of "LateUpdate" */ Status |= FlagBitStatus.REQUEST_DESTROY; } } AnimationStop(); } else { /* Set to DrawManager */ /* MEMO: Test */ if (((null != InstanceManagerDraw) && (null != DrawObject)) && (false == FlagHideForce)) { /* Set To Draw-Manager */ InstanceManagerDraw.DrawSet(this); } } /* Checking Destroy-Request */ if (0 != (Status & FlagBitStatus.REQUEST_DESTROY)) { Object.Destroy(gameObject); } }