Esempio n. 1
0
    public void drawSegment()
    {
        List <Vector2> points = new List <Vector2> ();

        float step = (endAngle - startAngle) / (float)vertexes;

        for (int i = 0; i < vertexes; i++)
        {
            Vector2 point = MathHelper.getPointPositionOnCircle(Vector2.zero, radius1, startAngle + 90.0f + i * step);
            points.Add(point);
        }

        //curve
        float radiusCurve1 = radius1;
        float radiusCurve2 = radius2;

        Vector2 curve1Point1 = points.Last();
        Vector2 curve1Point2 = MathHelper.getPointPositionOnCircle(Vector2.zero, radius2, startAngle + 90.0f + (vertexes - 1) * step);

        Vector2 tangentCurve1A = MathHelper.getPointPositionOnCircle(Vector2.zero, radiusCurve1, startAngle + 90.0f + endAngle + cubicCurveOffsetAngle);
        Vector2 tangentCurve1B = MathHelper.getPointPositionOnCircle(Vector2.zero, radiusCurve2, startAngle + 90.0f + endAngle + cubicCurveOffsetAngle);

        float curveStep = 1.0f / cubicCurvePointsCount;

        for (float i = curveStep; i < 1.0f; i += curveStep)
        {
            points.Add(MathHelper.GetPointOnCubicCurve(curve1Point1, curve1Point2, tangentCurve1A, tangentCurve1B, i));
        }
        //


        for (int i = vertexes - 1; i >= 0; i--)
        {
            Vector2 point = MathHelper.getPointPositionOnCircle(Vector2.zero, radius2, startAngle + 90.0f + i * step);
            points.Add(point);
        }


        //curve
        Vector2 curve2Point1 = points.Last();
        Vector2 curve2Point2 = MathHelper.getPointPositionOnCircle(Vector2.zero, radius1, startAngle + 90.0f);

        Vector2 tangentCurve2A = MathHelper.getPointPositionOnCircle(Vector2.zero, radiusCurve1, startAngle + 90.0f - cubicCurveOffsetAngle);
        Vector2 tangentCurve2B = MathHelper.getPointPositionOnCircle(Vector2.zero, radiusCurve2, startAngle + 90.0f - cubicCurveOffsetAngle);

        for (float i = 1.0f - curveStep; i >= curveStep; i -= curveStep)
        {
            points.Add(MathHelper.GetPointOnCubicCurve(curve2Point2, curve2Point1, tangentCurve2A, tangentCurve2B, i));
        }
        //



        m_shape = new Core.Shape(points);
        var mesh = Core.Utils.ShapeCreator.CreateMesh(m_shape, Color.white, true, 30.0f, 0.1f);

        m_meshFilter.mesh = mesh;
    }
Esempio n. 2
0
    public void build()
    {
        m_shape = new Core.Shape();
        foreach (var shape in m_addSegments)
        {
            m_shape = m_shape + shape.getShapeWithObjPosition();
        }
        foreach (var shape in m_subSegments)
        {
            shape.getShapeWithObjPosition();
            m_shape = m_shape - shape.getShapeWithObjPosition();
        }
        var mesh = Core.Utils.ShapeCreator.CreateMesh(m_shape, Color.white, true, 30.0f, 0.1f);

        m_meshFilter.mesh = mesh;
    }
Esempio n. 3
0
    public Core.Shape getShapeWithObjPosition()
    {
        var points = new List <Vector2>(m_shape.vectorPoints);

        for (int i = 0; i < points.Count; i++)
        {
            var point = points [i];
            point = (Vector2)GizmoUtils.RotatePointAroundPivot(point, Vector3.zero, gameObject.transform.localRotation.eulerAngles);
            point = point + (Vector2)gameObject.transform.localPosition;
//			point = (Vector2)GizmoUtils.RotatePointAroundPivot (point, );
            points [i] = point;
        }
        var shape = new Core.Shape(points);

        return(shape);
    }
Esempio n. 4
0
    public void drawSegment()
    {
        List <Vector2> points = new List <Vector2> ();

        Vector2 pointLineStart  = Vector2.zero;
        Vector2 pointLineStart1 = pointLineStart + new Vector2(0.0f, lineWidthStart / 2.0f);
        Vector2 pointLineStart2 = pointLineStart - new Vector2(0.0f, lineWidthStart / 2.0f);

        Vector2 pointLineEnd  = pointLineStart + new Vector2(lineLength, 0.0f);
        Vector2 pointLineEnd1 = pointLineEnd + new Vector2(0.0f, lineWidthEnd / 2.0f);
        Vector2 pointLineEnd2 = pointLineEnd - new Vector2(0.0f, lineWidthEnd / 2.0f);

        points.Add(pointLineStart1);
        points.Add(pointLineEnd1);
        points.Add(pointLineEnd2);
        points.Add(pointLineStart2);

//		//curve
//		float radiusCurve1 = radius1;
//		float radiusCurve2 = radius2;
//
//		Vector2 curve1Point1 = points.Last ();
//		Vector2 curve1Point2 = MathHelper.getPointPositionOnCircle (Vector2.zero, radius2, startAngle+90.0f + (vertexes -1) * step);
//
//		Vector2 tangentCurve1A = MathHelper.getPointPositionOnCircle (Vector2.zero, radiusCurve1, startAngle + 90.0f + endAngle + cubicCurveOffsetAngle);
//		Vector2 tangentCurve1B = MathHelper.getPointPositionOnCircle (Vector2.zero, radiusCurve2, startAngle + 90.0f + endAngle + cubicCurveOffsetAngle);
//
//		float curveStep = 1.0f/cubicCurvePointsCount;
//		for (float i = curveStep; i < 1.0f; i += curveStep) {
//			points.Add (MathHelper.GetPointOnCubicCurve(curve1Point1, curve1Point2, tangentCurve1A, tangentCurve1B, i));
//		}
//		//


        m_shape = new Core.Shape(points);
        var mesh = Core.Utils.ShapeCreator.CreateMesh(m_shape, Color.white, true, 30.0f, 0.1f);

        m_meshFilter.mesh = mesh;
    }
Esempio n. 5
0
    public void drawSegment()
    {
        List <Vector2> points = new List <Vector2> ();

        float step = (endAngle - startAngle) / (float)vertexes;

        for (int i = 0; i < vertexes; i++)
        {
            Vector2 point = MathHelper.getPointPositionOnCircle(Vector2.zero, radius1, startAngle + 90.0f + i * step);
            points.Add(point);
        }

        for (int i = vertexes - 1; i >= 0; i--)
        {
            Vector2 point = MathHelper.getPointPositionOnCircle(Vector2.zero, radius2, startAngle + 90.0f + i * step);
            points.Add(point);
        }

        m_shape = new Core.Shape(points).OutlineContour(lineWidth);
        var mesh = Core.Utils.ShapeCreator.CreateMesh(m_shape, Color.white, true);

        m_meshFilter.mesh = mesh;
    }