Ejemplo n.º 1
0
    public void ResetToBegining(iTweenData data)
    {
        for (int index = 0; index < data.targets.Length; index++)
        {
            var target = data.targets[index];
            switch (data.type)
            {
                case iTweenData.TweenType.MoveTo:
                    this.ResetMoveTo(data, target);
                    break;
                case iTweenData.TweenType.ScaleTo:
                    this.ResetScaleTo(data, target);
                    break;
                case iTweenData.TweenType.ColorTo:
                    this.ResetColorTo(data, target);
                    break;
                case iTweenData.TweenType.FrameAnimation:
                    this.ResetFrameAnimation(data, target);
                    break;
                case iTweenData.TweenType.ActivityTo:
                    this.ResetActivityTo(data, target);
                    break;
                case iTweenData.TweenType.NumberTo:
                    this.ResetNumberTo(data, target);
                    break;
                case iTweenData.TweenType.SliderTo:
                    this.ResetSliderTo(data, target);
                    break;
            }
        }

    }
Ejemplo n.º 2
0
 private void CloneWithOutTime(Dictionary <string, object> copyData, iTweenData origin)
 {
     if (copyData != null)
     {
         this.CloneWithOutTime(copyData, origin.Values);
         origin.Values = origin.Values;
     }
 }
Ejemplo n.º 3
0
 private void ResetScaleTo(iTweenData data, GameObject target)
 {
     if (!data.Values.ContainsKey("from"))
     {
         Debug.LogWarning(target + ":" + data.internalName + " not have from key ,can't reset");
         return;
     }
     var from = (Vector3)data.Values["from"];
     target.transform.localScale = from;
 }
Ejemplo n.º 4
0
 private void Clone(int copyIndex, iTweenData origin)
 {
     if (copyIndex != -1)
     {
         var copyData = this.mTweenGroup.iTweenList[copyIndex];
         origin.type = copyData.type;
         Clone(copyData.Values, origin);
         origin.Values = origin.Values;
     }
 }
Ejemplo n.º 5
0
 private void ResetActivityTo(iTweenData data, GameObject target)
 {
     if (!data.Values.ContainsKey("from") || !data.Values.ContainsKey("to"))
     {
         Debug.LogWarning(target + ":" + data.internalName + " not have from or to  key ,can't reset");
         return;
     }
     var from = (int)data.Values["from"];
     target.SetActive(from > 0);
 }
Ejemplo n.º 6
0
 private void Clone(Dictionary <string, object> copyData, iTweenData origin)
 {
     if (copyData != null)
     {
         origin.Values = new Dictionary <string, object>();
         foreach (KeyValuePair <string, object> dataValue in copyData)
         {
             origin.Values.Add(dataValue.Key, dataValue.Value);
         }
     }
 }
Ejemplo n.º 7
0
 private void ResetColorTo(iTweenData data, GameObject target)
 {
     if (!data.Values.ContainsKey("from"))
     {
         Debug.LogWarning(target + ":" + data.internalName + " not have from key ,can't reset");
         return;
     }
     var from = (Color)data.Values["from"];
     if (target.GetComponent<UIWidget>())
     {
         target.GetComponent<UIWidget>().color = from;
     }
 }
Ejemplo n.º 8
0
    /// <summary>
    /// 绘制动画控制的目标列表
    /// </summary>
    /// <param name="data"></param>
    private void DrawTargetList(iTweenData data)
    {
        data.isShowTargetsList = EditorGUILayout.Toggle("查看目标列表", data.isShowTargetsList);

        if (data.isShowTargetsList && data.targets != null && data.targets.Length > 0)
        {
            EditorGUILayout.BeginVertical();
            for (int index = 0; index < data.targets.Length; index++)
            {
                EditorGUILayout.ObjectField(data.targets[index], typeof(GameObject));
            }
            EditorGUILayout.EndVertical();
        }
    }
