Пример #1
0
        void LeftClick()
        {
            //左键单击
            // CurMemInfo = null;
            TimeLineData data = TimeLineDataManager.Instance.GetCurSelectTimeLine();

            if (data == null)
            {
                return;
            }
            data.InitDefaultTime();
            Type t = data.GetType();

            data.SetFieldValue(data);
            var memInfo = t.GetMethods();

            TimeLineDataManager.Instance.memDic.Clear();
            int selectKey = -1;

            TimeLineDataManager.Instance.curOperationAction = null;
            foreach (MethodInfo info in memInfo)
            {
                foreach (var item in data.GetActionDic())
                {
                    ActionItemData ad = item.Value;
                    if (ad.IsSelect())
                    {
                        foreach (var name in ad.methodNameList)
                        {
                            if (name == info.Name)
                            {
                                TimeLineDataManager.Instance.AddGUIMemInfo(info);
                            }
                        }
                        //移除要操作的action 用临时变量保存
                        TimeLineDataManager.Instance.curOperationAction = ad.Clone();
                        selectKey = ad.index;
                    }
                    else
                    {
                        if (LastSelectGridY != CurSelectGridY)
                        {
                            //更换timeline
                            //  TimeLineDataManager.Instance.curOperationAction = null;
                        }
                    }
                }
            }

            data.DeleteAction(selectKey);
        }
Пример #2
0
        IEnumerator PlayLine(TimeLineData data)
        {
            Type          t       = data.GetType();
            List <string> keyList = new List <string>();

            foreach (var actionPair in data.GetActionDic())
            {
                Debug.Log("key is " + actionPair.Key);
                keyList.Add(actionPair.Key);
            }
            for (int i = 0; i < keyList.Count; i++)
            {
                string key = keyList[i];
                if (i == 0)
                {
                    ActionItemData ad = data.GetActionByKey(key);
                    float          st = ad.actionStartTime;
                    yield return(new WaitForSeconds(st));

                    data.SetValueByAction(ad);
                    foreach (var name in ad.methodNameList)
                    {
                        string methodName = "Execute" + name;
                        t.InvokeMember(methodName, BindingFlags.InvokeMethod, null, data, null);
                    }
                }
                else
                {
                    string         lastkey = keyList[i - 1];
                    ActionItemData lastad  = data.GetActionByKey(lastkey);
                    float          lastst  = lastad.actionStartTime;
                    ActionItemData ad      = data.GetActionByKey(key);
                    float          st      = ad.actionStartTime;
                    float          time    = st - lastst;
                    Debug.Log(" time is " + time.ToString());
                    yield return(new WaitForSeconds(time));

                    data.SetValueByAction(ad);
                    foreach (var name in ad.methodNameList)
                    {
                        string methodName = "Execute" + name;
                        t.InvokeMember(methodName, BindingFlags.InvokeMethod, null, data, null);
                    }
                }
            }
        }
Пример #3
0
        public void SaveLineData()
        {
            TimeLineData data = TimeLineDataManager.Instance.GetCurSelectTimeLine();

            if (data == null)
            {
                return;
            }
            SetAtctionParamList(data);
            var           memDic   = TimeLineDataManager.Instance.memDic;
            List <string> nameList = new List <string>();

            foreach (var name in memDic.Keys)
            {
                nameList.Add(name);
            }
            TimeLineDataManager.Instance.SaveData(data.GetType(), nameList, actionParamList);
        }
Пример #4
0
        void SetAtctionParamList(TimeLineData data)
        {
            Type t = data.GetType();

            FieldInfo[] arr = t.GetFields();
            actionParamList.Clear();
            foreach (var info in arr)
            {
                if (info.IsDefined(typeof(SaveFieldAttribute), false))
                {
                    if (info.GetValue(data) != null)
                    {
                        actionParamList.Add(info.Name);
                        actionParamList.Add(info.GetValue(data));
                    }
                }
            }
        }
Пример #5
0
        void OnDrawCustomGUI()
        {
            Assembly assembly = Assembly.GetExecutingAssembly();

            if (assembly != null)
            {
                try
                {
                    Type[] timetypes = assembly.GetTypes();
                    for (int k = 0; k < timetypes.Length; k++)
                    {
                        Type         t       = timetypes[k];
                        TimeLineData curData = TimeLineDataManager.Instance.GetTimeLineByIndex(CurSelectGridY);
                        if (curData == null)
                        {
                            return;
                        }
                        if (curData.GetType() == t)
                        {
                            if (IsSubClassOf(t, typeof(TimeLineData)))
                            {
                                var baseTarget = TimeLineDataManager.Instance.GetCurSelectTimeLine();
                                baseTarget.OnGUI();

                                foreach (var infodic in TimeLineDataManager.Instance.memDic)
                                {
                                    var info = infodic.Value;
                                    if (info.IsDefined(typeof(GridMenuItemAttribute), false))
                                    {
                                        var target = curData;
                                        t.InvokeMember(info.Name, BindingFlags.InvokeMethod, null, target, null);
                                        baseTarget.OnDrawDeleteButton(info);
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception)
                {
                }
            }
        }