public override void DrawShapes(Camera cam) { _curve ??= GetComponentInParent <FuelLitersCurve>(); var max = _curve?.MaxValue ?? FakeMaxFuel; var now = _curve?.Value ?? FakeFuel; _parent ??= transform.parent; var bot = new Vector3(_parent.position.x, 0, _parent.position.z); using (Draw.Command(cam)) { Draw.BlendMode = ShapesBlendMode.Screen; Draw.DiscGeometry = DiscGeometry.Flat2D; Draw.LineGeometry = LineGeometry.Flat2D; Draw.Matrix = Matrix4x4.TRS(bot, Quaternion.Euler(90, 0, 0), Vector3.one); Draw.Color = Color.green; Draw.Thickness = 2; Draw.Arc(60, 0, Mathf.PI); Draw.Arc(75, 0, Mathf.PI); var perc = Mathf.Clamp01(now / max); Draw.Thickness = 12; Draw.Arc(67.5f, 0.0275f, Mathf.Lerp(0.0275f, Mathf.PI - 0.0275f, perc)); Draw.Thickness = 2; Draw.Line(new Vector3(60, 0, 0), new Vector3(75, 0, 0)); Draw.Line(new Vector3(-60, 0, 0), new Vector3(-75, 0, 0)); } }
public void Rotate(Vector3 clickInWorldPos, List <ControlPoint> points, List <Vector2> originalPositions) { var delta = clickInWorldPos - (Vector3)transformPoint; var angle = Mathf.Atan2(delta.y, delta.x) * Mathf.Rad2Deg; Matrix3x3 rotateMat = Matrix3x3.TranslateMatrix(transformPoint.x, transformPoint.y) * Matrix3x3.RotationZMatrix(angle) * Matrix3x3.TranslateMatrix(-transformPoint.x, -transformPoint.y); for (var i = 0; i < points.Count; i++) { var point = points[i]; var pos = rotateMat * originalPositions[i]; //point.position = RotatePointAroundPivot(originalPositions[i], transformPoint, new Vector3(0, 0, angle)); point.position = pos; } if (angle < 0) { angle += 360; } onDraw = () => { Draw.Arc(transformPoint, BezierCurveManager.Instance.ControlPointRadius * 2, .1f, 0, angle * Mathf.Deg2Rad, pointColor); }; }
public override void DrawShapes(Camera cam) { _parent ??= transform.parent; var bot = new Vector3(_parent.position.x, 0, _parent.position.z); using (Draw.Command(cam)) { Draw.BlendMode = ShapesBlendMode.Screen; Draw.DiscGeometry = DiscGeometry.Flat2D; Draw.Matrix = Matrix4x4.TRS(bot, Quaternion.Euler(90, 0, 0), Vector3.one); Draw.Color = Color.red; Draw.Thickness = _midRadius - _innerRadius; const float count = 10; for (var i = 0; i < count; i++) { var mid = 2 * Mathf.PI / count * i; Draw.Arc(_midRadius - (_midRadius - _innerRadius) / 2, mid - 0.025f, mid + 0.025f, ArcEndCap.None); } if (_thickness > 0.01f) { Draw.Thickness = _thickness; Draw.DashStyle = DashStyle.RelativeDashes(DashType.Basic, 3, 1, DashSnapping.Tiling); Draw.UseDashes = true; Draw.Ring(_outerRadius + 5); } } }