Ejemplo n.º 9
0
    void OnGUI()
    {
        int height = 0;

        this.mTweenGroup = EditorGUILayout.ObjectField(this.mTweenGroup, typeof(iTweenGroup), true) as iTweenGroup;
        height          += 20;
        if (mTweenGroup != null)
        {
            GUILayout.BeginArea(new Rect(0, height, position.width / 2, position.height));

            this.DrawiTweenList();

            GUILayout.EndArea();

            GUILayout.BeginArea(new Rect(position.width / 2, height, position.width / 2, position.height));

            if (this.isSort)
            {
                this.DrawSortiTweens();
            }
            else if (isBatch)
            {
                this.DrawBatchiTweens();
            }
            else
            {
                this.DrawiTweenInspector();
            }


            GUILayout.EndArea();

            if (GUI.changed)
            {
                Undo.RecordObject(this.mTweenGroup, "iTweenGroup Modify");
                EditorUtility.SetDirty(this.mTweenGroup);
            }
        }


        if (Application.isPlaying)
        {
            this.mViewData = null;
        }
    }
Ejemplo n.º 10
0
    private void ResetMoveTo(iTweenData data, GameObject target)
    {
        var isLocal = false;
        if (data.Values.ContainsKey("islocal"))
        {
            isLocal = (bool)data.Values["islocal"];
        }

        if (!data.Values.ContainsKey("from"))
        {
            Debug.LogWarning(target + ":" + data.internalName + " not have from key ,can't reset");
            return;
        }
        var from = (Vector3)data.Values["from"];
        if (isLocal)
            target.transform.localPosition = from;
        else
            target.transform.position = from;
    }
Ejemplo n.º 11
0
    private void ResetNumberTo(iTweenData data, GameObject target)
    {
        if (!data.Values.ContainsKey("from") || !data.Values.ContainsKey("to"))
        {
            Debug.LogWarning(target + ":" + data.internalName + " not have from or to  key ,can't reset");
            return;
        }
        var from = (float)data.Values["from"];
        var label = target.GetComponent<UILabel>();

        if (!data.Values.ContainsKey("format"))
        {
            data.Values["format"] = iTweenData.NumberFormat.NOPoint;
        }

        iTweenData.NumberFormat format = (iTweenData.NumberFormat)data.Values["format"];
        label.text = GetNumberFormat(from, format);

    }
Ejemplo n.º 12
0
    private void ResetSliderTo(iTweenData data, GameObject target)
    {
        if (!data.Values.ContainsKey("from") || !data.Values.ContainsKey("to"))
        {
            Debug.LogWarning(target + ":" + data.internalName + " not have from or to  key ,can't reset");
            return;
        }
        var from = (float)data.Values["from"];
        var slider = target.GetComponent<UISlider>();
        if (slider != null)
        {
            slider.value = from;
        }
        var sprite = target.GetComponent<UISprite>();
        if (sprite != null)
        {
            sprite.fillAmount = from;
        }

    }
Ejemplo n.º 13
0
    private void ResetFrameAnimation(iTweenData data, GameObject target)
    {
        if (!data.Values.ContainsKey("from") || !data.Values.ContainsKey("prefix") || !data.Values.ContainsKey("atlas"))
        {
            Debug.LogWarning(target + ":" + data.internalName + " not have from or prefix or atlas key ,can't reset");
            return;
        }
        var from = (int)data.Values["from"];
        string prefix = (string)data.Values["prefix"];
        string atlas = (string)data.Values["atlas"];
        if (target.GetComponent<UISprite>())
        {
            if (data.Values.ContainsKey("isstartempty") && (bool)data.Values["isstartempty"])
            {
                from = int.MinValue;
            }
#if UNITY_EDITOR
            target.GetComponent<UISprite>().spriteName = prefix + Mathf.RoundToInt(from).ToString();
#else
            UISystem.UITools.FillSprite(target.GetComponent<UISprite>(), atlas + "%" + prefix + Mathf.RoundToInt(from));
#endif
        }
    }
