Exemple #1
0
        public override void OnInspectorGUI()
        {
            JTrajectoryClipData clip = (JTrajectoryClipData)target;
            var serializedProperty   = serializedObject.FindProperty("Target");

            EditorGUILayout.PropertyField(serializedProperty);

            var serializedStartTime = serializedObject.FindProperty("startTime");

            EditorGUILayout.PropertyField(serializedStartTime);
            var serializedplaybackDuration = serializedObject.FindProperty("playbackDuration");

            EditorGUILayout.PropertyField(serializedplaybackDuration);
            var serializedlooping = serializedObject.FindProperty("looping");

            EditorGUILayout.PropertyField(serializedlooping);

            EditorDrawUtility.DrawSkillEffectUnit(clip.effectunit);
            EditorDrawUtility.DrawSkillUnit(clip.skillunit);

            if (serializedObject.ApplyModifiedProperties())
            {
                JWindow[] windows = Resources.FindObjectsOfTypeAll <JWindow>();
                foreach (var window in windows)
                {
                    window.Repaint();
                }
            }
        }
Exemple #2
0
        private void DrawUnitList(float width)
        {
            //unit list
            GUILayout.BeginVertical("Box");
            EditorGUILayout.LabelField("SkillUnit List");
            List <SkillUnit.SkillUnit> skillinits = EditorDataContainer.allSkillUnits.units;

            unitScrollPos = EditorGUILayout.BeginScrollView(unitScrollPos);
            //列表
            if (unitList == null)
            {
                // 加入数据数组
                unitList = new ReorderableList(skillinits, typeof(SkillUnit.SkillUnit), false, false, true, true);
            }
            // 绘制Item显示列表
            unitList.drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) =>
            {
                SkillUnit.SkillUnit element = skillinits[index];
                Rect drawRect = new Rect(rect.x, rect.y + 20, width - 30, 600);
                GUILayout.BeginArea(drawRect);
                GUILayout.Label("index: " + index);
                EditorDrawUtility.DrawSkillUnit(DataConvert.ConvertSkillUnit(element));
                GUILayout.EndArea();
                EditorGUILayout.Separator();
            };
            unitList.elementHeight = 600;
            // 绘制表头
            unitList.drawHeaderCallback = (Rect rect) =>
            {
                EditorGUI.LabelField(rect, "SkillUnitList");
            };
            // 选择回调
            unitList.onSelectCallback = (ReorderableList l) =>
            {
                SelectSkillUnit = l.index;
            };
            unitList.DoLayoutList();
            EditorGUILayout.EndScrollView();
            GUILayout.EndVertical();
        }
