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

287 lines
10 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System;
//using System.Numerics;
[CustomEditor(typeof(UAVManager))]
public class UAVManagerEitor : Editor
{
UAVManager _tar;
SerializedProperty UAVParent;
SerializedProperty wall_layer;
SerializedProperty array_light_json_data;
SerializedProperty array_position_json_data;
SerializedProperty array_position_json_data2;
string color_value;
float color_intensity;
private void OnEnable()
{
_tar = (UAVManager)target;
wall_layer = serializedObject.FindProperty("ColliderLayer");
UAVParent = serializedObject.FindProperty("uav_parent");
array_light_json_data = serializedObject.FindProperty("array_light_json_data");
array_position_json_data = serializedObject.FindProperty("array_position_json_data");
array_position_json_data2 = serializedObject.FindProperty("array_position_json_data2");
}
private bool use_night, _use_night;
private bool environment_foldout;
public override void OnInspectorGUI()
{
//serializedObject.Update();
EditorGUILayout.BeginVertical();
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
EditorGUI.indentLevel++;
environment_foldout = EditorGUILayout.Foldout(environment_foldout, new GUIContent("环境"));
EditorGUI.indentLevel--;
if (environment_foldout)
{
_tar.trail_material = EditorGUILayout.ObjectField("轨迹材质", _tar.trail_material, typeof(Material), true) as Material;
_tar.day_skybox = EditorGUILayout.ObjectField("白天天空盒", _tar.day_skybox, typeof(Material), true) as Material;
_tar.night_skybox = EditorGUILayout.ObjectField("夜晚天空盒", _tar.night_skybox, typeof(Material), true) as Material;
_tar.direction_light = EditorGUILayout.ObjectField("灯光", _tar.direction_light, typeof(Light), true) as Light;
_tar.night_environment = EditorGUILayout.ObjectField("夜景物体", _tar.night_environment, typeof(GameObject), true) as GameObject;
use_night = GUILayout.Toggle(use_night, new GUIContent("是否启用夜景"));
if (_use_night != use_night)
{
_use_night = use_night;
_tar.SwitchEnvironmentTime(use_night);
}
_tar.useGlobalPosition = GUILayout.Toggle(_tar.useGlobalPosition, new GUIContent("是否使用绝对坐标"));
}
EditorGUILayout.EndVertical();
//_tar.useGlobalPosition = GUILayout.Toggle(_tar.useGlobalPosition, new GUIContent("是否使用绝对坐标"));
EditorGUILayout.PropertyField(UAVParent);
EditorGUILayout.BeginHorizontal();
_tar.pos = EditorGUILayout.Vector3Field("", _tar.pos);
if (GUILayout.Button("创建无人机"))
{
_tar.CreateNewUAV(_tar.pos);//编辑测试
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
_tar.size = EditorGUILayout.Vector2Field("", _tar.size);
if (GUILayout.Button("创建无人机阵列"))
{
_tar.CreateUavArray(_tar.size);
}
_tar.create_distance = EditorGUILayout.FloatField(new GUIContent("", "创建无人机间隔"), _tar.create_distance);
EditorGUILayout.EndHorizontal();
Space(5);
EditorGUILayout.BeginHorizontal();
if (GUILayout.Button("启动所有无人机"))
{
_tar.StartAll();
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
if (GUILayout.Button("关闭所有无人机"))
{
_tar.ShutdownAll();
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
_tar.quat = EditorGUILayout.Vector4Field("", _tar.quat);
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
if (GUILayout.Button("设置所有无人机旋翼速度"))
{
_tar.UpdateAllSpeed(_tar.quat);
}
EditorGUILayout.EndHorizontal();
Space(5);
EditorGUILayout.BeginHorizontal();
_tar.all_uav = EditorGUILayout.ToggleLeft("控制所有无人机", _tar.all_uav, GUILayout.Width(120), GUILayout.ExpandWidth(false));
if (!_tar.all_uav)
{
_tar.uav_index = EditorGUILayout.IntField("", _tar.uav_index, GUILayout.Width(40), GUILayout.ExpandWidth(false));
EditorGUILayout.LabelField("无人机编号", GUILayout.Width(80), GUILayout.ExpandWidth(false));
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
if (GUILayout.Button("左转"))
{
_tar.UpdateAllSpeed(new Vector4(4, 6, 6, 4));
}
if (GUILayout.Button("停止"))
{
_tar.UpdateAllSpeed(new Vector4(5, 5, 5, 5));
}
if (GUILayout.Button("右转"))
{
_tar.UpdateAllSpeed(new Vector4(6, 4, 4, 6));
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
if (GUILayout.Button("前进"))
{
_tar.UpdateAllSpeed(new Vector4(4, 4, 6, 6));
}
if (GUILayout.Button("停止"))
{
_tar.UpdateAllSpeed(new Vector4(5, 5, 5, 5));
}
if (GUILayout.Button("后退"))
{
_tar.UpdateAllSpeed(new Vector4(6, 6, 4, 4));
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
if (GUILayout.Button("左移"))
{
_tar.UpdateAllSpeed(new Vector4(4, 6, 4, 6));
}
if (GUILayout.Button("停止"))
{
_tar.UpdateAllSpeed(new Vector4(5, 5, 5, 5));
}
if (GUILayout.Button("右移"))
{
_tar.UpdateAllSpeed(new Vector4(6, 4, 6, 4));
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
if (GUILayout.Button("上升"))
{
_tar.UpdateAllSpeed(new Vector4(6, 6, 6, 6));
}
if (GUILayout.Button("停止"))
{
_tar.UpdateAllSpeed(new Vector4(5, 5, 5, 5));
}
if (GUILayout.Button("下降"))
{
_tar.UpdateAllSpeed(new Vector4(4, 4, 4, 4));
}
EditorGUILayout.EndHorizontal();
Space(5);
_tar.tar_pos = EditorGUILayout.Vector3Field("", _tar.tar_pos);
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField("固定速度", GUILayout.Width(40), GUILayout.ExpandWidth(true));
_tar.fly_speed = EditorGUILayout.FloatField("", _tar.fly_speed, GUILayout.Width(40), GUILayout.ExpandWidth(false));
if (GUILayout.Button("飞至指定位置"))
{
_tar.Fly2TargetBySpeed(_tar.tar_pos, _tar.uav_index, _tar.fly_speed);
}
EditorGUILayout.LabelField("固定时间", GUILayout.Width(40), GUILayout.ExpandWidth(true));
_tar.fly_time = EditorGUILayout.FloatField("", _tar.fly_time, GUILayout.Width(40), GUILayout.ExpandWidth(false));
if (GUILayout.Button("飞至指定位置"))
{
_tar.Fly2TargetByTime(_tar.tar_pos, _tar.uav_index, _tar.fly_time);
}
EditorGUILayout.EndHorizontal();
Space(5);
EditorGUILayout.BeginHorizontal();
_tar.rise_modify = EditorGUILayout.FloatField(_tar.rise_modify);
if (GUILayout.Button("上升速度修正"))
{
_tar.SetAllRiseModify(_tar.rise_modify);
}
_tar.descend_modify = EditorGUILayout.FloatField(_tar.descend_modify);
if (GUILayout.Button("下降速度修正"))
{
_tar.SetAllDescendModify(_tar.descend_modify);
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
_tar.move_modify = EditorGUILayout.FloatField(_tar.move_modify);
if (GUILayout.Button("移动速度修正"))
{
_tar.SetAllMoveModify(_tar.move_modify);
}
_tar.rotate_modify = EditorGUILayout.FloatField(_tar.rotate_modify);
if (GUILayout.Button("旋转速度修正"))
{
_tar.SetAllRotateModify(_tar.rotate_modify);
}
EditorGUILayout.EndHorizontal();
if (GUILayout.Button("所有速度修正"))
{
_tar.SetAllRiseModify(_tar.rise_modify);
_tar.SetAllDescendModify(_tar.descend_modify);
_tar.SetAllMoveModify(_tar.move_modify);
_tar.SetAllRotateModify(_tar.rotate_modify);
}
Space(5);
EditorGUILayout.BeginHorizontal();
if (GUILayout.Button("重置所有无人机"))
{
_tar.ResetAll();
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
if (GUILayout.Button("清空所有无人机"))
{
_tar.ClearAllUavs();
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.PropertyField(wall_layer);
_tar.uav_index_json_data = EditorGUILayout.TextField(_tar.uav_index_json_data);
if (GUILayout.Button("无人机矩阵飞行"))
{
_tar.UavTimeDataHandle();
}
//if (Application.isPlaying && _tar.UAVControllers != null && _tar.UAVControllers.Count > 0)
// _tar.UAVControllers[0].ForceMode = (ForceMode)EditorGUILayout.EnumFlagsField(_tar.UAVControllers[0].ForceMode);
EditorGUILayout.EndVertical();
color_value = EditorGUILayout.TextField(color_value);
color_intensity = EditorGUILayout.FloatField(color_intensity);
if (GUILayout.Button("打开/更新无人机灯光"))
{
_tar.uav_simulator[0].OpenLighter(color_value, color_intensity);
}
if (GUILayout.Button("关闭无人机灯光"))
{
_tar.uav_simulator[0].CloseLighter();
}
//serializedObject.ApplyModifiedProperties();
if (GUI.changed)
{
base.serializedObject.ApplyModifiedProperties();
EditorUtility.SetDirty((UnityEngine.Object)(object)_tar);
EditorUtility.SetDirty(((Component)(object)_tar).gameObject);
}
//base.OnInspectorGUI();
}
void Space(float pixels)
{
GUILayout.Space(pixels);
}
}