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