Esempio n. 1
0
        public override void Render(Camera camera)
        {
            if (IsRotating && LookAndFeel.PlaneType == GizmoPlane3DType.Circle && LookAndFeel.IsRotationArcVisible)
            {
                _rotationArc.RotationAngle = TotalDragRotation;
                _rotationArc.Radius        = GetRealCircleRadius(GetZoomFactor(camera));
                _rotationArc.Render(LookAndFeel.RotationArcLookAndFeel);
            }

            if (IsVisible)
            {
                Color color = new Color();
                if (!IsHovered)
                {
                    color = LookAndFeel.Color;
                }
                else
                {
                    color = LookAndFeel.HoveredColor;
                }

                GizmoSolidMaterial solidMaterial = GizmoSolidMaterial.Get;
                solidMaterial.ResetValuesToSensibleDefaults();
                solidMaterial.SetCullModeOff();
                solidMaterial.SetLit(LookAndFeel.ShadeMode == GizmoShadeMode.Lit);
                if (solidMaterial.IsLit)
                {
                    solidMaterial.SetLightDirection(camera.transform.forward);
                }
                solidMaterial.SetColor(color);
                solidMaterial.SetPass(0);

                if (LookAndFeel.PlaneType == GizmoPlane3DType.Quad)
                {
                    Handle.Render3DSolid(_quadIndex);
                }
                else if (LookAndFeel.PlaneType == GizmoPlane3DType.RATriangle)
                {
                    Handle.Render3DSolid(_raTriangleIndex);
                }
                else if (LookAndFeel.PlaneType == GizmoPlane3DType.Circle)
                {
                    Handle.Render3DSolid(_circleIndex);
                }
            }

            if (LookAndFeel.PlaneType == GizmoPlane3DType.Quad)
            {
                _quadBorder.Render(camera);
            }
            else if (LookAndFeel.PlaneType == GizmoPlane3DType.RATriangle)
            {
                _raTriangleBorder.Render(camera);
            }
            else if (LookAndFeel.PlaneType == GizmoPlane3DType.Circle)
            {
                _circleBorder.Render(camera);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Renders the slider with the specified camera. This function should be called
        /// directly or indirectly from a Monobehaviour's 'OnRenderObject' function.
        /// </summary>
        public override void Render(Camera camera)
        {
            if (!IsVisible && !Is3DCapVisible)
            {
                return;
            }

            Color color = new Color();

            if (!OverrideColor.IsActive)
            {
                if (Gizmo.HoverHandleId == HandleId)
                {
                    color = LookAndFeel.HoveredColor;
                }
                else
                {
                    color = LookAndFeel.Color;
                }
            }
            else
            {
                color = OverrideColor.Color;
            }

            if (LookAndFeel.IsRotationArcVisible && IsRotating)
            {
                _rotationArc.RotationAngle = _rotationDrag.TotalRotation;
                _rotationArc.Radius        = GetRealLength(GetZoomFactor(camera));
                _rotationArc.Render(LookAndFeel.RotationArcLookAndFeel);
            }

            bool renderCapFirst = !camera.IsPointFacingCamera(GetRealEndPosition(GetZoomFactor(camera)), GetRealDirection());

            if (Is3DCapVisible && renderCapFirst)
            {
                _cap3D.Render(camera);
            }

            if (IsVisible)
            {
                if (LookAndFeel.FillMode == GizmoFillMode3D.Filled)
                {
                    bool isLit = LookAndFeel.ShadeMode == GizmoShadeMode.Lit && LookAndFeel.LineType != GizmoLine3DType.Thin;

                    GizmoSolidMaterial solidMaterial = GizmoSolidMaterial.Get;
                    solidMaterial.ResetValuesToSensibleDefaults();
                    solidMaterial.SetLit(isLit);
                    if (isLit)
                    {
                        solidMaterial.SetLightDirection(camera.transform.forward);
                    }
                    solidMaterial.SetColor(color);
                    solidMaterial.SetPass(0);

                    Handle.Render3DSolid();
                }
                else
                {
                    GizmoLineMaterial lineMaterial = GizmoLineMaterial.Get;
                    lineMaterial.ResetValuesToSensibleDefaults();
                    lineMaterial.SetColor(color);
                    lineMaterial.SetPass(0);

                    Handle.Render3DWire();
                }
            }

            if (Is3DCapVisible && !renderCapFirst)
            {
                _cap3D.Render(camera);
            }
        }
        public void Render(Camera camera)
        {
            if (!IsVisible)
            {
                return;
            }

            var   lookAndFeel = _planeSlider.LookAndFeel;
            Color color       = lookAndFeel.BorderColor;

            if (Gizmo.HoverHandleId == _targetHandle.Id)
            {
                color = lookAndFeel.HoveredBorderColor;
            }

            if (lookAndFeel.QuadBorderType == GizmoQuad3DBorderType.Thin)
            {
                GizmoLineMaterial lineMaterial = GizmoLineMaterial.Get;
                lineMaterial.ResetValuesToSensibleDefaults();
                lineMaterial.SetColor(color);
                lineMaterial.SetPass(0);

                _targetHandle.Render3DWire(_borderQuadIndex);
            }
            else
            {
                GizmoSolidMaterial solidMaterial = GizmoSolidMaterial.Get;
                solidMaterial.ResetValuesToSensibleDefaults();
                solidMaterial.SetColor(color);
                solidMaterial.SetLit(lookAndFeel.BorderShadeMode == GizmoShadeMode.Lit);
                if (solidMaterial.IsLit)
                {
                    solidMaterial.SetLightDirection(camera.transform.forward);
                }
                solidMaterial.SetPass(0);

                Vector3 camPos = camera.transform.position;
                _sortedBoxIndices.Sort(delegate(int i0, int i1)
                {
                    BoxShape3D b0 = _targetHandle.Get3DShape(i0) as BoxShape3D;
                    BoxShape3D b1 = _targetHandle.Get3DShape(i1) as BoxShape3D;

                    float d0 = (b0.Center - camPos).sqrMagnitude;
                    float d1 = (b1.Center - camPos).sqrMagnitude;

                    return(d1.CompareTo(d0));
                });

                if (lookAndFeel.BorderFillMode == GizmoFillMode3D.Filled)
                {
                    foreach (var boxIndex in _sortedBoxIndices)
                    {
                        _targetHandle.Render3DSolid(boxIndex);
                    }
                }
                else
                {
                    foreach (var boxIndex in _sortedBoxIndices)
                    {
                        _targetHandle.Render3DWire(boxIndex);
                    }
                }
            }
        }
        public override void Render(Camera camera)
        {
            if (!IsVisible)
            {
                return;
            }

            Color color = new Color();

            if (!OverrideColor.IsActive)
            {
                if (Gizmo.IsHovered && Gizmo.HoverInfo.HandleId == HandleId)
                {
                    color = LookAndFeel.HoveredColor;
                }
                else
                {
                    color = LookAndFeel.Color;
                }
            }
            else
            {
                color = OverrideColor.Color;
            }

            if (LookAndFeel.FillMode == GizmoFillMode3D.Filled)
            {
                bool isLit = LookAndFeel.ShadeMode == GizmoShadeMode.Lit;

                GizmoSolidMaterial solidMaterial = GizmoSolidMaterial.Get;
                solidMaterial.ResetValuesToSensibleDefaults();
                solidMaterial.SetLit(isLit);
                if (isLit)
                {
                    solidMaterial.SetLightDirection(camera.transform.forward);
                }
                solidMaterial.SetColor(color);
                solidMaterial.SetPass(0);

                Handle.Render3DSolid();
            }
            else
            {
                GizmoLineMaterial lineMaterial = GizmoLineMaterial.Get;
                lineMaterial.ResetValuesToSensibleDefaults();
                lineMaterial.SetColor(color);
                lineMaterial.SetPass(0);

                Handle.Render3DWire();
            }

            if (LookAndFeel.CapType == GizmoCap3DType.Sphere && LookAndFeel.IsSphereBorderVisible)
            {
                GizmoLineMaterial lineMaterial = GizmoLineMaterial.Get;
                lineMaterial.ResetValuesToSensibleDefaults();
                lineMaterial.SetColor(LookAndFeel.SphereBorderColor);
                lineMaterial.SetPass(0);

                GLRenderer.DrawSphereBorder(camera, Position, GetRealSphereRadius(GetZoomFactor(camera)), LookAndFeel.NumSphereBorderPoints);
            }
        }