Пример #1
0
        public override void DrawConstraint(Constraint c)
        {
            switch (c.tag)
            {
            case Tags.DistanceConstraint:
                var distance = c as DistanceConstraint;
                Drawing2D.DrawLine(distance.v0.position + DemoUtils.offset, distance.v1.position + DemoUtils.offset, DemoUtils.constraintColor);
                break;

            case Tags.SpringConstraint:
                var spring = c as SpringConstraint;
                Drawing2D.DrawLine(spring.v0.position + DemoUtils.offset, spring.v1.position + DemoUtils.offset, DemoUtils.constraintColor);
                break;

            case Tags.DragConstraint:
                break;

            case Tags.PinConstraint:
                var pin = c as PinConstraint;
                Drawing2D.FillCircle(pin.position + DemoUtils.offset, DemoUtils.pinSize, DemoUtils.pinColor);
                break;

            case Tags.AngleConstraint:
                break;
            }
        }
Пример #2
0
    // Other than method name, DrawBezierLine is unchanged from Linusmartensson's original implementation.
    public static void DrawBezierLine(Vector2 start, Vector2 startTangent, Vector2 end, Vector2 endTangent, Color color, float width, bool antiAlias, int segments)
    {
        Vector2 lastV = CubeBezier(start, startTangent, end, endTangent, 0);

        for (int i = 1; i < segments; ++i)
        {
            Vector2 v = CubeBezier(start, startTangent, end, endTangent, i / (float)segments);
            Drawing2D.DrawLine(lastV, v, color, width, antiAlias);
            lastV = v;
        }
    }
Пример #3
0
        private void DrawBodyOutline(Body body)
        {
            for (var i = 0; i < body.vertices.Length - 1; ++i)
            {
                var v0 = body.vertices[i];
                var v1 = body.vertices[i + 1];
                Drawing2D.DrawLine(v0.position + DemoUtils.offset, v1.position + DemoUtils.offset, DemoUtils.constraintColor);
            }

            Drawing2D.DrawLine(body.vertices[body.vertices.Length - 1].position + DemoUtils.offset, body.vertices[0].position + DemoUtils.offset, DemoUtils.constraintColor);
        }
Пример #4
0
        public override void DrawDragConstraint()
        {
            if (model.draggedVertex != null)
            {
                if (model.draggedBody == null)
                {
                    Drawing2D.DrawLine(model.draggedVertex.position + DemoUtils.offset, model.dragPosition + DemoUtils.offset, DemoUtils.dragConstraintColor);
                }

                Drawing2D.DrawCircle(model.draggedVertex.position + DemoUtils.offset, DemoUtils.pinSize, 8, DemoUtils.dragConstraintColor);
            }
        }
Пример #5
0
 void OnGUI()
 {
     if (Status == ST_SELECTION)
     {
         // если выполняется выделение, рисуем рамку выделения (селектор)
         Vector2 pointA = new Vector2(Selector.x, Selector.y);
         Vector2 pointB = Input.mousePosition;
         pointB.y = Screen.height - pointB.y;
         Vector2 pointC = new Vector2(pointB.x, Selector.y);
         Vector2 pointD = new Vector2(Selector.x, pointB.y);
         Drawing2D.DrawLine(pointA, pointC, Color.blue, 1.0f, false);
         Drawing2D.DrawLine(pointC, pointB, Color.blue, 1.0f, false);
         Drawing2D.DrawLine(pointB, pointD, Color.blue, 1.0f, false);
         Drawing2D.DrawLine(pointD, pointA, Color.blue, 1.0f, false);
     }
 }
