Changesets: DarkRadiant
renderer2 c4468258 11.12.2021 05:16 Details Diff |
0005584: Fix speaker and light volumes not always being rendered on selection status change |
Affected Issues 0005584 |
|
mod - radiantcore/entity/light/LightNode.cpp | Diff File | ||
mod - radiantcore/entity/light/LightNode.h | Diff File | ||
mod - radiantcore/entity/speaker/SpeakerNode.cpp | Diff File | ||
mod - radiantcore/entity/speaker/SpeakerNode.h | Diff File | ||
renderer2 dad2ec13 11.12.2021 05:07 Details Diff |
0005584: WIP commit, working on getting the circle geometry |
Affected Issues 0005584 |
|
mod - libs/render.h | Diff File | ||
mod - radiantcore/entity/speaker/SpeakerNode.cpp | Diff File | ||
mod - radiantcore/entity/speaker/SpeakerNode.h | Diff File | ||
mod - radiantcore/entity/speaker/SpeakerRenderables.cpp | Diff File | ||
renderer2 fce184ca 11.12.2021 04:26 Details Diff |
0005584: Refactor circle render methods to accept VertexCb and ArbitraryMeshVertex. The actual Vertex3f& reference is resolved by using template specialisations. |
Affected Issues 0005584 |
|
mod - libs/pivot.h | Diff File | ||
mod - libs/render.h | Diff File | ||
mod - radiantcore/entity/speaker/SpeakerNode.cpp | Diff File | ||
mod - radiantcore/entity/speaker/SpeakerNode.h | Diff File | ||
mod - radiantcore/entity/speaker/SpeakerRenderables.cpp | Diff File | ||
mod - radiantcore/entity/speaker/SpeakerRenderables.h | Diff File | ||
mod - radiantcore/selection/manipulators/RotateManipulator.cpp | Diff File | ||
mod - radiantcore/selection/textool/TextureToolRotateManipulator.cpp | Diff File | ||
renderer2 a5851240 11.12.2021 03:21 Details Diff |
0005584: Use a const AABB reference to construct the RenderableEntityBox. This might cause troubles when the RenderableEntityBox owner is changed to a base class, or if virtualness is added to some signatures. In this case, an approach to pass an interface or function object to retrieve the bounds and the world position on demand is probably safer. |
Affected Issues 0005584 |
|
mod - radiantcore/entity/RenderableEntityBox.cpp | Diff File | ||
mod - radiantcore/entity/RenderableEntityBox.h | Diff File | ||
mod - radiantcore/entity/generic/GenericEntityNode.cpp | Diff File | ||
mod - radiantcore/entity/speaker/SpeakerNode.cpp | Diff File | ||
mod - radiantcore/entity/speaker/SpeakerNode.h | Diff File | ||
mod - radiantcore/entity/speaker/SpeakerRenderables.cpp | Diff File | ||
mod - radiantcore/entity/speaker/SpeakerRenderables.h | Diff File | ||
renderer2 5d2a1e1a 10.12.2021 12:49 Details Diff |
0005584: Highlight rendering of GenericEntityNodes |
Affected Issues 0005584 |
|
mod - radiantcore/entity/generic/GenericEntityNode.cpp | Diff File | ||
mod - radiantcore/entity/generic/GenericEntityNode.h | Diff File | ||
renderer2 e891d90b 10.12.2021 12:41 Details Diff |
0005584: Cleanup round in GenericEntityNode |
Affected Issues 0005584 |
|
mod - radiantcore/entity/RenderableEntityBox.cpp | Diff File | ||
mod - radiantcore/entity/generic/GenericEntityNode.cpp | Diff File | ||
mod - radiantcore/entity/generic/GenericEntityNode.h | Diff File | ||
renderer2 28320960 10.12.2021 12:28 Details Diff |
0005584: Draw entity angle arrows |
Affected Issues 0005584 |
|
mod - radiantcore/CMakeLists.txt | Diff File | ||
add - radiantcore/entity/RenderableArrow.cpp | Diff File | ||
add - radiantcore/entity/RenderableArrow.h | Diff File | ||
mod - radiantcore/entity/RenderableEntityBox.cpp | Diff File | ||
mod - radiantcore/entity/generic/GenericEntityNode.cpp | Diff File | ||
mod - radiantcore/entity/generic/GenericEntityNode.h | Diff File | ||
mod - tools/msvc/DarkRadiantCore.vcxproj | Diff File | ||
mod - tools/msvc/DarkRadiantCore.vcxproj.filters | Diff File | ||
renderer2 7b2f1dd2 10.12.2021 10:36 Details Diff |
0005584: Draw solid and hollow entity boxes |
Affected Issues 0005584 |
|
mod - radiantcore/CMakeLists.txt | Diff File | ||
mod - radiantcore/entity/RenderableEntityBox.cpp | Diff File | ||
mod - radiantcore/entity/RenderableEntityBox.h | Diff File | ||
mod - radiantcore/entity/generic/GenericEntityNode.cpp | Diff File | ||
mod - radiantcore/rendersystem/backend/OpenGLShader.cpp | Diff File | ||
master 9d7fe174 09.12.2021 14:48 Details Diff |
Implement auto-disconnection for KeyObserver class Now that KeyObserverMap is using sigc::signals internally to allow auto-disconnection, we can make use of this to implement auto-disconnection when explicit KeyObserver classes are used instead of pure slots. This is achieved by changing insert() to call observeKey() to attach to onKeyValueChanged() directly, rather than storing the actual KeyObserver pointer internally. KeyObserver now inherits from sigc::trackable to enable auto-disconnection in this case. This required some internal changes to handle explicit disconnection using erase(). We now store a sigc::connection object, indexed by KeyObserver pointer, to remove the connection if requested. This is actually a minor change in behaviour: erase() now disconnects the given KeyObserver from *all* keys, rather than just a specific key, but this would only matter if the same KeyObserver was connected to multiple keys and the calling code wanted to disconnect it from just one of them. As far as I can see there are no cases where this behaviour would be needed — it's a 1:1 mapping between keys and KeyObserver objects everywhere. |
||
mod - radiantcore/entity/EntityNode.cpp | Diff File | ||
mod - radiantcore/entity/KeyObserverMap.h | Diff File | ||
mod - radiantcore/entity/ShaderParms.cpp | Diff File | ||
mod - test/Entity.cpp | Diff File | ||
master 763655ef 09.12.2021 13:32 Details Diff |
Use auto-disconnecting slots for observeKey in StaticGeometryNode Use sigc::mem_fun with a sigc::trackable destination object to enable auto-disconnection, rather than unsafe lambdas binding to subclass members which will be destroyed before EntityNode clears out its KeyObserverMap. |
||
mod - radiantcore/entity/RotationKey.h | Diff File | ||
mod - radiantcore/entity/doom3group/StaticGeometryNode.cpp | Diff File | ||
master 0242f774 09.12.2021 13:12 Details Diff |
Improve safety of KeyObserverMap::observeKey() Although the use of lambdas instead of KeyObserver references is cleaner and *appears* safer, it actually introduces potential undefined behaviour of its own: the lambda might capture variables which are destroyed before the observer is disconnected in the EntityNode/KeyObserverMap destructor. This is actually the case in live code, for example in StaticGeometryNode where observeKey() is called with lambdas that refer to m_rotationKey, which is a subclass member which will be destroyed before EntityNode itself. KeyObserverMap's internal implementation is now changed to use sigc::signals (one per observed key), and the KeyObserverFunc is upgraded from an std::function into a sigc::slot. This allows the use of auto-disconnection if the slot is set up using sigc::mem_fun instead of a lambda. The auto-disconnection behaviour is now confirmed with a new unit test. |
||
mod - include/ientity.h | Diff File | ||
mod - radiantcore/entity/KeyObserverMap.h | Diff File | ||
mod - test/Entity.cpp | Diff File | ||
renderer2 33a6c52a 08.12.2021 10:32 Details Diff |
0005584: Infrastructure to render the generic entity boxes (with and without arrows) |
Affected Issues 0005584 |
|
add - radiantcore/entity/RenderableEntityBox.cpp | Diff File | ||
add - radiantcore/entity/RenderableEntityBox.h | Diff File | ||
mod - radiantcore/entity/generic/GenericEntityNode.cpp | Diff File | ||
mod - radiantcore/entity/generic/GenericEntityNode.h | Diff File | ||
mod - tools/msvc/DarkRadiantCore.vcxproj | Diff File | ||
mod - tools/msvc/DarkRadiantCore.vcxproj.filters | Diff File | ||
master 966d6b1a 07.12.2021 20:53 Details Diff |
Move LitObject implementation up to scene::Node Every major renderable node class had its own implementation of LitObject::intersectsLight, but all of these implementations were identical. This method is now implemented at the Node level, and inherited by all subclasses. |
||
mod - libs/scene/Node.cpp | Diff File | ||
mod - libs/scene/Node.h | Diff File | ||
mod - radiantcore/brush/BrushNode.cpp | Diff File | ||
mod - radiantcore/brush/BrushNode.h | Diff File | ||
mod - radiantcore/model/StaticModelNode.cpp | Diff File | ||
mod - radiantcore/model/StaticModelNode.h | Diff File | ||
mod - radiantcore/model/md5/MD5ModelNode.cpp | Diff File | ||
mod - radiantcore/model/md5/MD5ModelNode.h | Diff File | ||
mod - radiantcore/patch/PatchNode.cpp | Diff File | ||
mod - radiantcore/patch/PatchNode.h | Diff File | ||
renderer2 b62f0b22 05.12.2021 13:47 Details Diff |
0005584: Remove old wireframe renderables from LightNode. |
Affected Issues 0005584 |
|
mod - radiantcore/entity/light/Light.h | Diff File | ||
mod - radiantcore/entity/light/LightNode.cpp | Diff File | ||
mod - radiantcore/entity/light/LightNode.h | Diff File | ||
mod - radiantcore/entity/light/Renderables.cpp | Diff File | ||
mod - radiantcore/entity/light/Renderables.h | Diff File | ||
renderer2 eda8f3f8 05.12.2021 13:03 Details Diff |
0005584: Point light wireframe volume |
Affected Issues 0005584 |
|
mod - radiantcore/entity/light/LightNode.cpp | Diff File | ||
mod - radiantcore/entity/light/LightNode.h | Diff File | ||
mod - radiantcore/entity/light/Renderables.cpp | Diff File | ||
renderer2 155214de 05.12.2021 08:23 Details Diff |
0005584: The complex case (light_start defined) of projected light volumes is displayed |
Affected Issues 0005584 |
|
mod - radiantcore/entity/light/LightNode.cpp | Diff File | ||
mod - radiantcore/entity/light/LightNode.h | Diff File | ||
mod - radiantcore/entity/light/Renderables.cpp | Diff File | ||
renderer2 f7129bdd 05.12.2021 07:58 Details Diff |
0005584: The simpler case (without start/end) of projected light volumes is displayed |
Affected Issues 0005584 |
|
mod - radiantcore/entity/light/LightNode.cpp | Diff File | ||
mod - radiantcore/entity/light/LightNode.h | Diff File | ||
mod - radiantcore/entity/light/Renderables.cpp | Diff File | ||
mod - radiantcore/entity/light/Renderables.h | Diff File | ||
renderer2 2e32d593 05.12.2021 07:35 Details Diff |
0005584: Prepare for light volume rendering. |
Affected Issues 0005584 |
|
mod - radiantcore/entity/light/LightNode.cpp | Diff File | ||
mod - radiantcore/entity/light/LightNode.h | Diff File | ||
mod - radiantcore/entity/light/Renderables.cpp | Diff File | ||
mod - radiantcore/entity/light/Renderables.h | Diff File | ||
renderer2 6da7470f 05.12.2021 05:59 Details Diff |
0005584: Renderable light geometry is now respecting the node's orientation. The transformation is baked into the vertices on transformation change, which the cost of being able to submit all geometry of the same shader in one single draw call. |
Affected Issues 0005584 |
|
mod - radiantcore/entity/EntityModule.cpp | Diff File | ||
mod - radiantcore/entity/light/LightNode.cpp | Diff File | ||
mod - radiantcore/entity/light/Renderables.h | Diff File | ||
renderer2 803d5118 05.12.2021 05:36 Details Diff |
0005584: Notify LightNodes when entity settings change. All LightNodes could subscribe to the settings signal themselves, but the house-keeping code on scene insertion/removal for every single node is not worth the trouble. |
Affected Issues 0005584 |
|
mod - radiantcore/entity/EntityModule.cpp | Diff File | ||
mod - radiantcore/entity/EntityModule.h | Diff File | ||
mod - radiantcore/entity/light/LightNode.cpp | Diff File | ||
mod - radiantcore/entity/light/LightNode.h | Diff File | ||
renderer2 db61a5da 05.12.2021 04:44 Details Diff |
0005584: LightNode's highlight rendering restored |
Affected Issues 0005584 |
|
mod - radiantcore/entity/light/LightNode.cpp | Diff File | ||
mod - radiantcore/entity/light/LightNode.h | Diff File | ||
renderer2 239332bb 05.12.2021 04:41 Details Diff |
0005584: The light diamond is now rendered using the RenderableGeometry base. It's updated only when the light transform has been changed. |
Affected Issues 0005584 |
|
mod - libs/render/RenderableGeometry.h | Diff File | ||
mod - radiantcore/entity/ColourKey.h | Diff File | ||
mod - radiantcore/entity/light/LightNode.cpp | Diff File | ||
mod - radiantcore/entity/light/LightNode.h | Diff File | ||
mod - radiantcore/entity/light/Renderables.h | Diff File | ||
renderer2 6244508c 04.12.2021 18:51 Details Diff |
0005584: Make the client code slimmer, the size changes are detected by the base class now |
Affected Issues 0005584 |
|
mod - libs/render/RenderableGeometry.h | Diff File | ||
mod - radiantcore/entity/target/RenderableTargetLines.h | Diff File | ||
mod - radiantcore/patch/PatchRenderables.h | Diff File | ||
renderer2 35132bb7 04.12.2021 18:40 Details Diff |
0005584: More refactoring to move the shader-specific update routines to the base class. Subclasses should only care about vertices and indices at best. |
Affected Issues 0005584 |
|
mod - libs/render/RenderableGeometry.h | Diff File | ||
mod - radiantcore/entity/target/RenderableTargetLines.h | Diff File | ||
mod - radiantcore/entity/target/TargetLineNode.cpp | Diff File | ||
mod - radiantcore/patch/PatchRenderables.h | Diff File | ||
renderer2 1afccd0b 04.12.2021 15:43 Details Diff |
0005584: Move some common code to a RenderableGeometry base class |
Affected Issues 0005584 |
|
add - libs/render/RenderableGeometry.h | Diff File | ||
mod - radiantcore/entity/target/RenderableTargetLines.h | Diff File | ||
mod - radiantcore/patch/PatchRenderables.h | Diff File | ||
mod - tools/msvc/libs.vcxproj | Diff File | ||
mod - tools/msvc/libs.vcxproj.filters | Diff File |