Ejemplo n.º 14
0
    /// <summary>
    /// 右侧绘制选中的动画列表
    /// </summary>
    private void DrawSelectList()
    {
        int delIndex = -1;

        for (int index = 0; index < this.mSelectTweenDatas.Count; index++)
        {
            GUILayout.BeginHorizontal();
            iTweenData data = this.mSelectTweenDatas[index];
            GUILayout.Label(data.DefaultTarget.name + "  " + data.type);

            if (GUILayout.Button("删除"))
            {
                delIndex = index;
            }
            GUILayout.EndHorizontal();
        }

        if (delIndex != -1)
        {
            this.mSelectTweenDatas.RemoveAt(delIndex);
        }

        EditorGUILayout.Separator();
    }
Ejemplo n.º 15
0
    private void DrawDataInspector(iTweenData data)
    {
        this.mInspectorScrollPos = GUILayout.BeginScrollView(this.mInspectorScrollPos);

        var evt = data;

        if (data.type == iTweenData.TweenType.MoveTo)
        {
            if (!data.Values.ContainsKey("islocal"))
            {
                data.Values["islocal"] = true;
            }
        }
        mModifyValues = evt.Values;
        var keys = mModifyValues.Keys.ToArray();

        foreach (var key in keys)
        {
            if (typeof(Vector3OrTransform) == EventParamMappings.mappings[evt.type][key])
            {
                var val = new Vector3OrTransform();

                if (null == mModifyValues[key] || typeof(Transform) == mModifyValues[key].GetType())
                {
                    if (null == mModifyValues[key])
                    {
                        val.transform = null;
                    }
                    else
                    {
                        val.transform = (Transform)mModifyValues[key];
                    }
                    val.selected = Vector3OrTransform.transformSelected;
                }
                else if (typeof(Vector3) == mModifyValues[key].GetType())
                {
                    val.vector   = (Vector3)mModifyValues[key];
                    val.selected = Vector3OrTransform.vector3Selected;
                }

                mModifyValues[key] = val;
            }
            if (typeof(Vector3OrTransformArray) == EventParamMappings.mappings[evt.type][key])
            {
                var val = new Vector3OrTransformArray();

                if (null == mModifyValues[key] || typeof(Transform[]) == mModifyValues[key].GetType())
                {
                    if (null == mModifyValues[key])
                    {
                        val.transformArray = null;
                    }
                    else
                    {
                        val.transformArray = (Transform[])mModifyValues[key];
                    }
                    val.selected = Vector3OrTransformArray.transformSelected;
                }
                else if (typeof(Vector3[]) == mModifyValues[key].GetType())
                {
                    val.vectorArray = (Vector3[])mModifyValues[key];
                    val.selected    = Vector3OrTransformArray.vector3Selected;
                }
                else if (typeof(string) == mModifyValues[key].GetType())
                {
                    val.pathName = (string)mModifyValues[key];
                    val.selected = Vector3OrTransformArray.iTweenPathSelected;
                }

                mModifyValues[key] = val;
            }
        }


        GUILayout.BeginHorizontal();
        GUILayout.Label("Name(全是小写)");
        var name = EditorGUILayout.TextField(evt.tweenName);

        evt.tweenName = name.ToLower();
        GUILayout.EndHorizontal();



        EditorGUILayout.Separator();

        GUILayout.BeginHorizontal();
        GUILayout.Label("Event Type");
        var prevType = evt.type;

        evt.type = (iTweenData.TweenType)EditorGUILayout.EnumPopup(evt.type);
        if (prevType != evt.type)
        {
            evt.Values.Clear();
        }
        GUILayout.EndHorizontal();

        var properties = EventParamMappings.mappings[evt.type];

        #region custom add
        if (this.isBatch)
        {
            var newProperties = new Dictionary <string, Type>();
            foreach (KeyValuePair <string, Type> pair in properties)
            {
                if (pair.Key != "time" && pair.Key != "delay" && pair.Key != "name")
                {
                    newProperties.Add(pair.Key, pair.Value);
                }
            }
            properties = newProperties;
        }
        #endregion

        foreach (var pair in properties)
        {
            var key = pair.Key;
            GUILayout.BeginHorizontal();

            bool toggle = mModifyValues.ContainsKey(key);
            toggle = EditorGUILayout.BeginToggleGroup(key, toggle);

            if (toggle)
            {
                GUILayout.BeginVertical();

                if (typeof(string) == pair.Value)
                {
                    #region custom add

                    if (key == "oncomplete")
                    {
                        if (!mModifyValues.ContainsKey("oncomplete"))
                        {
                            mModifyValues[key] = "OniTweenGroupComplete";
                        }
                    }

                    #endregion

                    mModifyValues[key] = EditorGUILayout.TextField(mModifyValues.ContainsKey(key) ? (string)mModifyValues[key] : "");
                }
                else if (typeof(float) == pair.Value)
                {
                    mModifyValues[key] = EditorGUILayout.FloatField(mModifyValues.ContainsKey(key) ? (float)mModifyValues[key] : 0);
                }
                else if (typeof(int) == pair.Value)
                {
                    mModifyValues[key] = EditorGUILayout.IntField(mModifyValues.ContainsKey(key) ? (int)mModifyValues[key] : 0);
                }
                else if (typeof(bool) == pair.Value)
                {
                    GUILayout.BeginHorizontal();
                    var currentValueString = (mModifyValues.ContainsKey(key) ? (bool)mModifyValues[key] : false).ToString();
                    currentValueString = currentValueString.Substring(0, 1).ToUpper() + currentValueString.Substring(1);
                    var index = EditorGUILayout.Popup(trueFalseOptions.IndexOf(currentValueString), trueFalseOptions.ToArray());
                    GUILayout.EndHorizontal();
                    mModifyValues[key] = bool.Parse(trueFalseOptions[index]);
                }
                else if (typeof(GameObject) == pair.Value)
                {
                    #region custom add

                    if (key == "oncompletetarget")
                    {
                        if (!mModifyValues.ContainsKey("oncompletetarget"))
                        {
                            mModifyValues[key] = this.mTweenGroup.gameObject;
                        }
                    }

                    #endregion
                    mModifyValues[key] = EditorGUILayout.ObjectField(mModifyValues.ContainsKey(key) ? (GameObject)mModifyValues[key] : null, typeof(GameObject), true);
                }
                else if (typeof(Vector3) == pair.Value)
                {
                    mModifyValues[key] = EditorGUILayout.Vector3Field("", mModifyValues.ContainsKey(key) ? (Vector3)mModifyValues[key] : Vector3.zero);
                }

                #region custom add

                else if (typeof(AnimationCurve) == pair.Value)
                {
                    mModifyValues[key] =
                        EditorGUILayout.CurveField(mModifyValues.ContainsKey(key)
                            ? (AnimationCurve)mModifyValues[key]
                            : new AnimationCurve());
                }
                else if (typeof(iTweenData.NumberFormat) == pair.Value)
                {
                    mModifyValues[key] = EditorGUILayout.EnumPopup(mModifyValues.ContainsKey(key) ? (iTweenData.NumberFormat)mModifyValues[key] : iTweenData.NumberFormat.NOPoint);
                }
                #endregion
                else if (typeof(Vector3OrTransform) == pair.Value)
                {
                    if (!mModifyValues.ContainsKey(key))
                    {
                        mModifyValues[key] = new Vector3OrTransform();
                    }
                    var val = (Vector3OrTransform)mModifyValues[key];

                    val.selected = GUILayout.SelectionGrid(val.selected, Vector3OrTransform.choices, 2);

                    GUILayout.BeginHorizontal();
                    if (Vector3OrTransform.vector3Selected == val.selected)
                    {
                        if (GUILayout.Button("SetTargetPos"))
                        {
                            val.vector = evt.DefaultTarget.transform.localPosition;
                        }
                        if (GUILayout.Button("SetTargetScale"))
                        {
                            val.vector = evt.DefaultTarget.transform.localScale;
                        }
                        if (GUILayout.Button("SetTargetAngle"))
                        {
                            val.vector = evt.DefaultTarget.transform.localEulerAngles;
                        }
                        val.vector = EditorGUILayout.Vector3Field("", val.vector);
                    }
                    else
                    {
                        val.transform = (Transform)EditorGUILayout.ObjectField(val.transform, typeof(Transform), true);
                    }
                    GUILayout.EndHorizontal();
                    mModifyValues[key] = val;
                }
                else if (typeof(Vector3OrTransformArray) == pair.Value)
                {
                    if (!mModifyValues.ContainsKey(key))
                    {
                        mModifyValues[key] = new Vector3OrTransformArray();
                    }
                    var val = (Vector3OrTransformArray)mModifyValues[key];
                    val.selected = GUILayout.SelectionGrid(val.selected, Vector3OrTransformArray.choices, Vector3OrTransformArray.choices.Length);

                    if (Vector3OrTransformArray.vector3Selected == val.selected)
                    {
                        if (null == val.vectorArray)
                        {
                            val.vectorArray = new Vector3[0];
                        }
                        var elements = val.vectorArray.Length;
                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Number of points");
                        elements = EditorGUILayout.IntField(elements);
                        GUILayout.EndHorizontal();
                        if (elements != val.vectorArray.Length)
                        {
                            var resizedArray = new Vector3[elements];
                            val.vectorArray.CopyTo(resizedArray, 0);
                            val.vectorArray = resizedArray;
                        }
                        for (var i = 0; i < val.vectorArray.Length; ++i)
                        {
                            val.vectorArray[i] = EditorGUILayout.Vector3Field("", val.vectorArray[i]);
                        }
                    }
                    else if (Vector3OrTransformArray.transformSelected == val.selected)
                    {
                        if (null == val.transformArray)
                        {
                            val.transformArray = new Transform[0];
                        }
                        var elements = val.transformArray.Length;
                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Number of points");
                        elements = EditorGUILayout.IntField(elements);
                        GUILayout.EndHorizontal();
                        if (elements != val.transformArray.Length)
                        {
                            var resizedArray = new Transform[elements];
                            val.transformArray.CopyTo(resizedArray, 0);
                            val.transformArray = resizedArray;
                        }
                        for (var i = 0; i < val.transformArray.Length; ++i)
                        {
                            val.transformArray[i] = (Transform)EditorGUILayout.ObjectField(val.transformArray[i], typeof(Transform), true);
                        }
                    }
                    else if (Vector3OrTransformArray.iTweenPathSelected == val.selected)
                    {
                        var index = 0;
                        var paths = (GameObject.FindObjectsOfType(typeof(iTweenPath)) as iTweenPath[]);
                        if (0 == paths.Length)
                        {
                            val.pathName = "";
                            GUILayout.Label("No paths are defined");
                        }
                        else
                        {
                            for (var i = 0; i < paths.Length; ++i)
                            {
                                if (paths[i].pathName == val.pathName)
                                {
                                    index = i;
                                }
                            }
                            index = EditorGUILayout.Popup(index, (GameObject.FindObjectsOfType(typeof(iTweenPath)) as iTweenPath[]).Select(path => path.pathName).ToArray());

                            val.pathName = paths[index].pathName;
                        }
                    }
                    mModifyValues[key] = val;
                }
                else if (typeof(iTween.LoopType) == pair.Value)
                {
                    mModifyValues[key] = EditorGUILayout.EnumPopup(mModifyValues.ContainsKey(key) ? (iTween.LoopType)mModifyValues[key] : iTween.LoopType.none);
                }
                else if (typeof(iTween.EaseType) == pair.Value)
                {
                    mModifyValues[key] = EditorGUILayout.EnumPopup(mModifyValues.ContainsKey(key) ? (iTween.EaseType)mModifyValues[key] : iTween.EaseType.linear);
                }
                else if (typeof(AudioSource) == pair.Value)
                {
                    mModifyValues[key] = (AudioSource)EditorGUILayout.ObjectField(mModifyValues.ContainsKey(key) ? (AudioSource)mModifyValues[key] : null, typeof(AudioSource), true);
                }
                else if (typeof(AudioClip) == pair.Value)
                {
                    mModifyValues[key] = (AudioClip)EditorGUILayout.ObjectField(mModifyValues.ContainsKey(key) ? (AudioClip)mModifyValues[key] : null, typeof(AudioClip), true);
                }
                else if (typeof(Color) == pair.Value)
                {
                    mModifyValues[key] = EditorGUILayout.ColorField(mModifyValues.ContainsKey(key) ? (Color)mModifyValues[key] : Color.white);
                }
                else if (typeof(Space) == pair.Value)
                {
                    mModifyValues[key] = EditorGUILayout.EnumPopup(mModifyValues.ContainsKey(key) ? (Space)mModifyValues[key] : Space.Self);
                }

                GUILayout.EndVertical();
            }
            else
            {
                //                propertiesEnabled[key] = false;
                mModifyValues.Remove(key);
            }

            EditorGUILayout.EndToggleGroup();
            GUILayout.EndHorizontal();
            EditorGUILayout.Separator();
        }

        keys = mModifyValues.Keys.ToArray();

        foreach (var key in keys)
        {
            if (mModifyValues[key] != null && mModifyValues[key].GetType() == typeof(Vector3OrTransform))
            {
                var val = (Vector3OrTransform)mModifyValues[key];
                if (Vector3OrTransform.vector3Selected == val.selected)
                {
                    mModifyValues[key] = val.vector;
                }
                else
                {
                    mModifyValues[key] = val.transform;
                }
            }
            else if (mModifyValues[key] != null && mModifyValues[key].GetType() == typeof(Vector3OrTransformArray))
            {
                var val = (Vector3OrTransformArray)mModifyValues[key];
                if (Vector3OrTransformArray.vector3Selected == val.selected)
                {
                    mModifyValues[key] = val.vectorArray;
                }
                else if (Vector3OrTransformArray.transformSelected == val.selected)
                {
                    mModifyValues[key] = val.transformArray;
                }
                else if (Vector3OrTransformArray.iTweenPathSelected == val.selected)
                {
                    mModifyValues[key] = val.pathName;
                }
            }
        }

        GUILayout.EndScrollView();
    }
