[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); } }
[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); } }
[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); } }
[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); } }
[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); } }