Changesets: DarkRadiant

master c1a121d3

23.04.2025 18:13

orbweaver


Details Diff
Introduce pushState and popState to the filter system

The filter system now maintains an internal stack of filter states which
can be pushed and popped with new methods pushState and popState
(modelled on the semantics of functions like glPushMatrix and
glPopMatrix).

This allows the set of active filters to be saved and restored, allowing
for the possibility of temporary changes (e.g. in a render preview
widget).
mod - include/ifilter.h Diff File
mod - radiantcore/filters/BasicFilterSystem.cpp Diff File
mod - radiantcore/filters/BasicFilterSystem.h Diff File
mod - test/Filters.cpp Diff File

master f75001a4

22.04.2025 18:35

orbweaver


Details Diff
FilterSystem::forEachFilter now takes a SceneFilter argument

Now that SceneFilter is exposed in the scene library, we can pass it
directly to the forEachFilter functor instead of passing just a name and
requiring calls back to FilterSystem to query other properties.
mod - include/ifilter.h Diff File
add - libs/scene/filters/FilterRule.h Diff File
mod - libs/scene/filters/SceneFilter.h Diff File
mod - libs/wxutil/menu/FilterPopupMenu.cpp Diff File
mod - radiant/ui/filters/FilterContextMenu.cpp Diff File
mod - radiant/ui/filters/FilterUserInterface.cpp Diff File
mod - radiant/ui/filters/FiltersMainMenu.cpp Diff File
mod - radiant/ui/filters/editor/FilterDialog.cpp Diff File
mod - radiantcore/filters/BasicFilterSystem.cpp Diff File
mod - radiantcore/filters/BasicFilterSystem.h Diff File
mod - test/Filters.cpp Diff File

master 8dd1b8af

09.04.2025 19:31

orbweaver


Details Diff
Further unit testing of filter system

Confirm that filter states can be retrieved and toggled, and the signal
is emitted as expected.
mod - radiantcore/filters/BasicFilterSystem.cpp Diff File
mod - test/Filters.cpp Diff File

master caec9720

08.04.2025 19:01

orbweaver


Details Diff
Add unit test for loading filters from .game file

The testdata darkmod.game already includes a full set of filters, so we
can just confirm that these are present in the GlobalFilterSystem and
have sensible initial states.
mod - test/Filters.cpp Diff File

master f99d1d5b

02.04.2025 19:17

orbweaver


Details Diff
Bounded::localAABB returns by value

Remove the annoyance of having to define a local static object just to
return a const reference to a default-initialised or dummy AABB (e.g.
in test code).
mod - include/Bounded.h Diff File
mod - libs/scene/BasicRootNode.h Diff File
mod - libs/scene/TargetLineNode.cpp Diff File
mod - libs/scene/TargetLineNode.h Diff File
mod - libs/scene/merge/MergeActionNode.cpp Diff File
mod - libs/scene/merge/MergeActionNode.h Diff File
mod - radiantcore/brush/Brush.cpp Diff File
mod - radiantcore/brush/Brush.h Diff File
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/brush/BrushNode.h Diff File
mod - radiantcore/entity/doom3group/StaticGeometryNode.cpp Diff File
mod - radiantcore/entity/doom3group/StaticGeometryNode.h Diff File
mod - radiantcore/entity/eclassmodel/EclassModelNode.cpp Diff File
mod - radiantcore/entity/eclassmodel/EclassModelNode.h Diff File
mod - radiantcore/entity/generic/GenericEntityNode.cpp Diff File
mod - radiantcore/entity/generic/GenericEntityNode.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
mod - radiantcore/map/RootNode.h Diff File
mod - radiantcore/model/NullModel.cpp Diff File
mod - radiantcore/model/NullModel.h Diff File
mod - radiantcore/model/NullModelNode.cpp Diff File
mod - radiantcore/model/NullModelNode.h Diff File
mod - radiantcore/model/StaticModel.h Diff File
mod - radiantcore/model/StaticModelNode.cpp Diff File
mod - radiantcore/model/StaticModelNode.h Diff File
mod - radiantcore/model/md5/MD5Model.cpp Diff File
mod - radiantcore/model/md5/MD5Model.h Diff File
mod - radiantcore/model/md5/MD5ModelNode.cpp Diff File
mod - radiantcore/model/md5/MD5ModelNode.h Diff File
mod - radiantcore/particles/ParticleNode.cpp Diff File
mod - radiantcore/particles/ParticleNode.h Diff File
mod - radiantcore/patch/Patch.cpp Diff File
mod - radiantcore/patch/Patch.h Diff File
mod - radiantcore/patch/PatchNode.cpp Diff File
mod - radiantcore/patch/PatchNode.h Diff File
mod - radiantcore/selection/textool/FaceNode.cpp Diff File
mod - radiantcore/selection/textool/FaceNode.h Diff File
mod - radiantcore/selection/textool/PatchNode.cpp Diff File
mod - radiantcore/selection/textool/PatchNode.h Diff File
mod - test/Filters.cpp Diff File
mod - test/SceneNode.cpp Diff File