Ejemplo n.º 16
0
    private void DrawiTweenList()
    {
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("添加"))
        {
            var newData = new iTweenData();
            this.mTweenGroup.iTweenList.Add(newData);
        }
        if (GUILayout.Button("排序"))
        {
            this.isBatch = false;
            this.isSort  = true;
        }
//        if (GUILayout.Button("批量处理(同效果)"))
//        {
//            if (this.IsCanBatch())
//            {
//                this.isSort = false;
//                this.isBatch = true;
//            }
//            else
//            {
//                EditorUtility.DisplayDialog("iTweenGroupEditor", "必须选中最少一个动画,且多个动画间的动画类型需要相同", "OK", "Cancel");
//            }
//        }
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.Separator();

        this.mListScrollPos = EditorGUILayout.BeginScrollView(this.mListScrollPos);
        var delIndex  = -1;
        var copyIndex = -1;

        for (int i = 0; i < this.mTweenGroup.iTweenList.Count; i++)
        {
            var tweenData = this.mTweenGroup.iTweenList[i];

            var color = GUI.color;
            if (tweenData.DefaultTarget != null)
            {
                GUI.color = Color.green;
                GUILayout.Label(tweenData.DefaultTarget.name + "  " + tweenData.type);
                GUI.color = color;
            }
            GUILayout.BeginHorizontal();

            color = GUI.color;
            if (this.mViewData == tweenData || this.mSelectTweenDatas.Contains(tweenData))
            {
                GUI.color = Color.gray;
            }
            else if (tweenData.DefaultTarget == null)
            {
                GUI.color = Color.red;
            }


            if (GUILayout.Button("设置选中对象组为目标"))
            {
                tweenData.targets = Selection.gameObjects;
            }

            this.DrawTargetList(tweenData);

            if (GUILayout.Button("查看参数"))
            {
                this.CancleSortOrBatch();
                this.mViewData = tweenData;
            }
            if (GUILayout.Button("删除动画"))
            {
                delIndex = i;
            }
            if (GUILayout.Button("复制动画"))
            {
                copyIndex = i;
            }
            var select = this.mSelectTweenDatas.Contains(tweenData);
            if (GUILayout.Toggle(select, "选择"))
            {
                if (!this.mSelectTweenDatas.Contains(tweenData))
                {
                    this.mSelectTweenDatas.Add(tweenData);
                }
            }
            else
            {
                if (this.mSelectTweenDatas.Contains(tweenData))
                {
                    this.mSelectTweenDatas.Remove(tweenData);
                }
            }
            GUILayout.EndHorizontal();

            EditorGUILayout.Space();
            GUI.color = color;
        }
        if (delIndex != -1)
        {
            var tween = this.mTweenGroup.iTweenList[delIndex];
            if (this.mViewData == tween)
            {
                this.mViewData = null;
            }
            this.mTweenGroup.iTweenList.Remove(tween);
        }
        if (copyIndex != -1)
        {
            var newData = new iTweenData();
            this.Clone(copyIndex, newData);
            this.mTweenGroup.iTweenList.Add(newData);
        }
        EditorGUILayout.EndScrollView();

        EditorGUILayout.Separator();
        EditorGUILayout.Separator();
        EditorGUILayout.Separator();
    }
