215 lines
9.7 KiB
C#
215 lines
9.7 KiB
C#
using UnityEngine;
|
|
using UnityEditor;
|
|
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
|
|
namespace TBTK{
|
|
|
|
[CustomEditor(typeof(CameraControl))]
|
|
public class I_CameraControlEditor : TBEditorInspector {
|
|
|
|
protected float width=150;
|
|
|
|
private CameraControl instance;
|
|
|
|
public override void Awake(){
|
|
base.Awake();
|
|
instance = (CameraControl)target;
|
|
}
|
|
|
|
|
|
public override void OnInspectorGUI(){
|
|
base.OnInspectorGUI();
|
|
|
|
//EditorGUILayout.Space();
|
|
|
|
//EditorGUIUtility.labelWidth=160;
|
|
|
|
|
|
GUI.changed = false;
|
|
|
|
Undo.RecordObject(instance, "CameraControl");
|
|
|
|
width=EditorGUIUtility.labelWidth-4;
|
|
|
|
EditorGUILayout.Space();
|
|
|
|
cont=new GUIContent("Use Touch Input:", "Check for touch based input");
|
|
instance.useTouchInput=EditorGUILayout.Toggle(cont, instance.useTouchInput);
|
|
|
|
|
|
|
|
EditorGUILayout.Space();
|
|
|
|
EditorGUILayout.BeginHorizontal();
|
|
cont=new GUIContent("Enable Zoom:", "Check to allow player to control camera zoom level");
|
|
EditorGUILayout.LabelField(cont, TBE.headerS, GUILayout.Width(width));
|
|
instance.enableZoom=EditorGUILayout.Toggle(instance.enableZoom);
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
cont=new GUIContent(" - Zoom Speed:", "The sensitivity of input to zoom");
|
|
if(instance.enableZoom) instance.zoomSpeed=EditorGUILayout.FloatField(cont, instance.zoomSpeed);
|
|
else EditorGUILayout.LabelField(" - Zoom Speed:", "-");
|
|
|
|
EditorGUILayout.BeginHorizontal();
|
|
cont=new GUIContent(" - Zoom Limit:", "The limit of the camera zoom. This is effectively the local Z-axis position limit of the camera transform as a child of the camera pivot");
|
|
EditorGUILayout.LabelField(cont, GUILayout.Width(width));
|
|
instance.minZoomDistance=EditorGUILayout.FloatField(instance.minZoomDistance);
|
|
instance.maxZoomDistance=EditorGUILayout.FloatField(instance.maxZoomDistance);
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
EditorGUILayout.Space();
|
|
|
|
EditorGUILayout.BeginHorizontal();
|
|
cont=new GUIContent("Enable Rotation:", "Check to allow player to control camera view angle");
|
|
EditorGUILayout.LabelField(cont, TBE.headerS, GUILayout.Width(width));
|
|
instance.enableRotate=EditorGUILayout.Toggle(instance.enableRotate);
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
cont=new GUIContent(" - Rotate Speed:", "The sensitivity of input to rotation");
|
|
if(instance.enableRotate) instance.rotateSpeed=EditorGUILayout.FloatField(cont, instance.rotateSpeed);
|
|
else EditorGUILayout.LabelField(" - Rotate Speed:", "-");
|
|
|
|
EditorGUILayout.BeginHorizontal();
|
|
cont=new GUIContent(" - Elevation Limit:", "The limit of the elevation of the camera pivot, effectively the X-axis rotation. Recommend to keep the value between 10 to 89");
|
|
EditorGUILayout.LabelField(cont, GUILayout.Width(width));
|
|
instance.minRotateAngle=EditorGUILayout.FloatField(instance.minRotateAngle);
|
|
instance.maxRotateAngle=EditorGUILayout.FloatField(instance.maxRotateAngle);
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
EditorGUILayout.Space();
|
|
|
|
EditorGUILayout.LabelField(new GUIContent("Pivot Scrolling", "The method in which the camera pivot move"), TBE.headerS);
|
|
cont=new GUIContent(" - Key:", "Check to enable camera position scrolling by w,a,s,d and arrow key");
|
|
instance.scrollKey=EditorGUILayout.Toggle(cont, instance.scrollKey);
|
|
|
|
cont=new GUIContent(" - Cursor Drag:", "Check to enable camera position scrolling by dragging cursor on screen");
|
|
instance.scrollCursorDrag=EditorGUILayout.Toggle(cont, instance.scrollCursorDrag);
|
|
|
|
EditorGUILayout.BeginHorizontal();
|
|
|
|
cont=new GUIContent(" - Cursor On Edge:", "Check to enable camera position scrolling by positioning cursor on screen edge\n\nTH being the threshold from screen edge the cursor needs to pass before the scolling take effect");
|
|
instance.scrollCursorOnEdge=EditorGUILayout.Toggle(cont, instance.scrollCursorOnEdge);
|
|
|
|
float defaultLabelWidth=EditorGUIUtility.labelWidth; EditorGUIUtility.labelWidth=25;
|
|
|
|
cont=new GUIContent("TH:", "The threshold from screen edge the cursor needs to pass before the scolling take effect");
|
|
if(instance.scrollCursorOnEdge) instance.scrollCursorOnEdgeTH=EditorGUILayout.FloatField(cont, instance.scrollCursorOnEdgeTH);
|
|
|
|
EditorGUIUtility.labelWidth=defaultLabelWidth;
|
|
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
|
|
bool enableScroll=instance.scrollKey | instance.scrollCursorDrag | instance.scrollCursorOnEdge;
|
|
cont=new GUIContent("Scroll Speed:", "The sensitivity of input to scrolling");
|
|
if(enableScroll) instance.scrollSpeed=EditorGUILayout.FloatField(cont, instance.scrollSpeed);
|
|
else EditorGUILayout.LabelField("Scroll Speed:", "-");
|
|
|
|
EditorGUILayout.Space();
|
|
|
|
|
|
EditorGUILayout.BeginHorizontal();
|
|
cont=new GUIContent("Enable Limit:", "Check to limit the camera pivot within a fixed area");
|
|
EditorGUILayout.LabelField(cont, TBE.headerS, GUILayout.Width(width));
|
|
instance.enablePositionLimit=EditorGUILayout.Toggle(instance.enablePositionLimit);
|
|
EditorGUILayout.EndHorizontal();
|
|
//~ cont=new GUIContent("Enable Limit:", "Check to limit the camera pivot within a fixed area");
|
|
//~ instance.enablePositionLimit=EditorGUILayout.Toggle(cont, instance.enablePositionLimit);
|
|
|
|
if(instance.enablePositionLimit){
|
|
EditorGUILayout.BeginHorizontal();
|
|
cont=new GUIContent(" - X-Axis Limit:", "The min/max X-axis position limit of the camera pivot.\nWhen 'Link Limit To Zoom' are active, this is the limit when the camera is zoom all the way in");
|
|
EditorGUILayout.LabelField(cont, GUILayout.Width(width));
|
|
instance.minPosX=EditorGUILayout.FloatField(instance.minPosX);
|
|
instance.maxPosX=EditorGUILayout.FloatField(instance.maxPosX);
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
EditorGUILayout.BeginHorizontal();
|
|
cont=new GUIContent(" - Z-Axis Limit:", "The min/max Z-axis position limit of the camera pivot.\nWhen 'Link Limit To Zoom' are active, this is the limit when the camera is zoom all the way in");
|
|
EditorGUILayout.LabelField(cont, GUILayout.Width(width));
|
|
instance.minPosZ=EditorGUILayout.FloatField(instance.minPosZ);
|
|
instance.maxPosZ=EditorGUILayout.FloatField(instance.maxPosZ);
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
EditorGUILayout.Space();
|
|
|
|
cont=new GUIContent(" - LinkLimitToZoom:", "Check to link the area limit to the camera zoom level. The area will extend as the camera zoom out");
|
|
instance.linkPanLimitToZoom=EditorGUILayout.Toggle(cont, instance.linkPanLimitToZoom);
|
|
|
|
if(instance.linkPanLimitToZoom){
|
|
EditorGUILayout.BeginHorizontal();
|
|
cont=new GUIContent(" -Extension(X/Z):", "The maximum extension in each X and Z axis to be added to the limit area when the camera are zoomed all the way out");
|
|
EditorGUILayout.LabelField(cont, GUILayout.Width(width));
|
|
instance.limitExtX_ZOut=EditorGUILayout.FloatField(instance.limitExtX_ZOut);
|
|
instance.limitExtZ_ZOut=EditorGUILayout.FloatField(instance.limitExtZ_ZOut);
|
|
EditorGUILayout.EndHorizontal();
|
|
}
|
|
else{
|
|
EditorGUILayout.LabelField(" -Extension(X/Z):", "-");
|
|
}
|
|
}
|
|
else{
|
|
EditorGUILayout.LabelField(" - X-Axis Limit:", "-");
|
|
EditorGUILayout.LabelField(" - Z-Axis Limit:", "-");
|
|
}
|
|
|
|
|
|
EditorGUILayout.Space();
|
|
|
|
|
|
EditorGUILayout.BeginHorizontal();
|
|
cont=new GUIContent("Auto Focus On Target:", "Check to have the camera auto focus on a unit when it's selected");
|
|
EditorGUILayout.LabelField(cont, TBE.headerS, GUILayout.Width(width));
|
|
instance.autoFocusOnActiveUnit=EditorGUILayout.Toggle(instance.autoFocusOnActiveUnit);
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
cont=new GUIContent(" - Focus Speed:", "How fast/responsive the auto focus will work");
|
|
if(instance.autoFocusOnActiveUnit) instance.smoothTime=EditorGUILayout.FloatField(cont, instance.smoothTime);
|
|
else EditorGUILayout.LabelField(" - Focus Speed:", "-");
|
|
|
|
|
|
EditorGUILayout.Space();
|
|
|
|
EditorGUILayout.BeginHorizontal();
|
|
cont=new GUIContent("Enable Action-Cam:", "Check to enable action camera\nwhen activate, the camera will zoom in to focus on the action when an unit is performing an action");
|
|
EditorGUILayout.LabelField(cont, TBE.headerS, GUILayout.Width(width));
|
|
instance.enableActionCam=EditorGUILayout.Toggle(instance.enableActionCam);
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
cont=new GUIContent(" - Attack Frequency:", "How frequent the action-cam will trigger during an event of a unit attacking\nTakes value of 0-1 with 0.3 being 30%");
|
|
if(instance.enableActionCam) instance.actionCamFreqAttack=EditorGUILayout.FloatField(cont, instance.actionCamFreqAttack);
|
|
else EditorGUILayout.LabelField(" - Attack Frequency:", "-");
|
|
|
|
cont=new GUIContent(" - Ability Frequency:", "How frequent the action-cam will trigger during an event of a unit using ability\nTakes value of 0-1 with 0.3 being 30%");
|
|
if(instance.enableActionCam) instance.actionCamFreqAbility=EditorGUILayout.FloatField(cont, instance.actionCamFreqAbility);
|
|
else EditorGUILayout.LabelField(" - Ability Frequency:", "-");
|
|
|
|
EditorGUILayout.Space();
|
|
|
|
cont=new GUIContent("Avoid Clipping:", "Check to stop the camera from clipping through any objects and block the line-of-sight to the pivot\nThis require the objects to have collider to work.");
|
|
instance.avoidClipping=EditorGUILayout.Toggle(cont, instance.avoidClipping);
|
|
|
|
EditorGUILayout.Space();
|
|
|
|
EditorGUILayout.Space();
|
|
|
|
|
|
|
|
|
|
DefaultInspector();
|
|
//DrawDefaultInspector();
|
|
//TurnControl.inspector=DefaultInspector(TurnControl.inspector, 0);
|
|
|
|
EditorGUIUtility.labelWidth=0;
|
|
|
|
|
|
if(GUI.changed) EditorUtility.SetDirty(instance);
|
|
}
|
|
|
|
}
|
|
|
|
}
|