Exemple #3
0
        public override void OnInspectorGUI()
        {
            JEffectClipData clip = (JEffectClipData)target;
            var             serializedProperty = serializedObject.FindProperty("effectType");

            EditorGUILayout.PropertyField(serializedProperty);

            var startTime = serializedObject.FindProperty("startTime");

            EditorGUILayout.PropertyField(startTime);
            var playbackDuration = serializedObject.FindProperty("playbackDuration");

            EditorGUILayout.PropertyField(playbackDuration);
            var serializedlooping = serializedObject.FindProperty("looping");

            EditorGUILayout.PropertyField(serializedlooping);

            float starttime = 0.5f;
            float phasetime = 0.5f;

            if (clip.effectType == EffectType.Particle || clip.effectType == EffectType.Trajectory)
            {
                starttime = clip.effectunit.artEffect.beginTime / 1000f;
                phasetime = clip.effectunit.artEffect.phaseTime / 1000f;
            }
            else
            if (clip.effectType == EffectType.Camera)
            {
                starttime = clip.cameraAction.delay;
                phasetime = clip.cameraAction.phaseTime;
            }

            bool apply = serializedObject.ApplyModifiedProperties();

            if (apply)
            {
                clip.PlaybackDuration = serializedObject.FindProperty("playbackDuration").floatValue;
                clip.StartTime        = serializedObject.FindProperty("startTime").floatValue;
            }
            if (clip.effectType == EffectType.Particle)
            {
                EditorDrawUtility.DrawSkillEffectUnit(clip.effectunit);
                if (clip.effectunit.artEffect.beginTime / 1000f != starttime || clip.effectunit.artEffect.phaseTime / 1000f != phasetime)
                {
                    clip.PlaybackDuration = (clip.effectunit.artEffect.phaseTime / 1000f);
                    clip.StartTime        = (clip.effectunit.artEffect.beginTime / 1000f);
                    apply = true;
                }
            }
            if (clip.effectType == EffectType.Camera)
            {
                var TargetCamera = serializedObject.FindProperty("TargetCamera");
                EditorGUILayout.PropertyField(TargetCamera);
                EditorDrawUtility.DrawCameraAction(clip.cameraAction);
                if (clip.cameraAction.delay != starttime || clip.cameraAction.phaseTime != phasetime)
                {
                    clip.PlaybackDuration = clip.cameraAction.phaseTime;
                    clip.StartTime        = clip.cameraAction.delay;
                    apply = true;
                }
            }
            if (clip.effectType == EffectType.Trajectory)
            {
                var Target = serializedObject.FindProperty("Target");
                EditorGUILayout.PropertyField(Target);
                var targetObject = serializedObject.FindProperty("targetObject");
                EditorGUILayout.PropertyField(targetObject);
                EditorDrawUtility.DrawSkillEffectUnit(clip.effectunit);
                EditorDrawUtility.DrawSkillUnit(clip.skillunit);
                if (clip.effectunit.artEffect.beginTime / 1000f != starttime || clip.effectunit.artEffect.phaseTime / 1000f != phasetime)
                {
                    clip.PlaybackDuration = clip.effectunit.artEffect.phaseTime / 1000f;
                    clip.StartTime        = clip.effectunit.artEffect.beginTime / 1000f;
                    apply = true;
                }
            }
            if (clip.effectType == EffectType.Sound)
            {
                var sound = serializedObject.FindProperty("sound");
                EditorGUILayout.PropertyField(sound);
                if ((AudioClip)sound.objectReferenceValue != null)
                {
                    EditorGUILayout.FloatField("Duration", ((AudioClip)sound.objectReferenceValue).length);
                }
                var targetObject = serializedObject.FindProperty("targetObject");
                EditorGUILayout.PropertyField(targetObject);

                if (serializedObject.ApplyModifiedProperties())
                {
                    serializedObject.ApplyModifiedProperties();
                    serializedObject.FindProperty("playbackDuration").floatValue = ((AudioClip)sound.objectReferenceValue).length;
                    apply = true;
                }
            }
            if (clip.effectType == EffectType.Animation)
            {
                var targetObject      = serializedObject.FindProperty("targetObject");
                var animController    = serializedObject.FindProperty("animController");
                var stateNameProperty = serializedObject.FindProperty("stateName");
                var layer             = serializedObject.FindProperty("layer");

                GameObject targetObj = (GameObject)targetObject.objectReferenceValue;
                apply = EditorGUILayout.PropertyField(targetObject);
                RuntimeAnimatorController anim0 = (RuntimeAnimatorController)animController.objectReferenceValue;
                Animator anim = targetObj.GetComponent <Animator>();
                if (anim != null)
                {
                    if (anim0 != null)
                    {
                        anim.runtimeAnimatorController = anim0;
                    }
                    if (anim0 == null && anim.runtimeAnimatorController != null)
                    {
                        animController.objectReferenceValue = anim.runtimeAnimatorController;
                    }
                    apply = true;
                }
                EditorGUILayout.PropertyField(animController);

                var availableLayerNames = MecanimAnimationUtility.GetAllLayerNames(targetObj);
                var olayer = EditorGUILayout.Popup("Layer", layer.intValue, availableLayerNames.ToArray());
                if (olayer != layer.intValue)
                {
                    layer.intValue = olayer;
                }
                var availableStateNames = MecanimAnimationUtility.GetAllStateNames(targetObj, layer.intValue);
                var existingState       = -1;
                var existingStateName   = stateNameProperty.stringValue;
                if (availableStateNames.Contains(existingStateName))
                {
                    existingState = availableStateNames.IndexOf(existingStateName);
                }
                var newState = EditorGUILayout.Popup("StateName", existingState, availableStateNames.ToArray());
                if (newState != existingState)
                {
                    stateNameProperty.stringValue = availableStateNames[newState];
                    float duration = MecanimAnimationUtility.GetStateDurationWithAnimatorController(stateNameProperty.stringValue, (RuntimeAnimatorController)animController.objectReferenceValue);
                    clip.PlaybackDuration = duration;
                    serializedObject.FindProperty("playbackDuration").floatValue = duration;
                    apply = true;
                }
            }
            if (apply)
            {
                JWindow[] windows = Resources.FindObjectsOfTypeAll <JWindow>();
                foreach (var window in windows)
                {
                    window.Repaint();
                }
            }
        }
