UnityEditor.CollisionModuleUI.DrawGrid C# (CSharp) Method

DrawGrid() private method

private DrawGrid ( Vector3 pos, Vector3 axis1, Vector3 axis2, Vector3 normal, Color color, int planeIndex ) : void
pos Vector3
axis1 Vector3
axis2 Vector3
normal Vector3
color Color
planeIndex int
return void
        private void DrawGrid(Vector3 pos, Vector3 axis1, Vector3 axis2, Vector3 normal, Color color, int planeIndex)
        {
            if (Event.current.type == EventType.Repaint)
            {
                HandleUtility.ApplyWireMaterial();
                if (color.a > 0f)
                {
                    GL.Begin(1);
                    float num = 10f;
                    int num2 = 11;
                    num *= this.m_ScaleGrid;
                    num2 = (int) num;
                    num2 = Mathf.Clamp(num2, 10, 40);
                    if ((num2 % 2) == 0)
                    {
                        num2++;
                    }
                    float num3 = num * 0.5f;
                    float num4 = num / ((float) (num2 - 1));
                    Vector3 vector = (Vector3) (axis1 * num);
                    Vector3 vector2 = (Vector3) (axis2 * num);
                    Vector3 vector3 = (Vector3) (axis1 * num4);
                    Vector3 vector4 = (Vector3) (axis2 * num4);
                    Vector3 vector5 = (Vector3) ((pos - (axis1 * num3)) - (axis2 * num3));
                    for (int i = 0; i < num2; i++)
                    {
                        if ((i % 2) == 0)
                        {
                            GL.Color((Color) (color * 0.7f));
                        }
                        else
                        {
                            GL.Color(color);
                        }
                        GL.Vertex(vector5 + ((Vector3) (i * vector3)));
                        GL.Vertex((vector5 + ((Vector3) (i * vector3))) + vector2);
                        GL.Vertex(vector5 + ((Vector3) (i * vector4)));
                        GL.Vertex((vector5 + ((Vector3) (i * vector4))) + vector);
                    }
                    GL.Color(color);
                    GL.Vertex(pos);
                    GL.Vertex(pos + normal);
                    GL.End();
                }
            }
        }

Usage Example

示例#1
0
 private void CollisionPlanesSceneGUI()
 {
     if (this.m_ScenePlanes.Count != 0)
     {
         Event current = Event.current;
         Color color   = Handles.color;
         Color color2  = new Color(1f, 1f, 1f, 0.5f);
         for (int i = 0; i < this.m_ScenePlanes.Count; i++)
         {
             if (!(this.m_ScenePlanes[i] == null))
             {
                 Transform  transform = this.m_ScenePlanes[i];
                 Vector3    position  = transform.position;
                 Quaternion rotation  = transform.rotation;
                 Vector3    axis      = rotation * Vector3.right;
                 Vector3    normal    = rotation * Vector3.up;
                 Vector3    axis2     = rotation * Vector3.forward;
                 bool       flag      = EditorApplication.isPlaying && transform.gameObject.isStatic;
                 if (this.editingPlanes)
                 {
                     if (object.ReferenceEquals(CollisionModuleUI.s_SelectedTransform, transform))
                     {
                         EditorGUI.BeginChangeCheck();
                         Vector3    position2 = transform.position;
                         Quaternion rotation2 = transform.rotation;
                         using (new EditorGUI.DisabledScope(flag))
                         {
                             if (flag)
                             {
                                 Handles.ShowStaticLabel(position);
                             }
                             if (EditMode.editMode == EditMode.SceneViewEditMode.ParticleSystemCollisionModulePlanesMove)
                             {
                                 position2 = Handles.PositionHandle(position, rotation);
                             }
                             else if (EditMode.editMode == EditMode.SceneViewEditMode.ParticleSystemCollisionModulePlanesRotate)
                             {
                                 rotation2 = Handles.RotationHandle(rotation, position);
                             }
                         }
                         if (EditorGUI.EndChangeCheck())
                         {
                             Undo.RecordObject(transform, "Modified Collision Plane Transform");
                             transform.position = position2;
                             transform.rotation = rotation2;
                             ParticleSystemEditorUtils.PerformCompleteResimulation();
                         }
                     }
                     else
                     {
                         float     num       = HandleUtility.GetHandleSize(position) * 0.6f;
                         EventType eventType = current.type;
                         if (current.type == EventType.Ignore && current.rawType == EventType.MouseUp)
                         {
                             eventType = current.rawType;
                         }
                         Vector3    arg_1F3_0 = position;
                         Quaternion arg_1F3_1 = Quaternion.identity;
                         float      arg_1F3_2 = num;
                         Vector3    arg_1F3_3 = Vector3.zero;
                         if (CollisionModuleUI.< > f__mg$cache0 == null)
                         {
                             CollisionModuleUI.< > f__mg$cache0 = new Handles.CapFunction(Handles.RectangleHandleCap);
                         }
                         Handles.FreeMoveHandle(arg_1F3_0, arg_1F3_1, arg_1F3_2, arg_1F3_3, CollisionModuleUI.< > f__mg$cache0);
                         if (eventType == EventType.MouseDown && current.type == EventType.Used)
                         {
                             CollisionModuleUI.s_SelectedTransform = transform;
                             GUIUtility.hotControl = 0;
                         }
                     }
                 }
                 Handles.color = color2;
                 Color color3 = Handles.s_ColliderHandleColor * 0.9f;
                 if (flag)
                 {
                     color3.a *= 0.2f;
                 }
                 if (CollisionModuleUI.m_PlaneVisualizationType == CollisionModuleUI.PlaneVizType.Grid)
                 {
                     CollisionModuleUI.DrawGrid(position, axis, axis2, normal, color3);
                 }
                 else
                 {
                     CollisionModuleUI.DrawSolidPlane(position, rotation, color3, Color.yellow);
                 }
             }
         }
         Handles.color = color;
     }
 }