/// <summary> /// Sets a direction variable to all direction. /// </summary> protected void SetDirectionVariableToAll(LocatorHUD locator, DirectionVariable variable, object value) { for (int i = 0; i < (int)LocatorHUD.Direction.NumDirections; i++) { SetDirectionVariable(locator, (LocatorHUD.Direction)i, variable, value); } }
/// <summary> /// This is called when the inspector gui for this should be displayed. /// </summary> public override void OnInspectorGUI() { //make this look like inspect and make sure the target is valid EditorGUIUtility.LookLikeInspector(); LocatorHUD locator = target as LocatorHUD; if (locator == null) { return; } //display basic property editors locator.isVisible = EditorGUILayout.Toggle(" Is Visible", locator.isVisible); locator.horizontalSpacing = EditorGUILayout.IntField(" Horizontal Spacing", locator.horizontalSpacing); locator.verticalSpacing = EditorGUILayout.IntField(" Vertical Spacing", locator.verticalSpacing); locator.fadeInSpeed = Mathf.Clamp(EditorGUILayout.FloatField(" Fade In Speed", locator.fadeInSpeed), 0.01f, 100.0f); locator.fadeOutSpeed = Mathf.Clamp(EditorGUILayout.FloatField(" Fade Out Speed", locator.fadeOutSpeed), 0.01f, 100.0f); locator.baseAlpha = Mathf.Clamp(EditorGUILayout.FloatField(" Alpha", locator.baseAlpha), 0.0f, 1.0f); //loop through all directions for (int i = 0; i < (int)LocatorHUD.Direction.NumDirections; i++) { //get the display name for this direction string enumName = " " + ((LocatorHUD.Direction)i).ToString().Replace('_', ' ') + " Indicator"; //show fold out m_bShowDirection[i] = EditorGUILayout.Foldout(m_bShowDirection[i], enumName + (locator.directionEnabled[i] ? " (Enabled)" : " (Disabled)")); //display options if foldout is open. if (m_bShowDirection[i]) { locator.directionEnabled[i] = EditorGUILayout.Toggle(" Enabled", locator.directionEnabled[i]); if (locator.directionEnabled[i]) { DisplayVariableInspector(" Texture", locator, (LocatorHUD.Direction)i, DirectionVariable.Texture, locator.directionTexture[i]); DisplayVariableInspector(" Color", locator, (LocatorHUD.Direction)i, DirectionVariable.Color, locator.directionColor[i]); DisplayVariableInspector(" Base Scale", locator, (LocatorHUD.Direction)i, DirectionVariable.BaseScale, locator.directionBaseScale[i]); DisplayVariableInspector(" Rotation", locator, (LocatorHUD.Direction)i, DirectionVariable.Rotation, locator.directionRotation[i]); DisplayVariableInspector(" Scale with Distance", locator, (LocatorHUD.Direction)i, DirectionVariable.DistScalingEnabled, locator.directionDistScalingEnabled[i]); if (locator.directionDistScalingEnabled[i]) { DisplayVariableInspector(" Min Distance", locator, (LocatorHUD.Direction)i, DirectionVariable.DistScalingMinDistance, locator.directionDistScalingMinDistance[i]); DisplayVariableInspector(" Max Distance", locator, (LocatorHUD.Direction)i, DirectionVariable.DistScalingMaxDistance, locator.directionDistScalingMaxDistance[i]); DisplayVariableInspector(" Near Scale", locator, (LocatorHUD.Direction)i, DirectionVariable.DistScalingNearScale, locator.directionDistScalingNearScale[i]); DisplayVariableInspector(" Far Scale", locator, (LocatorHUD.Direction)i, DirectionVariable.DistScalingFarScale, locator.directionDistScalingFarScale[i]); if (locator.directionDistScalingMaxDistance[i] < locator.directionDistScalingMinDistance[i]) { locator.directionDistScalingMaxDistance[i] = locator.directionDistScalingMinDistance[i]; } } } } } }
// Use this for initialization void Start () { gameController = GameObject.FindGameObjectWithTag("gameController").GetComponent<RNGameController>(); leg = GameObject.FindGameObjectWithTag("gameController").GetComponent<RNPlayer>().currentLeg; originalPosition = transform.position; adjustHeight() lHud = GetComponent<LocatorHUD>(); lHud.Hide(); lhudShowing = false; }
/// <summary> /// Sets a direction variable to a specific direction. /// </summary> protected void SetDirectionVariable(LocatorHUD locator, LocatorHUD.Direction direction, DirectionVariable variable, object value) { int index = (int)direction; if (index < 0 || index >= (int)LocatorHUD.Direction.NumDirections) { return; } switch (variable) { case DirectionVariable.Rotation: locator.directionRotation[index] = (float)value; break; case DirectionVariable.BaseScale: locator.directionBaseScale[index] = (float)value; break; case DirectionVariable.Color: locator.directionColor[index] = (Color)value; break; case DirectionVariable.DistScalingEnabled: locator.directionDistScalingEnabled[index] = (bool)value; break; case DirectionVariable.DistScalingMinDistance: locator.directionDistScalingMinDistance[index] = (float)value; break; case DirectionVariable.DistScalingMaxDistance: locator.directionDistScalingMaxDistance[index] = (float)value; break; case DirectionVariable.DistScalingNearScale: locator.directionDistScalingNearScale[index] = (float)value; break; case DirectionVariable.DistScalingFarScale: locator.directionDistScalingFarScale[index] = (float)value; break; case DirectionVariable.Texture: locator.directionTexture[index] = (Texture2D)value; break; default: break; } EditorUtility.SetDirty(target); }
/// <summary> /// Displays the inspector for a direction variable. /// </summary> protected void DisplayVariableInspector(string displayName, LocatorHUD locator, LocatorHUD.Direction direction, DirectionVariable variable, Texture2D currentValue) { EditorGUILayout.BeginHorizontal(GUILayout.ExpandHeight(true), GUILayout.MinHeight(10)); Texture2D newValue = (Texture2D)EditorGUILayout.ObjectField(displayName, currentValue, typeof(Texture2D), false); if (newValue != currentValue) { SetDirectionVariable(locator, direction, variable, newValue); } if (GUILayout.Button("-->", GUILayout.ExpandWidth(false), GUILayout.ExpandHeight(true))) { SetDirectionVariableToAll(locator, variable, newValue); } EditorGUILayout.EndHorizontal(); }
/// <summary> /// Displays the inspector for a direction variable. /// </summary> protected void DisplayVariableInspector(string displayName, LocatorHUD locator, LocatorHUD.Direction direction, DirectionVariable variable, bool currentValue) { EditorGUILayout.BeginHorizontal(GUILayout.ExpandHeight(true), GUILayout.MinHeight(10)); bool newValue = EditorGUILayout.Toggle(displayName, currentValue); if (newValue != currentValue) { SetDirectionVariable(locator, direction, variable, newValue); } if (GUILayout.Button("-->", GUILayout.ExpandWidth(false), GUILayout.ExpandHeight(true))) { SetDirectionVariableToAll(locator, variable, newValue); } EditorGUILayout.EndHorizontal(); }