master 688eb50f

01.04.2025 19:30

orbweaver


Details Diff
Remove unused Node internal numeric ID

Also save a few lines by moving to in-class initialisers for most member
variables.
mod - include/icomparablenode.h Diff File
mod - libs/scene/Node.cpp Diff File
mod - libs/scene/Node.h Diff File
mod - radiantcore/entity/light/LightNode.cpp Diff File
mod - radiantcore/entity/light/LightNode.h Diff File
mod - radiantcore/filters/BasicFilterSystem.h Diff File
mod - test/Filters.cpp Diff File

master b98d7a67

25.02.2025 20:29

orbweaver


Details Diff
0003821: filters menu in model/entity preview now works again

For some reason the menu items were not properly synchronising with the
EventManager. Rather than debug the complexities of how the EventManager
interacts with menus in modal dialogs, the code is now taking the much
simpler approach of calling methods on the GlobalFilterSystem directly.
Affected Issues
0003821
mod - libs/wxutil/menu/FilterPopupMenu.cpp Diff File
mod - libs/wxutil/menu/FilterPopupMenu.h Diff File

master f13d6d5f

18.02.2025 20:23

orbweaver


Details Diff
Remove Node_getEntity()

This extremely common operation no longer requires a clumsy and
inefficient dynamic_cast. Instead, a new virtual method tryGetEntity is
defined on the base INode interface, returning nullptr on all subclasses
except EntityNode.
mod - include/inode.h Diff File
mod - libs/entitylib.h Diff File
mod - libs/maplib.h Diff File
mod - libs/scene/ChildPrimitives.cpp Diff File
mod - libs/scene/EntityBreakdown.h Diff File
mod - libs/scene/EntityNode.h Diff File
mod - libs/scene/EntitySelector.h Diff File
mod - libs/scene/ModelFinder.cpp Diff File
mod - libs/scene/merge/GraphComparer.cpp Diff File
mod - libs/scene/merge/MergeAction.h Diff File
mod - libs/scene/merge/MergeLib.h Diff File
mod - libs/scene/merge/NodeUtils.h Diff File
mod - libs/selection/EntitySelection.h Diff File
mod - libs/wxutil/preview/EntityPreview.cpp Diff File
mod - libs/wxutil/preview/ParticlePreview.cpp Diff File
mod - plugins/dm.conversation/ActorNodeFinder.h Diff File
mod - plugins/dm.conversation/CommandArgumentItem.cpp Diff File
mod - plugins/dm.conversation/ConversationEntity.cpp Diff File
mod - plugins/dm.conversation/ConversationEntityFinder.h Diff File
mod - plugins/dm.difficulty/DifficultyEntityFinder.h Diff File
mod - plugins/dm.editing/AIEditingPanel.cpp Diff File
mod - plugins/dm.editing/SpawnargReplacer.h Diff File
mod - plugins/dm.gameconnection/GameConnection.cpp Diff File
mod - plugins/dm.gui/ReadableEditorDialog.cpp Diff File
mod - plugins/dm.objectives/ObjectiveEntity.cpp Diff File
mod - plugins/dm.objectives/ObjectiveEntityFinder.cpp Diff File
mod - plugins/dm.objectives/ce/specpanel/EntityNameSpecifierPanel.cpp Diff File
mod - plugins/dm.stimresponse/EffectEditor.cpp Diff File
mod - plugins/dm.stimresponse/StimResponseEditor.cpp Diff File
mod - plugins/script/interfaces/EntityInterface.cpp Diff File
mod - plugins/script/interfaces/RadiantInterface.cpp Diff File
mod - radiant/ui/animationpreview/AnimationPreview.cpp Diff File
mod - radiant/ui/common/EntityChooser.cpp Diff File
mod - radiant/ui/eclasstree/EClassTree.cpp Diff File
mod - radiant/ui/einspector/EntityInspector.cpp Diff File
mod - radiant/ui/lightinspector/LightInspector.cpp Diff File
mod - radiant/ui/materials/editor/MaterialPreview.cpp Diff File
mod - radiant/ui/modelexport/ExportAsModelDialog.cpp Diff File
mod - radiant/ui/ortho/OrthoContextMenu.cpp Diff File
mod - radiantcore/filters/InstanceUpdateWalker.h Diff File
mod - radiantcore/filters/SetObjectSelectionByFilterWalker.h Diff File
mod - radiantcore/map/algorithm/Export.cpp Diff File
mod - radiantcore/map/algorithm/Import.cpp Diff File
mod - radiantcore/map/algorithm/MapImporter.cpp Diff File
mod - radiantcore/model/export/ModelScalePreserver.cpp Diff File
mod - radiantcore/model/export/ScaledModelExporter.cpp Diff File
mod - radiantcore/selection/RadiantSelectionSystem.cpp Diff File
mod - radiantcore/selection/SceneManipulationPivot.cpp Diff File
mod - radiantcore/selection/SelectionTestWalkers.cpp Diff File
mod - radiantcore/selection/algorithm/Entity.cpp Diff File
mod - radiantcore/selection/algorithm/General.cpp Diff File
mod - radiantcore/selection/algorithm/Group.cpp Diff File
mod - radiantcore/selection/manipulators/ManipulatorComponents.cpp Diff File
mod - radiantcore/selection/manipulators/ModelScaleManipulator.cpp Diff File
mod - test/Curves.cpp Diff File
mod - test/Entity.cpp Diff File
mod - test/EntityInspector.cpp Diff File
mod - test/Filters.cpp Diff File
mod - test/MapMerging.cpp Diff File
mod - test/MapSavingLoading.cpp Diff File
mod - test/ModelExport.cpp Diff File
mod - test/ModelScale.cpp Diff File
mod - test/Renderer.cpp Diff File
mod - test/Selection.cpp Diff File
mod - test/UndoRedo.cpp Diff File
mod - test/WorldspawnColour.cpp Diff File
mod - test/algorithm/Scene.h Diff File

