Beispiel #1
0
		Circle::Circle(const float32 x, const float32 y, const float32 radius, const uint32 vertices) : Renderable((vertices * 2) + 2, 2),
																									    vertices(vertices),
																										radius(radius),
																										borderThickness(0.0f),
																										borderFill(color::Green),
																										fill(color::Red) {
			transform.position.x = x;
			transform.position.y = y;
			transform.origin.x = radius;
			transform.origin.y = radius;

			localBounds.w = radius * 2.0f;
			localBounds.h = radius * 2.0f;
			
			RenderElementData& shapeRenderData = renderData.renderElements[0];
			shapeRenderData.first = 0;
			shapeRenderData.last = vertices + 1;	// +1 caused by center vertex.
			shapeRenderData.vertexElements = 7;		
			shapeRenderData.offset = 2;
			shapeRenderData.renderMode = RenderMode::TriangleFan;

			RenderElementData& borderRenderData = renderData.renderElements[1];
			borderRenderData.first = vertices + 2;		// End of shape vertices + shape center + border center.
			borderRenderData.last = vertices * 2 + 1;	// Shape + border center offset.
			borderRenderData.vertexElements = 7;
			borderRenderData.offset = 2;
			borderRenderData.renderMode = RenderMode::TriangleFan;

			recomputeBounds(*this);
			recomputeVertices(*this);
			updateRenderData(*this);
		}
Beispiel #2
0
 void LineRenderer::rebuildMesh() {
     auto meshData = mMesh->meshData();
     meshData->setPosition(mPoints);
     meshData->recomputeBounds();
     meshData->setSubmesh(0, mIndices, mMeshType);
     mMesh->setMeshData(meshData);
 }