private void ChangeRootObject(GameObject rootObject) { this.mAnimators.Clear(); this.mParticles.Clear(); if (rootObject) { Animator[] animators = rootObject.GetComponentsInChildren <Animator>(); if (animators != null) { foreach (var a in animators) { if (this.mAnimator.animator != a) { EditorModeAnimator animator = new EditorModeAnimator(); animator.SetAnimator(a); this.mAnimators.Add(animator); } } } ParticleSystem[] pss = rootObject.GetComponentsInChildren <ParticleSystem>(); if (pss != null) { foreach (var ps in pss) { EditorModeParticle p = new EditorModeParticle(); p.SetParticleSystem(ps); this.mParticles.Add(p); } } } }
private void RemoveMain() { EditorModeAnimator remove = null; foreach (var a in this.mAnimators) { if (a.animator == this.mMainAnimator) { remove = a; break; } } if (remove != null) { this.mAnimators.Remove(remove); } }
public void OnGUI() { EditorGUILayout.BeginHorizontal(); GameObject rootObject = EditorGUILayout.ObjectField("Root", this.mRootObject, typeof(GameObject), true) as GameObject; if (GUILayout.Button("Update", GUILayout.Width(50))) { this.mRootObject = null; } EditorGUILayout.EndHorizontal(); if (rootObject != this.mRootObject) { this.mRootObject = rootObject; this.ChangeRootObject(rootObject); } EditorGUILayout.BeginHorizontal(); this.mMainAnimator = EditorGUILayout.ObjectField("Animator", this.mMainAnimator, typeof(Animator), true) as Animator; if (GUILayout.Button("Update", GUILayout.Width(50))) { this.mAnimator = new EditorModeAnimator(); } EditorGUILayout.EndHorizontal(); if (this.mAnimator.animator != this.mMainAnimator) { this.RemoveMain(); } this.mAnimator.SetAnimator(this.mMainAnimator); this.mAnimator.OnGUI(); EditorGUILayout.BeginHorizontal(); if (this.mMainAnimator) { bool toggle = GUILayout.Toggle(this.mPlay, this.mPlay ? "Stop" : "Play", EditorStyles.toolbarButton); if (this.mPlay != toggle) { this.mPlay = toggle; if (this.mPlay) { this.mAnimator.Play(); foreach (var animator in this.mAnimators) { animator.Play(); } foreach (var ps in this.mParticles) { ps.Play(); } } else { this.mAnimator.Stop(); foreach (var animator in this.mAnimators) { animator.Stop(); } foreach (var ps in this.mParticles) { ps.Stop(); } } } } EditorGUILayout.EndHorizontal(); }