Ejemplo n.º 1
0
        protected void SharedGUIOne(AC.Char _target)
        {
            _target.GetAnimEngine();

            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Animation settings:", EditorStyles.boldLabel);
            _target.animationEngine = (AnimationEngine)EditorGUILayout.EnumPopup("Animation engine:", _target.animationEngine);
            if (_target.animationEngine == AnimationEngine.Custom)
            {
                _target.customAnimationClass = EditorGUILayout.TextField("Script name:", _target.customAnimationClass);
            }
            _target.motionControl = (MotionControl)EditorGUILayout.EnumPopup("Motion control:", _target.motionControl);
            EditorGUILayout.EndVertical();

            _target.GetAnimEngine().CharSettingsGUI();

            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Movement settings:", EditorStyles.boldLabel);

            if (_target.GetMotionControl() == MotionControl.Automatic)
            {
                _target.walkSpeedScale       = EditorGUILayout.FloatField("Walk speed scale:", _target.walkSpeedScale);
                _target.runSpeedScale        = EditorGUILayout.FloatField("Run speed scale:", _target.runSpeedScale);
                _target.acceleration         = EditorGUILayout.FloatField("Acceleration:", _target.acceleration);
                _target.deceleration         = EditorGUILayout.FloatField("Deceleration:", _target.deceleration);
                _target.runDistanceThreshold = EditorGUILayout.FloatField("Minimum run distance:", _target.runDistanceThreshold);
            }
            if (_target.GetMotionControl() != MotionControl.Manual)
            {
                _target.turnSpeed = EditorGUILayout.FloatField("Turn speed:", _target.turnSpeed);
            }
            _target.turnBeforeWalking = EditorGUILayout.Toggle("Turn before walking?", _target.turnBeforeWalking);
            EditorGUILayout.EndVertical();
        }
Ejemplo n.º 2
0
        protected void SharedGUIOne(AC.Char _target)
        {
            _target.GetAnimEngine();

            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Animation settings:", EditorStyles.boldLabel);
            _target.animationEngine = (AnimationEngine)EditorGUILayout.EnumPopup("Animation engine:", _target.animationEngine);
            if (_target.animationEngine == AnimationEngine.Custom)
            {
                _target.customAnimationClass = EditorGUILayout.TextField("Script name:", _target.customAnimationClass);
            }
            _target.motionControl = (MotionControl)EditorGUILayout.EnumPopup("Motion control:", _target.motionControl);
            EditorGUILayout.EndVertical();

            _target.GetAnimEngine().CharSettingsGUI();

            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Movement settings:", EditorStyles.boldLabel);

            if (_target.GetMotionControl() == MotionControl.Automatic)
            {
                _target.walkSpeedScale       = EditorGUILayout.FloatField("Walk speed scale:", _target.walkSpeedScale);
                _target.runSpeedScale        = EditorGUILayout.FloatField("Run speed scale:", _target.runSpeedScale);
                _target.acceleration         = EditorGUILayout.FloatField("Acceleration:", _target.acceleration);
                _target.deceleration         = EditorGUILayout.FloatField("Deceleration:", _target.deceleration);
                _target.runDistanceThreshold = EditorGUILayout.FloatField("Minimum run distance:", _target.runDistanceThreshold);
            }
            if (_target.GetMotionControl() != MotionControl.Manual)
            {
                _target.turnSpeed = EditorGUILayout.FloatField("Turn speed:", _target.turnSpeed);

                if (_target.GetAnimEngine().isSpriteBased)
                {
                    _target.turn2DCharactersIn3DSpace = EditorGUILayout.Toggle("Turn root object in 3D space?", _target.turn2DCharactersIn3DSpace);
                }
            }
            _target.turnBeforeWalking = EditorGUILayout.Toggle("Turn before walking?", _target.turnBeforeWalking);
            _target.retroPathfinding  = EditorGUILayout.Toggle("Retro-style movement?", _target.retroPathfinding);

            _target.headTurnSpeed = EditorGUILayout.Slider("Head turn speed:", _target.headTurnSpeed, 0.1f, 20f);
            if (_target is Player && AdvGame.GetReferences().settingsManager != null && AdvGame.GetReferences().settingsManager.PlayerCanReverse())
            {
                _target.reverseSpeedFactor = EditorGUILayout.Slider("Reverse speed factor:", _target.reverseSpeedFactor, 0f, 1f);
            }

            EditorGUILayout.EndVertical();
        }
