115 lines
4.8 KiB
C#
115 lines
4.8 KiB
C#
|
// Copyright 2017 Google Inc. All rights reserved.
|
|||
|
//
|
|||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|||
|
// you may not use this file except in compliance with the License.
|
|||
|
// You may obtain a copy of the License at
|
|||
|
//
|
|||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|||
|
//
|
|||
|
// Unless required by applicable law or agreed to in writing, software
|
|||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|||
|
// See the License for the specific language governing permissions and
|
|||
|
// limitations under the License.
|
|||
|
|
|||
|
using UnityEngine;
|
|||
|
using UnityEditor;
|
|||
|
using System.Collections;
|
|||
|
|
|||
|
/// Custom editor for GvrLaserVisual.
|
|||
|
/// Shows the relationship between the shrinkLaser property and other related properties.
|
|||
|
[CustomEditor(typeof(GvrLaserVisual)), CanEditMultipleObjects]
|
|||
|
public class GvrLaserVisualEditor : Editor {
|
|||
|
private SerializedProperty laserColor;
|
|||
|
private SerializedProperty laserColorEnd;
|
|||
|
private SerializedProperty maxLaserDistance;
|
|||
|
private SerializedProperty shrinkLaser;
|
|||
|
private SerializedProperty shrunkScale;
|
|||
|
private SerializedProperty beginShrinkAngleDegrees;
|
|||
|
private SerializedProperty endShrinkAngleDegrees;
|
|||
|
private SerializedProperty lerpSpeed;
|
|||
|
private SerializedProperty lerpThreshold;
|
|||
|
private SerializedProperty reticle;
|
|||
|
private SerializedProperty controller;
|
|||
|
|
|||
|
public const string LASER_COLOR_PROP_NAME = "laserColor";
|
|||
|
public const string LASER_COLOR_END_PROP_NAME = "laserColorEnd";
|
|||
|
public const string MAX_LASER_DISTANCE_PROP_NAME = "maxLaserDistance";
|
|||
|
public const string SHRINK_LASER_PROP_NAME = "shrinkLaser";
|
|||
|
public const string SHURNK_SCALE_PROP_NAME = "shrunkScale";
|
|||
|
public const string BEGIN_SHRINKING_ANGLE_DEGREES_PROP_NAME = "beginShrinkAngleDegrees";
|
|||
|
public const string END_SHRINKING_ANGLE_DEGREES_PROP_NAME = "endShrinkAngleDegrees";
|
|||
|
public const string LERP_SPEED_PROP_NAME = "lerpSpeed";
|
|||
|
public const string LERP_THRESHOLD_PROP_NAME = "lerpThreshold";
|
|||
|
public const string RETICLE_PROP_NAME = "reticle";
|
|||
|
public const string CONTROLLER_PROP_NAME = "controller";
|
|||
|
|
|||
|
private const string ITEM_PREFIX = "• ";
|
|||
|
|
|||
|
void OnEnable() {
|
|||
|
laserColor = serializedObject.FindProperty(LASER_COLOR_PROP_NAME);
|
|||
|
laserColorEnd = serializedObject.FindProperty(LASER_COLOR_END_PROP_NAME);
|
|||
|
maxLaserDistance = serializedObject.FindProperty(MAX_LASER_DISTANCE_PROP_NAME);
|
|||
|
shrinkLaser = serializedObject.FindProperty(SHRINK_LASER_PROP_NAME);
|
|||
|
shrunkScale = serializedObject.FindProperty(SHURNK_SCALE_PROP_NAME);
|
|||
|
beginShrinkAngleDegrees = serializedObject.FindProperty(BEGIN_SHRINKING_ANGLE_DEGREES_PROP_NAME);
|
|||
|
endShrinkAngleDegrees = serializedObject.FindProperty(END_SHRINKING_ANGLE_DEGREES_PROP_NAME);
|
|||
|
lerpSpeed = serializedObject.FindProperty(LERP_SPEED_PROP_NAME);
|
|||
|
lerpThreshold = serializedObject.FindProperty(LERP_THRESHOLD_PROP_NAME);
|
|||
|
reticle = serializedObject.FindProperty(RETICLE_PROP_NAME);
|
|||
|
controller = serializedObject.FindProperty(CONTROLLER_PROP_NAME);
|
|||
|
}
|
|||
|
|
|||
|
public override void OnInspectorGUI() {
|
|||
|
serializedObject.Update();
|
|||
|
|
|||
|
// Add clickable script field, as would have been provided by DrawDefaultInspector()
|
|||
|
MonoScript script = MonoScript.FromMonoBehaviour(target as MonoBehaviour);
|
|||
|
EditorGUI.BeginDisabledGroup(true);
|
|||
|
EditorGUILayout.ObjectField("Script", script, typeof(MonoScript), false);
|
|||
|
EditorGUI.EndDisabledGroup();
|
|||
|
|
|||
|
// Show properties for the laser visual.
|
|||
|
EditorGUILayout.PropertyField(reticle);
|
|||
|
EditorGUILayout.PropertyField(controller);
|
|||
|
EditorGUILayout.PropertyField(laserColor);
|
|||
|
EditorGUILayout.PropertyField(laserColorEnd);
|
|||
|
EditorGUILayout.PropertyField(maxLaserDistance);
|
|||
|
EditorGUILayout.PropertyField(lerpSpeed);
|
|||
|
EditorGUILayout.PropertyField(lerpThreshold);
|
|||
|
EditorGUILayout.PropertyField(shrinkLaser);
|
|||
|
|
|||
|
// Show properties for shrinking animation. Only enabled if shrinkLaser is enabled.
|
|||
|
if (!shrinkLaser.boolValue) {
|
|||
|
GUI.enabled = false;
|
|||
|
}
|
|||
|
|
|||
|
EditorGUI.indentLevel++;
|
|||
|
Rect shrinkLaserRect = EditorGUILayout.BeginVertical();
|
|||
|
shrinkLaserRect = EditorGUI.IndentedRect(shrinkLaserRect);
|
|||
|
GUI.Box(shrinkLaserRect, "");
|
|||
|
EditorGUILayout.Space();
|
|||
|
|
|||
|
EditorGUILayout.PropertyField(shrunkScale,
|
|||
|
new GUIContent(ITEM_PREFIX + shrunkScale.displayName));
|
|||
|
|
|||
|
EditorGUILayout.PropertyField(beginShrinkAngleDegrees,
|
|||
|
new GUIContent(ITEM_PREFIX + beginShrinkAngleDegrees.displayName));
|
|||
|
|
|||
|
EditorGUILayout.PropertyField(endShrinkAngleDegrees,
|
|||
|
new GUIContent(ITEM_PREFIX + endShrinkAngleDegrees.displayName));
|
|||
|
|
|||
|
EditorGUILayout.Space();
|
|||
|
EditorGUILayout.EndVertical();
|
|||
|
EditorGUI.indentLevel--;
|
|||
|
|
|||
|
if (!shrinkLaser.boolValue) {
|
|||
|
GUI.enabled = true;
|
|||
|
}
|
|||
|
|
|||
|
EditorGUILayout.Space();
|
|||
|
|
|||
|
serializedObject.ApplyModifiedProperties();
|
|||
|
}
|
|||
|
}
|