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