Inheritance: RendererEditorBase
Ejemplo n.º 1
0
            private void DrawHandles(TrailRendererInspector inspector, bool allowGizmoEditing)
            {
                Color gizmoEditingColor = new Color(1.0f, 1.0f, 1.0f, allowGizmoEditing && !Event.current.alt ? 1.0f : 0.0f);

                Color origCol = Handles.color;

                Handles.color = s_GizmoColor;

                Matrix4x4 orgMatrix = Handles.matrix;

                foreach (var tr in targets.OfType <TrailRenderer>())
                {
                    Handles.matrix = GetPreviewMatrix(inspector.m_PreviewBackupPosition, tr.transform);

                    switch (s_PreviewShape)
                    {
                    case PreviewShape.Circle:
                    {
                        EditorGUI.BeginChangeCheck();

                        inspector.m_PreviewArcHandle.angle  = 360.0f;
                        inspector.m_PreviewArcHandle.radius = s_PreviewShapeSize;
                        inspector.m_PreviewArcHandle.SetColorWithRadiusHandle(Color.white, 0f);
                        inspector.m_PreviewArcHandle.radiusHandleColor *= gizmoEditingColor;
                        inspector.m_PreviewArcHandle.angleHandleColor   = Color.clear;

                        using (new Handles.DrawingScope(Handles.matrix * s_ArcHandleOffsetMatrix))
                            inspector.m_PreviewArcHandle.DrawHandle();

                        if (EditorGUI.EndChangeCheck())
                        {
                            s_PreviewShapeSize = ClampPreviewSize(tr, inspector.m_PreviewArcHandle.radius);
                        }
                    }
                    break;

                    case PreviewShape.Square:
                    {
                        EditorGUI.BeginChangeCheck();
                        float size = DoSimpleSquareHandle(s_PreviewShapeSize, allowGizmoEditing);
                        if (EditorGUI.EndChangeCheck())
                        {
                            s_PreviewShapeSize = ClampPreviewSize(tr, size);
                        }
                    }
                    break;

                    case PreviewShape.Line:
                    {
                        EditorGUI.BeginChangeCheck();
                        float radius = Handles.DoSimpleEdgeHandle(Quaternion.identity, Vector3.zero, s_PreviewShapeSize, allowGizmoEditing);
                        if (EditorGUI.EndChangeCheck())
                        {
                            s_PreviewShapeSize = ClampPreviewSize(tr, radius);
                        }
                    }
                    break;

                    case PreviewShape.SineWave:
                    {
                        EditorGUI.BeginChangeCheck();
                        float radius = DoSimpleSineWaveHandle(s_PreviewShapeSize, allowGizmoEditing, k_SineWaveHeightMultiplier, k_SineWaveRepeat);
                        if (EditorGUI.EndChangeCheck())
                        {
                            s_PreviewShapeSize = ClampPreviewSize(tr, radius);
                        }
                    }
                    break;

                    case PreviewShape.Spring:
                    {
                        EditorGUI.BeginChangeCheck();
                        float radius = DoSimpleSpringHandle(s_PreviewShapeSize, allowGizmoEditing, k_SpringRotations);
                        if (EditorGUI.EndChangeCheck())
                        {
                            s_PreviewShapeSize = ClampPreviewSize(tr, radius);
                        }
                    }
                    break;
                    }
                }

                Handles.color  = origCol;
                Handles.matrix = orgMatrix;
            }