Пример #6
0
    /// <summary>
    /// Lines example
    /// </summary>
    private void DrawLines()
    {
        Drawing2D.DrawRect(new Rect(mRectangleX, mRectangleY, mRectangleWidth, mRectangleHeight));
        Drawing2D.DrawText("Lines & Arrows", mRectangleX + 5, mRectangleY + 5, 18, Color.white, mBitmapFont);

        float x = 15 - mSampleWidth;
        float y = 60;

        Drawing2D.DrawLine(new Vector2(x        += mSampleWidth, y), new Vector2(x + mSampleWidth - mSamplesMargin, y), ToColor(36, 86, 188), 4f);
        Drawing2D.DrawLine(new Vector2(x        += mSampleWidth, y), new Vector2(x + mSampleWidth - mSamplesMargin, y), ToColor(93, 166, 221), 8f);
        Drawing2D.DrawLine(new Vector2(x        += mSampleWidth, y), new Vector2(x + mSampleWidth - mSamplesMargin, y), ToColor(21, 179, 89), 16f, CustomTexture3D);
        Drawing2D.DrawDashedLine(new Vector2(x  += mSampleWidth, y), new Vector2(x + mSampleWidth - mSamplesMargin, y), ToColor(175, 217, 141), 4f, 3);
        Drawing2D.DrawDashedLine(new Vector2(x  += mSampleWidth, y), new Vector2(x + mSampleWidth - mSamplesMargin, y), ToColor(248, 222, 104), 8f, 3);
        Drawing2D.DrawDashedLine(new Vector2(x  += mSampleWidth, y), new Vector2(x + mSampleWidth - mSamplesMargin, y), ToColor(255, 196, 126), 16f, 3);
        Drawing2D.DrawArrow(new Vector2(x       += mSampleWidth, y + 10), new Vector2(x + mSampleWidth - mSamplesMargin - 25, y - 10), ToColor(255, 112, 92), 4, 20, 25);
        Drawing2D.DrawDashedArrow(new Vector2(x += mSampleWidth, y - 10), new Vector2(x + mSampleWidth - mSamplesMargin - 25, y + 10), ToColor(232, 62, 83), 4, 20, 25, 3);
    }
Пример #7
0
        public override void DrawBody(Body body)
        {
            switch (body.tag)
            {
            case Tags.Cloth:
                break;

            case Tags.SolidBody:
                DrawSolidBody(body);
                break;

            case Tags.Tree:
                Drawing2D.DrawLine(body.vertices[0].position + DemoUtils.offset, body.vertices[1].position + DemoUtils.offset, DemoUtils.constraintColor);
                DrawNormalBody(body);
                break;

            case Tags.TreeWithFoliage:
                var desc = body.data as Builders.TreeFoliageDesc;
                for (var i = 0; i < desc.branches.Count; ++i)
                {
                    if (desc.branches[i] < 0)
                    {
                        continue;
                    }

                    var constraint = body.constraints[i] as SpringConstraint;
                    var trunkWidth = Mathf.Lerp(10f, 2f, desc.branches[i]);
                    Drawing2D.DrawLine(constraint.v0.position + DemoUtils.offset, constraint.v1.position + DemoUtils.offset, DemoUtils.trunkColor, trunkWidth);
                }

                for (var i = 0; i < desc.leaves.Count; ++i)
                {
                    var vertex = body.vertices[desc.leaves[i]];
                    Drawing2D.FillCircle(vertex.position + DemoUtils.offset, 25, DemoUtils.foliageColor);
                }

                break;

            case Tags.NormalBody:
            default:
                DrawNormalBody(body);
                break;
            }
        }
