public override void OnInspectorGUI()
        {
            CharAnimationController targetComp = (CharAnimationController)target;

            if (GUILayout.Button("Open Editor..."))
            {
                CharAnimationWindow.Init(targetComp);
            }

            if (targetComp.IsDataBroken())
            {
                targetComp.CreateSpriteFrames();
            }

            EditorGUI.BeginChangeCheck();
            targetComp.SpriteCharSet = (Sprite)EditorGUILayout.ObjectField("SpriteCharSet", targetComp.SpriteCharSet, typeof(Sprite), false);
            targetComp.CharsetType   = (CharAnimationController.eCharSetType)EditorGUILayout.EnumPopup("Charset Type", targetComp.CharsetType);
            if (EditorGUI.EndChangeCheck())
            {
                targetComp.CreateSpriteFrames();
            }

            targetComp.TargetSpriteRenderer = (SpriteRenderer)EditorGUILayout.ObjectField("Target Sprite Render", targetComp.TargetSpriteRenderer, typeof(SpriteRenderer), true);
            targetComp.AnimSpeed            = EditorGUILayout.FloatField("Anim Speed", targetComp.AnimSpeed);
            targetComp.IsPingPongAnim       = EditorGUILayout.ToggleLeft("Ping-Pong Anim", targetComp.IsPingPongAnim);
            targetComp.CurrentDir           = (CharAnimationController.eDir)EditorGUILayout.EnumPopup("Facing Dir", targetComp.CurrentDir);
            EditorGUILayout.PropertyField(serializedObject.FindProperty("IsAnimated"));
            EditorGUILayout.PropertyField(serializedObject.FindProperty("PixelsPerUnit"));

            serializedObject.ApplyModifiedProperties();
            if (GUI.changed)
            {
                EditorUtility.SetDirty(targetComp);
            }
        }
Example #2
0
 public static void Init( CharAnimationController animCtrl )
 {
     // Get existing open window or if none, make a new one:
     CharAnimationWindow window = (CharAnimationWindow)EditorWindow.GetWindow(typeof(CharAnimationWindow), false, "Char. Animation");
     if (animCtrl.CreateSpriteFrames())
     {
         window.m_gridSize = animCtrl.GetSpriteFrames()[0].rect.width / 4;
     }
     window.m_animCtrl = animCtrl;
     window.Show();
 }
        public static void Init(CharAnimationController animCtrl)
        {
            // Get existing open window or if none, make a new one:
            CharAnimationWindow window = (CharAnimationWindow)EditorWindow.GetWindow(typeof(CharAnimationWindow), false, "Char. Animation");

            if (animCtrl.CreateSpriteFrames())
            {
                window.m_gridSize = animCtrl.GetSpriteFrames()[0].rect.width / 4;
            }
            window.m_animCtrl = animCtrl;
            window.Show();
        }
        public static void CreateCharacter()
        {
            GameObject obj = new GameObject("Character");
            CharAnimationController CharAnimationController = obj.AddComponent <CharAnimationController>();
            GameObject spriteObj = new GameObject("Sprite");

            spriteObj.transform.parent = obj.transform;
            SpriteRenderer sprRenderer = spriteObj.AddComponent <SpriteRenderer>();

            CharAnimationController.TargetSpriteRenderer = sprRenderer;
            Selection.activeObject = obj;
            Camera sceneCam = SceneView.currentDrawingSceneView.camera;

            obj.transform.position = sceneCam.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, 10f));
            obj.transform.position = new Vector3(obj.transform.position.x, obj.transform.position.y, -0.5f);
        }
