static void DrawOutline(IChiselHandleRenderer renderer, ChiselSphereDefinition definition, Vector3[] vertices, LineMode lineMode) { var sides = definition.horizontalSegments; var extraVertices = 2; var bottomVertex = 1; var topVertex = 0; var rings = (vertices.Length - extraVertices) / sides; var prevColor = renderer.color; var color = prevColor; color.a *= 0.6f; renderer.color = color; for (int i = 0, j = extraVertices; i < rings; i++, j += sides) { renderer.DrawLineLoop(vertices, j, sides, lineMode: lineMode, thickness: kHorzLineThickness, dashSize: kLineDash); } for (int k = 0; k < sides; k++) { renderer.DrawLine(vertices[topVertex], vertices[extraVertices + k], lineMode: lineMode, thickness: kVertLineThickness); for (int i = 0, j = extraVertices; i < rings - 1; i++, j += sides) { renderer.DrawLine(vertices[j + k], vertices[j + k + sides], lineMode: lineMode, thickness: kVertLineThickness); } renderer.DrawLine(vertices[bottomVertex], vertices[extraVertices + k + ((rings - 1) * sides)], lineMode: lineMode, thickness: kVertLineThickness); } renderer.color = prevColor; }
static void DrawOutline(IChiselHandleRenderer renderer, ChiselCapsuleDefinition definition, Vector3[] vertices, LineMode lineMode) { var sides = definition.sides; // TODO: share this logic with GenerateCapsuleVertices var topHemisphere = definition.haveRoundedTop; var bottomHemisphere = definition.haveRoundedBottom; var topSegments = topHemisphere ? definition.topSegments : 0; var bottomSegments = bottomHemisphere ? definition.bottomSegments : 0; var extraVertices = definition.extraVertexCount; var bottomVertex = definition.bottomVertex; var topVertex = definition.topVertex; var rings = definition.ringCount; var bottomRing = (bottomHemisphere) ? (rings - bottomSegments) : rings - 1; var topRing = (topHemisphere) ? (topSegments - 1) : 0; var prevColor = renderer.color; var color = prevColor; color.a *= 0.6f; for (int i = 0, j = extraVertices; i < rings; i++, j += sides) { if ((!definition.haveRoundedTop && i == topRing) || (!definition.haveRoundedBottom && i == bottomRing)) { continue; } bool isCapRing = (i == topRing || i == bottomRing); if (isCapRing) { continue; } renderer.color = (isCapRing ? prevColor : color); renderer.DrawLineLoop(vertices, j, sides, lineMode: lineMode, thickness: (isCapRing ? kCapLineThickness : kHorzLineThickness), dashSize: (isCapRing ? 0 : kLineDash)); } renderer.color = color; for (int k = 0; k < sides; k++) { if (topHemisphere) { renderer.DrawLine(vertices[topVertex], vertices[extraVertices + k], lineMode: lineMode, thickness: kVertLineThickness); } for (int i = 0, j = extraVertices; i < rings - 1; i++, j += sides) { renderer.DrawLine(vertices[j + k], vertices[j + k + sides], lineMode: lineMode, thickness: kVertLineThickness); } if (bottomHemisphere) { renderer.DrawLine(vertices[bottomVertex], vertices[extraVertices + k + ((rings - 1) * sides)], lineMode: lineMode, thickness: kVertLineThickness); } } renderer.color = prevColor; }
static void DrawOutline(IChiselHandleRenderer renderer, ChiselStadiumDefinition definition, Vector3[] vertices, LineMode lineMode) { var sides = definition.sides; var topSides = Mathf.Max(definition.topSides, 1) + 1; var bottomSides = Mathf.Max(definition.bottomSides, 1) + 1; var haveRoundedTop = definition.haveRoundedTop; var haveRoundedBottom = definition.haveRoundedBottom; var haveCenter = definition.haveCenter; //renderer.DrawLineLoop(vertices, 0, sides, lineMode: lineMode, thickness: kCapLineThickness); //renderer.DrawLineLoop(vertices, sides, sides, lineMode: lineMode, thickness: kCapLineThickness); var firstTopSide = definition.firstTopSide; var lastTopSide = definition.lastTopSide; for (int k = firstTopSide; k <= lastTopSide; k++) { var sideLine = !haveRoundedTop || (k == firstTopSide) || (k == lastTopSide); var thickness = (sideLine ? kSideLineThickness : kVertLineThickness); var dashSize = (sideLine ? 0 : kLineDash); renderer.DrawLine(vertices[k], vertices[sides + k], lineMode: lineMode, thickness: thickness, dashSize: dashSize); } var firstBottomSide = definition.firstBottomSide; var lastBottomSide = definition.lastBottomSide; for (int k = firstBottomSide; k <= lastBottomSide; k++) { var sideLine = haveCenter && (!haveRoundedBottom || (k == firstBottomSide) || (k == lastBottomSide)); var thickness = (sideLine ? kSideLineThickness : kVertLineThickness); var dashSize = (sideLine ? 0 : kLineDash); renderer.DrawLine(vertices[k], vertices[sides + k], lineMode: lineMode, thickness: thickness, dashSize: dashSize); } //renderer.DrawLine(vertices[firstBottomSide], vertices[lastBottomSide], lineMode: lineMode, thickness: kVertLineThickness); //renderer.DrawLine(vertices[firstTopSide ], vertices[lastTopSide ], lineMode: lineMode, thickness: kVertLineThickness); //renderer.DrawLine(vertices[sides + firstBottomSide], vertices[sides + lastBottomSide], lineMode: lineMode, thickness: kVertLineThickness); //renderer.DrawLine(vertices[sides + firstTopSide ], vertices[sides + lastTopSide ], lineMode: lineMode, thickness: kVertLineThickness); }
static void DrawOutline(IChiselHandleRenderer renderer, ChiselTorusDefinition definition, float3[] vertices, LineMode lineMode) { var horzSegments = definition.settings.horizontalSegments; var vertSegments = definition.settings.verticalSegments; if (definition.settings.totalAngle != 360) { horzSegments++; } var prevColor = renderer.color; prevColor.a *= 0.8f; var color = prevColor; color.a *= 0.6f; renderer.color = color; for (int i = 0, j = 0; i < horzSegments; i++, j += vertSegments) { renderer.DrawLineLoop(vertices, j, vertSegments, lineMode: lineMode, thickness: kVertLineThickness); } for (int k = 0; k < vertSegments; k++) { for (int i = 0, j = 0; i < horzSegments - 1; i++, j += vertSegments) { renderer.DrawLine(vertices[j + k], vertices[j + k + vertSegments], lineMode: lineMode, thickness: kHorzLineThickness); } } if (definition.settings.totalAngle == 360) { for (int k = 0; k < vertSegments; k++) { renderer.DrawLine(vertices[k], vertices[k + ((horzSegments - 1) * vertSegments)], lineMode: lineMode, thickness: kHorzLineThickness); } } renderer.color = prevColor; }
static void DrawOutline(IChiselHandleRenderer renderer, ChiselHemisphereDefinition definition, Vector3[] vertices, LineMode lineMode) { var sides = definition.horizontalSegments; var topSegments = Mathf.Max(definition.verticalSegments, 0); var bottomCap = false; var topCap = (topSegments != 0); var extraVertices = ((topCap) ? 1 : 0) + ((bottomCap) ? 1 : 0); var bottomVertex = 0; //var topVertex = (bottomCap) ? 1 : 0; var rings = (vertices.Length - extraVertices) / sides; var bottomRing = 0; var prevColor = renderer.color; var color = prevColor; color.a *= 0.6f; for (int i = 0, j = extraVertices; i < rings; i++, j += sides) { renderer.color = ((i == bottomRing) ? prevColor : color); renderer.DrawLineLoop(vertices, j, sides, lineMode: lineMode, thickness: ((i == bottomRing) ? kCapLineThickness : kHorzLineThickness), dashSize: ((i == bottomRing) ? 0 : kLineDash)); } renderer.color = color; for (int k = 0; k < sides; k++) { for (int i = 0, j = extraVertices; i < rings - 1; i++, j += sides) { renderer.DrawLine(vertices[j + k], vertices[j + k + sides], lineMode: lineMode, thickness: kVertLineThickness); } if (topCap) { renderer.DrawLine(vertices[bottomVertex], vertices[extraVertices + k + ((rings - 1) * sides)], lineMode: lineMode, thickness: kVertLineThickness); } } renderer.color = prevColor; }
public abstract void OnPaint(IChiselHandleRenderer renderer, Curve2D shape, float height);
public abstract void OnPaint(IChiselHandleRenderer renderer, Bounds bounds);
public override void OnPaint(IChiselHandleRenderer renderer, Bounds bounds) { // TODO: render capsule here renderer.RenderCylinder(bounds, sides); renderer.RenderBoxMeasurements(bounds); }
public static void RenderDistanceMeasurement(this IChiselHandleRenderer renderer, float3 from, float3 to) { renderer.RenderDistanceMeasurement((Vector3)from, (Vector3)to); }
public static void RenderCylinder(this IChiselHandleRenderer renderer, ChiselAABB bounds, int segments) { renderer.RenderCylinder(new Bounds((bounds.Max + bounds.Min) * 0.5f, bounds.Max - bounds.Min), segments); }
public static void RenderBoxMeasurements(this IChiselHandleRenderer renderer, ChiselAABB bounds) { renderer.RenderBoxMeasurements(new Bounds((bounds.Max + bounds.Min) * 0.5f, bounds.Max - bounds.Min)); }
public static void DrawLine(this IChiselHandleRenderer renderer, float3 from, float3 to, LineMode lineMode = LineMode.NoZTest, float thickness = 1.0f, float dashSize = 0.0f) { renderer.DrawLine((Vector3)from, (Vector3)to, lineMode, thickness, dashSize); }
public override void OnPaint(IChiselHandleRenderer renderer, Bounds bounds) { renderer.RenderCylinder(bounds, horizontalSegments); renderer.RenderBoxMeasurements(bounds); }
public override void OnPaint(IChiselHandleRenderer renderer, Bounds bounds) { renderer.RenderBox(bounds); renderer.RenderBoxMeasurements(bounds); }
public override void OnPaint(IChiselHandleRenderer renderer, Curve2D shape, float height) { renderer.RenderShape(shape, height); }