Esempio n. 1
0
	public static void DrawGizmoIcon(Vector3 position, GizmoTypes gizmoType)
	{
		if(gizmoType == GizmoTypes.None)
			return;

		string assetName = gizmoType.ToString() + "Gizmo.png";
		Gizmos.DrawIcon(position, assetName );
	}
Esempio n. 2
0
 public void SetType(GizmoTypes type)
 {
     // set the type of all the axis
     Type = type;
     AxisCenter.SetType(type);
     AxisX.SetType(type);
     AxisY.SetType(type);
     AxisZ.SetType(type);
 }
Esempio n. 3
0
 public void SetType(GizmoTypes type)
 {
     Type = type;
     if (Axis != GizmoAxis.Center)
     {
         PositionCap.SetActiveRecursively(type == GizmoTypes.Position);
         RotationCap.SetActiveRecursively(type == GizmoTypes.Rotation);
         ScaleCap.SetActiveRecursively(type == GizmoTypes.Scale);
     }
 }
Esempio n. 4
0
    public static void DrawGizmoIcon(Vector3 position, GizmoTypes gizmoType)
    {
        if (gizmoType == GizmoTypes.None)
        {
            return;
        }

        string assetName = gizmoType.ToString() + "Gizmo.png";

        Gizmos.DrawIcon(position, assetName);
    }
Esempio n. 5
0
        /// <summary>
        /// Draws the gizmo.
        /// </summary>
        public static void DrawGizmo(Vector3 pos, Color gizmoColor, GizmoTypes gizmoType, float gizmoSize)
        {
            Gizmos.color = gizmoColor;
            switch (gizmoType)
            {
            case GizmoTypes.Cube:
                Gizmos.DrawCube(pos, Vector3.one * gizmoSize);
                break;

            case GizmoTypes.Sphere:
                Gizmos.DrawSphere(pos, gizmoSize / 2);
                break;

            case GizmoTypes.WireCube:
                Gizmos.DrawWireCube(pos, Vector3.one * gizmoSize);
                break;

            case GizmoTypes.WireSphere:
                Gizmos.DrawWireSphere(pos, gizmoSize / 2);
                break;
            }
        }
Esempio n. 6
0
    /// <summary>   Gets the values. </summary>
    ///
    /// <remarks>   Dave, 10/26/2014. </remarks>
    #endregion

    private void GetValues()
    {
        PointSphere       = targetScript.PointSphere;
        PoinSpehereRadius = targetScript.PoinSpehereRadius;
        GizmoType         = targetScript.GizmoType;
        Behavior          = targetScript.PointBehavior;
        GizmoSize         = targetScript.GizmoSize;
        Radius            = targetScript.Radius;
        Angle             = targetScript.Angle;
        Sections          = targetScript.Sections;
        DrawBoundings     = targetScript.DrawBoundings;
        DrawCamera        = targetScript.DrawCamera;
        DrawTexture       = targetScript.DrawTexture;
        Icon                      = targetScript.Icon;
        IconOffset                = targetScript.IconOffset;
        TextOffset                = targetScript.TextOffset;
        Outline                   = targetScript.Outline;
        GizmoLine                 = targetScript.GizmoLine;
        Extra                     = targetScript.Extra;
        TextColor                 = targetScript.TextColor;
        DrawVolumetric            = targetScript.DrawVolumetric;
        Volumetric                = targetScript.Volumetric;
        Size                      = targetScript.Size;
        Direction                 = targetScript.Direction;
        GetExternalAngel          = targetScript.GetExternalAngel;
        GetExternalDirection      = targetScript.GetExternalDirection;
        GetExternalRadius         = targetScript.GetExternalRadius;
        GetExternalSize           = targetScript.GetExternalSize;
        GetExternalText           = targetScript.GetExternalText;
        GetExternalHeight         = targetScript.GetExternalHeight;
        GetExternalCircleRotation = targetScript.GetExternalCircleRotation;
        UseLocalMatrix            = targetScript.UseLocalMatrix;
        Text                      = targetScript.Text;
        CanDrawBounds             = targetScript.CanDrawBounds;
        CanDrawCamera             = targetScript.CanDrawCamera;
        Height                    = targetScript.Height;
        Draw                      = targetScript.Draw;
        CircleRotation            = targetScript.CircleRotation;
    }
