示例#1
0
    public static void Convert(FighterObject obj)
    {
        string objPath   = AssetDatabase.GetAssetPath(obj);
        string directory = Path.GetDirectoryName(objPath);

        if (!AssetDatabase.IsValidFolder(directory + "/" + obj.name))
        {
            AssetDatabase.CreateFolder(directory, obj.name);
        }
        string folderPath = directory + "/" + obj.name + "/";

        foreach (Move m in obj.moves)
        {
            string             name = m.name;
            LZFighterStateData data = ScriptableObject.CreateInstance <LZFighterStateData>();
            AssetDatabase.CreateAsset(data, folderPath + name + ".asset");
            data.name     = m.name;
            data.velocity = m.velocity;
            foreach (FighterState frame in m.frames)
            {
                LZFighterFrame f = new LZFighterFrame();

                f.frameType = (LZFighterFrame.Type)frame.frameType;
                f.velocity  = frame.velocity;
                f.sprite    = frame.sprite;
                f.time      = frame.time;
                foreach (HitBox hb in frame.hitboxes)
                {
                    f.hitboxes.Add(new HitBox(hb));
                }
                data.frames.Add(f);
            }
        }
    }
示例#2
0
    private void OnRenderObject()
    {
        LZFighterFrame frame = fighter.CurrentFrame;

        GetComponent <SpriteRenderer>().sprite = frame.sprite;
        if (debug)
        {
            Debug.DrawLine(transform.position, transform.position + transform.up * 3, fighter.stateMachine.allowInput ? Color.blue : Color.red);
            foreach (HitBox hb in frame.hitboxes)
            {
                hb.Draw(transform.localToWorldMatrix);
            }
        }
    }
示例#3
0
 public void SetFrame(LZFighterFrame frame)
 {
     this.frame = frame;
 }
    private bool FramePreviewButton(LZFighterFrame frame, bool selected, int frameID)
    {
        Rect  rect      = GUILayoutUtility.GetRect(GUIContent.none, GUITools.NodeStyle, GUILayout.Height(75), GUILayout.Width(75));
        bool  clicked   = false;
        Event ev        = Event.current;
        int   controlID = GUIUtility.GetControlID(FocusType.Passive);

        GUITools.ButtonInfo info = GUIUtility.GetStateObject(typeof(GUITools.ButtonInfo), controlID) as GUITools.ButtonInfo;

        switch (ev.GetTypeForControl(controlID))
        {
        case EventType.MouseUp:
            info.mouseDown = false;
            if (rect.Contains(ev.mousePosition))
            {
                clicked = true;
            }
            if (GUIUtility.hotControl == controlID)
            {
                ev.Use();
                GUIUtility.hotControl = 0;
            }
            break;

        case EventType.MouseDown:
            if (rect.Contains(ev.mousePosition))
            {
                info.mouseDown = true;
                ev.Use();
                GUIUtility.hotControl = controlID;
                if (ev.clickCount == 2)
                {
                    EditorGUIUtility.ShowObjectPicker <Sprite>(frame.sprite, false, "", controlID);
                }
            }
            break;

        case EventType.ExecuteCommand:
            if (ev.commandName == "ObjectSelectorUpdated" && selectedFrame == frameID)
            {
                frame.sprite = (Sprite)EditorGUIUtility.GetObjectPickerObject();
                ev.Use();
            }
            break;

        case EventType.Repaint:
            Color rectangle = new Color(0.6f, 0.6f, 0.6f);
            if (selected)
            {
                rectangle = GUITools.darkCyan;
            }
            else if (info.mouseDown)
            {
                rectangle = Color.gray;
            }
            rect = GUITools.PaddedContainer.padding.Remove(rect);
            EditorGUI.DrawRect(rect, rectangle);

            if (frame.sprite != null)
            {
                GUI.DrawTextureWithTexCoords(rect, frame.sprite.texture, frame.sprite.GetSpriteRect());
            }
            break;
        }

        return(clicked);
    }