master 5b393833

12.02.2025 19:57

orbweaver


Details Diff
Add test for SceneFilter rule processing

Test texture and entity class filtering using some example texture names
and the worldspawn entity.

Also replace the FilterRule::Type enum with a FilterType enum class in
the global namespace.
mod - include/ifilter.h Diff File
mod - include/irenderable.h Diff File
mod - libs/scene/filters/SceneFilter.cpp Diff File
mod - libs/scene/filters/SceneFilter.h Diff File
mod - radiant/ui/filters/editor/FilterEditor.cpp Diff File
mod - radiant/ui/filters/editor/FilterEditor.h Diff File
mod - radiantcore/filters/BasicFilterSystem.cpp Diff File
mod - radiantcore/filters/BasicFilterSystem.h Diff File
mod - radiantcore/filters/InstanceUpdateWalker.h Diff File
mod - radiantcore/filters/SetObjectSelectionByFilterWalker.h Diff File
mod - radiantcore/rendersystem/backend/OpenGLShader.cpp Diff File
mod - radiantcore/selection/shaderclipboard/ClosestTexturableFinder.cpp Diff File
mod - test/Filters.cpp Diff File
mod - test/TestOrthoViewManager.cpp Diff File

master 60dba8cc

11.02.2025 20:14

orbweaver


