MCPcopy Create free account
hub / github.com/codereader/DarkRadiant / onPreRender

Method onPreRender

radiantcore/patch/PatchNode.cpp:349–383  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

347}
348
349void PatchNode::onPreRender(const VolumeTest& volume)
350{
351 // Defer the tesselation calculation to the last minute
352 m_patch.evaluateTransform();
353 m_patch.updateTesselation();
354
355 if (m_patch.getWidth() > 0 && m_patch.getHeight() > 0)
356 {
357 _renderableSurfaceSolid.update(m_patch._shader.getGLShader());
358 _renderableSurfaceWireframe.update(getRenderState() == RenderState::Active ?
359 _renderEntity->getWireShader() : _inactiveShader);
360 _renderableSurfaceSolid.attachToEntity(_renderEntity);
361 }
362 else
363 {
364 _renderableSurfaceSolid.clear();
365 _renderableSurfaceWireframe.clear();
366 }
367
368 if (isSelected() && GlobalSelectionSystem().ComponentMode() == selection::ComponentSelectionMode::Vertex)
369 {
370 // Selected patches in component mode render the lattice connecting the control points
371 _renderableCtrlLattice.update(_ctrlLatticeShader);
372 _renderableCtrlPoints.update(_ctrlPointShader);
373 }
374 else
375 {
376 _renderableCtrlPoints.hide();
377 _renderableCtrlLattice.hide();
378
379 // Queue an update the next time it's rendered
380 _renderableCtrlPoints.queueUpdate();
381 _renderableCtrlLattice.queueUpdate();
382 }
383}
384
385void PatchNode::renderHighlights(IRenderableCollector& collector, const VolumeTest& volume)
386{

Callers

nothing calls this directly

Calls 10

updateTesselationMethod · 0.80
ComponentModeMethod · 0.80
hideMethod · 0.80
evaluateTransformMethod · 0.45
getWidthMethod · 0.45
getHeightMethod · 0.45
updateMethod · 0.45
attachToEntityMethod · 0.45
clearMethod · 0.45
queueUpdateMethod · 0.45

Tested by

no test coverage detected