Пример #8
0
    /// <summary>
    ///
    /// </summary>
    private void DrawChart()
    {
        // Draw main axis
        Drawing2D.DrawLine(new Vector2(mChartX, mChartY + mChartHeight), new Vector2(mChartX + mChartWidth, mChartY + mChartHeight), ToColor(240, 240, 240), 2); // X Axis
        Drawing2D.DrawLine(new Vector2(mChartX, mChartY + mChartHeight), new Vector2(mChartX, mChartY - 25), ToColor(240, 240, 240), 2);                         // Y Axis

        // Draw guide horizontal lines
        Drawing2D.DrawLine(new Vector2(mChartX, mChartY + 65), new Vector2(mChartX + mChartWidth, mChartY + 65), ToColor(180, 180, 180, 128), 1);
        Drawing2D.DrawLine(new Vector2(mChartX, mChartY + 50), new Vector2(mChartX + mChartWidth, mChartY + 50), ToColor(180, 180, 180, 128), 1);
        Drawing2D.DrawLine(new Vector2(mChartX, mChartY + 35), new Vector2(mChartX + mChartWidth, mChartY + 35), ToColor(180, 180, 180, 128), 1);
        Drawing2D.DrawLine(new Vector2(mChartX, mChartY + 20), new Vector2(mChartX + mChartWidth, mChartY + 20), ToColor(180, 180, 180, 128), 1);
        Drawing2D.DrawLine(new Vector2(mChartX, mChartY + 5), new Vector2(mChartX + mChartWidth, mChartY + 5), ToColor(180, 180, 180, 128), 1);
        Drawing2D.DrawLine(new Vector2(mChartX, mChartY - 10), new Vector2(mChartX + mChartWidth, mChartY - 10), ToColor(180, 180, 180, 128), 1);
        Drawing2D.DrawLine(new Vector2(mChartX, mChartY - 25), new Vector2(mChartX + mChartWidth, mChartY - 25), ToColor(180, 180, 180, 128), 1);
        Drawing2D.DrawText("Time", mChartX + mChartWidth, mChartY + mChartHeight - 10, 11, ToColor(240, 240, 240), mBitmapFont);
        Drawing2D.DrawText("Value", mChartX + 5, mChartY - 25, 11, ToColor(240, 240, 240), mBitmapFont);

        // Draw Series
        DrawSeries(mChartValuesRed, ToColor(232, 62, 83));
        DrawSeries(mChartValuesYellow, ToColor(248, 222, 104));
    }