Details Diff
Remove unused method and fix some compiler warnings
mod - libs/render/RenderableCollectionWalker.h Diff File
mod - libs/render/RenderableCollectorBase.h Diff File
mod - radiantcore/model/StaticModel.cpp Diff File
mod - radiantcore/model/StaticModel.h Diff File
mod - radiantcore/rendersystem/OpenGLRenderSystem.h Diff File

master 0cc2ca0a

05.02.2025 19:59

orbweaver


Details Diff
Remove C array cast from BasicVector2

As with Vector3, this required the removal of some '<' operators
defined in the Python API which relied on the meaningless comparison of
memory addresses.
mod - libs/math/Vector2.h Diff File
mod - libs/pybind/pybind11/operators.h Diff File
mod - plugins/script/interfaces/MathInterface.cpp Diff File
mod - radiantcore/selection/algorithm/Texturing.cpp Diff File
mod - test/math/Vector.cpp Diff File

master 51038811

04.02.2025 19:57

orbweaver


Details Diff
BasicVector4 no longer implicitly casts to C array

Same treatment as for BasicVector3.
mod - libs/math/Vector3.h Diff File
mod - libs/math/Vector4.h Diff File
mod - libs/wxutil/preview/GuiRenderer.cpp Diff File
mod - radiant/textool/TexTool.cpp Diff File
mod - radiantcore/rendersystem/backend/OpenGLState.h Diff File
mod - radiantcore/rendersystem/backend/TextRenderer.h Diff File
mod - radiantcore/rendersystem/backend/glprogram/InteractionProgram.cpp Diff File
mod - radiantcore/selection/textool/FaceNode.cpp Diff File
mod - radiantcore/selection/textool/Node.cpp Diff File
mod - radiantcore/selection/textool/PatchNode.cpp Diff File
mod - radiantcore/selection/textool/TextureToolRotateManipulator.cpp Diff File

master 0fef6252

29.01.2025 19:13

orbweaver


Details Diff
BasicVector3 no longer implicitly casts to a C array

Remove the dangerous 'operator [const] T*' methods, replacing them with
explicit data() methods which can return a pointer to the storage, along
with operator[] to provide index-based lookup.

This also revealed that the cast to array was also being used (probably
inadvertently) to implement a couple of 'operator<' comparisons of
Vector3s, which is mathematically meaningless and semantically wrong,
because two identically-valued vectors would compare not equal. These
'operator<' methods did not appear to be used anywhere else so they have
been removed; this also removes the '__lt__' method implemented on the
Python Vector3 class.
mod - libs/math/Matrix3.h Diff File
mod - libs/math/Vector3.h Diff File
mod - libs/render/MeshVertex.h Diff File
mod - libs/render/VertexCb.h Diff File
mod - libs/wxutil/preview/RenderPreview.cpp Diff File
mod - plugins/script/interfaces/MathInterface.cpp Diff File
mod - radiant/camera/CamWnd.cpp Diff File
mod - radiant/selection/SelectionMouseTools.cpp Diff File
mod - radiant/xyview/OrthoView.cpp Diff File
mod - radiantcore/clipper/ClipPoint.cpp Diff File
mod - radiantcore/rendersystem/backend/TextRenderer.h Diff File
mod - radiantcore/selection/textool/TextureToolRotateManipulator.cpp Diff File
mod - test/Selection.cpp Diff File
mod - test/math/Vector.cpp Diff File

master 74cc6f97

28.01.2025 20:31

orbweaver


Details Diff
Fix a failing selection test

"Vector3(x, y, z) + 20" looks like it should perform a scalar addition
of 20 to the Vector3 elements, but it does not: there is no operator+
defined which takes a Vector3 and a scalar. What this actually does is
implicitly cast the Vector3 to a double*, perform pointer arithmetic on
the result, then construct a new Vector3 with whatever random garbage
happens to be at the invalid memory location.