Ejemplo n.º 3
0
        protected void SharedGUIOne(AC.Char _target)
        {
            _target.GetAnimEngine();

            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Animation settings:", EditorStyles.boldLabel);
            _target.animationEngine = (AnimationEngine)CustomGUILayout.EnumPopup("Animation engine:", _target.animationEngine, "", "The animation engine that the character relies on for animation playback");
            if (_target.animationEngine == AnimationEngine.Custom)
            {
                _target.customAnimationClass = CustomGUILayout.TextField("Script name:", _target.customAnimationClass, "", "The class name of the AnimEngine ScriptableObject subclass that animates the character");
            }
            _target.motionControl = (MotionControl)CustomGUILayout.EnumPopup("Motion control:", _target.motionControl, "", "How motion is controlled");
            EditorGUILayout.EndVertical();

            _target.GetAnimEngine().CharSettingsGUI();

            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Movement settings:", EditorStyles.boldLabel);

            if (_target.GetMotionControl() == MotionControl.Automatic)
            {
                _target.walkSpeedScale       = CustomGUILayout.FloatField("Walk speed scale:", _target.walkSpeedScale, "", "The movement speed when walking");
                _target.runSpeedScale        = CustomGUILayout.FloatField("Run speed scale:", _target.runSpeedScale, "", "The movement speed when running");
                _target.acceleration         = CustomGUILayout.FloatField("Acceleration:", _target.acceleration, "", "The acceleration factor");
                _target.deceleration         = CustomGUILayout.FloatField("Deceleration:", _target.deceleration, "", "The deceleration factor");
                _target.runDistanceThreshold = CustomGUILayout.FloatField("Minimum run distance:", _target.runDistanceThreshold, "", "The minimum distance between the character and its destination for running to be possible");
            }
            if (_target.GetMotionControl() != MotionControl.Manual)
            {
                _target.turnSpeed = CustomGUILayout.FloatField("Turn speed:", _target.turnSpeed, "", "The turn speed");

                if (_target.GetAnimEngine().isSpriteBased)
                {
                    _target.turn2DCharactersIn3DSpace = CustomGUILayout.Toggle("Turn root object in 3D?", _target.turn2DCharactersIn3DSpace, "", "If True, then the root object of a 2D, sprite-based character will rotate around the Z-axis. Otherwise, turning will be simulated and the actual rotation will be unaffected");
                }
            }
            _target.turnBeforeWalking = CustomGUILayout.Toggle("Turn before walking?", _target.turnBeforeWalking, "", "If True, the character will turn on the spot to face their destination before moving");
            _target.retroPathfinding  = CustomGUILayout.Toggle("Retro-style movement?", _target.retroPathfinding, "", "Enables 'retro-style' movement when pathfinding, where characters ignore Acceleration and Deceleration values, and turn instantly when moving");

            _target.headTurnSpeed = CustomGUILayout.Slider("Head turn speed:", _target.headTurnSpeed, 0.1f, 20f, "", "The speed of head-turning");
            if (_target is Player && AdvGame.GetReferences().settingsManager != null && AdvGame.GetReferences().settingsManager.PlayerCanReverse())
            {
                _target.reverseSpeedFactor = CustomGUILayout.Slider("Reverse speed factor:", _target.reverseSpeedFactor, 0f, 1f, "", "The factor by which speed is reduced when reversing");
            }

            EditorGUILayout.EndVertical();
        }
Ejemplo n.º 4
0
        protected void SharedGUIOne(AC.Char _target)
        {
            _target.GetAnimEngine();

            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Animation settings:", EditorStyles.boldLabel);
            _target.animationEngine = (AnimationEngine)EditorGUILayout.EnumPopup("Animation engine:", _target.animationEngine);
            if (_target.animationEngine == AnimationEngine.Sprites2DToolkit && !tk2DIntegration.IsDefinePresent())
            {
                EditorGUILayout.HelpBox("The 'tk2DIsPresent' preprocessor define must be declared in the\ntk2DIntegration.cs script. Please open it and follow instructions.", MessageType.Warning);
            }
            else if (_target.animationEngine == AnimationEngine.Custom)
            {
                _target.customAnimationClass = EditorGUILayout.TextField("Script name:", _target.customAnimationClass);
            }
            _target.motionControl = (MotionControl)EditorGUILayout.EnumPopup("Motion control:", _target.motionControl);
            EditorGUILayout.EndVertical();

            _target.GetAnimEngine().CharSettingsGUI();

            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Movement settings:", EditorStyles.boldLabel);

            if (_target.GetMotionControl() == MotionControl.Automatic)
            {
                _target.walkSpeedScale       = EditorGUILayout.FloatField("Walk speed scale:", _target.walkSpeedScale);
                _target.runSpeedScale        = EditorGUILayout.FloatField("Run speed scale:", _target.runSpeedScale);
                _target.acceleration         = EditorGUILayout.FloatField("Acceleration:", _target.acceleration);
                _target.deceleration         = EditorGUILayout.FloatField("Deceleration:", _target.deceleration);
                _target.runDistanceThreshold = EditorGUILayout.FloatField("Minimum run distance:", _target.runDistanceThreshold);
            }
            if (_target.GetMotionControl() != MotionControl.Manual)
            {
                _target.turnSpeed = EditorGUILayout.FloatField("Turn speed:", _target.turnSpeed);
            }
            _target.turnBeforeWalking = EditorGUILayout.Toggle("Turn before walking?", _target.turnBeforeWalking);
            EditorGUILayout.EndVertical();
        }
