bool IsPlaying(AsEffectInfo data) { if(m_bEnalbe == false) return false; bool bIsPlaying = false; for (int i = 0; i < data.m_ParticleSystem.Length; ++i) { if(data.m_ParticleSystem[i]) { if(data.m_ParticleSystem[i].isPlaying) bIsPlaying = true; } } for (int i = 0; i < data.m_Animation.Length; ++i) { if(data.m_Animation[i] != null) { if(data.m_Animation[i].isPlaying) bIsPlaying = true; } } for (int i = 0; i < data.m_Emitter.Length; ++i) { if(data.m_Emitter[i] && data.m_Emitter[i].particleCount != 0 ) bIsPlaying = true; } if(data.m_AsMeshEffect != null && data.m_AsMeshEffect.m_Play) bIsPlaying = true; return bIsPlaying; }
void PlayLooping(AsEffectInfo data) { if(m_bEnalbe == false) return; for (int i = 0; i < data.m_ParticleSystem.Length; ++i) { if(data.m_ParticleSystem[i]) { if(!data.m_ParticleSystem[i].isPlaying) data.m_ParticleSystem[i].Play(); } } for (int i = 0; i < data.m_Emitter.Length; ++i) { if(data.m_Emitter[i] && data.m_Emitter[i].particleCount == 0 ) data.m_Emitter[i].Emit(); } if(data.m_AsMeshEffect != null && data.m_AsMeshEffect.m_Play) data.m_AsMeshEffect.m_Play = true; }
void Play(AsEffectInfo data) { if(m_bEnalbe == false) return; data.m_effectInstance.SetActiveRecursively(true); for (int i = 0; i < data.m_ParticleSystem.Length; ++i) { data.m_ParticleSystem[i].Play(); data.m_ParticleSystem[i].playbackSpeed = m_ParentObject.PlaybackSpeed ; } for (int i = 0; i < data.m_Animation.Length; ++i) { if(data.m_Animation[i] == null) { Debug.LogError("Effect Data Animation Not found(NULL)"); continue; } Animation ani = data.m_Animation[i]; if(null != data.m_Animation[i].clip) { AnimationState ani_state = ani[data.m_Animation[i].clip.name]; if(null != ani_state) ani_state.speed = m_ParentObject.PlaybackSpeed; } if(!data.m_Animation[i].isPlaying) data.m_Animation[i].Play(); } for (int i = 0; i < data.m_Emitter.Length; ++i) { data.m_Emitter[i].Emit(); } if(data.m_AsMeshEffect != null ) data.m_AsMeshEffect.m_Play = true; if(data.m_AsTrailEffect != null) data.m_AsTrailEffect.Play( m_transform, m_ParentObject.PlaybackSpeed ); data.isPlaying = true; }
void Stop(AsEffectInfo data) { if(m_bEnalbe == false) return; for (int i = 0; i < data.m_ParticleSystem.Length; ++i) { data.m_ParticleSystem[i].Stop(); } for (int i = 0; i < data.m_Animation.Length; ++i) { if(data.m_Animation[i] != null) { data.m_Animation[i].Stop(); data.m_Animation[i].Rewind(); } else { Debug.LogError("Effect Data Animation Not found(NULL)"); } } for (int i = 0; i < data.m_Emitter.Length; ++i) { data.m_Emitter[i].ClearParticles(); data.m_Emitter[i].emit = false; } if(data.m_AsMeshEffect != null && data.m_AsMeshEffect.m_Play) data.m_AsMeshEffect.m_Play = false; if(data.m_AsTrailEffect != null) data.m_AsTrailEffect.Stop( ); data.m_effectInstance.SetActiveRecursively(false); data.isPlaying = false; data.isEnable = false; }
void SetAttach(AsEffectInfo data) { Transform attach = null; if(data.m_dummyType != Dummy_Type.DummyNone) { if(m_transform != null) attach = ResourceLoad.SearchHierarchyTransform(m_transform, data.m_dummyType.ToString() ); if(attach != null) { data.m_effectInstance.transform.parent = attach; data.m_effectInstance.transform.localPosition = data.m_effectObject.gameObject.transform.position + m_ParentObject.EntityObject.transform.position; data.m_effectInstance.transform.localRotation = data.m_effectInstance.transform.rotation; Vector3 vecScale = Vector3.one; vecScale.x = data.m_effectInstance.transform.localScale.x * m_StartSize; vecScale.y = data.m_effectInstance.transform.localScale.y * m_StartSize; vecScale.z = data.m_effectInstance.transform.localScale.z * m_StartSize; data.m_effectInstance.transform.localScale = vecScale; } else { SetParent(data.m_effectInstance); } } else { SetParent(data.m_effectInstance); } if( !data.m_effectInstance ) { Debug.Log("AsEffectData GameObject Null!!! "+ data.m_effectObject.name); } if(data.indirectPos) SetIndirectPos(data.m_effectInstance); if(data.randomAngleY) SetRandomAngleY(data.m_effectInstance); if(data.randomPos) SetRandomPos(data.m_effectInstance); LoadComponents(data,data.m_effectInstance); m_removeList.Add( data.m_effectInstance ); data.isInstantiate = true; SetStartSize(data); ///////////////////////////////////////////////////////////////////// AsLaser _Laser = data.m_effectInstance.GetComponentInChildren<AsLaser>(); if(_Laser) { Transform targetAttach = null; targetAttach = ResourceLoad.SearchHierarchyTransform (m_targetTran, "DummyCharacterCenter"); if(targetAttach != null) _Laser.m_target = targetAttach; else _Laser.m_target = m_targetTran; if(attach != null) _Laser.m_start = attach; else _Laser.m_start = m_transform; } ///////////////////////////////////////////////////////////////////// }
void SetStartSize(AsEffectInfo data) { if(m_StartSize > 0.0f) { for (int i = 0; i < data.m_ParticleSystem.Length; ++i) { if(null != data.m_ParticleSystem[i] ) data.m_ParticleSystem[i].startSize = data.m_ParticleSystem[i].startSize * m_StartSize; } if(null != data.m_AsMeshEffect ) { data.m_AsMeshEffect.StartSize = m_StartSize; } } }
public void LoadComponents(AsEffectInfo data, GameObject go) { data.m_Emitter = go.GetComponentsInChildren<ParticleEmitter>(); data.m_ParticleSystem = go.GetComponentsInChildren<ParticleSystem>(); data.m_Animation = go.GetComponentsInChildren<Animation>(); data.m_AsMeshEffect = go.GetComponentInChildren<AsMeshEffect>(); data.m_AsTrailEffect = go.GetComponentInChildren<AsTrailEffect>(); }