Esempio n. 7
0
 public void SetType(GizmoTypes type)
 {
     Type = type;
     if (Axis != GizmoAxis.Center)
     {
         PositionCap.SetActiveRecursively(type == GizmoTypes.Position);
         RotationCap.SetActiveRecursively(type == GizmoTypes.Rotation);
         ScaleCap.SetActiveRecursively(type == GizmoTypes.Scale);
     }
 }
Esempio n. 8
0
            public Runtime(string name, string objectName, int countThreshold, Color gizmoColor, float gizmoSize, GizmoTypes gizmoType)
            {
                this.name           = name;
                this.objectName     = objectName;
                this.countThreshold = countThreshold;
                this.gizmoColor     = gizmoColor;
                this.gizmoSize      = gizmoSize;
                this.gizmoType      = gizmoType;

                data = new List <Data>();
#if UNITY_EDITOR
                treeElement = new LevelMetricsTreeElement();
#endif
            }
Esempio n. 9
0
 public override void OnInspectorGUI()
 {
     string emp = string.Empty;
     line = new GUIStyle("box");
     line.border.top = line.border.bottom = 1;
     line.margin.top = line.margin.bottom = 1;
     line.padding.top = line.padding.bottom = 1;
     GetValues();
     targetScript.Update();
     {
         GUI.skin.label.alignment = TextAnchor.MiddleCenter;
         GUI.skin.label.fontStyle = FontStyle.Normal;
         GUI.skin.label.fontSize = BIG_FONT_SIZE;
         EditorGUILayout.BeginHorizontal();
         {
             Draw = EditorGUILayout.Toggle(Draw, GUILayout.Width(15), GUILayout.MaxWidth(15),
                 GUILayout.ExpandWidth(false));
             GUILayout.Label("Gizmo Type : "+gameObject.name);
         }
         EditorGUILayout.EndHorizontal();
         if ( !Draw )
         {
             if (GUI.changed)
             {
                 EditorUtility.SetDirty(target);
                 SetValues();
             }
             return;
         }
         GUILayout.BeginHorizontal();
         {
             GizmoType = (GizmoTypes) EditorGUILayout.EnumPopup(GizmoType);
             Behavior = (PointBehaviors)EditorGUILayout.EnumPopup(Behavior);
         }
         GUILayout.EndHorizontal();
         GUILayout.Space(3);
         GUILayout.Box(GUIContent.none,line,GUILayout.ExpandWidth(true),GUILayout.Height(1f));
         GUILayout.Label("Gizmo Settings");
         GUILayout.BeginHorizontal();
         {
             EditorGUILayout.LabelField("Selectable",GUILayout.Width(65));
             PointSphere = EditorGUILayout.Toggle(PointSphere , GUILayout.Width(15) , GUILayout.MaxWidth(15) ,
                 GUILayout.ExpandWidth(false));
             if ( PointSphere )
                 PoinSpehereRadius = EditorGUILayout.Slider(PoinSpehereRadius , 0.1f , 10);
         }
         GUILayout.EndHorizontal();
         GUILayout.BeginHorizontal();
         {
             EditorGUILayout.LabelField("Local", GUILayout.Width(35));
             UseLocalMatrix = EditorGUILayout.Toggle(UseLocalMatrix, GUILayout.Width(15), GUILayout.MaxWidth(15),
                 GUILayout.ExpandWidth(false));
             EditorGUILayout.LabelField(
                 UseLocalMatrix ? "Switched Gizmo to Local Matrix" : "Switched Gizmo to World Matrix" ,
                 line,GUILayout.ExpandWidth(true));
         }
         GUILayout.EndHorizontal();
         GUILayout.BeginHorizontal();
         {
             EditorGUILayout.LabelField("Size", GUILayout.Width(50));
             GizmoSize = EditorGUILayout.Slider(GizmoSize , 0.1f , 10);
         }
         GUILayout.EndHorizontal();
         if ( GizmoType == GizmoTypes.Capsule )
         {
             GUILayout.BeginHorizontal();
             {
                 EditorGUILayout.LabelField("Height" , GUILayout.Width(50));
                 Height = EditorGUILayout.Slider(Height , 0.1f , 10);
             }
             GUILayout.EndHorizontal();
         }
         if ( (GizmoType == GizmoTypes.Anchor && DrawVolumetric) ||
              GizmoType == GizmoTypes.Circle ||
              GizmoType == GizmoTypes.Sphere ||
              GizmoType == GizmoTypes.Capsule)
         {
             GUILayout.BeginHorizontal();
             {
                 EditorGUILayout.LabelField("Radius", GUILayout.Width(50));
                 Radius = EditorGUILayout.Slider(Radius, 0.1f, 10);
             }
             GUILayout.EndHorizontal();
         }
         if ( GizmoType == GizmoTypes.Circle )
         {
             GUILayout.Space(3);
             GUILayout.Box(GUIContent.none, line, GUILayout.ExpandWidth(true), GUILayout.Height(1f));
             GUILayout.Label("Circle Settings");
             GUILayout.BeginHorizontal();
             {
                 EditorGUILayout.LabelField("Angle",GUILayout.Width(50));
                 Angle = EditorGUILayout.IntSlider(Angle, 0, 360);
             }
             GUILayout.EndHorizontal();
             GUILayout.BeginHorizontal();
             {
                 EditorGUILayout.LabelField("Section", GUILayout.Width(50));
                 Sections = EditorGUILayout.IntSlider(Sections, 3, 30);
             }
             GUILayout.EndHorizontal();
             CircleRotation = EditorGUILayout.Vector3Field(emp,CircleRotation);
         }
         if (GizmoType == GizmoTypes.Box)
         {
             GUILayout.Space(3);
             GUILayout.Box(GUIContent.none, line, GUILayout.ExpandWidth(true), GUILayout.Height(1f));
             GUILayout.Label("Box Settings");
             Size = EditorGUILayout.Vector3Field(emp, Size);
         }
         if (GizmoType == GizmoTypes.Direction)
         {
             GUILayout.Space(3);
             GUILayout.Box(GUIContent.none, line, GUILayout.ExpandWidth(true), GUILayout.Height(1f));
             GUILayout.Label("Direction Settings");
             Direction = EditorGUILayout.Vector3Field(emp, Direction);
         }
         if (GizmoType == GizmoTypes.Text)
         {
             GUILayout.Space(3);
             GUILayout.Box(GUIContent.none, line, GUILayout.ExpandWidth(true), GUILayout.Height(1f));
             GUILayout.Label("Text Settings");
             EditorGUILayout.BeginHorizontal();
             {
                 Text = EditorGUILayout.TextField(Text);
                 TextColor = EditorGUILayout.ColorField(TextColor);
             }
             EditorGUILayout.EndHorizontal();
             TextOffset = EditorGUILayout.Vector3Field(emp,TextOffset);
         }
         GUILayout.Space(3);
         GUILayout.Box(GUIContent.none, line, GUILayout.ExpandWidth(true), GUILayout.Height(1f));
         GUILayout.Label("Extra Gizmos");
         if ( CanDrawBounds || CanDrawCamera)
         {
             GUILayout.BeginHorizontal();
             {
                 if ( CanDrawBounds)
                 {
                     EditorGUILayout.LabelField("Draw Bounds", GUILayout.Width(80),GUILayout.ExpandWidth(true));
                     DrawBoundings = EditorGUILayout.Toggle(DrawBoundings , GUILayout.Width(15) ,
                         GUILayout.MaxWidth(15) , GUILayout.ExpandWidth(true));
                 }
                 if (CanDrawCamera)
                 {
                     EditorGUILayout.LabelField("Draw Camera", GUILayout.Width(80), GUILayout.ExpandWidth(true));
                     DrawCamera = EditorGUILayout.Toggle(DrawCamera, GUILayout.Width(15),
                         GUILayout.MaxWidth(15), GUILayout.ExpandWidth(true));
                 }
             }
             GUILayout.EndHorizontal();
             GUILayout.Space(3);
             GUILayout.Box(GUIContent.none, line, GUILayout.ExpandWidth(true), GUILayout.Height(1f));
         }
         GUILayout.Label("Gizmo Icon");
         GUILayout.BeginHorizontal();
         {
             EditorGUILayout.LabelField("Icon",GUILayout.Width(30));
             DrawTexture = EditorGUILayout.Toggle(DrawTexture, GUILayout.Width(15), GUILayout.MaxWidth(15),
                 GUILayout.ExpandWidth(false));
             if ( DrawTexture )
                 Icon = EditorGUILayout.TextField(Icon);
         }
         GUILayout.EndHorizontal();
         if ( DrawTexture )
             IconOffset = EditorGUILayout.Vector3Field(emp , IconOffset);
         GUILayout.Space(3);
         GUILayout.Box(GUIContent.none, line, GUILayout.ExpandWidth(true), GUILayout.Height(1f));
         GUILayout.Label("Gizmo Colors");
         GUI.skin.label.fontSize = SMALL_FONT_SIZE;
         string tm = "Outline / Line / Extra";
         if ( Behavior == PointBehaviors.Anchor && GizmoType != GizmoTypes.Text )
             tm += " / Directing";
         GUILayout.Label(tm);
         GUI.skin.label.fontSize = BIG_FONT_SIZE;
         GUILayout.BeginHorizontal();
         {
             Outline = EditorGUILayout.ColorField(Outline);
             GizmoLine = EditorGUILayout.ColorField(GizmoLine);
             Extra = EditorGUILayout.ColorField(Extra);
             if (Behavior == PointBehaviors.Anchor && GizmoType != GizmoTypes.Text)
                 TextColor = EditorGUILayout.ColorField(TextColor);
         }
         GUILayout.EndHorizontal();
         if ( GizmoType == GizmoTypes.Anchor ||
              GizmoType == GizmoTypes.Box ||
              GizmoType == GizmoTypes.Sphere ||
              (DrawBoundings && gameObject.GetComponent<CharacterController>() == null))
         {
             GUI.skin.label.fontSize = SMALL_FONT_SIZE;
             GUILayout.Label("Volumetric Settings");
             GUI.skin.label.fontSize = BIG_FONT_SIZE;
             GUILayout.BeginHorizontal();
             {
                 EditorGUILayout.LabelField("Volumetric",GUILayout.Width(70));
                 DrawVolumetric = EditorGUILayout.Toggle(DrawVolumetric, GUILayout.Width(15), GUILayout.MaxWidth(15),
                 GUILayout.ExpandWidth(false));
                 if ( DrawVolumetric )
                     Volumetric = EditorGUILayout.ColorField(Volumetric);
             }
             GUILayout.EndHorizontal();
         }
         GUILayout.Space(3);
         GUILayout.Box(GUIContent.none, line, GUILayout.ExpandWidth(true), GUILayout.Height(1f));
         GUILayout.Label("Get Values From External Source");
         GUILayout.BeginHorizontal();
         {
             if ( (GizmoType == GizmoTypes.Anchor && DrawVolumetric) ||
                  GizmoType == GizmoTypes.Circle ||
                  GizmoType == GizmoTypes.Sphere ||
                  GizmoType == GizmoTypes.Capsule)
             {
                 EditorGUILayout.LabelField("Radius",GUILayout.Width(50),GUILayout.ExpandWidth(true));
                 GetExternalRadius = EditorGUILayout.Toggle(GetExternalRadius, GUILayout.Width(15), GUILayout.MaxWidth(15),
                     GUILayout.ExpandWidth(false));
             }
             if (GizmoType == GizmoTypes.Circle)
             {
                 EditorGUILayout.LabelField("Angle", GUILayout.Width(50), GUILayout.ExpandWidth(true));
                 GetExternalAngel = EditorGUILayout.Toggle(GetExternalAngel, GUILayout.Width(15), GUILayout.MaxWidth(15),
                     GUILayout.ExpandWidth(false));
                 EditorGUILayout.LabelField("Rotation", GUILayout.Width(50), GUILayout.ExpandWidth(true));
                 GetExternalCircleRotation = EditorGUILayout.Toggle(GetExternalCircleRotation, GUILayout.Width(15), GUILayout.MaxWidth(15),
                     GUILayout.ExpandWidth(false));
             }
             if (GizmoType == GizmoTypes.Box)
             {
                 EditorGUILayout.LabelField("Size", GUILayout.Width(50), GUILayout.ExpandWidth(true));
                 GetExternalSize = EditorGUILayout.Toggle(GetExternalSize, GUILayout.Width(15), GUILayout.MaxWidth(15),
                     GUILayout.ExpandWidth(false));
             }
             if (GizmoType == GizmoTypes.Direction)
             {
                 EditorGUILayout.LabelField("Direction", GUILayout.Width(50), GUILayout.ExpandWidth(true));
                 GetExternalDirection = EditorGUILayout.Toggle(GetExternalDirection, GUILayout.Width(15), GUILayout.MaxWidth(15),
                     GUILayout.ExpandWidth(false));
             }
             if (GizmoType == GizmoTypes.Text)
             {
                 EditorGUILayout.LabelField("Text", GUILayout.Width(50), GUILayout.ExpandWidth(true));
                 GetExternalText = EditorGUILayout.Toggle(GetExternalText, GUILayout.Width(15), GUILayout.MaxWidth(15),
                     GUILayout.ExpandWidth(false));
             }
             if ( GizmoType == GizmoTypes.Capsule )
             {
                 EditorGUILayout.LabelField("Height", GUILayout.Width(50), GUILayout.ExpandWidth(true));
                 GetExternalHeight = EditorGUILayout.Toggle(GetExternalHeight, GUILayout.Width(15), GUILayout.MaxWidth(15),
                     GUILayout.ExpandWidth(false));
             }
         }
         GUILayout.EndHorizontal();
     }
     if ( GUI.changed )
     {
         EditorUtility.SetDirty(target);
         SetValues();
     }
 }