Ejemplo n.º 5
0
        protected void SharedGUITwo(AC.Char _target)
        {
            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Physics settings:", EditorStyles.boldLabel);
            _target.ignoreGravity = EditorGUILayout.Toggle("Ignore gravity?", _target.ignoreGravity);
            if (_target.GetComponent <Rigidbody>() != null || _target.GetComponent <Rigidbody2D>() != null)
            {
                _target.freezeRigidbodyWhenIdle = EditorGUILayout.Toggle("Freeze Rigidbody when Idle?", _target.freezeRigidbodyWhenIdle);
                if (_target.GetComponent <Rigidbody>() != null)
                {
                    _target.useRigidbodyForMovement = EditorGUILayout.Toggle("Move with Rigidbody?", _target.useRigidbodyForMovement);

                    if (_target.useRigidbodyForMovement)
                    {
                        if (_target.GetAnimator() != null && _target.GetAnimator().applyRootMotion)
                        {
                            EditorGUILayout.HelpBox("Rigidbody movement will be disabled as 'Root motion' is enabled in the Animator.", MessageType.Info);
                        }
                        else if (_target.GetComponent <Rigidbody>().interpolation == RigidbodyInterpolation.None)
                        {
                            EditorGUILayout.HelpBox("For smooth movement, the Rigidbody's 'Interpolation' should be set to either 'Interpolate' or 'Extrapolate'.", MessageType.Warning);
                        }
                    }
                }
                else if (_target.GetComponent <Rigidbody2D>() != null)
                {
                    _target.useRigidbody2DForMovement = EditorGUILayout.Toggle("Move with Rigidbody 2D?", _target.useRigidbody2DForMovement);

                    if (_target.useRigidbody2DForMovement)
                    {
                        if (_target.GetAnimator() != null && _target.GetAnimator().applyRootMotion)
                        {
                            EditorGUILayout.HelpBox("Rigidbody movement will be disabled as 'Root motion' is enabled in the Animator.", MessageType.Info);
                        }
                        else if (_target.GetComponent <Rigidbody2D>().interpolation == RigidbodyInterpolation2D.None)
                        {
                            EditorGUILayout.HelpBox("For smooth movement, the Rigidbody's 'Interpolation' should be set to either 'Interpolate' or 'Extrapolate'.", MessageType.Warning);
                        }

                        if (SceneSettings.CameraPerspective != CameraPerspective.TwoD)
                        {
                            EditorGUILayout.HelpBox("Rigidbody2D-based motion only allows for X and Y movement, not Z, which may not be appropriate for 3D.", MessageType.Warning);
                        }

                                                #if (UNITY_5_6_OR_NEWER || UNITY_2017_1_OR_NEWER)
                        if (_target.GetAnimEngine().isSpriteBased&& _target.turn2DCharactersIn3DSpace)
                        {
                            EditorGUILayout.HelpBox("For best results, 'Turn root object in 3D space?' above should be disabled.", MessageType.Warning);
                        }
                                                #endif
                    }
                }
            }

            if (_target.GetComponent <Collider>() != null && _target.GetComponent <CharacterController>() == null)
            {
                _target.groundCheckLayerMask = LayerMaskField("Ground-check layer(s):", _target.groundCheckLayerMask);
            }
            EditorGUILayout.EndVertical();


            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Audio clips:", EditorStyles.boldLabel);

            _target.walkSound = (AudioClip)EditorGUILayout.ObjectField("Walk sound:", _target.walkSound, typeof(AudioClip), false);
            _target.runSound  = (AudioClip)EditorGUILayout.ObjectField("Run sound:", _target.runSound, typeof(AudioClip), false);
            if (AdvGame.GetReferences() != null && AdvGame.GetReferences().speechManager != null && AdvGame.GetReferences().speechManager.scrollSubtitles)
            {
                _target.textScrollClip = (AudioClip)EditorGUILayout.ObjectField("Text scroll override:", _target.textScrollClip, typeof(AudioClip), false);
            }
            _target.soundChild        = (Sound)EditorGUILayout.ObjectField("SFX Sound child:", _target.soundChild, typeof(Sound), true);
            _target.speechAudioSource = (AudioSource)EditorGUILayout.ObjectField("Speech AudioSource:", _target.speechAudioSource, typeof(AudioSource), true);
            EditorGUILayout.EndVertical();

            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Dialogue settings:", EditorStyles.boldLabel);

            _target.speechColor         = EditorGUILayout.ColorField("Speech text colour:", _target.speechColor);
            _target.speechLabel         = EditorGUILayout.TextField("Speaker label:", _target.speechLabel);
            _target.speechMenuPlacement = (Transform)EditorGUILayout.ObjectField("Speech menu placement child:", _target.speechMenuPlacement, typeof(Transform), true);
            if (_target.useExpressions)
            {
                EditorGUILayout.LabelField("Default portrait graphic:");
            }
            else
            {
                EditorGUILayout.LabelField("Portrait graphic:");
            }
            _target.portraitIcon.ShowGUI(false);

            _target.useExpressions = EditorGUILayout.Toggle("Use expressions?", _target.useExpressions);
            if (_target.useExpressions)
            {
                _target.GetAnimEngine().CharExpressionsGUI();

                EditorGUILayout.Space();
                EditorGUILayout.BeginVertical("Button");
                for (int i = 0; i < _target.expressions.Count; i++)
                {
                    EditorGUILayout.BeginHorizontal();
                    EditorGUILayout.LabelField("Expression #" + _target.expressions[i].ID.ToString(), EditorStyles.boldLabel);
                    if (GUILayout.Button(Resource.CogIcon, GUILayout.Width(20f), GUILayout.Height(15f)))
                    {
                        ExpressionSideMenu(_target, i);
                    }
                    EditorGUILayout.EndHorizontal();
                    _target.expressions[i].ShowGUI();
                }

                if (GUILayout.Button("Add new expression"))
                {
                    _target.expressions.Add(new Expression(GetExpressionIDArray(_target.expressions)));
                }
                EditorGUILayout.EndVertical();
            }

            EditorGUILayout.EndVertical();
        }
