Changesets: DarkRadiant

master 5f0aa8ef

12.12.2021 14:38

orbweaver


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

orbweaver


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

greebo


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

orbweaver


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

orbweaver


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

greebo


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

greebo


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

orbweaver


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

orbweaver


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

orbweaver


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

orbweaver


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

greebo


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

orbweaver


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

greebo


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
 First  Prev  1 2 3 ... 30 ... 60 ... 81 82 83 84 85 86 87 ... 90 ... 120 ... 150 ... 180 ... 210 ... 240 ... 264 265 266  Next  Last