void ApplyRotationAndScale(ref EffekseerHandle handle) { handle.SetRotation(transform.rotation); if (EmitterScale == EffekseerEmitterScale.Local) { handle.SetScale(transform.localScale); } else if (EmitterScale == EffekseerEmitterScale.Global) { handle.SetScale(transform.lossyScale); } }
// Called each frame while the state is set to Play public override void PrepareFrame(Playable playable, FrameData info) { double time = playable.GetTime(); double elapsedTime = time - this.lastFrameTime; this.lastFrameTime = time; if (!Application.isPlaying) { if (elapsedTime < 0.0) { StopEffect(); PlayEffect(); elapsedTime = time; } } if (!handle.enabled) { return; } if (emitterObject) { handle.SetLocation(emitterObject.transform.position); handle.SetRotation(emitterObject.transform.rotation); handle.SetScale(emitterObject.transform.localScale); } if (targetObject) { handle.SetTargetLocation(targetObject.transform.position); } if (!Application.isPlaying) { double frames = elapsedTime * 60.0f; for (int i = 0; i < frames; i++) { handle.UpdateHandle(1.0f); } } }