Ejemplo n.º 6
0
        protected void SharedGUITwo(AC.Char _target)
        {
            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Physics settings", EditorStyles.boldLabel);
            _target.ignoreGravity = CustomGUILayout.Toggle("Ignore gravity?", _target.ignoreGravity, "", "If True, the character will ignore the effects of gravity");
            if (_target.GetComponent <Rigidbody>() != null || _target.GetComponent <Rigidbody2D>() != null)
            {
                if (_target.motionControl == MotionControl.Automatic)
                {
                    _target.freezeRigidbodyWhenIdle = CustomGUILayout.Toggle("Freeze Rigidbody when Idle?", _target.freezeRigidbodyWhenIdle, "", "If True, the character's Rigidbody will be frozen in place when idle. This is to help slipping when on sloped surfaces");
                }

                if (_target.motionControl != MotionControl.Manual)
                {
                    if (_target.GetComponent <Rigidbody>() != null)
                    {
                        _target.useRigidbodyForMovement = CustomGUILayout.Toggle("Move with Rigidbody?", _target.useRigidbodyForMovement, "", "If True, then it will be moved by adding forces in FixedUpdate, as opposed to the transform being manipulated in Update");

                        if (_target.useRigidbodyForMovement)
                        {
                            if (_target.GetAnimator() != null && _target.GetAnimator().applyRootMotion)
                            {
                                EditorGUILayout.HelpBox("Rigidbody movement will be disabled as 'Root motion' is enabled in the Animator.", MessageType.Warning);
                            }
                            else if (_target.GetComponent <Rigidbody>().interpolation == RigidbodyInterpolation.None)
                            {
                                EditorGUILayout.HelpBox("For smooth movement, the Rigidbody's 'Interpolation' should be set to either 'Interpolate' or 'Extrapolate'.", MessageType.Warning);
                            }
                        }
                    }
                    else if (_target.GetComponent <Rigidbody2D>() != null)
                    {
                        _target.useRigidbody2DForMovement = CustomGUILayout.Toggle("Move with Rigidbody 2D?", _target.useRigidbody2DForMovement, "", "If True, then it will be moved by adding forces in FixedUpdate, as opposed to the transform being manipulated in Update");

                        if (_target.useRigidbody2DForMovement)
                        {
                            if (_target.GetAnimator() != null && _target.GetAnimator().applyRootMotion)
                            {
                                EditorGUILayout.HelpBox("Rigidbody movement will be disabled as 'Root motion' is enabled in the Animator.", MessageType.Warning);
                            }
                            else if (_target.GetComponent <Rigidbody2D>().interpolation == RigidbodyInterpolation2D.None)
                            {
                                EditorGUILayout.HelpBox("For smooth movement, the Rigidbody's 'Interpolation' should be set to either 'Interpolate' or 'Extrapolate'.", MessageType.Warning);
                            }

                            if (SceneSettings.CameraPerspective != CameraPerspective.TwoD)
                            {
                                EditorGUILayout.HelpBox("Rigidbody2D-based motion only allows for X and Y movement, not Z, which may not be appropriate for 3D.", MessageType.Warning);
                            }

                            if (_target.GetAnimEngine().isSpriteBased&& _target.turn2DCharactersIn3DSpace)
                            {
                                EditorGUILayout.HelpBox("For best results, 'Turn root object in 3D space?' above should be disabled.", MessageType.Warning);
                            }
                        }
                    }
                }
            }

            if (_target.GetComponent <Collider>() != null && _target.GetComponent <CharacterController>() == null)
            {
                _target.groundCheckLayerMask = LayerMaskField("Ground-check layer(s):", _target.groundCheckLayerMask);
            }
            EditorGUILayout.EndVertical();


            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Audio clips", EditorStyles.boldLabel);

            _target.walkSound = (AudioClip)CustomGUILayout.ObjectField <AudioClip> ("Walk sound:", _target.walkSound, false, "", "The sound to play when walking");
            _target.runSound  = (AudioClip)CustomGUILayout.ObjectField <AudioClip> ("Run sound:", _target.runSound, false, "", "The sound to play when running");
            if (AdvGame.GetReferences() != null && AdvGame.GetReferences().speechManager != null && AdvGame.GetReferences().speechManager.scrollSubtitles)
            {
                _target.textScrollClip = (AudioClip)CustomGUILayout.ObjectField <AudioClip> ("Text scroll override:", _target.textScrollClip, false, "", "The sound to play when the character's speech text is scrolling");
            }
            _target.soundChild        = (Sound)CustomGUILayout.ObjectField <Sound> ("SFX Sound child:", _target.soundChild, true, "", "");
            _target.speechAudioSource = (AudioSource)CustomGUILayout.ObjectField <AudioSource> ("Speech AudioSource:", _target.speechAudioSource, true, "", "The AudioSource from which to play speech audio");
            EditorGUILayout.EndVertical();

            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Dialogue settings", EditorStyles.boldLabel);

            _target.speechColor         = CustomGUILayout.ColorField("Speech text colour:", _target.speechColor, "", "");
            _target.speechLabel         = CustomGUILayout.TextField("Speaker label:", _target.speechLabel, "", "");
            _target.speechMenuPlacement = (Transform)CustomGUILayout.ObjectField <Transform> ("Speech menu placement child:", _target.speechMenuPlacement, true, "", "The Transform at which to place Menus set to appear 'Above Speaking Character'. If this is not set, the placement will be set automatically");

            if (_target.useExpressions)
            {
                EditorGUILayout.LabelField("Default portrait graphic:");
            }
            else
            {
                EditorGUILayout.LabelField("Portrait graphic:");
            }
            _target.portraitIcon.ShowGUI(false);

            _target.useExpressions = CustomGUILayout.Toggle("Use expressions?", _target.useExpressions, "", "If True, speech text can use expression tokens to change the character's expression");
            if (_target.useExpressions)
            {
                _target.GetAnimEngine().CharExpressionsGUI();

                EditorGUILayout.Space();
                EditorGUILayout.BeginVertical("Button");
                for (int i = 0; i < _target.expressions.Count; i++)
                {
                    EditorGUILayout.BeginHorizontal();
                    EditorGUILayout.LabelField("Expression #" + _target.expressions[i].ID.ToString(), EditorStyles.boldLabel);

                    if (GUILayout.Button("", CustomStyles.IconCog))
                    {
                        ExpressionSideMenu(_target, i);
                    }
                    EditorGUILayout.EndHorizontal();
                    _target.expressions[i].ShowGUI();
                }

                if (GUILayout.Button("Add new expression"))
                {
                    _target.expressions.Add(new Expression(GetExpressionIDArray(_target.expressions)));
                }
                EditorGUILayout.EndVertical();
            }

            EditorGUILayout.EndVertical();
        }