ict.xunfei/Assets/Scripts/UAV/Editor/UAVControllerEditor.cs

114 lines
7.4 KiB
C#

using PA_DronePack;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
//[CanEditMultipleObjects]
[CustomEditor(typeof(UAVController))]
public class UAVControllerEditor : Editor
{
private UAVController dcoScript;
private bool fold;
public void OnEnable()
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
dcoScript = (UAVController)base.target;
}
public override void OnInspectorGUI()
{
GUI.enabled = false;
EditorGUILayout.ObjectField("Script", MonoScript.FromMonoBehaviour((MonoBehaviour)(object)dcoScript), typeof(DroneController), false);
GUI.enabled = true;
EditorGUILayout.LabelField("Movement Values", EditorStyles.boldLabel);
dcoScript.forwardSpeed = EditorGUILayout.FloatField(new GUIContent("Forward Speed", "sets the drone's max forward speed"), dcoScript.forwardSpeed);
dcoScript.backwardSpeed = EditorGUILayout.FloatField(new GUIContent("Backward Speed", "sets the drone's max backward speed"), dcoScript.backwardSpeed);
GUILayout.Space(10f);
dcoScript.rightSpeed = EditorGUILayout.FloatField(new GUIContent("Strafe Right Speed", "sets the drone's max right strafe speed"), dcoScript.rightSpeed);
dcoScript.leftSpeed = EditorGUILayout.FloatField(new GUIContent("Strafe Left Speed", "sets the drone's max left strafe speed"), dcoScript.leftSpeed);
GUILayout.Space(10f);
dcoScript.riseSpeed = EditorGUILayout.FloatField(new GUIContent("Height Rise Speed", "sets the drone's max rise speed"), dcoScript.riseSpeed);
dcoScript.lowerSpeed = EditorGUILayout.FloatField(new GUIContent("Height Lower Speed", "sets the drone's max lower speed"), dcoScript.lowerSpeed);
GUILayout.Space(10f);
dcoScript.acceleration = EditorGUILayout.Slider(new GUIContent("¼ÓËÙ¶È", "how fast the drone speeds up"), dcoScript.acceleration, 0.1f, 1f);
dcoScript.deceleration = EditorGUILayout.Slider(new GUIContent("¼õËÙ¶È", "how fast the drone slows down"), dcoScript.deceleration, 0.1f, 1f);
dcoScript.stability = EditorGUILayout.Slider(new GUIContent("Îȶ¨ÐÔ", "how eaisly the drone is affected by outside forces"), dcoScript.stability, 0f, 1f);
dcoScript.turnSensitivty = EditorGUILayout.Slider(new GUIContent("ת¶¯ÁéÃô¶È", "how fast the drone rotates"), dcoScript.turnSensitivty, 0.1f, 5f);
GUILayout.Space(10f);
dcoScript.motorOn = EditorGUILayout.Toggle(new GUIContent("ÎÞÈË»úÒýÇæÊÇ·ñÆô¶¯", "states whether or not the drone active on start"), dcoScript.motorOn);
dcoScript.mode_fly_by_propeller = EditorGUILayout.Toggle(new GUIContent("¸÷ÐýÒíµ¥¿ØÄ£Ê½", "states whether or not the drone use single model"), dcoScript.mode_fly_by_propeller);
//EditorGUILayout.PropertyField(base.serializedObject.FindProperty("single_propeller_mode"), true);
dcoScript.headless = EditorGUILayout.Toggle(new GUIContent("Use Headless Mode?", "makes the drone move relative to an external compass"), dcoScript.headless);
if (dcoScript.headless)
{
dcoScript.compass = EditorGUILayout.ObjectField(new GUIContent("Headless Compass", "the external compass used to control the drone's flight direction"), dcoScript.compass, typeof(Transform), true) as Transform;
}
else
{
GUILayout.Space(18f);
}
//GUILayout.Space(10f);
//EditorGUILayout.HelpBox("Download the Full version of this DronePack to Unlock more customization options!", MessageType.Info);
fold = EditorGUILayout.BeginFoldoutHeaderGroup(fold, "Other Opitions");
EditorGUILayout.EndFoldoutHeaderGroup();
if (fold)
{
EditorGUI.BeginDisabledGroup(disabled: false);
EditorGUILayout.LabelField("Appearance", EditorStyles.boldLabel);
EditorGUILayout.PropertyField(base.serializedObject.FindProperty("propellers"), true);
EditorGUILayout.PropertyField(base.serializedObject.FindProperty("propSpinSpeed"));
EditorGUILayout.PropertyField(base.serializedObject.FindProperty("propStopSpeed"));
if (dcoScript.headless)
{
EditorGUI.BeginDisabledGroup(disabled: true);
EditorGUILayout.TextField(new GUIContent("Front Tilt", "tilt points disabled in headless mode"), "Tilt Points disabled in Headless mode...");
EditorGUILayout.TextField(new GUIContent("Back Tilt", "tilt points disabled in headless mode"), "...");
EditorGUILayout.TextField(new GUIContent("Right Tilt", "tilt points disabled in headless mode"), "...");
EditorGUILayout.TextField(new GUIContent("Left Tilt", "tilt points disabled in headless mode"), "...");
EditorGUI.EndDisabledGroup();
}
else
{
EditorGUILayout.PropertyField(base.serializedObject.FindProperty("frontTilt"));
EditorGUILayout.PropertyField(base.serializedObject.FindProperty("backTilt"));
EditorGUILayout.PropertyField(base.serializedObject.FindProperty("rightTilt"));
EditorGUILayout.PropertyField(base.serializedObject.FindProperty("leftTilt"));
}
GUILayout.Space(10f);
EditorGUILayout.LabelField("Collision Settings", EditorStyles.boldLabel);
dcoScript.fallAfterCollision = EditorGUILayout.Toggle(new GUIContent("Fall After Collision?", "set whether or not the drone falls after a large impact"), dcoScript.fallAfterCollision);
EditorGUILayout.PropertyField(base.serializedObject.FindProperty("fallMinimumForce"));
EditorGUILayout.PropertyField(base.serializedObject.FindProperty("sparkMinimumForce"));
EditorGUILayout.PropertyField(base.serializedObject.FindProperty("sparkPrefab"));
GUILayout.Space(10f);
EditorGUILayout.LabelField("Sound Effects", EditorStyles.boldLabel);
EditorGUILayout.PropertyField(base.serializedObject.FindProperty("flyingSound"));
EditorGUILayout.PropertyField(base.serializedObject.FindProperty("sparkSound"));
GUILayout.Space(10f);
EditorGUILayout.LabelField("Read Only Variables", EditorStyles.boldLabel);
EditorGUILayout.PropertyField(base.serializedObject.FindProperty("collisionMagnitude"));
EditorGUILayout.PropertyField(base.serializedObject.FindProperty("liftForce"));
EditorGUILayout.PropertyField(base.serializedObject.FindProperty("driveForce"));
EditorGUILayout.PropertyField(base.serializedObject.FindProperty("strafeForce"));
EditorGUILayout.PropertyField(base.serializedObject.FindProperty("turnForce"));
EditorGUILayout.PropertyField(base.serializedObject.FindProperty("groundDistance"));
EditorGUILayout.PropertyField(base.serializedObject.FindProperty("uprightAngleDistance"));
EditorGUILayout.PropertyField(base.serializedObject.FindProperty("calPropSpeed"));
EditorGUILayout.PropertyField(base.serializedObject.FindProperty("startRotation"), true);
EditorGUI.EndDisabledGroup();
}
if (GUI.changed)
{
base.serializedObject.ApplyModifiedProperties();
EditorUtility.SetDirty((UnityEngine.Object)(object)dcoScript);
EditorUtility.SetDirty(((Component)(object)dcoScript).gameObject);
}
}
}