Example #5
0
        void OnGUI()
        {
            // Change m_animCtrl if another object is selected with this component attached
            if (m_prevSelectedGameObject != Selection.activeGameObject)
            {
                CharAnimationController animCtrl = Selection.activeGameObject != null?Selection.activeGameObject.GetComponent <CharAnimationController>() : null;

                if (animCtrl != null)
                {
                    m_animCtrl = animCtrl;
                    if (animCtrl.CreateSpriteFrames())
                    {
                        m_gridSize = animCtrl.GetSpriteFrames()[0].rect.width / 4;
                    }
                }
            }
            m_prevSelectedGameObject = Selection.activeGameObject;

            if (m_animCtrl == null)
            {
                Close();
                return;
            }

            if (m_animCtrl.IsDataBroken())
            {
                m_animCtrl.CreateSpriteFrames();
            }

            if (s_gridTex == null)
            {
                s_gridTex            = new Texture2D(2, 2);
                s_gridTex.wrapMode   = TextureWrapMode.Repeat;
                s_gridTex.filterMode = FilterMode.Point;
                s_gridTex.SetPixels32(new Color32[] { m_gridColor0, m_gridColor1, m_gridColor1, m_gridColor0 });
                s_gridTex.Apply();
            }

            Repaint();

            if (Event.current.type == EventType.Repaint)
            {
                float timeDt = Time.realtimeSinceStartup - m_prevDt;
                m_prevDt = Time.realtimeSinceStartup;

                if (!Application.isPlaying)
                {
                    m_animCtrl.UpdateAnim(timeDt);
                }

                m_walkAnimTimer -= timeDt * m_walkSpeed;
                while (m_walkAnimTimer <= 0f)
                {
                    m_walkAnimTimer += 1f;
                }
                m_walkAnimTimer %= 1;
            }
            else if (Event.current.type == EventType.scrollWheel && m_rGridView.Contains(m_mousePos))
            {
                float prevZoom = m_zoom;
                if (Event.current.delta.y > 0) // back
                {
                    if (m_zoom > 1f)
                    {
                        m_zoom = Mathf.Max(m_zoom - 1, 1);
                    }
                    else
                    {
                        m_zoom = Mathf.Max(m_zoom / 2f, 0.05f);
                    }
                }
                else if (Event.current.delta.y < 0) // forward
                {
                    if (m_zoom >= 1f)
                    {
                        m_zoom = Mathf.Min(m_zoom + 1, 10);
                    }
                    else
                    {
                        m_zoom *= 2f;
                    }
                }
                m_zoom = Mathf.Clamp(m_zoom, 1f, 5f);

                if (prevZoom != m_zoom)
                {
                    Vector2 vZoomCenter = (m_mousePos - m_rGridView.position);
                    m_vTrans += (prevZoom - m_zoom) * vZoomCenter / (prevZoom * m_zoom);
                }
            }
            else if (Event.current.type == EventType.MouseDrag && m_rGridView.Contains(m_mousePos))
            {
                m_vTrans += Event.current.delta / m_zoom;
            }

            m_mousePos = Event.current.mousePosition;

            DrawGUI();

            if (GUI.changed)
            {
                EditorUtility.SetDirty(m_animCtrl);
            }
        }
Example #6
0
        void OnGUI()
        {
            // Change m_animCtrl if another object is selected with this component attached
            if (m_prevSelectedGameObject != Selection.activeGameObject)
            {
                CharAnimationController animCtrl = Selection.activeGameObject != null? Selection.activeGameObject.GetComponent<CharAnimationController>() : null;
                if( animCtrl != null )
                {
                    m_animCtrl = animCtrl;
                    if (animCtrl.CreateSpriteFrames())
                    {
                        m_gridSize = animCtrl.GetSpriteFrames()[0].rect.width / 4;
                    }
                }
            }
            m_prevSelectedGameObject = Selection.activeGameObject;

            if (m_animCtrl == null)
            {
                Close();
                return;
            }

            if (m_animCtrl.IsDataBroken()) m_animCtrl.CreateSpriteFrames();

            if (s_gridTex == null)
            {
                s_gridTex = new Texture2D(2, 2);
                s_gridTex.wrapMode = TextureWrapMode.Repeat;
                s_gridTex.filterMode = FilterMode.Point;
                s_gridTex.SetPixels32(new Color32[] { m_gridColor0, m_gridColor1, m_gridColor1, m_gridColor0 });
                s_gridTex.Apply();
            }

            Repaint();

            if( Event.current.type == EventType.Repaint)
            {
                float timeDt = Time.realtimeSinceStartup - m_prevDt;
                m_prevDt = Time.realtimeSinceStartup;

                if (!Application.isPlaying)
                    m_animCtrl.UpdateAnim(timeDt);

                m_walkAnimTimer -= timeDt * m_walkSpeed;
                while (m_walkAnimTimer <= 0f) m_walkAnimTimer += 1f;
                m_walkAnimTimer %= 1;
            }
            else if( Event.current.type == EventType.scrollWheel && m_rGridView.Contains(m_mousePos) )
            {
                float prevZoom = m_zoom;
                if (Event.current.delta.y > 0) // back
                {
                    if (m_zoom > 1f)
                        m_zoom = Mathf.Max(m_zoom - 1, 1);
                    else
                        m_zoom = Mathf.Max(m_zoom / 2f, 0.05f);
                }
                else if (Event.current.delta.y < 0) // forward
                {
                    if (m_zoom >= 1f)
                        m_zoom = Mathf.Min(m_zoom + 1, 10);
                    else
                        m_zoom *= 2f;
                }
                m_zoom = Mathf.Clamp(m_zoom, 1f, 5f);

                if (prevZoom != m_zoom)
                {
                    Vector2 vZoomCenter = (m_mousePos - m_rGridView.position);
                    m_vTrans += (prevZoom - m_zoom) * vZoomCenter / (prevZoom * m_zoom);
                }
            }
            else if (Event.current.type == EventType.MouseDrag && m_rGridView.Contains(m_mousePos))
            {
                m_vTrans += Event.current.delta / m_zoom;
            }

            m_mousePos = Event.current.mousePosition;

            DrawGUI();

            if( GUI.changed )
            {
                EditorUtility.SetDirty(m_animCtrl);
            }
        }