示例#1
0
        [OvldGenCallTarget] static void Rectangle_Internal([OvldDefault(nameof(BlendMode))] ShapesBlendMode blendMode,
                                                           [OvldDefault("false")] bool hollow,
                                                           Rect rect,
                                                           [OvldDefault(nameof(Color))] Color color,
                                                           [OvldDefault(nameof(Thickness))] float thickness,
                                                           [OvldDefault("default")] Vector4 cornerRadii)
        {
            bool rounded = ShapesMath.MaxComp(cornerRadii) >= 0.0001f;

            // positive vibes only
            if (rect.width < 0)
            {
                rect.x -= rect.width *= -1;
            }
            if (rect.height < 0)
            {
                rect.y -= rect.height *= -1;
            }

            using (new IMDrawer(mpbRect, ShapesMaterialUtils.GetRectMaterial(hollow, rounded)[blendMode], ShapesMeshUtils.QuadMesh[0])) {
                MetaMpb.ApplyColorOrFill(mpbRect, color);
                MetaMpb.ApplyDashSettings(mpbRect, thickness);
                mpbRect.rect.Add(rect.ToVector4());
                mpbRect.cornerRadii.Add(cornerRadii);
                mpbRect.thickness.Add(thickness);
                mpbRect.thicknessSpace.Add((int)Draw.ThicknessSpace);
                mpbRect.scaleMode.Add((int)ScaleMode);
            }
        }
示例#2
0
 [OvldGenCallTarget] static void RegularPolygon([OvldDefault(nameof(BlendMode))] ShapesBlendMode blendMode,
                                                [OvldDefault(nameof(RegularPolygonRadiusSpace))] ThicknessSpace spaceRadius,
                                                [OvldDefault(nameof(RegularPolygonThicknessSpace))] ThicknessSpace spaceThickness,
                                                Vector3 pos,
                                                [OvldDefault("Quaternion.identity")] Quaternion rot,
                                                [OvldDefault(nameof(RegularPolygonSideCount))] int sideCount,
                                                [OvldDefault(nameof(RegularPolygonRadius))] float radius,
                                                [OvldDefault(nameof(RegularPolygonThickness))] float thickness,
                                                [OvldDefault(nameof(Color))] Color color,
                                                bool hollow,
                                                [OvldDefault("0f")] float roundness,
                                                [OvldDefault("0f")] float angle,
                                                [OvldDefault(nameof(PolygonShapeFill))] ShapeFill fill)
 {
     using (new IMDrawer(mpbRegularPolygon, ShapesMaterialUtils.matRegularPolygon[blendMode], ShapesMeshUtils.QuadMesh[0], pos, rot)) {
         MetaMpb.ApplyColorOrFill(mpbRegularPolygon, fill, color);
         mpbRegularPolygon.radius.Add(radius);
         mpbRegularPolygon.radiusSpace.Add((int)spaceRadius);
         mpbRegularPolygon.geometry.Add((int)Draw.RegularPolygonGeometry);
         mpbRegularPolygon.sides.Add(Mathf.Max(3, sideCount));
         mpbRegularPolygon.angle.Add(angle);
         mpbRegularPolygon.roundness.Add(roundness);
         mpbRegularPolygon.hollow.Add(hollow.AsInt());
         mpbRegularPolygon.thicknessSpace.Add((int)spaceThickness);
         mpbRegularPolygon.thickness.Add(thickness);
         mpbRegularPolygon.scaleMode.Add((int)ScaleMode);
     }
 }
示例#3
0
        [OvldGenCallTarget] static void Polygon_Internal(PolygonPath path,
                                                         [OvldDefault(nameof(PolygonTriangulation))] PolygonTriangulation triangulation,
                                                         [OvldDefault(nameof(Color))] Color color)
        {
            if (path.EnsureMeshIsReadyToRender(triangulation, out Mesh mesh) == false)
            {
                return;                 // no points defined in the mesh
            }
            switch (path.Count)
            {
            case 0:
                Debug.LogWarning("Tried to draw polygon with no points");
                return;

            case 1:
                Debug.LogWarning("Tried to draw polygon with only one point");
                return;

            case 2:
                Debug.LogWarning("Tried to draw polygon with only two points");
                return;
            }

            if (DrawCommand.IsAddingDrawCommandsToBuffer)              // mark as used by this command to prevent destroy in dispose
            {
                path.RegisterToCommandBuffer(DrawCommand.CurrentWritingCommandBuffer);
            }

            using (new IMDrawer(mpbPolygon, ShapesMaterialUtils.matPolygon[Draw.BlendMode], mesh)) {
                MetaMpb.ApplyColorOrFill(mpbPolygon, color);
            }
        }
示例#4
0
        [OvldGenCallTarget] static void Polygon([OvldDefault(nameof(BlendMode))] ShapesBlendMode blendMode,
                                                PolygonPath path,
                                                [OvldDefault(nameof(PolygonTriangulation))] PolygonTriangulation triangulation,
                                                [OvldDefault(nameof(Color))] Color color,
                                                [OvldDefault(nameof(PolygonShapeFill))] ShapeFill fill)
        {
            if (path.EnsureMeshIsReadyToRender(triangulation, out Mesh mesh) == false)
            {
                return;                 // no points defined in the mesh
            }
            switch (path.Count)
            {
            case 0:
                Debug.LogWarning("Tried to draw polygon with no points");
                return;

            case 1:
                Debug.LogWarning("Tried to draw polygon with only one point");
                return;

            case 2:
                Debug.LogWarning("Tried to draw polygon with only two points");
                return;
            }

            using (new IMDrawer(mpbPolygon, ShapesMaterialUtils.matPolygon[blendMode], mesh)) {
                MetaMpb.ApplyColorOrFill(mpbPolygon, fill, color);
            }
        }
示例#5
0
 [OvldGenCallTarget] static void RegularPolygon_Internal([OvldDefault(nameof(RegularPolygonSideCount))] int sideCount,
                                                         [OvldDefault(nameof(Radius))] float radius,
                                                         [OvldDefault(nameof(Thickness))] float thickness,
                                                         [OvldDefault(nameof(Color))] Color color,
                                                         bool hollow,
                                                         [OvldDefault("0f")] float roundness,
                                                         [OvldDefault("0f")] float angle)
 {
     using (new IMDrawer(mpbRegularPolygon, ShapesMaterialUtils.matRegularPolygon[Draw.BlendMode], ShapesMeshUtils.QuadMesh[0])) {
         MetaMpb.ApplyColorOrFill(mpbRegularPolygon, color);
         MetaMpb.ApplyDashSettings(mpbRegularPolygon, thickness);
         mpbRegularPolygon.radius.Add(radius);
         mpbRegularPolygon.radiusSpace.Add((int)Draw.RadiusSpace);
         mpbRegularPolygon.alignment.Add((int)Draw.RegularPolygonGeometry);
         mpbRegularPolygon.sides.Add(Mathf.Max(3, sideCount));
         mpbRegularPolygon.angle.Add(angle);
         mpbRegularPolygon.roundness.Add(roundness);
         mpbRegularPolygon.hollow.Add(hollow.AsInt());
         mpbRegularPolygon.thicknessSpace.Add((int)Draw.ThicknessSpace);
         mpbRegularPolygon.thickness.Add(thickness);
         mpbRegularPolygon.scaleMode.Add((int)ScaleMode);
     }
 }