You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.9 KiB
85 lines
2.9 KiB
//========= Copyright 2016-2018, HTC Corporation. All rights reserved. =========== |
|
|
|
using UnityEditor; |
|
using UnityEngine; |
|
|
|
namespace HTC.UnityPlugin.PoseTracker |
|
{ |
|
[CustomEditor(typeof(PoseFreezer))] |
|
public class PoseFreezerEditor : Editor |
|
{ |
|
protected SerializedProperty scriptProp; |
|
protected SerializedProperty priorityProp; |
|
|
|
protected virtual void OnEnable() |
|
{ |
|
if (target == null || serializedObject == null) return; |
|
|
|
scriptProp = serializedObject.FindProperty("m_Script"); |
|
priorityProp = serializedObject.FindProperty("m_priority"); |
|
} |
|
|
|
public override void OnInspectorGUI() |
|
{ |
|
if (target == null || serializedObject == null) return; |
|
|
|
serializedObject.Update(); |
|
|
|
var script = target as PoseFreezer; |
|
Rect layoutRect; |
|
|
|
GUI.enabled = false; |
|
EditorGUILayout.PropertyField(scriptProp); |
|
GUI.enabled = true; |
|
|
|
EditorGUI.BeginChangeCheck(); |
|
|
|
EditorGUILayout.PropertyField(priorityProp); |
|
|
|
var fieldWidth = (EditorGUIUtility.currentViewWidth - EditorGUIUtility.labelWidth) / 3f; |
|
|
|
// freeze position |
|
layoutRect = EditorGUILayout.GetControlRect(); |
|
|
|
layoutRect.width = EditorGUIUtility.labelWidth; |
|
EditorGUI.LabelField(layoutRect, "Freeze Position"); |
|
layoutRect.x += layoutRect.width; |
|
|
|
layoutRect.width = fieldWidth; |
|
script.freezePositionX = EditorGUI.ToggleLeft(layoutRect, "X", script.freezePositionX); |
|
layoutRect.x += layoutRect.width; |
|
|
|
layoutRect.width = fieldWidth; |
|
script.freezePositionY = EditorGUI.ToggleLeft(layoutRect, "Y", script.freezePositionY); |
|
layoutRect.x += layoutRect.width; |
|
|
|
layoutRect.width = fieldWidth; |
|
script.freezePositionZ = EditorGUI.ToggleLeft(layoutRect, "Z", script.freezePositionZ); |
|
|
|
// freeze rotation |
|
layoutRect = EditorGUILayout.GetControlRect(); |
|
|
|
layoutRect.width = EditorGUIUtility.labelWidth; |
|
EditorGUI.LabelField(layoutRect, "Freeze Rotation"); |
|
layoutRect.x += layoutRect.width; |
|
|
|
layoutRect.width = fieldWidth; |
|
script.freezeRotationX = EditorGUI.ToggleLeft(layoutRect, "X", script.freezeRotationX); |
|
layoutRect.x += layoutRect.width; |
|
|
|
layoutRect.width = fieldWidth; |
|
script.freezeRotationY = EditorGUI.ToggleLeft(layoutRect, "Y", script.freezeRotationY); |
|
layoutRect.x += layoutRect.width; |
|
|
|
layoutRect.width = fieldWidth; |
|
script.freezeRotationZ = EditorGUI.ToggleLeft(layoutRect, "Z", script.freezeRotationZ); |
|
|
|
if (EditorGUI.EndChangeCheck()) |
|
{ |
|
Undo.RecordObject(target, "Pose Freezer Changed"); |
|
} |
|
|
|
serializedObject.ApplyModifiedProperties(); |
|
} |
|
} |
|
} |