Esempio n. 10
0
 private void GetValues()
 {
     PointSphere = targetScript.PointSphere;
     PoinSpehereRadius = targetScript.PoinSpehereRadius;
     GizmoType = targetScript.GizmoType;
     Behavior = targetScript.PointBehavior;
     GizmoSize = targetScript.GizmoSize;
     Radius = targetScript.Radius;
     Angle = targetScript.Angle;
     Sections = targetScript.Sections;
     DrawBoundings = targetScript.DrawBoundings;
     DrawCamera = targetScript.DrawCamera;
     DrawTexture = targetScript.DrawTexture;
     Icon = targetScript.Icon;
     IconOffset = targetScript.IconOffset;
     TextOffset = targetScript.TextOffset;
     Outline = targetScript.Outline;
     GizmoLine = targetScript.GizmoLine;
     Extra = targetScript.Extra;
     TextColor = targetScript.TextColor;
     DrawVolumetric = targetScript.DrawVolumetric;
     Volumetric = targetScript.Volumetric;
     Size = targetScript.Size;
     Direction = targetScript.Direction;
     GetExternalAngel = targetScript.GetExternalAngel;
     GetExternalDirection = targetScript.GetExternalDirection;
     GetExternalRadius = targetScript.GetExternalRadius;
     GetExternalSize = targetScript.GetExternalSize;
     GetExternalText = targetScript.GetExternalText;
     GetExternalHeight = targetScript.GetExternalHeight;
     GetExternalCircleRotation = targetScript.GetExternalCircleRotation;
     UseLocalMatrix = targetScript.UseLocalMatrix;
     Text = targetScript.Text;
     CanDrawBounds = targetScript.CanDrawBounds;
     CanDrawCamera = targetScript.CanDrawCamera;
     Height = targetScript.Height;
     Draw = targetScript.Draw;
     CircleRotation = targetScript.CircleRotation;
 }
