Example #1
0
 /// <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);
     }
 }
 public void SetValue(DirectionVariable value)
 {
     Value = value.Value;
     if (value.OppositeValue != null)
     {
         OppositeValue = value.OppositeValue;
     }
 }
Example #3
0
    /// <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();
    }
Example #4
0
    /// <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();
    }
Example #5
0
 /// <summary>
 /// Обновляем доступные для движения направления
 /// </summary>
 private void UpdateAvailableDirection()
 {
     if (currentNode != null)
     {
         if (currentMoveDirection != currentWantedDirection.Value)
         {
             this.transform.localPosition = currentNode.transform.localPosition;
         }
         availableNodes.Clear();
         if (goHome && currentNode.isHome)
         {
             node = new AvailableNode(currentNode.homeDirection, currentNode.homePosition.GetComponent <Node>());
             availableNodes.Add(node);
         }
         else
         {
             for (int i = 0; i < currentNode.availableDirections.Value.Count; i++)
             {
                 node = new AvailableNode(currentNode.availableDirections.Value[i], currentNode.neighboursPositions[i].GetComponent <Node>());
                 availableNodes.Add(node);
             }
         }
     }
     else if (currentMoveDirection != currentWantedDirection.Value || availableNodes.Count > 2)
     {
         DirectionVariable oppositeDirection = null;
         for (int i = availableNodes.Count - 1; i >= 0; i--)
         {
             if (availableNodes[i].node != targetNode)
             {
                 availableNodes.Remove(availableNodes[i]);
             }
             else
             {
                 oppositeDirection = availableNodes[i].direction.OppositeValue;
             }
         }
         node = new AvailableNode(oppositeDirection, previouseNode);
         availableNodes.Add(node);
     }
 }
Example #6
0
    /// <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);
    }
 public AvailableNode(DirectionVariable direction, Node node)
 {
     this.direction = direction;
     this.node      = node;
 }