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); } } }
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); } } }
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); }