Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 2
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);
                }
            }
        }