/// <summary> /// 任务点GUI事件处理 /// </summary> private void OnPointEventHandle() { if (_currentContent != null && Event.current != null) { Vector2 mousePosition = Event.current.mousePosition; switch (Event.current.type) { case EventType.MouseDown: if (Event.current.button == 1) { GenericMenu gm = new GenericMenu(); gm.AddItem(new GUIContent("<New Task Point Script>"), false, () => { NewTaskPointScript(); }); List <Type> types = ReflectionToolkit.GetTypesInRunTimeAssemblies(type => { return(type.IsSubclassOf(typeof(TaskPointBase))); }); for (int i = 0; i < types.Count; i++) { Type type = types[i]; string contentName = type.FullName; TaskPointAttribute attri = type.GetCustomAttribute <TaskPointAttribute>(); if (attri != null) { contentName = attri.Name; } gm.AddItem(new GUIContent("Add Task Point/" + contentName), false, () => { AddPoint(type, mousePosition); }); } StringToolkit.BeginNoRepeatNaming(); for (int i = 0; i < _currentContent.Points.Count; i++) { TaskPointBase point = _currentContent.Points[i]; gm.AddItem(new GUIContent(StringToolkit.GetNoRepeatName("Find Task Point/" + point.Name)), false, () => { FindPoint(point); }); } gm.ShowAsContext(); } break; case EventType.MouseDrag: if (Event.current.button == 2) { for (int i = 0; i < _currentContent.Points.Count; i++) { _currentContent.Points[i].OnDrag(Event.current.delta); } GUI.changed = true; } break; } for (int i = 0; i < _currentContent.Points.Count; i++) { _currentContent.Points[i].OnPointEventHandle(Event.current, _currentContent); } } }
/// <summary> /// Vector3转换为标准Copy字符串 /// </summary> /// <param name="value">Vector3值</param> /// <param name="format">格式</param> /// <returns>Copy字符串</returns> public static string ToCopyString(this Vector3 value, string format) { return(StringToolkit.Concat(value.x.ToString(format), "f,", value.y.ToString(format), "f,", value.z.ToString(format), "f")); }
/// <summary> /// Quaternion转换为标准Copy字符串 /// </summary> /// <param name="value">Quaternion值</param> /// <param name="format">格式</param> /// <returns>Copy字符串</returns> public static string ToCopyString(this Quaternion value, string format) { return(StringToolkit.Concat(value.x.ToString(format), "f,", value.y.ToString(format), "f,", value.z.ToString(format), "f,", value.w.ToString(format), "f")); }
/// <summary> /// 任务点GUI事件处理 /// </summary> private void OnPointEventHandle() { if (_currentContent != null && Event.current != null) { Vector2 pos = Event.current.mousePosition; switch (Event.current.type) { case EventType.MouseDown: if (Event.current.button == 1) { GenericMenu gm = new GenericMenu(); gm.AddItem(new GUIContent(GetWord("Add Task Point") + "/默认"), false, () => { AddPoint(_currentContent, typeof(TaskPointDefault), pos); }); List <Type> types = ReflectionToolkit.GetTypesInRunTimeAssemblies(type => { return(type.IsSubclassOf(typeof(TaskPointBase)) && !type.IsAbstract && type != typeof(TaskPointDefault)); }); for (int i = 0; i < types.Count; i++) { Type type = types[i]; string pointName = type.FullName; TaskPointAttribute attribute = type.GetCustomAttribute <TaskPointAttribute>(); if (attribute != null) { pointName = attribute.Name; } gm.AddItem(new GUIContent(GetWord("Add Task Point") + "/" + pointName), false, () => { AddPoint(_currentContent, type, pos); }); } StringToolkit.BeginNoRepeatNaming(); for (int i = 0; i < _currentContent.Points.Count; i++) { TaskPointBase point = _currentContent.Points[i]; gm.AddItem(new GUIContent(StringToolkit.GetNoRepeatName(GetWord("Find Task Point") + "/" + point.Name)), false, () => { FindPoint(point); }); } gm.AddSeparator(""); CopyTaskPoint(gm); PasteTaskPoint(gm, pos); gm.AddSeparator(""); gm.AddItem(new GUIContent(GetWord("Collapse All")), false, () => { for (int i = 0; i < _currentContent.Points.Count; i++) { TaskPointBase point = _currentContent.Points[i]; point.IsExpand = false; } GUI.changed = true; }); gm.AddItem(new GUIContent(GetWord("Expand All")), false, () => { for (int i = 0; i < _currentContent.Points.Count; i++) { TaskPointBase point = _currentContent.Points[i]; point.IsExpand = true; } GUI.changed = true; }); gm.AddSeparator(""); gm.AddItem(new GUIContent(GetWord("Enable All")), false, () => { for (int i = 0; i < _currentContent.Points.Count; i++) { TaskPointBase point = _currentContent.Points[i]; point.IsEnable = true; } GUI.changed = true; }); gm.AddItem(new GUIContent(GetWord("Disable All")), false, () => { for (int i = 0; i < _currentContent.Points.Count; i++) { TaskPointBase point = _currentContent.Points[i]; point.IsEnable = false; } GUI.changed = true; }); gm.AddSeparator(""); gm.AddItem(new GUIContent(GetWord("<New Task Point Script>")), false, () => { NewTaskPointScript(); }); gm.ShowAsContext(); } break; case EventType.MouseDrag: if (Event.current.button == 2) { for (int i = 0; i < _currentContent.Points.Count; i++) { _currentContent.Points[i].OnDrag(Event.current.delta); } GUI.changed = true; } break; case EventType.KeyDown: switch (Event.current.keyCode) { case KeyCode.LeftAlt: case KeyCode.RightAlt: _isBreakDepend = true; GUI.changed = true; break; } break; case EventType.KeyUp: switch (Event.current.keyCode) { case KeyCode.LeftAlt: case KeyCode.RightAlt: _isBreakDepend = false; GUI.changed = true; break; } break; } for (int i = 0; i < _currentContent.Points.Count; i++) { _currentContent.Points[i].OnPointEventHandle(Event.current, _contentAsset, _currentContent, _getWord); } } }