Esempio n. 11
0
        private void SwitchGizmoType(DataPackage dataPackage)
        {
            var gizmoType = dataPackage.Get <GizmoTypes>();

            _currentGizmoType = gizmoType;
        }
Esempio n. 12
0
 public void SetType(GizmoTypes type)
 {
     // set the type of all the axis
     Type = type;
     AxisCenter.SetType(type);
     AxisX.SetType(type);
     AxisY.SetType(type);
     AxisZ.SetType(type);
 }
 private void Register(GizmoTypes gizmoType, GenericEditingShapeHandler handler)
 {
     _handlers[gizmoType] = handler;
     handler.Document     = _gizmoDocument;
 }
Esempio n. 14
0
    /// <summary>   Executes the inspector graphical user interface action. </summary>
    ///
    /// <remarks>   Dave, 10/26/2014. </remarks>
    #endregion

    public override void OnInspectorGUI()
    {
        var emptyString = string.Empty;

        line             = new GUIStyle("box");
        line.border.top  = line.border.bottom = 1;
        line.margin.top  = line.margin.bottom = 1;
        line.padding.top = line.padding.bottom = 1;
        GetValues();
        targetScript.Update();
        {
            GUI.skin.label.alignment = TextAnchor.MiddleCenter;
            GUI.skin.label.fontStyle = FontStyle.Normal;
            GUI.skin.label.fontSize  = BIG_FONT_SIZE;
            EditorGUILayout.BeginHorizontal();
            {
                Draw = EditorGUILayout.Toggle(Draw, GUILayout.Width(15), GUILayout.MaxWidth(15),
                                              GUILayout.ExpandWidth(false));
                GUILayout.Label("Gizmo Type : " + gameObject.name);
            }
            EditorGUILayout.EndHorizontal();
            if (Draw)
            {
                GUILayout.BeginHorizontal();
                {
                    GizmoType = (GizmoTypes)EditorGUILayout.EnumPopup(GizmoType);
                    Behavior  = (PointBehaviors)EditorGUILayout.EnumPopup(Behavior);
                }
                GUILayout.EndHorizontal();
                GUILayout.Space(3);
                GUILayout.Box(GUIContent.none, line, GUILayout.ExpandWidth(true), GUILayout.Height(1f));
                GUILayout.Label("Gizmo Settings");
                GUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField("Selectable", GUILayout.Width(65));
                    PointSphere = EditorGUILayout.Toggle(PointSphere, GUILayout.Width(15), GUILayout.MaxWidth(15),
                                                         GUILayout.ExpandWidth(false));
                    if (PointSphere)
                    {
                        PoinSpehereRadius = EditorGUILayout.Slider(PoinSpehereRadius, 0.1f, 10);
                    }
                }
                GUILayout.EndHorizontal();
                GUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField("Local", GUILayout.Width(35));
                    UseLocalMatrix = EditorGUILayout.Toggle(UseLocalMatrix, GUILayout.Width(15), GUILayout.MaxWidth(15),
                                                            GUILayout.ExpandWidth(false));
                    EditorGUILayout.LabelField(
                        UseLocalMatrix ? "Switched Gizmo to Local Matrix" : "Switched Gizmo to World Matrix",
                        line, GUILayout.ExpandWidth(true));
                }
                GUILayout.EndHorizontal();
                GUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField("Size", GUILayout.Width(50));
                    GizmoSize = EditorGUILayout.Slider(GizmoSize, 0.1f, 10);
                }
                GUILayout.EndHorizontal();
                if (GizmoType == GizmoTypes.Capsule)
                {
                    GUILayout.BeginHorizontal();
                    {
                        EditorGUILayout.LabelField("Height", GUILayout.Width(50));
                        Height = EditorGUILayout.Slider(Height, 0.1f, 10);
                    }
                    GUILayout.EndHorizontal();
                }
                if ((GizmoType == GizmoTypes.Anchor && DrawVolumetric) ||
                    GizmoType == GizmoTypes.Circle ||
                    GizmoType == GizmoTypes.Sphere ||
                    GizmoType == GizmoTypes.Capsule)
                {
                    GUILayout.BeginHorizontal();
                    {
                        EditorGUILayout.LabelField("Radius", GUILayout.Width(50));
                        Radius = EditorGUILayout.Slider(Radius, 0.1f, 10);
                    }
                    GUILayout.EndHorizontal();
                }
                if (GizmoType == GizmoTypes.Circle)
                {
                    GUILayout.Space(3);
                    GUILayout.Box(GUIContent.none, line, GUILayout.ExpandWidth(true), GUILayout.Height(1f));
                    GUILayout.Label("Circle Settings");
                    GUILayout.BeginHorizontal();
                    {
                        EditorGUILayout.LabelField("Angle", GUILayout.Width(50));
                        Angle = EditorGUILayout.IntSlider(Angle, 0, 360);
                    }
                    GUILayout.EndHorizontal();
                    GUILayout.BeginHorizontal();
                    {
                        EditorGUILayout.LabelField("Section", GUILayout.Width(50));
                        Sections = EditorGUILayout.IntSlider(Sections, 3, 30);
                    }
                    GUILayout.EndHorizontal();
                    CircleRotation = EditorGUILayout.Vector3Field(emptyString, CircleRotation);
                }
                if (GizmoType == GizmoTypes.Box)
                {
                    GUILayout.Space(3);
                    GUILayout.Box(GUIContent.none, line, GUILayout.ExpandWidth(true), GUILayout.Height(1f));
                    GUILayout.Label("Box Settings");
                    Size = EditorGUILayout.Vector3Field(emptyString, Size);
                }
                if (GizmoType == GizmoTypes.Direction)
                {
                    GUILayout.Space(3);
                    GUILayout.Box(GUIContent.none, line, GUILayout.ExpandWidth(true), GUILayout.Height(1f));
                    GUILayout.Label("Direction Settings");
                    Direction = EditorGUILayout.Vector3Field(emptyString, Direction);
                }
                if (GizmoType == GizmoTypes.Text)
                {
                    GUILayout.Space(3);
                    GUILayout.Box(GUIContent.none, line, GUILayout.ExpandWidth(true), GUILayout.Height(1f));
                    GUILayout.Label("Text Settings");
                    EditorGUILayout.BeginHorizontal();
                    {
                        Text      = EditorGUILayout.TextField(Text);
                        TextColor = EditorGUILayout.ColorField(TextColor);
                    }
                    EditorGUILayout.EndHorizontal();
                    TextOffset = EditorGUILayout.Vector3Field(emptyString, TextOffset);
                }
                GUILayout.Space(3);
                GUILayout.Box(GUIContent.none, line, GUILayout.ExpandWidth(true), GUILayout.Height(1f));
                GUILayout.Label("Extra Gizmos");
                if (CanDrawBounds || CanDrawCamera)
                {
                    GUILayout.BeginHorizontal();
                    {
                        if (CanDrawBounds)
                        {
                            EditorGUILayout.LabelField("Draw Bounds", GUILayout.Width(80), GUILayout.ExpandWidth(true));
                            DrawBoundings = EditorGUILayout.Toggle(DrawBoundings, GUILayout.Width(15),
                                                                   GUILayout.MaxWidth(15), GUILayout.ExpandWidth(true));
                        }
                        if (CanDrawCamera)
                        {
                            EditorGUILayout.LabelField("Draw Camera", GUILayout.Width(80), GUILayout.ExpandWidth(true));
                            DrawCamera = EditorGUILayout.Toggle(DrawCamera, GUILayout.Width(15),
                                                                GUILayout.MaxWidth(15), GUILayout.ExpandWidth(true));
                        }
                    }
                    GUILayout.EndHorizontal();
                    GUILayout.Space(3);
                    GUILayout.Box(GUIContent.none, line, GUILayout.ExpandWidth(true), GUILayout.Height(1f));
                }
                GUILayout.Label("Gizmo Icon");
                GUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField("Icon", GUILayout.Width(30));
                    DrawTexture = EditorGUILayout.Toggle(DrawTexture, GUILayout.Width(15), GUILayout.MaxWidth(15),
                                                         GUILayout.ExpandWidth(false));
                    if (DrawTexture)
                    {
                        Icon = EditorGUILayout.TextField(Icon);
                    }
                }
                GUILayout.EndHorizontal();
                if (DrawTexture)
                {
                    IconOffset = EditorGUILayout.Vector3Field(emptyString, IconOffset);
                }
                GUILayout.Space(3);
                GUILayout.Box(GUIContent.none, line, GUILayout.ExpandWidth(true), GUILayout.Height(1f));
                GUILayout.Label("Gizmo Colors");
                GUI.skin.label.fontSize = SMALL_FONT_SIZE;
                string tm = "Outline / Line / Extra";
                if (Behavior == PointBehaviors.Anchor && GizmoType != GizmoTypes.Text)
                {
                    tm += " / Directing";
                }
                GUILayout.Label(tm);
                GUI.skin.label.fontSize = BIG_FONT_SIZE;
                GUILayout.BeginHorizontal();
                {
                    Outline   = EditorGUILayout.ColorField(Outline);
                    GizmoLine = EditorGUILayout.ColorField(GizmoLine);
                    Extra     = EditorGUILayout.ColorField(Extra);
                    if (Behavior == PointBehaviors.Anchor && GizmoType != GizmoTypes.Text)
                    {
                        TextColor = EditorGUILayout.ColorField(TextColor);
                    }
                }
                GUILayout.EndHorizontal();
                if (GizmoType == GizmoTypes.Anchor ||
                    GizmoType == GizmoTypes.Box ||
                    GizmoType == GizmoTypes.Sphere ||
                    (DrawBoundings && gameObject.GetComponent <CharacterController>() == null))
                {
                    GUI.skin.label.fontSize = SMALL_FONT_SIZE;
                    GUILayout.Label("Volumetric Settings");
                    GUI.skin.label.fontSize = BIG_FONT_SIZE;
                    GUILayout.BeginHorizontal();
                    {
                        EditorGUILayout.LabelField("Volumetric", GUILayout.Width(70));
                        DrawVolumetric = EditorGUILayout.Toggle(DrawVolumetric, GUILayout.Width(15),
                                                                GUILayout.MaxWidth(15),
                                                                GUILayout.ExpandWidth(false));
                        if (DrawVolumetric)
                        {
                            Volumetric = EditorGUILayout.ColorField(Volumetric);
                        }
                    }
                    GUILayout.EndHorizontal();
                }
                GUILayout.Space(3);
                GUILayout.Box(GUIContent.none, line, GUILayout.ExpandWidth(true), GUILayout.Height(1f));
                GUILayout.Label("Get Values From External Source");
                GUILayout.BeginHorizontal();
                {
                    if ((GizmoType == GizmoTypes.Anchor && DrawVolumetric) ||
                        GizmoType == GizmoTypes.Circle ||
                        GizmoType == GizmoTypes.Sphere ||
                        GizmoType == GizmoTypes.Capsule)
                    {
                        EditorGUILayout.LabelField("Radius", GUILayout.Width(50), GUILayout.ExpandWidth(true));
                        GetExternalRadius = EditorGUILayout.Toggle(GetExternalRadius, GUILayout.Width(15),
                                                                   GUILayout.MaxWidth(15),
                                                                   GUILayout.ExpandWidth(false));
                    }
                    if (GizmoType == GizmoTypes.Circle)
                    {
                        EditorGUILayout.LabelField("Angle", GUILayout.Width(50), GUILayout.ExpandWidth(true));
                        GetExternalAngel = EditorGUILayout.Toggle(GetExternalAngel, GUILayout.Width(15),
                                                                  GUILayout.MaxWidth(15),
                                                                  GUILayout.ExpandWidth(false));
                        EditorGUILayout.LabelField("Rotation", GUILayout.Width(50), GUILayout.ExpandWidth(true));
                        GetExternalCircleRotation = EditorGUILayout.Toggle(GetExternalCircleRotation,
                                                                           GUILayout.Width(15), GUILayout.MaxWidth(15),
                                                                           GUILayout.ExpandWidth(false));
                    }
                    if (GizmoType == GizmoTypes.Box)
                    {
                        EditorGUILayout.LabelField("Size", GUILayout.Width(50), GUILayout.ExpandWidth(true));
                        GetExternalSize = EditorGUILayout.Toggle(GetExternalSize, GUILayout.Width(15),
                                                                 GUILayout.MaxWidth(15),
                                                                 GUILayout.ExpandWidth(false));
                    }
                    if (GizmoType == GizmoTypes.Direction)
                    {
                        EditorGUILayout.LabelField("Direction", GUILayout.Width(50), GUILayout.ExpandWidth(true));
                        GetExternalDirection = EditorGUILayout.Toggle(GetExternalDirection, GUILayout.Width(15),
                                                                      GUILayout.MaxWidth(15),
                                                                      GUILayout.ExpandWidth(false));
                    }
                    if (GizmoType == GizmoTypes.Text)
                    {
                        EditorGUILayout.LabelField("Text", GUILayout.Width(50), GUILayout.ExpandWidth(true));
                        GetExternalText = EditorGUILayout.Toggle(GetExternalText, GUILayout.Width(15),
                                                                 GUILayout.MaxWidth(15),
                                                                 GUILayout.ExpandWidth(false));
                    }
                    if (GizmoType == GizmoTypes.Capsule)
                    {
                        EditorGUILayout.LabelField("Height", GUILayout.Width(50), GUILayout.ExpandWidth(true));
                        GetExternalHeight = EditorGUILayout.Toggle(GetExternalHeight, GUILayout.Width(15),
                                                                   GUILayout.MaxWidth(15),
                                                                   GUILayout.ExpandWidth(false));
                    }
                }
                GUILayout.EndHorizontal();
            }
            else
            {
                if (GUI.changed)
                {
                    EditorUtility.SetDirty(target);
                    SetValues();
                }
                return;
            }
        }
        if (GUI.changed)
        {
            EditorUtility.SetDirty(target);
            SetValues();
        }
    }