Ejemplo n.º 1
0
    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);
                }
            }
        }
    }
Ejemplo n.º 2
0
    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);
        }
    }
Ejemplo n.º 3
0
    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();
    }