Files
JJBB/Assets/Editor/Scripts/Model/CameraToolEditor.cs

149 lines
5.3 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00

using UnityEngine;
using UnityEditor;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.IO;
/// <summary>
/// Custom Editor for editing vertices and exporting the mesh.
/// </summary>
[CustomEditor(typeof(CameraTool))]
public class MapPosObjEditor : Editor
{
//navmesh object reference
private CameraTool script;
SerializedProperty Far;
SerializedProperty Height;
SerializedProperty RotateX;
SerializedProperty RotateY;
SerializedProperty RotateZ;
SerializedProperty ModelID;
void OnEnable()
{
script = (CameraTool)target;
Far = serializedObject.FindProperty("Far");
Height = serializedObject.FindProperty("Height");
RotateX = serializedObject.FindProperty("RotateX");
RotateY = serializedObject.FindProperty("RotateY");
RotateZ = serializedObject.FindProperty("RotateZ");
ModelID = serializedObject.FindProperty("ModelID");
}
/// <summary>
/// Custom inspector override for buttons.
/// </summary>
public override void OnInspectorGUI()
{
//DrawDefaultInspector();
//EditorGUILayout.Space();
script.ModelID = EditorGUILayout.IntField(new GUIContent("ModelID"), script.ModelID);
script.Far = EditorGUILayout.Slider(new GUIContent("Far"), script.Far, 0.01f, 9);
script.Height = EditorGUILayout.Slider(new GUIContent("Height"), script.Height, -5, 5);
script.RotateX = EditorGUILayout.Slider(new GUIContent("RotateX"), script.RotateX, 0, 360);
script.RotateY = EditorGUILayout.Slider(new GUIContent("RotateY"), script.RotateY, 0, 360);
script.RotateZ = EditorGUILayout.Slider(new GUIContent("RotateZ"), script.RotateZ, 0, 360);
EditorGUILayout.Space();
script.UpdateModel();
if (GUILayout.Button("ShowModel"))
{
if (CharModelUIShowTable._TabItems.Count == 0)
{
CharModelUIShowTable.ReadTable();
}
if (!CharModelUIShowTable._TabItems.ContainsKey(script.ModelID))
{
CharModelUIShowTable.ReadTable();
if (!CharModelUIShowTable._TabItems.ContainsKey(script.ModelID))
{
Debug.LogError("没有此ID的CharModel");
return;
}
}
var modelTab = CharModelUIShowTable._TabItems[script.ModelID];
string[] assetPaths = AssetDatabase.GetAssetPathsFromAssetBundleAndAssetName(LoadAssetBundle.BUNDLE_PATH_MODEL + modelTab.ModelPath.ToLower() + ".common", modelTab.ModelPath);
if (assetPaths.Length == 0)
{
Debug.LogError("没有此模型:" + modelTab.ModelPath);
return;
}
GameObject resObj = AssetDatabase.LoadAssetAtPath(assetPaths[0], typeof(GameObject)) as GameObject;
GameObject modelObj = GameObject.Instantiate(resObj) as GameObject;
var trans = script.transform.Find("GameObject");
for (int i = 0; i < trans.childCount; ++i)
{
GameObject.DestroyImmediate(trans.GetChild(i).gameObject);
}
modelObj.transform.SetParent(trans);
modelObj.transform.localPosition = Vector3.zero;
modelObj.transform.localRotation = Quaternion.Euler(Vector3.zero);
if (script.gameObject.name.Contains("UIObjCamera"))
{
script.Far = modelTab.BodyPosition.z;
script.Height = modelTab.BodyPosition.y;
script.RotateY = modelTab.BodyRotation.y;
script.RotateX = modelTab.BodyRotation.x;
script.RotateZ = modelTab.BodyRotation.z;
}
else if (script.gameObject.name.Contains("UIHalfCamera"))
{
script.Far = modelTab.HalfPosition.z;
script.Height = modelTab.HalfPosition.y;
script.RotateY = modelTab.HalfRotation.y;
script.RotateX = modelTab.BodyRotation.x;
script.RotateZ = modelTab.BodyRotation.z;
}
}
if (GUILayout.Button("SaveModel"))
{
if (CharModelUIShowTable._TabItems.Count == 0)
{
CharModelUIShowTable.ReadTable();
}
var modelTab = CharModelUIShowTable._TabItems[script.ModelID];
if (script.gameObject.name.Contains("UIObjCamera"))
{
modelTab.BodyPosition.z = script.Far;
modelTab.BodyPosition.y = script.Height;
modelTab.BodyRotation.y = script.RotateY;
modelTab.BodyRotation.x = script.RotateX;
modelTab.BodyRotation.z = script.RotateZ;
}
else if (script.gameObject.name.Contains("UIHalfCamera"))
{
modelTab.HalfPosition.z = script.Far;
modelTab.HalfPosition.y = script.Height;
modelTab.HalfRotation.y = script.RotateY;
modelTab.BodyRotation.x = script.RotateX;
modelTab.BodyRotation.z = script.RotateZ;
}
CharModelUIShowTable.WriteTable();
}
//if (GUILayout.Button("FitEnemies"))
//{
//}
}
public void LoadModelPathFinish(string modelName, GameObject resObj, Hashtable hash)
{
}
}