Exemple #4
0
        private void OnGUI()
        {
            LoadFbx();
            LoadEffect();
            EditorGUILayout.BeginHorizontal();
            if (showUnitList)
            {
                EditorGUILayout.BeginVertical();
                GUILayout.Box("UnitList", USEditorUtility.ContentBackground, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true));
                if (UnityEngine.Event.current.type == EventType.Repaint)
                {
                    if (unitRect != GUILayoutUtility.GetLastRect())
                    {
                        unitRect = GUILayoutUtility.GetLastRect();
                        this.Repaint();
                    }
                }
                EditorGUILayout.EndVertical();
            }

            if (showArtList)
            {
                EditorGUILayout.BeginVertical();
                GUILayout.Box("ArtList", USEditorUtility.ContentBackground, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true));
                if (UnityEngine.Event.current.type == EventType.Repaint)
                {
                    if (artRect != GUILayoutUtility.GetLastRect())
                    {
                        artRect = GUILayoutUtility.GetLastRect();
                        this.Repaint();
                    }
                }
                EditorGUILayout.EndVertical();
            }

            EditorGUILayout.BeginVertical();
            GUILayout.Box("SkillUnit", USEditorUtility.ContentBackground, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true));
            if (UnityEngine.Event.current.type == EventType.Repaint)
            {
                if (skillunitRect != GUILayoutUtility.GetLastRect())
                {
                    skillunitRect = GUILayoutUtility.GetLastRect();
                    this.Repaint();
                }
            }
            EditorGUILayout.EndVertical();


            EditorGUILayout.BeginVertical();
            GUILayout.Box("SkillArt", USEditorUtility.ContentBackground, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true));
            if (UnityEngine.Event.current.type == EventType.Repaint)
            {
                if (skillartRect != GUILayoutUtility.GetLastRect())
                {
                    skillartRect = GUILayoutUtility.GetLastRect();
                    this.Repaint();
                }
            }
            EditorGUILayout.EndVertical();

            //EditorGUILayout.BeginVertical();
            GUILayout.Box("Buttons", USEditorUtility.ContentBackground, GUILayout.MaxWidth(150), GUILayout.ExpandHeight(true));
            if (UnityEngine.Event.current.type == EventType.Repaint)
            {
                if (buttonrect != GUILayoutUtility.GetLastRect())
                {
                    buttonrect = GUILayoutUtility.GetLastRect();
                    this.Repaint();
                }
            }
            // EditorGUILayout.EndVertical();


            EditorGUILayout.EndHorizontal();

            if (showUnitList)
            {
                GUILayout.BeginArea(unitRect);
                DrawUnitList(unitRect.width);
                GUILayout.EndArea();
            }

            if (showArtList)
            {
                GUILayout.BeginArea(artRect);
                DrawSkillArtList(artRect.width);
                GUILayout.EndArea();
            }

            GUILayout.BeginArea(skillunitRect);
            EditorDrawUtility.DrawSkillUnit(EditorDataContainer.currentskillAssetData.skillUnit);
            GUILayout.EndArea();

            GUILayout.BeginArea(skillartRect);
            DrawSkillArtEffect(EditorDataContainer.currentskillAssetData.skillArt, skillartRect.width);
            GUILayout.EndArea();

            GUILayout.BeginArea(buttonrect);
            DrawButtons();
            GUILayout.EndArea();
        }