diff --git a/radiantcore/entity/curve/CurveControlPointFunctors.h b/radiantcore/entity/curve/CurveControlPointFunctors.h index e9011e26c3..321db7c488 100644 --- a/radiantcore/entity/curve/CurveControlPointFunctors.h +++ b/radiantcore/entity/curve/CurveControlPointFunctors.h @@ -1,5 +1,4 @@ -#ifndef CURVECONTROLPOINTFUNCTORS_H_ -#define CURVECONTROLPOINTFUNCTORS_H_ +#pragma once #include "CurveEditInstance.h" @@ -34,29 +33,6 @@ class ControlPointTransformator : } }; -class ControlPointAdder : - public CurveEditInstance::ControlPointFunctor, - public CurveEditInstance::ControlPointConstFunctor -{ - RenderablePointVector& _points; - Colour4b _colour; -public: - ControlPointAdder(RenderablePointVector& points, const Colour4b& colour = colour_vertex) : - _points(points), - _colour(colour) - {} - - // Functor - void operator()(Vector3& point, const Vector3& original) { - _points.push_back(VertexCb(Vertex3f(point), _colour)); - } - - // ConstFunctor - void operator()(const Vector3& point, const Vector3& original) { - _points.push_back(VertexCb(Vertex3f(point), _colour)); - } -}; - class ControlPointBoundsAdder : public CurveEditInstance::ControlPointConstFunctor { @@ -72,5 +48,3 @@ class ControlPointBoundsAdder : }; } // namespace entity - -#endif /*CURVECONTROLPOINTFUNCTORS_H_*/ diff --git a/radiantcore/entity/curve/CurveEditInstance.cpp b/radiantcore/entity/curve/CurveEditInstance.cpp index 33836643ed..6a07db9de2 100644 --- a/radiantcore/entity/curve/CurveEditInstance.cpp +++ b/radiantcore/entity/curve/CurveEditInstance.cpp @@ -10,9 +10,7 @@ CurveEditInstance::CurveEditInstance(Curve& curve, const SelectionChangedSlot& s _curve(curve), _selectionChanged(selectionChanged), _controlPointsTransformed(_curve.getTransformedControlPoints()), - _controlPoints(_curve.getControlPoints()), - m_controlsRender(GL_POINTS), - m_selectedRender(GL_POINTS) + _controlPoints(_curve.getControlPoints()) {} void CurveEditInstance::testSelect(Selector& selector, SelectionTest& test) @@ -32,20 +30,6 @@ void CurveEditInstance::testSelect(Selector& selector, SelectionTest& test) } } -void CurveEditInstance::setRenderSystem(const RenderSystemPtr& renderSystem) -{ - if (renderSystem) - { - _shaders.controlsShader = renderSystem->capture("$POINT"); - _shaders.selectedShader = renderSystem->capture("$SELPOINT"); - } - else - { - _shaders.controlsShader.reset(); - _shaders.selectedShader.reset(); - } -} - bool CurveEditInstance::isSelected() const { for(Selectables::const_iterator i = _selectables.begin(); i != _selectables.end(); ++i) { @@ -161,41 +145,9 @@ void CurveEditInstance::snapto(float snap) { forEachSelected(snapper); } -void CurveEditInstance::updateSelected() const { - m_selectedRender.clear(); - ControlPointAdder adder(m_selectedRender, colour_selected); - forEachSelected(adder); -} - -void CurveEditInstance::renderComponents(IRenderableCollector& collector, - const VolumeTest& volume, const Matrix4& localToWorld) const +void CurveEditInstance::curveChanged() { -#if 0 - collector.addRenderable(*_shaders.controlsShader, m_controlsRender, localToWorld); -#endif -} - -void CurveEditInstance::renderComponentsSelected(IRenderableCollector& collector, - const VolumeTest& volume, const Matrix4& localToWorld) const -{ -#if 0 - updateSelected(); - if(!m_selectedRender.empty()) - { - collector.addRenderable(*_shaders.selectedShader, m_selectedRender, localToWorld); - } -#endif -} - -void CurveEditInstance::curveChanged() { _selectables.resize(_controlPointsTransformed.size(), _selectionChanged); - - m_controlsRender.clear(); - m_controlsRender.reserve(_controlPointsTransformed.size()); - ControlPointAdder adder(m_controlsRender); - forEach(adder); - - m_selectedRender.reserve(_controlPointsTransformed.size()); } void CurveEditInstance::forEachSelected(ControlPointFunctor& functor) { diff --git a/radiantcore/entity/curve/CurveEditInstance.h b/radiantcore/entity/curve/CurveEditInstance.h index 5edc04c217..6ab3e65a1b 100644 --- a/radiantcore/entity/curve/CurveEditInstance.h +++ b/radiantcore/entity/curve/CurveEditInstance.h @@ -3,16 +3,12 @@ #include "Curve.h" #include "ObservedSelectable.h" -namespace entity { - - namespace - { - const Colour4b colour_vertex(0, 255, 0, 255); - const Colour4b colour_selected(0, 0, 255, 255); - } +namespace entity +{ /** greebo: This class is wrapped around a Curve class to manage - * all the selection and transformation operations. + * the selection and transformation operations. + * This should be merged with the Curve class. */ class CurveEditInstance: public sigc::trackable { @@ -41,24 +37,10 @@ class CurveEditInstance: public sigc::trackable typedef std::vector Selectables; Selectables _selectables; - RenderablePointVector m_controlsRender; - mutable RenderablePointVector m_selectedRender; - - struct CurveShaders - { - ShaderPtr controlsShader; - ShaderPtr selectedShader; - }; - - CurveShaders _shaders; - public: // Constructor CurveEditInstance(Curve& curve, const SelectionChangedSlot& selectionChanged); - - void setRenderSystem(const RenderSystemPtr& renderSystem); - // Traversal functions, these cycle through all (selected) control points void forEach(ControlPointFunctor& functor); @@ -83,12 +65,6 @@ class CurveEditInstance: public sigc::trackable // Snaps the selected control points to the grid void snapto(float snap); - void updateSelected() const; - - void renderComponents(IRenderableCollector& collector, const VolumeTest& volume, const Matrix4& localToWorld) const; - - void renderComponentsSelected(IRenderableCollector& collector, const VolumeTest& volume, const Matrix4& localToWorld) const; - void curveChanged(); // As the name states, removes the selected control points diff --git a/radiantcore/entity/doom3group/StaticGeometryNode.cpp b/radiantcore/entity/doom3group/StaticGeometryNode.cpp index e04bfd62e1..6c1554e255 100644 --- a/radiantcore/entity/doom3group/StaticGeometryNode.cpp +++ b/radiantcore/entity/doom3group/StaticGeometryNode.cpp @@ -353,28 +353,6 @@ void StaticGeometryNode::onPreRender(const VolumeTest& volume) } } -void StaticGeometryNode::renderCommon(IRenderableCollector& collector, const VolumeTest& volume) const -{ - // Render curves always relative to the absolute map origin - static Matrix4 identity = Matrix4::getIdentity(); - _nurbsEditInstance.renderComponentsSelected(collector, volume, identity); - _catmullRomEditInstance.renderComponentsSelected(collector, volume, identity); -} - -void StaticGeometryNode::renderSolid(IRenderableCollector& collector, const VolumeTest& volume) const -{ - EntityNode::renderSolid(collector, volume); - - renderCommon(collector, volume); -} - -void StaticGeometryNode::renderWireframe(IRenderableCollector& collector, const VolumeTest& volume) const -{ - EntityNode::renderWireframe(collector, volume); - - renderCommon(collector, volume); -} - void StaticGeometryNode::renderHighlights(IRenderableCollector& collector, const VolumeTest& volume) { m_curveNURBS.renderHighlights(collector, volume); @@ -404,24 +382,15 @@ void StaticGeometryNode::setRenderSystem(const RenderSystemPtr& renderSystem) _curveCtrlPointShader.reset(); } - _nurbsEditInstance.setRenderSystem(renderSystem); - _catmullRomEditInstance.setRenderSystem(renderSystem); - _originInstance.setRenderSystem(renderSystem); } void StaticGeometryNode::renderComponents(IRenderableCollector& collector, const VolumeTest& volume) const { - if (GlobalSelectionSystem().ComponentMode() == selection::ComponentSelectionMode::Vertex) + if (!isModel() && GlobalSelectionSystem().ComponentMode() == selection::ComponentSelectionMode::Vertex) { - _nurbsEditInstance.renderComponents(collector, volume, Matrix4::getIdentity()); - - _catmullRomEditInstance.renderComponents(collector, volume, Matrix4::getIdentity()); - // Register the renderable with OpenGL - if (!isModel()) { - _originInstance.render(collector, volume, localToWorld()); - } + _originInstance.render(collector, volume, localToWorld()); } } diff --git a/radiantcore/entity/doom3group/StaticGeometryNode.h b/radiantcore/entity/doom3group/StaticGeometryNode.h index 41f1126282..2190fec7d6 100644 --- a/radiantcore/entity/doom3group/StaticGeometryNode.h +++ b/radiantcore/entity/doom3group/StaticGeometryNode.h @@ -132,8 +132,6 @@ class StaticGeometryNode : // Renderable implementation void onPreRender(const VolumeTest& volume) override; - void renderSolid(IRenderableCollector& collector, const VolumeTest& volume) const override; - void renderWireframe(IRenderableCollector& collector, const VolumeTest& volume) const override; void renderHighlights(IRenderableCollector& collector, const VolumeTest& volume) override; void setRenderSystem(const RenderSystemPtr& renderSystem) override; @@ -171,7 +169,6 @@ class StaticGeometryNode : void destroy(); void setIsModel(bool newValue); - void renderCommon(IRenderableCollector& collector, const VolumeTest& volume) const; /** Determine if this Doom3Group is a model (func_static) or a * brush-containing entity. If the "model" key is equal to the