For now the test is fixed locally, but this implicit cast to a raw
pointer is obviously extremely dangerous and needs to be fixed in the
Vector classes themselves.
mod - test/Selection.cpp Diff File

master 94964a5f

22.01.2025 19:52

orbweaver


Details Diff
VCS (Git) module is an optional plugin, not a core module

Unit tests now pass when run from the build directory, apart from one of
the OrthoViewSelectionTests which was already failing.
mod - plugins/vcs/CMakeLists.txt Diff File

master 3a0f84ce

21.01.2025 21:00

orbweaver


Details Diff
Place optional plugins in correct subdirectory

Optional TDM plugins need to go into lib/darkradiant/plugins, not
lib/darkradiant/modules.
mod - CMakeLists.txt Diff File
mod - plugins/dm.conversation/CMakeLists.txt Diff File
mod - plugins/dm.difficulty/CMakeLists.txt Diff File
mod - plugins/dm.editing/CMakeLists.txt Diff File
mod - plugins/dm.gameconnection/CMakeLists.txt Diff File
mod - plugins/dm.gui/CMakeLists.txt Diff File
mod - plugins/dm.objectives/CMakeLists.txt Diff File
mod - plugins/dm.stimresponse/CMakeLists.txt Diff File
mod - radiantcore/modulesystem/ModuleRegistry.cpp Diff File

master 1e68203b

21.01.2025 20:29

orbweaver


Details Diff
InstanceReference no longer dereferences a null pointer

The tests still do not run correctly from inside build/darkradiant, but
at least they now fail rather than segfault.
mod - include/imodule.h Diff File

master 97214aeb

21.01.2025 19:24

orbweaver


Details Diff
Install non-executable resources into staging area

DarkRadiant is now runnable from inside ${CMAKE_BINARY_DIR} immediately
after building, without requiring an install step to a different
location. This enables run/debug functionality in a CMake-aware IDE to
work as expected without further configuration. However the tests are
crashing due to some module loading issue.
mod - CMakeLists.txt Diff File
add - install.cmake Diff File
mod - radiant/CMakeLists.txt Diff File

master 1836ff8b

19.01.2025 16:50

orbweaver


Details Diff
Initial changes to create a staging installation under build dir

Adjust the output directory of binary and library CMake targets to
create an installation tree under "${CMAKE_BINARY_DIR}/darkradiant",
with the aim of allowing the built application to be directly run from
within an IDE without requiring a separate "make install" step.

The main binary and modules/plugins are moved to the new location, but
the staged installation is not yet runnable because resources from the
"install" directory are not yet being copied in.
mod - CMakeLists.txt Diff File
mod - plugins/dm.conversation/CMakeLists.txt Diff File
mod - plugins/dm.difficulty/CMakeLists.txt Diff File
mod - plugins/dm.editing/CMakeLists.txt Diff File
mod - plugins/dm.gameconnection/CMakeLists.txt Diff File
mod - plugins/dm.gui/CMakeLists.txt Diff File
mod - plugins/dm.objectives/CMakeLists.txt Diff File
mod - plugins/dm.stimresponse/CMakeLists.txt Diff File
mod - plugins/script/CMakeLists.txt Diff File
mod - plugins/sound/CMakeLists.txt Diff File
mod - plugins/vcs/CMakeLists.txt Diff File
mod - radiantcore/CMakeLists.txt Diff File

master 94167d3a

07.01.2025 19:36

orbweaver


Details Diff
Streamline [De]ActivateAllFilters commands

Commands call back-end method directly; intermediate command removed;
unused public method(s) removed.
mod - include/ifilter.h Diff File
mod - radiantcore/filters/BasicFilterSystem.cpp Diff File
mod - radiantcore/filters/BasicFilterSystem.h Diff File

master a500a749

18.12.2024 19:53

orbweaver


Details Diff
Add initial unit test for SceneFilter
mod - libs/scene/filters/SceneFilter.cpp Diff File
mod - libs/scene/filters/SceneFilter.h Diff File
mod - test/Filters.cpp Diff File