Пример #9
0
    /// <summary>
    ///
    /// </summary>
    private void DrawCompound()
    {
        mNumSamples  = 7;
        mSampleWidth = (mParentRect.width - 30) / (mNumSamples);


        mRectangleY += mRectangleHeight + 20;
        Drawing2D.DrawRect(new Rect(mRectangleX, mRectangleY, mRectangleWidth, mRectangleHeight));
        Drawing2D.DrawText("Other", mRectangleX + 5, mRectangleY + 5, 18, Color.white, mBitmapFont);
        float x      = 15 - mSampleWidth;
        float y      = mRectangleY + 35;
        float height = mRectangleHeight - 55;

        // Bars Chart
        x += 50;
        Drawing2D.FillRect(new Rect((x += mSampleWidth + 20), y - 10, 15, 50), ToColor(36, 86, 188), CustomTexture3DVertical);
        Drawing2D.FillRect(new Rect(x + 15, y, 15, 40), ToColor(175, 217, 141), CustomTexture3DVertical);
        Drawing2D.FillRect(new Rect(x + 30, y + 20, 15, 20), ToColor(255, 112, 92), CustomTexture3DVertical);
        Drawing2D.FillRect(new Rect(x + 45, y - 5, 15, 45), ToColor(93, 166, 221), CustomTexture3DVertical);

        // Progress Bar (circle)
        float radius = mRectangleHeight - 60;

        y += 5;
        x -= 100;
        Drawing2D.DrawArc(new Vector2((x += mSampleWidth) + ((mSampleWidth / 2) - radius), y), radius * 1.5f, 32, 270, 270, ToColor(21, 179, 89), 8f, CustomTextureLines);
        Drawing2D.FillCircle(new Vector2((x) + ((mSampleWidth / 2) - radius), y), radius * 1.45f, ToColor(21, 179, 89, 128));
        Drawing2D.DrawText("75%", (x) + ((mSampleWidth / 2) - radius - 15), y - 9, 18, Color.white, mBitmapFont);
        y -= 5;

        // Progress Bar
        x += 30;
        CustomTextureProgressBar.wrapMode = TextureWrapMode.Repeat;
        Drawing2D.DrawRect(new Rect(x    += mSampleWidth, y, mSampleWidth - mSamplesMargin, height - 5), Color.white, 1f);
        Drawing2D.FillRect(new Rect(x, y + 1, mSampleWidth - mSamplesMargin - 20, height - 5 - 1), ToColor(255, 255, 255, 200), CustomTextureProgressBar, new Vector2(4, 1));
        Drawing2D.DrawText("85%", (x) + ((mSampleWidth / 2) - 30), y + 1, 17, Color.white, mBitmapFont);
        //Drawing2D.DrawGUIText("85%", (x) + ((mSampleWidth / 2) - 30), y + 1, 17, Color.white);


        // X-Y Axis
        x += 60;
        Drawing2D.DrawArrow(new Vector2(x += mSampleWidth + 20, y + 35), new Vector2(x + 40, y + 35), ToColor(255, 112, 92), 4, 20, 25);
        Drawing2D.DrawText("X", x + 45, y + 15, 12, ToColor(255, 112, 92), mBitmapFont);
        Drawing2D.DrawArrow(new Vector2(x, y + 35), new Vector2(x, y - 5), ToColor(248, 222, 104), 4, 20, 25);
        Drawing2D.DrawText("Y", x + 10, y - 15, 12, ToColor(248, 222, 104), mBitmapFont);

        // Chart
        x -= 110;
        Drawing2D.DrawLine(new Vector2(x += mSampleWidth + 20, y + 35), new Vector2(x + 250, y + 35), ToColor(240, 240, 240), 2); // X Axis
        Drawing2D.DrawLine(new Vector2(x, y + 35), new Vector2(x, y - 25), ToColor(240, 240, 240), 2);                            // Y Axis
        Drawing2D.DrawLine(new Vector2(x, y + 20), new Vector2(x + 250, y + 20), ToColor(180, 180, 180, 128), 1);                 // 10 Axis
        Drawing2D.DrawLine(new Vector2(x, y + 5), new Vector2(x + 250, y + 5), ToColor(180, 180, 180, 128), 1);                   // 20 Axis
        Drawing2D.DrawLine(new Vector2(x, y - 10), new Vector2(x + 250, y - 10), ToColor(180, 180, 180, 128), 1);                 // 30 Axis
        Drawing2D.DrawLine(new Vector2(x, y - 25), new Vector2(x + 250, y - 25), ToColor(180, 180, 180, 128), 1);                 // 30 Axis
        Drawing2D.DrawText("Time", x + 220, y + 20, 11, ToColor(240, 240, 240), mBitmapFont);
        Drawing2D.DrawText("Value", x + 5, y - 25, 11, ToColor(240, 240, 240), mBitmapFont);
        Vector2[] vertices = new Vector2[12];
        vertices[0]  = new Vector2(x + 10, y + 30);
        vertices[1]  = new Vector2(x + 30, y + 15);
        vertices[2]  = new Vector2(x + 50, y + 20);
        vertices[3]  = new Vector2(x + 70, y + 25);
        vertices[4]  = new Vector2(x + 90, y + 15);
        vertices[5]  = new Vector2(x + 110, y - 5);
        vertices[6]  = new Vector2(x + 130, y - 15);
        vertices[7]  = new Vector2(x + 150, y - 25);
        vertices[8]  = new Vector2(x + 170, y - 5);
        vertices[9]  = new Vector2(x + 190, y - 10);
        vertices[10] = new Vector2(x + 210, y - 15);
        vertices[11] = new Vector2(x + 230, y - 20);
        Drawing2D.DrawPolygon(vertices, ToColor(232, 62, 83), 4f, null, true);

        // Picture
        x += 110;
        Drawing2D.FillQuad(new Vector2((x += mSampleWidth) + 40, y + 5), 140, 64, Color.white, 8, CustomTexturePicture, null);
        Drawing2D.DrawQuad(new Vector2((x) + 40, y + 5), 140, 64, Color.white, 3, 8);

        x -= 20;
        Drawing2D.FillQuad(new Vector2((x += mSampleWidth) + 40, y + 5), 140, 64, Color.green, -6, CustomTexturePicture, null);
        Drawing2D.DrawQuad(new Vector2((x) + 40, y + 5), 140, 64, Color.white, 1, -6);
    }
Пример #10
0
 public void DrawLine(Vector2 pointA, Vector2 pointB, Color color)
 {
     Drawing2D.DrawLine(pointA, pointB, color);
 }