// Init
        //------------------------------------------------------------------------
        public void Init(apEditor editor, object loadKey, apAnimClip targetAnimGroup, FUNC_ADD_TIMELINE funcResult)
        {
            _editor         = editor;
            _loadKey        = loadKey;
            _funcResult     = funcResult;
            _targetAnimClip = targetAnimGroup;

            _selectedLinkData = null;
            _linkDataList.Clear();

            //타임라인을 검색해보자

            //리스트에 들어가는건 한글로 바꾸기 힘들 수 있다.

            //_linkDataList.Add(new LinkableData(apAnimClip.LINK_TYPE.ControlParam, "Control Parameters", -1, _editor.ImageSet.Get(apImageSet.PRESET.Anim_WithControlParam)));
            AddLinkableData(apAnimClip.LINK_TYPE.ControlParam, "Control Parameters", -1);            //"Control Parameters"
            //AddLinkableData(apAnimClip.LINK_TYPE.Bone, "Bones", -1);

            List <apModifierBase> modifiers = _targetAnimClip._targetMeshGroup._modifierStack._modifiers;

            for (int i = 0; i < modifiers.Count; i++)
            {
                apModifierBase curMod = modifiers[i];

                if (!curMod.IsAnimated)
                {
                    continue;
                }

                //"Modifier : "
                AddLinkableData(apAnimClip.LINK_TYPE.AnimatedModifier, "Modifier : " + curMod.DisplayName, curMod._uniqueID);
            }
        }
예제 #2
0
    public virtual void OnEnable()
    {
        source                        = (LinkableData)target;
        source.linkedType             = typeof(Linkable);
        sourceRef                     = serializedObject;
        SceneView.onSceneGUIDelegate += OnSceneGUI;

        GetProperties();
    }
 // Start is called before the first frame update
 void Start()
 {
     if (ActivateOnCollision == null)
     {
         ActivateOnCollision = new LinkableData <ActivationFunction>(PrintCollision);
     }
     if (ActivateOnTrigger == null)
     {
         ActivateOnTrigger = new LinkableData <ActivationFunction>(PrintTriggerCollision);
     }
     solution        = new Paths();
     ps              = GetComponent <ParticleSystem>();
     myMagic         = GetComponent <ParticleMagic>();
     myCollider      = GetComponent <PolygonCollider2D>();
     collisionPoints = new List <ParticleCollisionData>();
     if (myCollider == null)
     {
         myCollider = gameObject.AddComponent <PolygonCollider2D>();
     }
     psCollisionEvents = new List <ParticleCollisionEvent>();
 }
        // GUI
        //------------------------------------------------------------------------
        void OnGUI()
        {
            int width  = (int)position.width;
            int height = (int)position.height;

            if (_editor == null || _funcResult == null)
            {
                return;
            }

            Color prevColor = GUI.backgroundColor;

            GUI.backgroundColor = new Color(0.9f, 0.9f, 0.9f);
            GUI.Box(new Rect(0, 35, width, height - (90)), "");
            GUI.backgroundColor = prevColor;

            EditorGUILayout.BeginVertical();

            Texture2D iconImageCategory = _editor.ImageSet.Get(apImageSet.PRESET.Hierarchy_FoldDown);

            GUIStyle guiStyle_None = new GUIStyle(GUIStyle.none);

            guiStyle_None.normal.textColor = GUI.skin.label.normal.textColor;

            GUIStyle guiStyle_Selected = new GUIStyle(GUIStyle.none);

            if (EditorGUIUtility.isProSkin)
            {
                guiStyle_Selected.normal.textColor = Color.cyan;
            }
            else
            {
                guiStyle_Selected.normal.textColor = Color.white;
            }


            GUIStyle guiStyle_Center = new GUIStyle(GUIStyle.none);

            guiStyle_Center.normal.textColor = GUI.skin.label.normal.textColor;
            guiStyle_Center.alignment        = TextAnchor.MiddleCenter;

            GUILayout.Space(10);
            //"Select Timeline Type to Add"
            GUILayout.Button(_editor.GetText(TEXT.DLG_SelectTimelineTypeToAdd), guiStyle_Center, GUILayout.Width(width), GUILayout.Height(15));            //<투명 버튼
            GUILayout.Space(10);

            _scrollList = EditorGUILayout.BeginScrollView(_scrollList, GUILayout.Width(width), GUILayout.Height(height - (90)));

            //"Timeline Types"
            GUILayout.Button(new GUIContent(_editor.GetText(TEXT.DLG_TimelineTypes), iconImageCategory), guiStyle_None, GUILayout.Height(20));            //<투명 버튼

            //GUILayout.Space(10);
            for (int i = 0; i < _linkDataList.Count; i++)
            {
                GUIStyle curGUIStyle = guiStyle_None;
                if (_linkDataList[i] == _selectedLinkData)
                {
                    Rect lastRect = GUILayoutUtility.GetLastRect();
                    prevColor = GUI.backgroundColor;

                    if (EditorGUIUtility.isProSkin)
                    {
                        GUI.backgroundColor = new Color(0.0f, 1.0f, 1.0f, 1.0f);
                    }
                    else
                    {
                        GUI.backgroundColor = new Color(0.4f, 0.8f, 1.0f, 1.0f);
                    }

                    GUI.Box(new Rect(lastRect.x, lastRect.y + 20, width, 20), "");
                    GUI.backgroundColor = prevColor;

                    curGUIStyle = guiStyle_Selected;
                }


                EditorGUILayout.BeginHorizontal(GUILayout.Width(width - 50));
                GUILayout.Space(15);
                if (GUILayout.Button(new GUIContent(" " + _linkDataList[i]._name, _linkDataList[i]._icon), curGUIStyle, GUILayout.Width(width - 35), GUILayout.Height(20)))
                {
                    _selectedLinkData = _linkDataList[i];
                }

                EditorGUILayout.EndHorizontal();
            }

            EditorGUILayout.EndScrollView();

            EditorGUILayout.EndVertical();

            GUILayout.Space(10);

            EditorGUILayout.BeginHorizontal();


            bool isClose = false;

            if (GUILayout.Button(_editor.GetText(TEXT.DLG_Select), GUILayout.Height(30)))            //"Select"
            {
                if (_selectedLinkData != null)
                {
                    _funcResult(true, _loadKey, _selectedLinkData._linkType, _selectedLinkData._modifierID, _targetAnimClip);
                }
                else
                {
                    _funcResult(false, _loadKey, apAnimClip.LINK_TYPE.AnimatedModifier, -1, null);
                }
                isClose = true;
            }
            if (GUILayout.Button(_editor.GetText(TEXT.DLG_Close), GUILayout.Height(30)))            //"Close"
            {
                _funcResult(false, _loadKey, apAnimClip.LINK_TYPE.AnimatedModifier, -1, null);
                isClose = true;
            }
            EditorGUILayout.EndHorizontal();

            if (isClose)
            {
                CloseDialog();
            }
        }
 public FormMagicCircle() : base()
 {
     mcType        = MagicCircleType.Form;
     formableMagic = new LinkableData <ParticleMagic>(null);
 }
 public MovementMagicCircle() : base()
 {
     mcType       = MagicCircleType.Movement;
     movableMagic = new LinkableData <GameObject>(null);
 }