master cf027c45

10.12.2024 20:05

orbweaver


Details Diff
XMLFilter is now SceneFilter

Other than being stored in the XML registry (along with all other
settings), these filter objects really have nothing to do with XML. Also
move the class into the scene library for ease of unit testing.
mod - libs/scene/CMakeLists.txt Diff File
mv - radiantcore/filters/XMLFilter.cpp → libs/scene/filters/SceneFilter.cpp Diff File
mv - radiantcore/filters/XMLFilter.h → libs/scene/filters/SceneFilter.h Diff File
mod - radiantcore/CMakeLists.txt Diff File
mod - radiantcore/filters/BasicFilterSystem.cpp Diff File
mod - radiantcore/filters/BasicFilterSystem.h Diff File
mod - radiantcore/filters/SetObjectSelectionByFilterWalker.h Diff File
mod - radiantcore/filters/XmlFilterEventAdapter.cpp Diff File
mod - radiantcore/filters/XmlFilterEventAdapter.h Diff File
mod - tools/msvc/DarkRadiantCore.vcxproj Diff File
mod - tools/msvc/DarkRadiantCore.vcxproj.filters Diff File
mod - tools/xcode/DarkRadiant.xcodeproj/project.pbxproj Diff File

master fedf6d7a

10.12.2024 19:38

orbweaver


Details Diff
Reduce number of console messages emitted from FontLoader
mod - radiantcore/fonts/FontLoader.h Diff File
mod - radiantcore/fonts/GlyphSet.cpp Diff File

master be4a96e6

04.12.2024 19:28

orbweaver


Details Diff
Remove CallSuper antipattern from RenderPreview::setupSceneGraph()

setupSceneGraph() is now an empty virtual method which subclasses are
free to override or not as they wish (all of them do, except
MapPreview).

The single line in the original default implementation (setting the
current render time to 0) is now moved up into the calling method, so
that subclasses are no longer required to call the parent implementation
to avoid breaking the base class behaviour.
mod - libs/wxutil/menu/FilterPopupMenu.cpp Diff File
mod - libs/wxutil/menu/FilterPopupMenu.h Diff File
mod - libs/wxutil/menu/PopupMenu.cpp Diff File
mod - libs/wxutil/menu/PopupMenu.h Diff File
mod - libs/wxutil/preview/EntityPreview.cpp Diff File
mod - libs/wxutil/preview/ParticlePreview.cpp Diff File
mod - libs/wxutil/preview/RenderPreview.cpp Diff File
mod - libs/wxutil/preview/RenderPreview.h Diff File
mod - radiant/ui/animationpreview/AnimationPreview.cpp Diff File
mod - radiant/ui/common/MapPreview.h Diff File
mod - radiant/ui/materials/editor/MaterialPreview.cpp Diff File
mod - radiant/ui/modelselector/ModelTreeView.cpp Diff File
mod - radiantcore/filters/BasicFilterSystem.h Diff File

master 74a669f9

03.12.2024 19:50

orbweaver


Details Diff
0003821: cleanup various linter warnings

Remove various redundant includes; also switch to inline initialisation
of several class members.
Affected Issues
0003821
mod - libs/wxutil/preview/EntityClassPreview.h Diff File
mod - libs/wxutil/preview/EntityPreview.cpp Diff File
mod - libs/wxutil/preview/EntityPreview.h Diff File
mod - libs/wxutil/preview/ModelPreview.cpp Diff File
mod - libs/wxutil/preview/ModelPreview.h Diff File
mod - libs/wxutil/preview/RenderPreview.cpp Diff File
mod - libs/wxutil/preview/RenderPreview.h Diff File
mod - radiant/ui/modelselector/ModelSelector.cpp Diff File
mod - radiant/ui/modelselector/ModelSelector.h Diff File
 First  Prev  1 2 3 4 5 6 7 8 ... 30 ... 60 ... 90 ... 120 ... 150 ... 180 ... 210 ... 240 ... 270 271 272  Next  Last