Changesets: DarkRadiant
master 5f0aa8ef 12.12.2021 14:38 Details Diff |
Light is now using observeKey() with auto-disconnection | ||
mod - radiantcore/entity/light/Doom3LightRadius.h | Diff File | ||
mod - radiantcore/entity/light/Light.cpp | Diff File | ||
mod - radiantcore/entity/light/Light.h | Diff File | ||
mod - radiantcore/entity/light/LightShader.h | Diff File | ||
master 76addecd 12.12.2021 14:05 Details Diff |
GenericEntityNode now uses observeKey() with auto-disconnection | ||
mod - radiantcore/entity/AngleKey.h | Diff File | ||
mod - radiantcore/entity/generic/GenericEntityNode.cpp | Diff File | ||
mod - radiantcore/entity/generic/GenericEntityNode.h | Diff File | ||
renderer2 b88915d1 12.12.2021 03:54 Details Diff |
0005584: Old RenderableArrow class and render method removed |
Affected Issues 0005584 |
|
mod - libs/entitylib.h | Diff File | ||
rm - radiantcore/entity/generic/RenderableArrow.h | Diff | ||
master 099252e0 11.12.2021 20:50 Details Diff |
Use inline initialisation for SpeakerNode constant members Reduce duplication in constructors by initialising constant members inline. |
||
mod - radiantcore/entity/speaker/SpeakerNode.cpp | Diff File | ||
mod - radiantcore/entity/speaker/SpeakerNode.h | Diff File | ||
master d0525670 11.12.2021 20:31 Details Diff |
SpeakerNode is now using observeKey() Remove KeyObserverDelegates, use observeKey() with auto-disconnection for all relevant spawnargs. |
||
mod - radiantcore/entity/speaker/SpeakerNode.cpp | Diff File | ||
mod - radiantcore/entity/speaker/SpeakerNode.h | Diff File | ||
renderer2 6b3d266b 11.12.2021 18:07 Details Diff |
0005584: Speaker sphere vertices and indices are set up |
Affected Issues 0005584 |
|
mod - radiantcore/entity/speaker/SpeakerRenderables.cpp | Diff File | ||
renderer2 9fbeff58 11.12.2021 17:24 Details Diff |
0005584: Working on sphere rendering |
Affected Issues 0005584 |
|
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 | ||
master c198b591 11.12.2021 14:14 Details Diff |
StaticGeometryNode uses auto-disconnection of key observers Use observeKey() for all key observations, with sigc::mem_fun to ensure that auto-disconnection can happen when the object is destroyed. |
||
mod - radiantcore/entity/doom3group/StaticGeometryNode.cpp | Diff File | ||
renderer2 5b4f017b 11.12.2021 06:33 Details Diff |
0005584: Move the onEntitySettingsChanged() method up one level. This fixes the SpeakerNode radius not showing up when the "always show speaker radius" option is toggled. |
Affected Issues 0005584 |
|
mod - radiantcore/entity/EntityModule.cpp | Diff File | ||
mod - radiantcore/entity/EntityNode.h | Diff File | ||
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 20b0c1e6 11.12.2021 06:28 Details Diff |
0005584: Wireframe radii now shown properly |
Affected Issues 0005584 |
|
mod - radiantcore/entity/speaker/SpeakerRenderables.cpp | Diff File | ||
mod - radiantcore/entity/speaker/SpeakerRenderables.h | Diff File | ||
renderer2 4e601152 11.12.2021 05:28 Details Diff |
0005584: Set up all three circles to render in the orthoview |
Affected Issues 0005584 |
|
mod - radiantcore/entity/speaker/SpeakerNode.cpp | Diff File | ||
mod - radiantcore/entity/speaker/SpeakerRenderables.cpp | Diff File | ||
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 |