Ejemplo n.º 17
0
    public void Play(iTweenData data)
    {
        var optionsHash = new Hashtable();
        foreach (var pair in data.Values)
        {
            if ("path" == pair.Key && pair.Value.GetType() == typeof(string)) optionsHash.Add(pair.Key, iTweenPath.GetPath((string)pair.Value));
            else optionsHash.Add(pair.Key, pair.Value);
        }

        // We use the internalName to have a unique identifier to stop the tween
        data.internalName = string.IsNullOrEmpty(data.tweenName) ? data.type + "-" + System.Guid.NewGuid().ToString() : data.tweenName;
        optionsHash.Add("name", data.internalName);

        for (int index = 0; index < data.targets.Length; index++)
        {
            var target = data.targets[index];
            if (!target.activeInHierarchy && data.type != iTweenData.TweenType.ActivityTo)
                continue;  // 如果目标没被激活,不触发
            #region iTween
            switch (data.type)
            {
                case iTweenData.TweenType.AudioFrom:
                    iTween.AudioFrom(target, optionsHash);
                    break;
                case iTweenData.TweenType.AudioTo:
                    iTween.AudioTo(target, optionsHash);
                    break;
                case iTweenData.TweenType.AudioUpdate:
                    iTween.AudioUpdate(target, optionsHash);
                    break;
                case iTweenData.TweenType.CameraFadeFrom:
                    iTween.CameraFadeFrom(optionsHash);
                    break;
                case iTweenData.TweenType.CameraFadeTo:
                    iTween.CameraFadeTo(optionsHash);
                    break;
                case iTweenData.TweenType.ColorFrom:
                    iTween.ColorFrom(target, optionsHash);
                    break;
                case iTweenData.TweenType.ColorTo:
                    iTween.ColorTo(target, optionsHash);
                    break;
                case iTweenData.TweenType.ColorUpdate:
                    iTween.ColorUpdate(target, optionsHash);
                    break;
                case iTweenData.TweenType.FadeFrom:
                    iTween.FadeFrom(target, optionsHash);
                    break;
                case iTweenData.TweenType.FadeTo:
                    iTween.FadeTo(target, optionsHash);
                    break;
                case iTweenData.TweenType.FadeUpdate:
                    iTween.FadeUpdate(target, optionsHash);
                    break;
                case iTweenData.TweenType.LookFrom:
                    iTween.LookFrom(target, optionsHash);
                    break;
                case iTweenData.TweenType.LookTo:
                    iTween.LookTo(target, optionsHash);
                    break;
                case iTweenData.TweenType.LookUpdate:
                    iTween.LookUpdate(target, optionsHash);
                    break;
                case iTweenData.TweenType.MoveAdd:
                    iTween.MoveAdd(target, optionsHash);
                    break;
                case iTweenData.TweenType.MoveBy:
                    iTween.MoveBy(target, optionsHash);
                    break;
                case iTweenData.TweenType.MoveFrom:
                    iTween.MoveFrom(target, optionsHash);
                    break;
                case iTweenData.TweenType.MoveTo:
                    iTween.MoveTo(target, optionsHash);
                    break;
                case iTweenData.TweenType.MoveUpdate:
                    iTween.MoveUpdate(target, optionsHash);
                    break;
                case iTweenData.TweenType.PunchPosition:
                    iTween.PunchPosition(target, optionsHash);
                    break;
                case iTweenData.TweenType.PunchRotation:
                    iTween.PunchRotation(target, optionsHash);
                    break;
                case iTweenData.TweenType.PunchScale:
                    iTween.PunchScale(target, optionsHash);
                    break;
                case iTweenData.TweenType.RotateAdd:
                    iTween.RotateAdd(target, optionsHash);
                    break;
                case iTweenData.TweenType.RotateBy:
                    iTween.RotateBy(target, optionsHash);
                    break;
                case iTweenData.TweenType.RotateFrom:
                    iTween.RotateFrom(target, optionsHash);
                    break;
                case iTweenData.TweenType.RotateTo:
                    iTween.RotateTo(target, optionsHash);
                    break;
                case iTweenData.TweenType.RotateUpdate:
                    iTween.RotateUpdate(target, optionsHash);
                    break;
                case iTweenData.TweenType.ScaleAdd:
                    iTween.ScaleAdd(target, optionsHash);
                    break;
                case iTweenData.TweenType.ScaleBy:
                    iTween.ScaleBy(target, optionsHash);
                    break;
                case iTweenData.TweenType.ScaleFrom:
                    iTween.ScaleFrom(target, optionsHash);
                    break;
                case iTweenData.TweenType.ScaleTo:
                    iTween.ScaleTo(target, optionsHash);
                    break;
                case iTweenData.TweenType.ScaleUpdate:
                    iTween.ScaleUpdate(target, optionsHash);
                    break;
                case iTweenData.TweenType.ShakePosition:
                    iTween.ShakePosition(target, optionsHash);
                    break;
                case iTweenData.TweenType.ShakeRotation:
                    iTween.ShakeRotation(target, optionsHash);
                    break;
                case iTweenData.TweenType.ShakeScale:
                    iTween.ShakeScale(target, optionsHash);
                    break;
                case iTweenData.TweenType.Stab:
                    iTween.Stab(target, optionsHash);
                    break;
                case iTweenData.TweenType.FrameAnimation:
                    iTween.FrameAnimation(target, optionsHash);
                    break;
                case iTweenData.TweenType.ActivityTo:
                    var newOption = this.Copy(optionsHash);
                    newOption.Add("activityTarget", target);
                    iTween.ActivityTo(this.gameObject, newOption);
                    break;
                case iTweenData.TweenType.NumberTo:
                    iTween.NumberTo(target, optionsHash);
                    break;
                case iTweenData.TweenType.SliderTo:
                    iTween.SliderTo(target, optionsHash);
                    break;
                default:
                    throw new System.ArgumentException("Invalid tween type: " + data.type);
            }
            #endregion
        }
    }