예제 #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);
            }
        }
    }
    public static void Open(LZFighterStateData data)
    {
        LZFighterStateEditor window = EditorWindow.GetWindow <LZFighterStateEditor>();

        window.data = data;
        window.Init();
        window.Show();
    }
예제 #3
0
    public void DrawState(StateMachineNode state)
    {
        if (state.IsShortcut)
        {
            DrawShortcut(state);
            return;
        }
        LabelTitle(state.name);
        state.data = (LZFighterStateData)EditorGUILayout.ObjectField(state.data, typeof(LZFighterStateData), false);
        if (state.data != null && state.name == "")
        {
            state.name = state.data.name;
        }
        // Edit instance
        if (GUILayout.Button("Edit"))
        {
            if (state.data == null)
            {
                LZFighter fighter   = LZFighterEditor.Instance.fighter;
                string    path      = AssetDatabase.GetAssetPath(fighter);
                string    filename  = Path.GetFileNameWithoutExtension(path);
                string    directory = Path.GetDirectoryName(path);
                if (!AssetDatabase.IsValidFolder(directory + "/" + filename))
                {
                    AssetDatabase.CreateFolder(directory, filename);
                }
                LZFighterStateData newData = ScriptableObject.CreateInstance <LZFighterStateData>();
                AssetDatabase.CreateAsset(newData, directory + "/" + filename + "/" + state.name + ".asset");
                Debug.Log(Path.GetDirectoryName(path));
                state.data = newData;
            }
            LZFighterStateEditor.Open(state.data);
        }
        string currentName = state.name;
        string newName     = EditorGUILayout.TextField("Name:", currentName);

        /*if (currentName != newName && state.data != null) {
         *  AssetDatabase.RenameAsset(AssetDatabase.GetAssetPath(state.data), newName);
         * }*/
        state.name     = newName;
        state.velocity = EditorGUILayout.Vector2Field("StateVelocity: ", state.velocity);
        if (state.data != null)
        {
            state.data.velocity = EditorGUILayout.Vector2Field("DataVelocity:", state.data.velocity);
        }
        state.invert = EditorGUILayout.Toggle("Invert", state.invert);
        state.loop   = EditorGUILayout.Toggle("Loop", state.loop);

        GUITools.ScriptListField(state.scripts, fighter);
    }
예제 #4
0
 public void SetState(LZFighterStateData data)
 {
     this.fighterState = data;
 }