public override void RenderBorder(Camera camera) { if (_borderRenderDesc.BorderType == Shape2DBorderType.Thin) { GLRenderer.DrawLines2D(_cwPolyPoints, camera); } else { if (_isThickBorderDirty) { CalculateThickBorderPoints(); } if (_borderRenderDesc.FillMode == ThickBorderFillMode.Border) { GLRenderer.DrawLines2D(_cwPolyPoints, camera); GLRenderer.DrawLines2D(_thickCwBorderPoints, camera); } else { var borderDir = _borderRenderDesc.Direction == Shape2DBorderDirection.Inward ? PrimitiveFactory.PolyBorderDirection.Inward : PrimitiveFactory.PolyBorderDirection.Outward; var quadPts = PrimitiveFactory.Generate2DPolyBorderQuadsCW(_cwPolyPoints, _thickCwBorderPoints, borderDir, _isClosed); GLRenderer.DrawQuads2D(quadPts, camera); } } }
private void CalculateThickBorderPoints() { PrimitiveFactory.PolyBorderDirection borderDir = _borderRenderDesc.Direction == Shape2DBorderDirection.Inward ? PrimitiveFactory.PolyBorderDirection.Inward : PrimitiveFactory.PolyBorderDirection.Outward; _thickCwBorderPoints = PrimitiveFactory.Generate2DPolyBorderPointsCW(_cwPolyPoints, borderDir, _borderRenderDesc.Thickness, _isClosed); _isThickBorderDirty = false; }
private void OnBorderPointsFoundDirty() { _borderPoints = PrimitiveFactory.Generate3DArcBorderPoints(_origin, _startPoint, _plane, _degreeAngleFromStart, _forceShortestArc, _numBorderPoints); _aabb = new AABB(_borderPoints); _aabb.Encapsulate(_origin); _areBorderPointsDirty = false; }
public void Render() { if (_sharedLookAndFeel == null) { return; } if (IsActive) { Material material = MaterialPool.Get.SimpleColor; if (_sharedLookAndFeel.DrawBoxes) { material.SetColor(_sharedLookAndFeel.BoxLineColor); material.SetZTestEnabled(true); material.SetPass(0); var boundsQConfig = GetObjectBoundsQConfig(); foreach (var targetObject in _targetObjects) { if (targetObject == null) { continue; } OBB worldOBB = ObjectBounds.CalcWorldOBB(targetObject, boundsQConfig); if (worldOBB.IsValid) { GraphicsEx.DrawWireBox(worldOBB); } } } Camera camera = Camera.current; Vector2 screenSnapPivot = camera.WorldToScreenPoint(_snapPivotPoint); if (_sharedLookAndFeel.PivotShapeType == PivotPointShapeType.Circle) { material.SetZTestEnabled(false); material.SetColor(_sharedLookAndFeel.PivotPointFillColor); material.SetPass(0); const int numCirclePoints = 100; List <Vector2> pivotCirclePoints = PrimitiveFactory.Generate2DCircleBorderPointsCW(screenSnapPivot, _sharedLookAndFeel.PivotCircleRadius, numCirclePoints); GLRenderer.DrawTriangleFan2D(screenSnapPivot, pivotCirclePoints, camera); if (_sharedLookAndFeel.DrawPivotBorder) { material.SetColor(_sharedLookAndFeel.PivotPointBorderColor); material.SetPass(0); GLRenderer.DrawLineLoop2D(pivotCirclePoints, camera); } } else if (_sharedLookAndFeel.PivotShapeType == PivotPointShapeType.Square) { material.SetZTestEnabled(false); material.SetColor(_sharedLookAndFeel.PivotPointFillColor); material.SetPass(0); Rect pivotRect = RectEx.FromCenterAndSize(screenSnapPivot, Vector2Ex.FromValue(_sharedLookAndFeel.PivotSquareSideLength)); GLRenderer.DrawRect2D(pivotRect, camera); if (_sharedLookAndFeel.DrawPivotBorder) { material.SetColor(_sharedLookAndFeel.PivotPointBorderColor); material.SetPass(0); GLRenderer.DrawRectBorder2D(pivotRect, camera); } } } }
private void OnBorderPointsFoundDirty() { _borderPoints = PrimitiveFactory.Generate2DArcBorderPoints(_origin, _startPoint, _degreeAngleFromStart, _forceShortestArc, _numBorderPoints); _rect = RectEx.FromPoints(_borderPoints); _areBorderPointsDirty = false; }
public void MakeSphereBorder(Vector3 sphereCenter, float sphereRadius, int numPoints, Camera camera) { List<Vector3> sphereBorderPoints = PrimitiveFactory.GenerateSphereBorderPoints(camera, sphereCenter, sphereRadius, numPoints); SetClockwisePoints(camera.ConvertWorldToScreenPoints(sphereBorderPoints), true); }
public void Render(GizmoRotationArc2DLookAndFeel lookAndFeel, Camera camera) { if (_type == ArcType.Standard || _projectionPoly == null) { _arc.ForceShortestArc = lookAndFeel.UseShortestRotation; if ((lookAndFeel.FillFlags & GizmoRotationArcFillFlags.Area) != 0) { GizmoSolidMaterial solidMaterial = GizmoSolidMaterial.Get; solidMaterial.ResetValuesToSensibleDefaults(); solidMaterial.SetCullModeOff(); solidMaterial.SetLit(false); solidMaterial.SetColor(lookAndFeel.Color); solidMaterial.SetPass(0); _arc.RenderArea(camera); } ArcShape2D.BorderRenderFlags arcWireFlags = ArcShape2D.BorderRenderFlags.None; if ((lookAndFeel.FillFlags & GizmoRotationArcFillFlags.ArcBorder) != 0) { arcWireFlags |= ArcShape2D.BorderRenderFlags.ArcBorder; } if ((lookAndFeel.FillFlags & GizmoRotationArcFillFlags.ExtremitiesBorder) != 0) { arcWireFlags |= ArcShape2D.BorderRenderFlags.ExtremitiesBorder; } GizmoLineMaterial lineMaterial = GizmoLineMaterial.Get; lineMaterial.ResetValuesToSensibleDefaults(); lineMaterial.SetColor(lookAndFeel.BorderColor); lineMaterial.SetPass(0); _arc.RenderBorder(camera); } else if (_type == ArcType.PolyProjected && _projectionPoly != null) { List <Vector2> arcBorderPoints = PrimitiveFactory.Generate2DArcBorderPoints(_arc.Origin, _arc.StartPoint, _arc.DegreeAngleFromStart, lookAndFeel.UseShortestRotation, NumProjectedPoints); arcBorderPoints = PrimitiveFactory.ProjectArcPointsOnPoly2DBorder(_arc.Origin, arcBorderPoints, _projectionPoly.GetPoints()); if ((lookAndFeel.FillFlags & GizmoRotationArcFillFlags.Area) != 0) { GizmoSolidMaterial solidMaterial = GizmoSolidMaterial.Get; solidMaterial.ResetValuesToSensibleDefaults(); solidMaterial.SetCullModeOff(); solidMaterial.SetLit(false); solidMaterial.SetColor(lookAndFeel.Color); solidMaterial.SetPass(0); GLRenderer.DrawTriangleFan2D(_arc.Origin, arcBorderPoints, camera); } if (lookAndFeel.FillFlags != GizmoRotationArcFillFlags.None) { GizmoLineMaterial lineMaterial = GizmoLineMaterial.Get; lineMaterial.ResetValuesToSensibleDefaults(); lineMaterial.SetColor(lookAndFeel.BorderColor); lineMaterial.SetPass(0); if ((lookAndFeel.FillFlags & GizmoRotationArcFillFlags.ArcBorder) != 0) { GLRenderer.DrawLines2D(arcBorderPoints, camera); } if ((lookAndFeel.FillFlags & GizmoRotationArcFillFlags.ExtremitiesBorder) != 0) { GLRenderer.DrawLines2D(new List <Vector2> { _arc.Origin, arcBorderPoints[0], _arc.Origin, arcBorderPoints[arcBorderPoints.Count - 1] }, camera); } } } }
private void CalcModelBorderPoints() { _modelBorderPoints = PrimitiveFactory.Generate2DCircleBorderPointsCW(Vector2.zero, 1.0f, _numBorderPoints); _areModelBorderPointsDirty = false; }
public static void DrawSphereBorder(Camera camera, Vector3 sphereCenter, float sphereRadius, int numPoints) { List <Vector3> boundaryPoints = PrimitiveFactory.GenerateSphereBorderPoints(camera, sphereCenter, sphereRadius, numPoints); DrawLineLoop3D(boundaryPoints); }
public static void DrawCircle3D(Vector2 circleCenter, float circleRadius, Vector3 circleRight, Vector3 circleUp, int numPoints) { List <Vector3> circlePoints = PrimitiveFactory.Generate3DCircleBorderPoints(circleCenter, circleRadius, circleRight, circleUp, numPoints); DrawTriangleFan3D(circleCenter, circlePoints); }
public static void DrawCircle2D(Vector2 circleCenter, float circleRadius, int numPoints, Camera camera) { List <Vector2> circlePoints = PrimitiveFactory.Generate2DCircleBorderPointsCW(circleCenter, circleRadius, numPoints); DrawTriangleFan2D(circleCenter, circlePoints, camera); }