Copy disabled (too large)
Download .txt
Showing preview only (28,437K chars total). Download the full file to get everything.
Repository: codereader/DarkRadiant
Branch: master
Commit: 0be7b2d1f8cc
Files: 2658
Total size: 26.7 MB
Directory structure:
gitextract_d_ogn0ar/
├── .editorconfig
├── .gitattributes
├── .github/
│ └── workflows/
│ └── build.yml
├── .gitignore
├── .gitlab-ci.yml
├── AUTHORS
├── CMakeLists.txt
├── DarkRadiant.sln
├── Doxyfile
├── GPL
├── LICENSE
├── NEWS
├── PKGBUILD
├── README.md
├── config.h.in
├── darkradiant.spec
├── debian/
│ ├── README
│ ├── changelog
│ ├── compat
│ ├── control
│ ├── copyright
│ ├── darkradiant-i18n.install
│ ├── darkradiant-plugin-git.install
│ ├── darkradiant-plugins-darkmod.install
│ ├── darkradiant.install
│ ├── darkradiant.manpages
│ ├── dirs
│ ├── docs
│ ├── rules
│ └── source/
│ └── format
├── doc/
│ ├── CMakeLists.txt
│ ├── manual.adoc
│ ├── manual.css
│ └── manual.html
├── include/
│ ├── Bounded.h
│ ├── GLProgramAttributes.h
│ ├── Rotatable.h
│ ├── Scalable.h
│ ├── StringSerialisable.h
│ ├── Texture.h
│ ├── Translatable.h
│ ├── VolumeIntersectionValue.h
│ ├── editable.h
│ ├── i18n.h
│ ├── iaasfile.h
│ ├── iarchive.h
│ ├── iarray.h
│ ├── iautosaver.h
│ ├── ibrush.h
│ ├── icameraview.h
│ ├── iclipboard.h
│ ├── iclipper.h
│ ├── icolourscheme.h
│ ├── icommandsystem.h
│ ├── icomparablenode.h
│ ├── icounter.h
│ ├── icurve.h
│ ├── idatastream.h
│ ├── ideclmanager.h
│ ├── idecltypes.h
│ ├── ieclass.h
│ ├── ieclasscolours.h
│ ├── ieditstopwatch.h
│ ├── ientity.h
│ ├── ifavourites.h
│ ├── ifilesystem.h
│ ├── ifiletypes.h
│ ├── ifilter.h
│ ├── ifonts.h
│ ├── ifx.h
│ ├── igame.h
│ ├── igameresource.h
│ ├── igeometryrenderer.h
│ ├── igeometrystore.h
│ ├── igl.h
│ ├── iglprogram.h
│ ├── igrid.h
│ ├── igroupnode.h
│ ├── igui.h
│ ├── iimage.h
│ ├── iinteractiveview.h
│ ├── ikeyvaluestore.h
│ ├── ilayer.h
│ ├── ilightnode.h
│ ├── ilogwriter.h
│ ├── imanipulator.h
│ ├── imap.h
│ ├── imapexporter.h
│ ├── imapfilechangetracker.h
│ ├── imapformat.h
│ ├── imapinfofile.h
│ ├── imapmerge.h
│ ├── imapresource.h
│ ├── imd5anim.h
│ ├── imd5model.h
│ ├── imessagebus.h
│ ├── imodel.h
│ ├── imodelcache.h
│ ├── imodelsurface.h
│ ├── imodule.h
│ ├── imousetool.h
│ ├── imousetoolevent.h
│ ├── imousetoolmanager.h
│ ├── imru.h
│ ├── inameobserver.h
│ ├── inamespace.h
│ ├── inode.h
│ ├── iobjectrenderer.h
│ ├── iorthoview.h
│ ├── iparticlenode.h
│ ├── iparticles.h
│ ├── iparticlestage.h
│ ├── ipatch.h
│ ├── ipath.h
│ ├── ipreferencesystem.h
│ ├── iradiant.h
│ ├── iregion.h
│ ├── iregistry.h
│ ├── irender.h
│ ├── irenderable.h
│ ├── irenderableobject.h
│ ├── irendersystemfactory.h
│ ├── irenderview.h
│ ├── iscatter.h
│ ├── iscenegraph.h
│ ├── iscenegraphfactory.h
│ ├── iscript.h
│ ├── iscriptinterface.h
│ ├── iselectable.h
│ ├── iselection.h
│ ├── iselectiongroup.h
│ ├── iselectionset.h
│ ├── iselectiontest.h
│ ├── ishaderclipboard.h
│ ├── ishaderexpression.h
│ ├── ishaderlayer.h
│ ├── ishaders.h
│ ├── isound.h
│ ├── ispacepartition.h
│ ├── ispeakernode.h
│ ├── isurfacerenderer.h
│ ├── itexdef.h
│ ├── itextstream.h
│ ├── itexturetoolcolours.h
│ ├── itexturetoolmodel.h
│ ├── itraceable.h
│ ├── itransformable.h
│ ├── itransformnode.h
│ ├── iundo.h
│ ├── iversioncontrol.h
│ ├── ivolumetest.h
│ ├── iwindingrenderer.h
│ ├── modelskin.h
│ ├── precompiled_interfaces.h
│ ├── precompiled_main.h
│ ├── precompiled_math.h
│ ├── precompiled_render_interfaces.h
│ ├── precompiled_ui_interfaces.h
│ ├── ui/
│ │ ├── ianimationchooser.h
│ │ ├── ideclpreview.h
│ │ ├── idialogmanager.h
│ │ ├── ientityinspector.h
│ │ ├── ieventmanager.h
│ │ ├── ifilechooser.h
│ │ ├── imainframe.h
│ │ ├── imenu.h
│ │ ├── imenumanager.h
│ │ ├── iorthocontextmenu.h
│ │ ├── iresourcechooser.h
│ │ ├── istatusbarmanager.h
│ │ ├── itoolbarmanager.h
│ │ ├── iusercontrol.h
│ │ ├── iuserinterface.h
│ │ ├── iwindowstate.h
│ │ └── iwxgl.h
│ └── version.h
├── install/
│ ├── bitmaps/
│ │ ├── .gitignore
│ │ └── missing_model.tga
│ ├── colours.xml
│ ├── commandsystem.xml
│ ├── darkradiant.desktop.in
│ ├── debug.xml
│ ├── games/
│ │ ├── darkmod.game
│ │ ├── doom3-demo.game
│ │ ├── doom3.game
│ │ ├── prey.game
│ │ ├── quake3.game
│ │ ├── quake4.game
│ │ └── xreal.game
│ ├── gl/
│ │ ├── blend_light_fp.glsl
│ │ ├── blend_light_vp.glsl
│ │ ├── cubemap_fp.glsl
│ │ ├── cubemap_vp.glsl
│ │ ├── interaction_fp.glsl
│ │ ├── interaction_vp.glsl
│ │ ├── regular_stage_fp.glsl
│ │ ├── regular_stage_vp.glsl
│ │ ├── shadowmap_fp.glsl
│ │ ├── shadowmap_vp.glsl
│ │ ├── zfill_alpha_fp.glsl
│ │ └── zfill_alpha_vp.glsl
│ ├── i18n/
│ │ ├── LINGUAS
│ │ ├── Makefile.in.in
│ │ ├── Makevars
│ │ ├── POTFILES.in
│ │ ├── darkradiant.pot
│ │ └── de/
│ │ └── LC_MESSAGES/
│ │ ├── darkradiant.mo
│ │ └── darkradiant.po
│ ├── input.xml
│ ├── menu.xml
│ ├── net.darkradiant.DarkRadiant.metainfo.xml
│ ├── resources/
│ │ └── preview/
│ │ ├── cube.ase
│ │ ├── room_cuboid.ase
│ │ ├── sphere.ase
│ │ └── tiles.ase
│ ├── scripts/
│ │ ├── brushtest.py
│ │ ├── commands/
│ │ │ ├── ase_export.py
│ │ │ ├── ase_export_blend.py
│ │ │ ├── check_for_invalid_visportals.py
│ │ │ ├── count_loot.py
│ │ │ ├── example.py
│ │ │ ├── export_obj.py
│ │ │ ├── find_duplicate_entities.py
│ │ │ ├── patchsplitter.py
│ │ │ ├── select_all_models_of_type.py
│ │ │ ├── shift_textures_randomly.py
│ │ │ ├── shift_textures_upwards_randomly.py
│ │ │ └── test_targets.py
│ │ ├── dialogtest.py
│ │ ├── init.py
│ │ ├── materialtest.py
│ │ ├── patchtest.py
│ │ └── test.py
│ ├── ui/
│ │ ├── aboutdialog.fbp
│ │ ├── aboutdialog.xrc
│ │ ├── addpropertydialog.fbp
│ │ ├── addpropertydialog.xrc
│ │ ├── arraydialog.fbp
│ │ ├── arraydialog.xrc
│ │ ├── camwnd.fbp
│ │ ├── camwnd.xrc
│ │ ├── conversationcmdeditor.fbp
│ │ ├── conversationcmdeditor.xrc
│ │ ├── conversationdialog.fbp
│ │ ├── conversationdialog.xrc
│ │ ├── conversationeditor.fbp
│ │ ├── conversationeditor.xrc
│ │ ├── convertmodeldialog.fbp
│ │ ├── convertmodeldialog.xrc
│ │ ├── difficultyeditor.fbp
│ │ ├── difficultyeditor.xrc
│ │ ├── exportasmodeldialog.fbp
│ │ ├── exportasmodeldialog.xrc
│ │ ├── filterdialog.fbp
│ │ ├── filterdialog.xrc
│ │ ├── filtereditor.fbp
│ │ ├── filtereditor.xrc
│ │ ├── findandreplacedialog.fbp
│ │ ├── findandreplacedialog.xrc
│ │ ├── gameconnection.fbp
│ │ ├── gameconnection.xrc
│ │ ├── lightinspector.fbp
│ │ ├── lightinspector.xrc
│ │ ├── materialeditor.fbp
│ │ ├── materialeditor.xrc
│ │ ├── mergecontroldialog.fbp
│ │ ├── mergecontroldialog.xrc
│ │ ├── missioninfoeditdialog.fbp
│ │ ├── missioninfoeditdialog.xrc
│ │ ├── missioninforeadmedialog.fbp
│ │ ├── missioninforeadmedialog.xrc
│ │ ├── modelselector.fbp
│ │ ├── modelselector.xrc
│ │ ├── objectivecomponentsdialog.fbp
│ │ ├── objectivecomponentsdialog.xrc
│ │ ├── objectiveconditionsdialog.fbp
│ │ ├── objectiveconditionsdialog.xrc
│ │ ├── objectiveseditor.fbp
│ │ ├── objectiveseditor.xrc
│ │ ├── particleeditor.fbp
│ │ ├── particleeditor.xrc
│ │ ├── patchcreatedialog.fbp
│ │ ├── patchcreatedialog.xrc
│ │ ├── patchinspector.fbp
│ │ ├── patchinspector.xrc
│ │ ├── patchthickendialog.fbp
│ │ ├── patchthickendialog.xrc
│ │ ├── readableeditor.fbp
│ │ ├── readableeditor.xrc
│ │ ├── renderpreview.fbp
│ │ ├── renderpreview.xrc
│ │ ├── scatterdialog.fbp
│ │ ├── scatterdialog.xrc
│ │ ├── skineditor.fbp
│ │ ├── skineditor.xrc
│ │ ├── stimresponseeditor.fbp
│ │ ├── stimresponseeditor.xrc
│ │ ├── terraingenerator.fbp
│ │ ├── terraingenerator.xrc
│ │ ├── texturetoolmanipulationpanel.fbp
│ │ ├── texturetoolmanipulationpanel.xrc
│ │ ├── vcscommitdialog.fbp
│ │ ├── vcscommitdialog.xrc
│ │ ├── vcsstatusbar.fbp
│ │ └── vcsstatusbar.xrc
│ └── user.xml
├── install.cmake
├── libs/
│ ├── BasicTexture2D.h
│ ├── BasicUndoMemento.h
│ ├── DirectoryArchiveFile.h
│ ├── EventRateLimiter.h
│ ├── GameConfigUtil.h
│ ├── KeyValueStore.h
│ ├── ModelExportOptions.h
│ ├── ObservedSelectable.h
│ ├── ObservedUndoable.h
│ ├── RGBAImage.h
│ ├── RandomOrigin.h
│ ├── Rectangle.h
│ ├── SequentialTaskQueue.h
│ ├── SurfaceShader.h
│ ├── Transformable.h
│ ├── UndoFileChangeTracker.h
│ ├── VcsMapResourceStream.h
│ ├── VersionControlLib.h
│ ├── character.h
│ ├── command/
│ │ ├── ExecutionFailure.h
│ │ └── ExecutionNotPossible.h
│ ├── debugging/
│ │ ├── ScenegraphUtils.h
│ │ ├── ScopedDebugTimer.h
│ │ ├── debugging.cpp
│ │ ├── debugging.h
│ │ ├── gl.h
│ │ └── render.h
│ ├── decl/
│ │ ├── DeclLib.h
│ │ ├── DeclarationBase.h
│ │ ├── DeclarationCreator.h
│ │ └── EditableDeclaration.h
│ ├── dragplanes.h
│ ├── eclass.h
│ ├── entitylib.h
│ ├── gamelib.h
│ ├── generic/
│ │ ├── Lazy.h
│ │ └── callback.h
│ ├── libfmt/
│ │ ├── LICENSE.rst
│ │ └── fmt/
│ │ ├── args.h
│ │ ├── chrono.h
│ │ ├── color.h
│ │ ├── compile.h
│ │ ├── core.h
│ │ ├── fmt.cc
│ │ ├── format-inl.h
│ │ ├── format.cc
│ │ ├── format.h
│ │ ├── os.cc
│ │ ├── os.h
│ │ ├── ostream.h
│ │ ├── printf.h
│ │ ├── ranges.h
│ │ ├── std.h
│ │ └── xchar.h
│ ├── maplib.h
│ ├── materials/
│ │ ├── FrobStageSetup.h
│ │ └── ParseLib.h
│ ├── math/
│ │ ├── AABB.cpp
│ │ ├── AABB.h
│ │ ├── CMakeLists.txt
│ │ ├── FloatTools.h
│ │ ├── Frustum.cpp
│ │ ├── Frustum.h
│ │ ├── Hash.h
│ │ ├── Line.h
│ │ ├── Matrix3.h
│ │ ├── Matrix4.cpp
│ │ ├── Matrix4.h
│ │ ├── Plane3.cpp
│ │ ├── Plane3.h
│ │ ├── Quaternion.h
│ │ ├── Ray.h
│ │ ├── SHA256.cpp
│ │ ├── SHA256.h
│ │ ├── Segment.h
│ │ ├── Vector2.h
│ │ ├── Vector3.h
│ │ ├── Vector4.h
│ │ ├── ViewProjection.h
│ │ ├── Viewer.h
│ │ ├── XYZ.h
│ │ ├── curve.h
│ │ ├── eigen.h
│ │ ├── lrint.h
│ │ └── pi.h
│ ├── messages/
│ │ ├── ApplicationIsActiveRequest.h
│ │ ├── ApplicationShutdownRequest.h
│ │ ├── AutomaticMapSaveRequest.h
│ │ ├── ClearConsole.h
│ │ ├── CommandExecutionFailed.h
│ │ ├── ComponentSelectionModeToggleRequest.h
│ │ ├── FileOverwriteConfirmation.h
│ │ ├── FileSaveConfirmation.h
│ │ ├── FileSelectionRequest.h
│ │ ├── GameConfigNeededMessage.h
│ │ ├── GridSnapRequest.h
│ │ ├── LongRunningOperationMessage.h
│ │ ├── ManipulatorModeToggleRequest.h
│ │ ├── MapFileOperation.h
│ │ ├── MapOperationMessage.h
│ │ ├── NotificationMessage.h
│ │ ├── ScopedLongRunningOperation.h
│ │ ├── TextureChanged.h
│ │ ├── TextureToolRequest.h
│ │ └── UnselectSelectionRequest.h
│ ├── module/
│ │ ├── ApplicationContextBase.cpp
│ │ ├── ApplicationContextBase.h
│ │ ├── CMakeLists.txt
│ │ ├── CoreModule.cpp
│ │ ├── CoreModule.h
│ │ ├── DynamicLibrary.cpp
│ │ ├── DynamicLibrary.h
│ │ ├── StaticModule.cpp
│ │ └── StaticModule.h
│ ├── noise/
│ │ ├── Noise.h
│ │ ├── PerlinNoise.h
│ │ └── SimplexNoise.h
│ ├── os/
│ │ ├── dir.h
│ │ ├── file.h
│ │ ├── fs.h
│ │ └── path.h
│ ├── parser/
│ │ ├── CodeTokeniser.h
│ │ ├── DefBlockSyntaxParser.h
│ │ ├── DefTokeniser.h
│ │ ├── GuiTokeniser.h
│ │ ├── ParseException.h
│ │ ├── ThreadedDeclParser.h
│ │ ├── ThreadedDefLoader.h
│ │ └── Tokeniser.h
│ ├── patch/
│ │ └── PatchIterators.h
│ ├── pivot.h
│ ├── pugixml/
│ │ ├── LICENSE
│ │ ├── pugiconfig.hpp
│ │ ├── pugixml.cpp
│ │ └── pugixml.hpp
│ ├── pybind/
│ │ ├── LICENSE
│ │ └── pybind11/
│ │ ├── attr.h
│ │ ├── buffer_info.h
│ │ ├── cast.h
│ │ ├── chrono.h
│ │ ├── common.h
│ │ ├── complex.h
│ │ ├── detail/
│ │ │ ├── class.h
│ │ │ ├── common.h
│ │ │ ├── descr.h
│ │ │ ├── init.h
│ │ │ ├── internals.h
│ │ │ ├── type_caster_base.h
│ │ │ └── typeid.h
│ │ ├── eigen.h
│ │ ├── embed.h
│ │ ├── eval.h
│ │ ├── functional.h
│ │ ├── gil.h
│ │ ├── iostream.h
│ │ ├── numpy.h
│ │ ├── operators.h
│ │ ├── options.h
│ │ ├── pybind11.h
│ │ ├── pytypes.h
│ │ ├── stl/
│ │ │ └── filesystem.h
│ │ ├── stl.h
│ │ └── stl_bind.h
│ ├── registry/
│ │ ├── CachedKey.h
│ │ ├── Widgets.h
│ │ ├── adaptors.h
│ │ ├── buffer.h
│ │ └── registry.h
│ ├── render/
│ │ ├── CamRenderer.h
│ │ ├── CameraView.h
│ │ ├── Colour4.h
│ │ ├── Colour4b.h
│ │ ├── CompactWindingVertexBuffer.h
│ │ ├── ContinuousBuffer.h
│ │ ├── GeometryStore.h
│ │ ├── IndexedVertexBuffer.h
│ │ ├── MeshVertex.h
│ │ ├── NopRenderView.h
│ │ ├── NopVolumeTest.h
│ │ ├── Rectangle.h
│ │ ├── RenderVertex.h
│ │ ├── RenderableBoundingBoxes.h
│ │ ├── RenderableBox.h
│ │ ├── RenderableCollectionWalker.h
│ │ ├── RenderableCollectorBase.h
│ │ ├── RenderableColouredBoundingBoxes.h
│ │ ├── RenderableGeometry.h
│ │ ├── RenderablePivot.h
│ │ ├── RenderableSpacePartition.h
│ │ ├── RenderableSurface.h
│ │ ├── RenderableTextBase.h
│ │ ├── RenderableVertexArray.h
│ │ ├── SceneRenderWalker.h
│ │ ├── StaticRenderableText.h
│ │ ├── TexCoord2f.h
│ │ ├── TextureToolView.h
│ │ ├── VBO.h
│ │ ├── Vertex3f.h
│ │ ├── VertexBuffer.h
│ │ ├── VertexCb.h
│ │ ├── VertexHashing.h
│ │ ├── VertexNCb.h
│ │ ├── VertexNT.h
│ │ ├── VertexTraits.h
│ │ ├── View.h
│ │ └── WindingRenderer.h
│ ├── render.h
│ ├── scene/
│ │ ├── AABBAccumulateWalker.h
│ │ ├── AttachmentData.cpp
│ │ ├── AttachmentData.h
│ │ ├── BasicRootNode.h
│ │ ├── CMakeLists.txt
│ │ ├── ChildPrimitives.cpp
│ │ ├── ChildPrimitives.h
│ │ ├── Clone.h
│ │ ├── ColourKey.h
│ │ ├── Entity.cpp
│ │ ├── Entity.h
│ │ ├── EntityAttachment.h
│ │ ├── EntityBreakdown.h
│ │ ├── EntityClass.cpp
│ │ ├── EntityClass.h
│ │ ├── EntityKeyValue.cpp
│ │ ├── EntityKeyValue.h
│ │ ├── EntityNode.cpp
│ │ ├── EntityNode.h
│ │ ├── EntitySelector.h
│ │ ├── EntitySettings.cpp
│ │ ├── EntitySettings.h
│ │ ├── Group.h
│ │ ├── GroupNodeChecker.h
│ │ ├── InstanceWalkers.cpp
│ │ ├── InstanceWalkers.h
│ │ ├── KeyObserverDelegate.h
│ │ ├── KeyObserverMap.h
│ │ ├── KeyValueObserver.cpp
│ │ ├── KeyValueObserver.h
│ │ ├── LayerUsageBreakdown.cpp
│ │ ├── LayerUsageBreakdown.h
│ │ ├── LayerValidityCheckWalker.h
│ │ ├── ModelBreakdown.h
│ │ ├── ModelFinder.cpp
│ │ ├── ModelFinder.h
│ │ ├── ModelKey.cpp
│ │ ├── ModelKey.h
│ │ ├── NameKey.h
│ │ ├── NameKeyObserver.cpp
│ │ ├── NameKeyObserver.h
│ │ ├── NamespaceManager.cpp
│ │ ├── NamespaceManager.h
│ │ ├── Node.cpp
│ │ ├── Node.h
│ │ ├── OriginKey.h
│ │ ├── PointTrace.h
│ │ ├── PrefabBoundsAccumulator.h
│ │ ├── RenderableEntityName.cpp
│ │ ├── RenderableEntityName.h
│ │ ├── RenderableObjectCollection.h
│ │ ├── RenderableTargetLines.cpp
│ │ ├── RenderableTargetLines.h
│ │ ├── SelectableNode.cpp
│ │ ├── SelectableNode.h
│ │ ├── SelectionIndex.cpp
│ │ ├── SelectionIndex.h
│ │ ├── ShaderBreakdown.h
│ │ ├── ShaderParms.cpp
│ │ ├── ShaderParms.h
│ │ ├── Target.h
│ │ ├── TargetKey.cpp
│ │ ├── TargetKey.h
│ │ ├── TargetKeyCollection.cpp
│ │ ├── TargetKeyCollection.h
│ │ ├── TargetLineNode.cpp
│ │ ├── TargetLineNode.h
│ │ ├── TargetManager.cpp
│ │ ├── TargetManager.h
│ │ ├── TargetableNode.cpp
│ │ ├── TargetableNode.h
│ │ ├── TransformedCopy.h
│ │ ├── TraversableNodeSet.cpp
│ │ ├── TraversableNodeSet.h
│ │ ├── Traverse.cpp
│ │ ├── Traverse.h
│ │ ├── filters/
│ │ │ ├── FilterGroup.cpp
│ │ │ ├── FilterGroup.h
│ │ │ ├── FilterRule.h
│ │ │ ├── SceneFilter.cpp
│ │ │ └── SceneFilter.h
│ │ ├── merge/
│ │ │ ├── ComparisonResult.h
│ │ │ ├── GraphComparer.cpp
│ │ │ ├── GraphComparer.h
│ │ │ ├── LayerMerger.h
│ │ │ ├── LayerMergerBase.h
│ │ │ ├── MergeAction.h
│ │ │ ├── MergeActionNode.cpp
│ │ │ ├── MergeActionNode.h
│ │ │ ├── MergeLib.h
│ │ │ ├── MergeOperation.cpp
│ │ │ ├── MergeOperation.h
│ │ │ ├── MergeOperationBase.cpp
│ │ │ ├── MergeOperationBase.h
│ │ │ ├── NodeUtils.h
│ │ │ ├── SelectionGroupMerger.h
│ │ │ ├── SelectionGroupMergerBase.h
│ │ │ ├── ThreeWayLayerMerger.h
│ │ │ ├── ThreeWayMergeOperation.cpp
│ │ │ ├── ThreeWayMergeOperation.h
│ │ │ └── ThreeWaySelectionGroupMerger.h
│ │ ├── scene_fwd.h
│ │ ├── shaders/
│ │ │ ├── NamedBindable.h
│ │ │ ├── ShaderExpression.cpp
│ │ │ └── ShaderExpression.h
│ │ └── textures/
│ │ ├── HeightmapCreator.h
│ │ ├── TextureManipulator.cpp
│ │ └── TextureManipulator.h
│ ├── scenelib.h
│ ├── selection/
│ │ ├── BestPoint.h
│ │ ├── CollectiveSpawnargs.h
│ │ ├── Device.h
│ │ ├── EntitiesFirstSelector.h
│ │ ├── EntitySelection.h
│ │ ├── OccludeSelector.h
│ │ ├── Pivot2World.h
│ │ ├── SelectedPlaneSet.h
│ │ ├── SelectionPool.h
│ │ ├── SelectionVolume.h
│ │ └── SingleItemSelector.h
│ ├── selectionlib.h
│ ├── settings/
│ │ ├── MajorMinorVersion.h
│ │ └── SettingsManager.h
│ ├── shaderlib.h
│ ├── splines/
│ │ ├── .cvsignore
│ │ ├── math_angles.cpp
│ │ ├── math_angles.h
│ │ ├── math_matrix.cpp
│ │ ├── math_matrix.h
│ │ ├── math_quaternion.cpp
│ │ ├── math_quaternion.h
│ │ ├── math_vector.cpp
│ │ ├── math_vector.h
│ │ ├── q_parse.cpp
│ │ ├── q_shared.cpp
│ │ ├── q_shared.h
│ │ ├── splines.cpp
│ │ ├── splines.h
│ │ ├── util_list.h
│ │ ├── util_str.cpp
│ │ └── util_str.h
│ ├── stream/
│ │ ├── BinaryToTextInputStream.h
│ │ ├── BufferInputStream.h
│ │ ├── ExportStream.h
│ │ ├── FileInputStream.h
│ │ ├── MapResourceStream.h
│ │ ├── PointerInputStream.h
│ │ ├── ScopedArchiveBuffer.h
│ │ ├── ScopedFileOutputStream.h
│ │ ├── TemporaryOutputStream.h
│ │ ├── TextFileInputStream.h
│ │ ├── VcsMapResourceStream.h
│ │ └── utils.h
│ ├── string/
│ │ ├── case_conv.h
│ │ ├── convert.h
│ │ ├── encoding.h
│ │ ├── format.h
│ │ ├── join.h
│ │ ├── predicate.h
│ │ ├── replace.h
│ │ ├── split.h
│ │ ├── string.h
│ │ ├── tokeniser.h
│ │ └── trim.h
│ ├── texturelib.h
│ ├── time/
│ │ ├── ScopeTimer.h
│ │ ├── StopWatch.h
│ │ └── Timer.h
│ ├── transformlib.h
│ ├── util/
│ │ ├── Noncopyable.h
│ │ └── ScopedBoolLock.h
│ ├── wxutil/
│ │ ├── Bitmap.h
│ │ ├── BitmapToggleButton.h
│ │ ├── Button.h
│ │ ├── CMakeLists.txt
│ │ ├── ChoiceHelper.h
│ │ ├── ConsoleView.cpp
│ │ ├── ConsoleView.h
│ │ ├── ControlButton.h
│ │ ├── Debug.h
│ │ ├── DeferredMotionDelta.h
│ │ ├── DirChooser.cpp
│ │ ├── DirChooser.h
│ │ ├── DockablePanel.h
│ │ ├── EntityClassChooser.cpp
│ │ ├── EntityClassChooser.h
│ │ ├── EntryAbortedException.h
│ │ ├── FileChooser.cpp
│ │ ├── FileChooser.h
│ │ ├── FormLayout.h
│ │ ├── FreezePointer.cpp
│ │ ├── FreezePointer.h
│ │ ├── GLContext.h
│ │ ├── GLWidget.cpp
│ │ ├── GLWidget.h
│ │ ├── IConv.h
│ │ ├── Icon.h
│ │ ├── ModalProgressDialog.cpp
│ │ ├── ModalProgressDialog.h
│ │ ├── Modifier.h
│ │ ├── MouseButton.h
│ │ ├── MouseToolHandler.cpp
│ │ ├── MouseToolHandler.h
│ │ ├── MultiMonitor.h
│ │ ├── NonModalEntry.h
│ │ ├── PanedPosition.cpp
│ │ ├── PanedPosition.h
│ │ ├── PathEntry.cpp
│ │ ├── PathEntry.h
│ │ ├── ScopeTimer.h
│ │ ├── ScrollWindow.h
│ │ ├── SerialisableWidgets.cpp
│ │ ├── SerialisableWidgets.h
│ │ ├── Splitter.cpp
│ │ ├── Splitter.h
│ │ ├── TransientPopupWindow.h
│ │ ├── WindowPosition.cpp
│ │ ├── WindowPosition.h
│ │ ├── WindowState.cpp
│ │ ├── WindowState.h
│ │ ├── XmlResourceBasedWidget.h
│ │ ├── dataview/
│ │ │ ├── DeclarationTreeView.cpp
│ │ │ ├── DeclarationTreeView.h
│ │ │ ├── IResourceTreePopulator.h
│ │ │ ├── IndicatorColumn.h
│ │ │ ├── KeyValueTable.cpp
│ │ │ ├── KeyValueTable.h
│ │ │ ├── ResourceTreeView.cpp
│ │ │ ├── ResourceTreeView.h
│ │ │ ├── ResourceTreeViewToolbar.cpp
│ │ │ ├── ResourceTreeViewToolbar.h
│ │ │ ├── ThreadedDeclarationTreePopulator.h
│ │ │ ├── ThreadedResourceTreePopulator.cpp
│ │ │ ├── ThreadedResourceTreePopulator.h
│ │ │ ├── TreeModel.cpp
│ │ │ ├── TreeModel.h
│ │ │ ├── TreeModelFilter.cpp
│ │ │ ├── TreeModelFilter.h
│ │ │ ├── TreeView.cpp
│ │ │ ├── TreeView.h
│ │ │ ├── TreeViewItemStyle.h
│ │ │ ├── VFSTreePopulator.cpp
│ │ │ └── VFSTreePopulator.h
│ │ ├── decl/
│ │ │ ├── DeclFileInfo.h
│ │ │ ├── DeclarationSelector.cpp
│ │ │ ├── DeclarationSelector.h
│ │ │ ├── DeclarationSelectorDialog.cpp
│ │ │ └── DeclarationSelectorDialog.h
│ │ ├── dialog/
│ │ │ ├── AutoSaveRequestBlocker.h
│ │ │ ├── Dialog.cpp
│ │ │ ├── Dialog.h
│ │ │ ├── DialogBase.cpp
│ │ │ ├── DialogBase.h
│ │ │ ├── DialogElements.h
│ │ │ ├── MessageBox.cpp
│ │ │ ├── MessageBox.h
│ │ │ └── ScrollEventPropagationFilter.h
│ │ ├── event/
│ │ │ ├── KeyEventFilter.h
│ │ │ └── SingleIdleCallback.h
│ │ ├── fsview/
│ │ │ ├── FileSystemView.cpp
│ │ │ ├── FileSystemView.h
│ │ │ ├── Populator.cpp
│ │ │ └── Populator.h
│ │ ├── menu/
│ │ │ ├── CommandMenuItem.h
│ │ │ ├── FilterPopupMenu.cpp
│ │ │ ├── FilterPopupMenu.h
│ │ │ ├── IconTextMenuItem.h
│ │ │ ├── MenuItem.h
│ │ │ ├── PopupMenu.cpp
│ │ │ ├── PopupMenu.h
│ │ │ └── SeparatorItem.h
│ │ ├── preview/
│ │ │ ├── EntityClassPreview.h
│ │ │ ├── EntityPreview.cpp
│ │ │ ├── EntityPreview.h
│ │ │ ├── GuiRenderer.cpp
│ │ │ ├── GuiRenderer.h
│ │ │ ├── GuiView.cpp
│ │ │ ├── GuiView.h
│ │ │ ├── ModelPreview.cpp
│ │ │ ├── ModelPreview.h
│ │ │ ├── ParticlePreview.cpp
│ │ │ ├── ParticlePreview.h
│ │ │ ├── RenderPreview.cpp
│ │ │ ├── RenderPreview.h
│ │ │ └── SkinPreview.h
│ │ └── sourceview/
│ │ ├── DeclarationSourceView.cpp
│ │ ├── DeclarationSourceView.h
│ │ ├── DefinitionView.cpp
│ │ ├── DefinitionView.h
│ │ ├── SourceView.cpp
│ │ └── SourceView.h
│ └── xmlutil/
│ ├── CMakeLists.txt
│ ├── Document.cpp
│ ├── Document.h
│ ├── InvalidNodeException.h
│ ├── MissingXMLNodeException.h
│ ├── Node.cpp
│ ├── Node.h
│ └── XPathException.h
├── man/
│ ├── darkradiant.1
│ └── darkradiant.adoc
├── plugins/
│ ├── dm.conversation/
│ │ ├── ActorNodeFinder.h
│ │ ├── CMakeLists.txt
│ │ ├── CommandArgumentItem.cpp
│ │ ├── CommandArgumentItem.h
│ │ ├── CommandEditor.cpp
│ │ ├── CommandEditor.h
│ │ ├── Conversation.h
│ │ ├── ConversationCommand.cpp
│ │ ├── ConversationCommand.h
│ │ ├── ConversationCommandInfo.cpp
│ │ ├── ConversationCommandInfo.h
│ │ ├── ConversationCommandLibrary.cpp
│ │ ├── ConversationCommandLibrary.h
│ │ ├── ConversationDialog.cpp
│ │ ├── ConversationDialog.h
│ │ ├── ConversationEditor.cpp
│ │ ├── ConversationEditor.h
│ │ ├── ConversationEntity.cpp
│ │ ├── ConversationEntity.h
│ │ ├── ConversationEntityFinder.h
│ │ ├── ConversationKeyExtractor.cpp
│ │ ├── ConversationKeyExtractor.h
│ │ └── plugin.cpp
│ ├── dm.difficulty/
│ │ ├── CMakeLists.txt
│ │ ├── ClassNameStore.cpp
│ │ ├── ClassNameStore.h
│ │ ├── DifficultyDialog.cpp
│ │ ├── DifficultyDialog.h
│ │ ├── DifficultyEditor.cpp
│ │ ├── DifficultyEditor.h
│ │ ├── DifficultyEntity.cpp
│ │ ├── DifficultyEntity.h
│ │ ├── DifficultyEntityFinder.h
│ │ ├── DifficultySettings.cpp
│ │ ├── DifficultySettings.h
│ │ ├── DifficultySettingsManager.cpp
│ │ ├── DifficultySettingsManager.h
│ │ ├── Setting.cpp
│ │ ├── Setting.h
│ │ └── plugin.cpp
│ ├── dm.editing/
│ │ ├── AIEditingControl.h
│ │ ├── AIEditingPanel.cpp
│ │ ├── AIEditingPanel.h
│ │ ├── AIHeadChooserDialog.cpp
│ │ ├── AIHeadChooserDialog.h
│ │ ├── AIHeadPropertyEditor.cpp
│ │ ├── AIHeadPropertyEditor.h
│ │ ├── AIVocalSetChooserDialog.cpp
│ │ ├── AIVocalSetChooserDialog.h
│ │ ├── AIVocalSetPreview.cpp
│ │ ├── AIVocalSetPreview.h
│ │ ├── AIVocalSetPropertyEditor.cpp
│ │ ├── AIVocalSetPropertyEditor.h
│ │ ├── CMakeLists.txt
│ │ ├── DarkmodTxt.cpp
│ │ ├── DarkmodTxt.h
│ │ ├── DeprecatedEclassCollector.h
│ │ ├── FixupMap.cpp
│ │ ├── FixupMap.h
│ │ ├── FixupMapDialog.cpp
│ │ ├── FixupMapDialog.h
│ │ ├── MissionInfoEditDialog.cpp
│ │ ├── MissionInfoEditDialog.h
│ │ ├── MissionInfoGuiView.cpp
│ │ ├── MissionInfoGuiView.h
│ │ ├── MissionInfoTextFile.cpp
│ │ ├── MissionInfoTextFile.h
│ │ ├── MissionReadmeDialog.cpp
│ │ ├── MissionReadmeDialog.h
│ │ ├── ReadmeTxt.cpp
│ │ ├── ReadmeTxt.h
│ │ ├── ShaderReplacer.h
│ │ ├── SpawnargLinkedCheckbox.h
│ │ ├── SpawnargLinkedSpinButton.h
│ │ ├── SpawnargReplacer.h
│ │ ├── ThreadedEntityDefPopulator.h
│ │ └── plugin.cpp
│ ├── dm.gameconnection/
│ │ ├── AutomationEngine.cpp
│ │ ├── AutomationEngine.h
│ │ ├── CMakeLists.txt
│ │ ├── DiffDoom3MapWriter.cpp
│ │ ├── DiffDoom3MapWriter.h
│ │ ├── DiffStatus.h
│ │ ├── GameConnection.cpp
│ │ ├── GameConnection.h
│ │ ├── GameConnectionControl.h
│ │ ├── GameConnectionPanel.cpp
│ │ ├── GameConnectionPanel.h
│ │ ├── MapObserver.cpp
│ │ ├── MapObserver.h
│ │ ├── MessageTcp.cpp
│ │ ├── MessageTcp.h
│ │ └── clsocket/
│ │ ├── ActiveSocket.cpp
│ │ ├── ActiveSocket.h
│ │ ├── Host.h
│ │ ├── PassiveSocket.cpp
│ │ ├── PassiveSocket.h
│ │ ├── SimpleSocket.cpp
│ │ ├── SimpleSocket.h
│ │ ├── StatTimer.h
│ │ └── readme.txt
│ ├── dm.gui/
│ │ ├── CMakeLists.txt
│ │ ├── GuiSelector.cpp
│ │ ├── GuiSelector.h
│ │ ├── ReadableEditorDialog.cpp
│ │ ├── ReadableEditorDialog.h
│ │ ├── ReadableGuiView.cpp
│ │ ├── ReadableGuiView.h
│ │ ├── ReadablePopulator.h
│ │ ├── ReadableReloader.h
│ │ ├── TextViewInfoDialog.h
│ │ ├── XData.cpp
│ │ ├── XData.h
│ │ ├── XDataLoader.cpp
│ │ ├── XDataLoader.h
│ │ ├── XDataSelector.cpp
│ │ ├── XDataSelector.h
│ │ ├── XdFileChooserDialog.cpp
│ │ ├── XdFileChooserDialog.h
│ │ ├── gui/
│ │ │ ├── Gui.cpp
│ │ │ ├── Gui.h
│ │ │ ├── GuiExpression.cpp
│ │ │ ├── GuiExpression.h
│ │ │ ├── GuiManager.cpp
│ │ │ ├── GuiManager.h
│ │ │ ├── GuiScript.cpp
│ │ │ ├── GuiScript.h
│ │ │ ├── GuiWindowDef.cpp
│ │ │ ├── GuiWindowDef.h
│ │ │ ├── RenderableCharacterBatch.cpp
│ │ │ ├── RenderableCharacterBatch.h
│ │ │ ├── RenderableText.cpp
│ │ │ ├── RenderableText.h
│ │ │ ├── TextParts.h
│ │ │ ├── Variable.cpp
│ │ │ └── Variable.h
│ │ └── plugin.cpp
│ ├── dm.objectives/
│ │ ├── CMakeLists.txt
│ │ ├── Component.cpp
│ │ ├── Component.h
│ │ ├── ComponentType.cpp
│ │ ├── ComponentType.h
│ │ ├── ComponentsDialog.cpp
│ │ ├── ComponentsDialog.h
│ │ ├── DifficultyPanel.cpp
│ │ ├── DifficultyPanel.h
│ │ ├── Logic.h
│ │ ├── LogicEditor.cpp
│ │ ├── LogicEditor.h
│ │ ├── MissionLogicDialog.cpp
│ │ ├── MissionLogicDialog.h
│ │ ├── Objective.h
│ │ ├── ObjectiveCondition.h
│ │ ├── ObjectiveConditionsDialog.cpp
│ │ ├── ObjectiveConditionsDialog.h
│ │ ├── ObjectiveEntity.cpp
│ │ ├── ObjectiveEntity.h
│ │ ├── ObjectiveEntityFinder.cpp
│ │ ├── ObjectiveEntityFinder.h
│ │ ├── ObjectiveKeyExtractor.cpp
│ │ ├── ObjectiveKeyExtractor.h
│ │ ├── ObjectivesEditor.cpp
│ │ ├── ObjectivesEditor.h
│ │ ├── Specifier.cpp
│ │ ├── Specifier.h
│ │ ├── SpecifierType.cpp
│ │ ├── SpecifierType.h
│ │ ├── TargetList.h
│ │ ├── ce/
│ │ │ ├── AIFindBodyComponentEditor.cpp
│ │ │ ├── AIFindBodyComponentEditor.h
│ │ │ ├── AIFindItemComponentEditor.cpp
│ │ │ ├── AIFindItemComponentEditor.h
│ │ │ ├── AlertComponentEditor.cpp
│ │ │ ├── AlertComponentEditor.h
│ │ │ ├── ComponentEditor.h
│ │ │ ├── ComponentEditorBase.h
│ │ │ ├── ComponentEditorFactory.cpp
│ │ │ ├── ComponentEditorFactory.h
│ │ │ ├── CustomClockedComponentEditor.cpp
│ │ │ ├── CustomClockedComponentEditor.h
│ │ │ ├── CustomComponentEditor.cpp
│ │ │ ├── CustomComponentEditor.h
│ │ │ ├── DestroyComponentEditor.cpp
│ │ │ ├── DestroyComponentEditor.h
│ │ │ ├── DistanceComponentEditor.cpp
│ │ │ ├── DistanceComponentEditor.h
│ │ │ ├── InfoLocationComponentEditor.cpp
│ │ │ ├── InfoLocationComponentEditor.h
│ │ │ ├── ItemComponentEditor.cpp
│ │ │ ├── ItemComponentEditor.h
│ │ │ ├── KillComponentEditor.cpp
│ │ │ ├── KillComponentEditor.h
│ │ │ ├── KnockoutComponentEditor.cpp
│ │ │ ├── KnockoutComponentEditor.h
│ │ │ ├── LocationComponentEditor.cpp
│ │ │ ├── LocationComponentEditor.h
│ │ │ ├── PickpocketComponentEditor.cpp
│ │ │ ├── PickpocketComponentEditor.h
│ │ │ ├── ReadableClosedComponentEditor.cpp
│ │ │ ├── ReadableClosedComponentEditor.h
│ │ │ ├── ReadableOpenedComponentEditor.cpp
│ │ │ ├── ReadableOpenedComponentEditor.h
│ │ │ ├── ReadablePageReachedComponentEditor.cpp
│ │ │ ├── ReadablePageReachedComponentEditor.h
│ │ │ ├── SpecifierEditCombo.cpp
│ │ │ ├── SpecifierEditCombo.h
│ │ │ └── specpanel/
│ │ │ ├── AIInnocenceSpecifierPanel.cpp
│ │ │ ├── AIInnocenceSpecifierPanel.h
│ │ │ ├── AITeamSpecifierPanel.cpp
│ │ │ ├── AITeamSpecifierPanel.h
│ │ │ ├── AITypeSpecifierPanel.cpp
│ │ │ ├── AITypeSpecifierPanel.h
│ │ │ ├── ClassnameSpecifierPanel.cpp
│ │ │ ├── ClassnameSpecifierPanel.h
│ │ │ ├── EntityNameSpecifierPanel.cpp
│ │ │ ├── EntityNameSpecifierPanel.h
│ │ │ ├── GroupSpecifierPanel.cpp
│ │ │ ├── GroupSpecifierPanel.h
│ │ │ ├── SpawnClassSpecifierPanel.cpp
│ │ │ ├── SpawnClassSpecifierPanel.h
│ │ │ ├── SpecifierPanel.h
│ │ │ ├── SpecifierPanelFactory.cpp
│ │ │ ├── SpecifierPanelFactory.h
│ │ │ ├── TextSpecifierPanel.cpp
│ │ │ └── TextSpecifierPanel.h
│ │ ├── objectives.cpp
│ │ ├── precompiled.cpp
│ │ ├── precompiled.h
│ │ └── util/
│ │ ├── ObjectivesException.h
│ │ └── TwoColumnTextCombo.h
│ ├── dm.stimresponse/
│ │ ├── CMakeLists.txt
│ │ ├── ClassEditor.cpp
│ │ ├── ClassEditor.h
│ │ ├── CustomStimEditor.cpp
│ │ ├── CustomStimEditor.h
│ │ ├── EffectArgumentItem.cpp
│ │ ├── EffectArgumentItem.h
│ │ ├── EffectEditor.cpp
│ │ ├── EffectEditor.h
│ │ ├── ResponseEditor.cpp
│ │ ├── ResponseEditor.h
│ │ ├── ResponseEffect.cpp
│ │ ├── ResponseEffect.h
│ │ ├── ResponseEffectTypes.cpp
│ │ ├── ResponseEffectTypes.h
│ │ ├── SREntity.cpp
│ │ ├── SREntity.h
│ │ ├── SRPropertyLoader.cpp
│ │ ├── SRPropertyLoader.h
│ │ ├── SRPropertyRemover.cpp
│ │ ├── SRPropertyRemover.h
│ │ ├── SRPropertySaver.cpp
│ │ ├── SRPropertySaver.h
│ │ ├── StimEditor.cpp
│ │ ├── StimEditor.h
│ │ ├── StimResponse.cpp
│ │ ├── StimResponse.h
│ │ ├── StimResponseEditor.cpp
│ │ ├── StimResponseEditor.h
│ │ ├── StimTypes.cpp
│ │ ├── StimTypes.h
│ │ ├── plugin.cpp
│ │ ├── precompiled.cpp
│ │ └── precompiled.h
│ ├── script/
│ │ ├── CMakeLists.txt
│ │ ├── PythonConsoleWriter.h
│ │ ├── PythonModule.cpp
│ │ ├── PythonModule.h
│ │ ├── SceneNodeBuffer.cpp
│ │ ├── SceneNodeBuffer.h
│ │ ├── ScriptCommand.cpp
│ │ ├── ScriptCommand.h
│ │ ├── ScriptModule.cpp
│ │ ├── ScriptingSystem.cpp
│ │ ├── ScriptingSystem.h
│ │ ├── interfaces/
│ │ │ ├── BrushInterface.cpp
│ │ │ ├── BrushInterface.h
│ │ │ ├── CameraInterface.cpp
│ │ │ ├── CameraInterface.h
│ │ │ ├── CommandSystemInterface.cpp
│ │ │ ├── CommandSystemInterface.h
│ │ │ ├── DeclarationManagerInterface.cpp
│ │ │ ├── DeclarationManagerInterface.h
│ │ │ ├── DialogInterface.cpp
│ │ │ ├── DialogInterface.h
│ │ │ ├── EClassInterface.cpp
│ │ │ ├── EClassInterface.h
│ │ │ ├── EntityInterface.cpp
│ │ │ ├── EntityInterface.h
│ │ │ ├── FileSystemInterface.cpp
│ │ │ ├── FileSystemInterface.h
│ │ │ ├── FxManagerInterface.cpp
│ │ │ ├── FxManagerInterface.h
│ │ │ ├── GameInterface.cpp
│ │ │ ├── GameInterface.h
│ │ │ ├── GridInterface.cpp
│ │ │ ├── GridInterface.h
│ │ │ ├── LayerInterface.cpp
│ │ │ ├── LayerInterface.h
│ │ │ ├── MapInterface.cpp
│ │ │ ├── MapInterface.h
│ │ │ ├── MathInterface.cpp
│ │ │ ├── MathInterface.h
│ │ │ ├── ModelInterface.cpp
│ │ │ ├── ModelInterface.h
│ │ │ ├── PatchInterface.cpp
│ │ │ ├── PatchInterface.h
│ │ │ ├── RadiantInterface.cpp
│ │ │ ├── RadiantInterface.h
│ │ │ ├── RegistryInterface.h
│ │ │ ├── SceneGraphInterface.cpp
│ │ │ ├── SceneGraphInterface.h
│ │ │ ├── SelectionGroupInterface.cpp
│ │ │ ├── SelectionGroupInterface.h
│ │ │ ├── SelectionInterface.cpp
│ │ │ ├── SelectionInterface.h
│ │ │ ├── SelectionSetInterface.cpp
│ │ │ ├── SelectionSetInterface.h
│ │ │ ├── ShaderSystemInterface.cpp
│ │ │ ├── ShaderSystemInterface.h
│ │ │ ├── SkinInterface.cpp
│ │ │ ├── SkinInterface.h
│ │ │ ├── SoundInterface.cpp
│ │ │ └── SoundInterface.h
│ │ ├── precompiled.cpp
│ │ └── precompiled.h
│ ├── sound/
│ │ ├── CMakeLists.txt
│ │ ├── OggFileLoader.h
│ │ ├── OggFileStream.h
│ │ ├── SoundManager.cpp
│ │ ├── SoundManager.h
│ │ ├── SoundPlayer.cpp
│ │ ├── SoundPlayer.h
│ │ ├── SoundShader.cpp
│ │ ├── SoundShader.h
│ │ ├── WavFileLoader.h
│ │ └── sound.cpp
│ └── vcs/
│ ├── Algorithm.h
│ ├── CMakeLists.txt
│ ├── Commit.h
│ ├── CommitMetadata.h
│ ├── CredentialManager.h
│ ├── Diff.h
│ ├── GitArchiveTextFile.h
│ ├── GitException.h
│ ├── GitModule.cpp
│ ├── GitModule.h
│ ├── Index.cpp
│ ├── Index.h
│ ├── Reference.h
│ ├── Remote.h
│ ├── Repository.cpp
│ ├── Repository.h
│ ├── Signature.h
│ ├── Tree.h
│ └── ui/
│ ├── CommitDialog.h
│ ├── VcsStatus.cpp
│ └── VcsStatus.h
├── radiant/
│ ├── ApplicationContext.h
│ ├── CMakeLists.txt
│ ├── RadiantApp.cpp
│ ├── RadiantApp.h
│ ├── camera/
│ │ ├── CamWnd.cpp
│ │ ├── CamWnd.h
│ │ ├── CameraSettings.cpp
│ │ ├── CameraSettings.h
│ │ ├── CameraWndManager.cpp
│ │ ├── CameraWndManager.h
│ │ ├── FloorHeightWalker.h
│ │ └── tools/
│ │ ├── CameraMouseToolEvent.h
│ │ ├── DecalShooterTool.cpp
│ │ ├── DecalShooterTool.h
│ │ ├── FaceIntersectionFinder.cpp
│ │ ├── FaceIntersectionFinder.h
│ │ ├── FreeMoveTool.h
│ │ ├── JumpToObjectTool.h
│ │ ├── ObjectFinder.h
│ │ ├── PanViewTool.h
│ │ └── ShaderClipboardTools.h
│ ├── clipboard/
│ │ ├── ClipboardModule.cpp
│ │ └── ClipboardModule.h
│ ├── darkradiant.rc
│ ├── eventmanager/
│ │ ├── Accelerator.cpp
│ │ ├── Accelerator.h
│ │ ├── Event.h
│ │ ├── EventManager.cpp
│ │ ├── EventManager.h
│ │ ├── GlobalKeyEventFilter.cpp
│ │ ├── GlobalKeyEventFilter.h
│ │ ├── KeyEvent.h
│ │ ├── ModifierHintPopup.h
│ │ ├── MouseToolGroup.cpp
│ │ ├── MouseToolGroup.h
│ │ ├── MouseToolManager.cpp
│ │ ├── MouseToolManager.h
│ │ ├── RegistryToggle.h
│ │ ├── ShortcutSaver.h
│ │ ├── Statement.cpp
│ │ ├── Statement.h
│ │ ├── Toggle.cpp
│ │ ├── Toggle.h
│ │ ├── WidgetToggle.cpp
│ │ └── WidgetToggle.h
│ ├── log/
│ │ ├── PIDFile.h
│ │ └── PopupErrorHandler.h
│ ├── main.cpp
│ ├── map/
│ │ ├── AutoSaveTimer.cpp
│ │ ├── AutoSaveTimer.h
│ │ ├── StartupMapLoader.cpp
│ │ └── StartupMapLoader.h
│ ├── precompiled.cpp
│ ├── precompiled.h
│ ├── render/
│ │ └── RenderStatistics.h
│ ├── selection/
│ │ ├── ManipulateMouseTool.cpp
│ │ ├── ManipulateMouseTool.h
│ │ ├── SceneManipulateMouseTool.cpp
│ │ ├── SceneManipulateMouseTool.h
│ │ ├── SelectionMouseTools.cpp
│ │ └── SelectionMouseTools.h
│ ├── settings/
│ │ ├── LocalisationModule.cpp
│ │ ├── LocalisationModule.h
│ │ ├── LocalisationProvider.cpp
│ │ ├── LocalisationProvider.h
│ │ ├── Win32Registry.cpp
│ │ └── Win32Registry.h
│ ├── textool/
│ │ ├── TexTool.cpp
│ │ ├── TexTool.h
│ │ ├── TexToolModeToggles.h
│ │ ├── TextureToolControl.h
│ │ └── tools/
│ │ ├── TextureToolCycleSelectionTool.h
│ │ ├── TextureToolManipulateMouseTool.cpp
│ │ ├── TextureToolManipulateMouseTool.h
│ │ ├── TextureToolMouseEvent.h
│ │ └── TextureToolSelectionTool.h
│ ├── ui/
│ │ ├── AutoSaveRequestHandler.h
│ │ ├── DispatchEvent.cpp
│ │ ├── DispatchEvent.h
│ │ ├── Documentation.cpp
│ │ ├── Documentation.h
│ │ ├── FileOverwriteConfirmationHandler.h
│ │ ├── FileSaveConfirmationHandler.h
│ │ ├── FileSelectionRequestHandler.h
│ │ ├── LongRunningOperationHandler.cpp
│ │ ├── LongRunningOperationHandler.h
│ │ ├── ManipulatorToggle.h
│ │ ├── MapCommands.cpp
│ │ ├── MapCommands.h
│ │ ├── MapFileProgressHandler.cpp
│ │ ├── MapFileProgressHandler.h
│ │ ├── PointFileChooser.cpp
│ │ ├── PointFileChooser.h
│ │ ├── SelectionModeToggle.h
│ │ ├── UserInterfaceModule.cpp
│ │ ├── UserInterfaceModule.h
│ │ ├── aas/
│ │ │ ├── AasFileControl.cpp
│ │ │ ├── AasFileControl.h
│ │ │ ├── AasVisualisationControl.h
│ │ │ ├── AasVisualisationPanel.cpp
│ │ │ ├── AasVisualisationPanel.h
│ │ │ ├── RenderableAasFile.cpp
│ │ │ └── RenderableAasFile.h
│ │ ├── about/
│ │ │ ├── AboutDialog.cpp
│ │ │ └── AboutDialog.h
│ │ ├── animationpreview/
│ │ │ ├── AnimationPreview.cpp
│ │ │ ├── AnimationPreview.h
│ │ │ ├── MD5AnimationChooser.cpp
│ │ │ ├── MD5AnimationChooser.h
│ │ │ ├── MD5AnimationViewer.cpp
│ │ │ └── MD5AnimationViewer.h
│ │ ├── array/
│ │ │ ├── ArrayDialog.cpp
│ │ │ └── ArrayDialog.h
│ │ ├── brush/
│ │ │ ├── CreateTrimDialog.cpp
│ │ │ ├── CreateTrimDialog.h
│ │ │ ├── FindBrush.cpp
│ │ │ ├── FindBrush.h
│ │ │ ├── QuerySidesDialog.cpp
│ │ │ └── QuerySidesDialog.h
│ │ ├── colourscheme/
│ │ │ ├── ColourSchemeEditor.cpp
│ │ │ └── ColourSchemeEditor.h
│ │ ├── commandlist/
│ │ │ ├── CommandList.cpp
│ │ │ ├── CommandList.h
│ │ │ ├── CommandListPopulator.h
│ │ │ ├── ShortcutChooser.cpp
│ │ │ └── ShortcutChooser.h
│ │ ├── common/
│ │ │ ├── DialogManager.cpp
│ │ │ ├── DialogManager.h
│ │ │ ├── EntityChooser.cpp
│ │ │ ├── EntityChooser.h
│ │ │ ├── ImageFilePopulator.cpp
│ │ │ ├── ImageFilePopulator.h
│ │ │ ├── ImageFileSelector.cpp
│ │ │ ├── ImageFileSelector.h
│ │ │ ├── MapPreview.cpp
│ │ │ ├── MapPreview.h
│ │ │ ├── SkinChooser.cpp
│ │ │ ├── SkinChooser.h
│ │ │ ├── SoundChooser.cpp
│ │ │ ├── SoundChooser.h
│ │ │ ├── SoundShaderPreview.cpp
│ │ │ ├── SoundShaderPreview.h
│ │ │ ├── SoundShaderSelector.h
│ │ │ ├── TexturePreviewCombo.cpp
│ │ │ └── TexturePreviewCombo.h
│ │ ├── console/
│ │ │ ├── CommandEntry.cpp
│ │ │ ├── CommandEntry.h
│ │ │ ├── Console.cpp
│ │ │ ├── Console.h
│ │ │ └── ConsoleControl.h
│ │ ├── decalshooter/
│ │ │ ├── DecalShooterControl.h
│ │ │ ├── DecalShooterPanel.cpp
│ │ │ └── DecalShooterPanel.h
│ │ ├── eclasstree/
│ │ │ ├── EClassTree.cpp
│ │ │ ├── EClassTree.h
│ │ │ ├── EClassTreeBuilder.cpp
│ │ │ └── EClassTreeBuilder.h
│ │ ├── einspector/
│ │ │ ├── AddPropertyDialog.cpp
│ │ │ ├── AddPropertyDialog.h
│ │ │ ├── Algorithm.cpp
│ │ │ ├── Algorithm.h
│ │ │ ├── AnglePropertyEditor.cpp
│ │ │ ├── AnglePropertyEditor.h
│ │ │ ├── BooleanPropertyEditor.cpp
│ │ │ ├── BooleanPropertyEditor.h
│ │ │ ├── ClassnamePropertyEditor.cpp
│ │ │ ├── ClassnamePropertyEditor.h
│ │ │ ├── ColourPropertyEditor.cpp
│ │ │ ├── ColourPropertyEditor.h
│ │ │ ├── EntityInspector.cpp
│ │ │ ├── EntityInspector.h
│ │ │ ├── EntityInspectorModule.cpp
│ │ │ ├── EntityInspectorModule.h
│ │ │ ├── EntityPropertyEditor.cpp
│ │ │ ├── EntityPropertyEditor.h
│ │ │ ├── FloatPropertyEditor.cpp
│ │ │ ├── FloatPropertyEditor.h
│ │ │ ├── FxPropertyEditor.cpp
│ │ │ ├── FxPropertyEditor.h
│ │ │ ├── InheritPropertyEditor.cpp
│ │ │ ├── InheritPropertyEditor.h
│ │ │ ├── ModelPropertyEditor.cpp
│ │ │ ├── ModelPropertyEditor.h
│ │ │ ├── PropertyEditor.cpp
│ │ │ ├── PropertyEditor.h
│ │ │ ├── PropertyEditorFactory.cpp
│ │ │ ├── PropertyEditorFactory.h
│ │ │ ├── SkinPropertyEditor.cpp
│ │ │ ├── SkinPropertyEditor.h
│ │ │ ├── SoundPropertyEditor.cpp
│ │ │ ├── SoundPropertyEditor.h
│ │ │ ├── TargetKey.h
│ │ │ ├── TexturePropertyEditor.cpp
│ │ │ ├── TexturePropertyEditor.h
│ │ │ ├── Vector3PropertyEditor.cpp
│ │ │ └── Vector3PropertyEditor.h
│ │ ├── entitylist/
│ │ │ ├── EntityList.cpp
│ │ │ ├── EntityList.h
│ │ │ ├── EntityListControl.h
│ │ │ ├── GraphTreeModel.cpp
│ │ │ ├── GraphTreeModel.h
│ │ │ ├── GraphTreeModelPopulator.h
│ │ │ └── GraphTreeNode.h
│ │ ├── favourites/
│ │ │ ├── FavouritesBrowser.cpp
│ │ │ ├── FavouritesBrowser.h
│ │ │ ├── FavouritesBrowserControl.h
│ │ │ └── FavouritesUserInterfaceModule.cpp
│ │ ├── filters/
│ │ │ ├── FilterContextMenu.cpp
│ │ │ ├── FilterContextMenu.h
│ │ │ ├── FilterOrthoContextMenuItem.cpp
│ │ │ ├── FilterOrthoContextMenuItem.h
│ │ │ ├── FilterUserInterface.cpp
│ │ │ ├── FilterUserInterface.h
│ │ │ ├── FiltersMainMenu.cpp
│ │ │ ├── FiltersMainMenu.h
│ │ │ └── editor/
│ │ │ ├── Filter.h
│ │ │ ├── FilterDialog.cpp
│ │ │ ├── FilterDialog.h
│ │ │ ├── FilterEditor.cpp
│ │ │ └── FilterEditor.h
│ │ ├── findshader/
│ │ │ ├── FindShader.cpp
│ │ │ ├── FindShader.h
│ │ │ └── FindShaderControl.h
│ │ ├── fx/
│ │ │ ├── FxChooser.cpp
│ │ │ └── FxChooser.h
│ │ ├── gl/
│ │ │ ├── WxGLWidgetManager.cpp
│ │ │ └── WxGLWidgetManager.h
│ │ ├── grid/
│ │ │ ├── GridUserInterface.cpp
│ │ │ └── GridUserInterface.h
│ │ ├── layers/
│ │ │ ├── CreateLayerDialog.cpp
│ │ │ ├── CreateLayerDialog.h
│ │ │ ├── LayerContextMenu.cpp
│ │ │ ├── LayerContextMenu.h
│ │ │ ├── LayerControl.h
│ │ │ ├── LayerControlPanel.cpp
│ │ │ ├── LayerControlPanel.h
│ │ │ ├── LayerOrthoContextMenuItem.cpp
│ │ │ └── LayerOrthoContextMenuItem.h
│ │ ├── lightinspector/
│ │ │ ├── LightInspector.cpp
│ │ │ ├── LightInspector.h
│ │ │ └── LightInspectorControl.h
│ │ ├── mainframe/
│ │ │ ├── AuiFloatingFrame.cpp
│ │ │ ├── AuiFloatingFrame.h
│ │ │ ├── AuiLayout.cpp
│ │ │ ├── AuiLayout.h
│ │ │ ├── AuiManager.cpp
│ │ │ ├── AuiManager.h
│ │ │ ├── MainFrame.cpp
│ │ │ ├── MainFrame.h
│ │ │ ├── PropertyNotebook.cpp
│ │ │ ├── PropertyNotebook.h
│ │ │ ├── ScreenUpdateBlocker.cpp
│ │ │ ├── ScreenUpdateBlocker.h
│ │ │ ├── TopLevelFrame.cpp
│ │ │ ├── TopLevelFrame.h
│ │ │ ├── ViewMenu.cpp
│ │ │ └── ViewMenu.h
│ │ ├── mapinfo/
│ │ │ ├── EntityInfoTab.cpp
│ │ │ ├── EntityInfoTab.h
│ │ │ ├── LayerInfoTab.cpp
│ │ │ ├── LayerInfoTab.h
│ │ │ ├── MapInfoDialog.cpp
│ │ │ ├── MapInfoDialog.h
│ │ │ ├── ModelInfoTab.cpp
│ │ │ ├── ModelInfoTab.h
│ │ │ ├── ShaderInfoTab.cpp
│ │ │ └── ShaderInfoTab.h
│ │ ├── mapselector/
│ │ │ ├── MapSelector.cpp
│ │ │ └── MapSelector.h
│ │ ├── materials/
│ │ │ ├── MaterialChooser.cpp
│ │ │ ├── MaterialChooser.h
│ │ │ ├── MaterialPopulator.cpp
│ │ │ ├── MaterialPopulator.h
│ │ │ ├── MaterialSelector.cpp
│ │ │ ├── MaterialSelector.h
│ │ │ ├── MaterialThumbnailBrowser.cpp
│ │ │ ├── MaterialThumbnailBrowser.h
│ │ │ ├── MaterialTreeView.cpp
│ │ │ ├── MaterialTreeView.h
│ │ │ └── editor/
│ │ │ ├── Binding.h
│ │ │ ├── CheckBoxBinding.h
│ │ │ ├── ExpressionBinding.h
│ │ │ ├── MapExpressionEntry.h
│ │ │ ├── MaterialEditor.cpp
│ │ │ ├── MaterialEditor.h
│ │ │ ├── MaterialEditorModule.cpp
│ │ │ ├── MaterialPreview.cpp
│ │ │ ├── MaterialPreview.h
│ │ │ ├── RadioButtonBinding.h
│ │ │ ├── SpinCtrlBinding.h
│ │ │ ├── TestModelSkin.h
│ │ │ └── TexturePreview.h
│ │ ├── mediabrowser/
│ │ │ ├── FocusMaterialRequest.h
│ │ │ ├── MediaBrowser.cpp
│ │ │ ├── MediaBrowser.h
│ │ │ ├── MediaBrowserModule.cpp
│ │ │ ├── MediaBrowserTreeView.cpp
│ │ │ ├── MediaBrowserTreeView.h
│ │ │ └── TextureDirectoryLoader.h
│ │ ├── menu/
│ │ │ ├── MenuBar.cpp
│ │ │ ├── MenuBar.h
│ │ │ ├── MenuElement.cpp
│ │ │ ├── MenuElement.h
│ │ │ ├── MenuFolder.cpp
│ │ │ ├── MenuFolder.h
│ │ │ ├── MenuItem.cpp
│ │ │ ├── MenuItem.h
│ │ │ ├── MenuManager.cpp
│ │ │ ├── MenuManager.h
│ │ │ ├── MenuRootElement.h
│ │ │ ├── MenuSeparator.cpp
│ │ │ └── MenuSeparator.h
│ │ ├── merge/
│ │ │ ├── MapMergeControl.h
│ │ │ ├── MapMergePanel.cpp
│ │ │ └── MapMergePanel.h
│ │ ├── modelexport/
│ │ │ ├── ConvertModelDialog.cpp
│ │ │ ├── ConvertModelDialog.h
│ │ │ ├── ExportAsModelDialog.cpp
│ │ │ ├── ExportAsModelDialog.h
│ │ │ ├── ExportCollisionModelDialog.cpp
│ │ │ └── ExportCollisionModelDialog.h
│ │ ├── modelselector/
│ │ │ ├── MaterialsList.cpp
│ │ │ ├── MaterialsList.h
│ │ │ ├── ModelDataInserter.h
│ │ │ ├── ModelPopulator.h
│ │ │ ├── ModelSelector.cpp
│ │ │ ├── ModelSelector.h
│ │ │ ├── ModelTreeView.cpp
│ │ │ └── ModelTreeView.h
│ │ ├── mousetool/
│ │ │ ├── BindToolDialog.cpp
│ │ │ ├── BindToolDialog.h
│ │ │ ├── RegistrationHelper.h
│ │ │ ├── ToolMappingDialog.cpp
│ │ │ └── ToolMappingDialog.h
│ │ ├── mru/
│ │ │ └── MRUMenu.h
│ │ ├── ortho/
│ │ │ ├── OrthoContextMenu.cpp
│ │ │ └── OrthoContextMenu.h
│ │ ├── overlay/
│ │ │ ├── OrthoBackgroundControl.h
│ │ │ ├── OrthoBackgroundPanel.cpp
│ │ │ ├── OrthoBackgroundPanel.h
│ │ │ ├── Overlay.cpp
│ │ │ ├── Overlay.h
│ │ │ └── OverlayRegistryKeys.h
│ │ ├── particles/
│ │ │ ├── ParticleChooserDialog.cpp
│ │ │ ├── ParticleChooserDialog.h
│ │ │ ├── ParticleEditor.cpp
│ │ │ ├── ParticleEditor.h
│ │ │ ├── ParticleSelector.cpp
│ │ │ ├── ParticleSelector.h
│ │ │ └── ThreadedParticlesLoader.h
│ │ ├── patch/
│ │ │ ├── BulgePatchDialog.cpp
│ │ │ ├── BulgePatchDialog.h
│ │ │ ├── CapDialog.cpp
│ │ │ ├── CapDialog.h
│ │ │ ├── PatchCreateDialog.cpp
│ │ │ ├── PatchCreateDialog.h
│ │ │ ├── PatchInspector.cpp
│ │ │ ├── PatchInspector.h
│ │ │ ├── PatchInspectorControl.h
│ │ │ ├── PatchPrefabDialog.cpp
│ │ │ ├── PatchPrefabDialog.h
│ │ │ ├── PatchThickenDialog.cpp
│ │ │ └── PatchThickenDialog.h
│ │ ├── prefabselector/
│ │ │ ├── PrefabSelector.cpp
│ │ │ └── PrefabSelector.h
│ │ ├── prefdialog/
│ │ │ ├── GameSetupDialog.cpp
│ │ │ ├── GameSetupDialog.h
│ │ │ ├── GameSetupPage.cpp
│ │ │ ├── GameSetupPage.h
│ │ │ ├── GameSetupPageIdTech.cpp
│ │ │ ├── GameSetupPageIdTech.h
│ │ │ ├── GameSetupPageTdm.cpp
│ │ │ ├── GameSetupPageTdm.h
│ │ │ ├── PrefDialog.cpp
│ │ │ ├── PrefDialog.h
│ │ │ ├── PrefPage.cpp
│ │ │ ├── PrefPage.h
│ │ │ ├── PreferenceItem.cpp
│ │ │ └── PreferenceItem.h
│ │ ├── scatter/
│ │ │ ├── ScatterDialog.cpp
│ │ │ └── ScatterDialog.h
│ │ ├── script/
│ │ │ ├── ScriptMenu.cpp
│ │ │ ├── ScriptMenu.h
│ │ │ ├── ScriptPanel.h
│ │ │ ├── ScriptWindow.cpp
│ │ │ └── ScriptWindow.h
│ │ ├── selectiongroup/
│ │ │ ├── SelectionGroupControl.h
│ │ │ ├── SelectionGroupPanel.cpp
│ │ │ └── SelectionGroupPanel.h
│ │ ├── selectionset/
│ │ │ ├── SelectionSetToolmenu.cpp
│ │ │ └── SelectionSetToolmenu.h
│ │ ├── skin/
│ │ │ ├── SkinEditor.cpp
│ │ │ ├── SkinEditor.h
│ │ │ ├── SkinEditorTreeView.cpp
│ │ │ └── SkinEditorTreeView.h
│ │ ├── splash/
│ │ │ ├── Splash.cpp
│ │ │ └── Splash.h
│ │ ├── statusbar/
│ │ │ ├── CommandStatus.cpp
│ │ │ ├── CommandStatus.h
│ │ │ ├── EditingStopwatchStatus.cpp
│ │ │ ├── EditingStopwatchStatus.h
│ │ │ ├── MapStatistics.cpp
│ │ │ ├── MapStatistics.h
│ │ │ ├── ShaderClipboardStatus.h
│ │ │ ├── StatusBarManager.cpp
│ │ │ └── StatusBarManager.h
│ │ ├── surfaceinspector/
│ │ │ ├── SurfaceInspector.cpp
│ │ │ ├── SurfaceInspector.h
│ │ │ └── SurfaceInspectorControl.h
│ │ ├── terrain/
│ │ │ ├── TerrainGeneratorDialog.cpp
│ │ │ └── TerrainGeneratorDialog.h
│ │ ├── texturebrowser/
│ │ │ ├── MapTextureBrowser.cpp
│ │ │ ├── MapTextureBrowser.h
│ │ │ ├── TextureBrowserManager.cpp
│ │ │ ├── TextureBrowserManager.h
│ │ │ ├── TextureBrowserPanel.cpp
│ │ │ ├── TextureBrowserPanel.h
│ │ │ ├── TextureDirectoryBrowser.h
│ │ │ ├── TextureThumbnailBrowser.cpp
│ │ │ └── TextureThumbnailBrowser.h
│ │ ├── toolbar/
│ │ │ ├── ToolbarManager.cpp
│ │ │ └── ToolbarManager.h
│ │ └── transform/
│ │ ├── TransformPanel.cpp
│ │ ├── TransformPanel.h
│ │ └── TransformPanelControl.h
│ └── xyview/
│ ├── GlobalXYWnd.cpp
│ ├── GlobalXYWnd.h
│ ├── OrthoView.cpp
│ ├── OrthoView.h
│ ├── XYRenderer.h
│ └── tools/
│ ├── BrushCreatorTool.cpp
│ ├── BrushCreatorTool.h
│ ├── CameraAngleTool.h
│ ├── CameraMoveTool.h
│ ├── ClipperTool.cpp
│ ├── ClipperTool.h
│ ├── MeasurementTool.cpp
│ ├── MeasurementTool.h
│ ├── MoveViewTool.h
│ ├── PolygonTool.cpp
│ ├── PolygonTool.h
│ ├── XYMouseToolEvent.h
│ └── ZoomTool.h
├── radiantcore/
│ ├── CMakeLists.txt
│ ├── Radiant.cpp
│ ├── Radiant.h
│ ├── brush/
│ │ ├── Brush.cpp
│ │ ├── Brush.h
│ │ ├── BrushClipPlane.h
│ │ ├── BrushModule.cpp
│ │ ├── BrushModule.h
│ │ ├── BrushNode.cpp
│ │ ├── BrushNode.h
│ │ ├── BrushSettings.h
│ │ ├── BrushVisit.h
│ │ ├── EdgeInstance.h
│ │ ├── Face.cpp
│ │ ├── Face.h
│ │ ├── FaceInstance.cpp
│ │ ├── FaceInstance.h
│ │ ├── FacePlane.cpp
│ │ ├── FacePlane.h
│ │ ├── FixedWinding.cpp
│ │ ├── FixedWinding.h
│ │ ├── PlanePoints.h
│ │ ├── RenderableBrushVertices.cpp
│ │ ├── RenderableBrushVertices.h
│ │ ├── RenderableWinding.h
│ │ ├── SelectableComponents.h
│ │ ├── TextureMatrix.cpp
│ │ ├── TextureMatrix.h
│ │ ├── TextureProjection.cpp
│ │ ├── TextureProjection.h
│ │ ├── VertexInstance.h
│ │ ├── VertexSelection.h
│ │ ├── Winding.cpp
│ │ ├── Winding.h
│ │ ├── csg/
│ │ │ ├── CSG.cpp
│ │ │ └── CSG.h
│ │ └── export/
│ │ ├── CollisionModel.cpp
│ │ ├── CollisionModel.h
│ │ └── Geometry.h
│ ├── camera/
│ │ ├── Camera.cpp
│ │ ├── Camera.h
│ │ ├── CameraManager.cpp
│ │ └── CameraManager.h
│ ├── clipper/
│ │ ├── BrushByPlaneClipper.cpp
│ │ ├── BrushByPlaneClipper.h
│ │ ├── ClipPoint.cpp
│ │ ├── ClipPoint.h
│ │ ├── Clipper.cpp
│ │ ├── Clipper.h
│ │ ├── SplitAlgorithm.cpp
│ │ └── SplitAlgorithm.h
│ ├── commandsystem/
│ │ ├── Command.h
│ │ ├── CommandSystem.cpp
│ │ ├── CommandSystem.h
│ │ ├── CommandTokeniser.h
│ │ ├── Executable.h
│ │ └── Statement.h
│ ├── decl/
│ │ ├── DeclarationFile.h
│ │ ├── DeclarationFolderParser.cpp
│ │ ├── DeclarationFolderParser.h
│ │ ├── DeclarationManager.cpp
│ │ ├── DeclarationManager.h
│ │ ├── FavouriteSet.h
│ │ ├── FavouritesManager.cpp
│ │ └── FavouritesManager.h
│ ├── eclass/
│ │ ├── Doom3ModelDef.h
│ │ ├── EClassColourManager.cpp
│ │ ├── EClassColourManager.h
│ │ ├── EClassManager.cpp
│ │ └── EClassManager.h
│ ├── entity/
│ │ ├── AngleKey.cpp
│ │ ├── AngleKey.h
│ │ ├── EntityModule.cpp
│ │ ├── EntityModule.h
│ │ ├── RenderableArrow.cpp
│ │ ├── RenderableArrow.h
│ │ ├── RenderableEntityBox.cpp
│ │ ├── RenderableEntityBox.h
│ │ ├── RotationKey.cpp
│ │ ├── RotationKey.h
│ │ ├── RotationMatrix.cpp
│ │ ├── RotationMatrix.h
│ │ ├── VertexInstance.h
│ │ ├── algorithm/
│ │ │ └── Speaker.h
│ │ ├── curve/
│ │ │ ├── Curve.cpp
│ │ │ ├── Curve.h
│ │ │ ├── CurveCatmullRom.cpp
│ │ │ ├── CurveCatmullRom.h
│ │ │ ├── CurveControlPointFunctors.h
│ │ │ ├── CurveEditInstance.cpp
│ │ │ ├── CurveEditInstance.h
│ │ │ ├── CurveNURBS.cpp
│ │ │ ├── CurveNURBS.h
│ │ │ ├── RenderableCurve.h
│ │ │ └── RenderableCurveVertices.h
│ │ ├── doom3group/
│ │ │ ├── RenderableVertex.h
│ │ │ ├── StaticGeometryNode.cpp
│ │ │ └── StaticGeometryNode.h
│ │ ├── eclassmodel/
│ │ │ ├── EclassModelNode.cpp
│ │ │ └── EclassModelNode.h
│ │ ├── generic/
│ │ │ ├── GenericEntityNode.cpp
│ │ │ └── GenericEntityNode.h
│ │ ├── light/
│ │ │ ├── Doom3LightRadius.h
│ │ │ ├── LightNode.cpp
│ │ │ ├── LightNode.h
│ │ │ ├── LightShader.h
│ │ │ ├── LightVertexInstanceSet.h
│ │ │ ├── Renderables.cpp
│ │ │ └── Renderables.h
│ │ └── speaker/
│ │ ├── SpeakerNode.cpp
│ │ ├── SpeakerNode.h
│ │ ├── SpeakerRenderables.cpp
│ │ └── SpeakerRenderables.h
│ ├── filetypes/
│ │ ├── FileTypeRegistry.cpp
│ │ └── FileTypeRegistry.h
│ ├── filters/
│ │ ├── BasicFilterSystem.cpp
│ │ ├── BasicFilterSystem.h
│ │ ├── InstanceUpdateWalker.h
│ │ ├── SetObjectSelectionByFilterWalker.h
│ │ ├── XmlFilterEventAdapter.cpp
│ │ └── XmlFilterEventAdapter.h
│ ├── fonts/
│ │ ├── FontInfo.h
│ │ ├── FontLoader.cpp
│ │ ├── FontLoader.h
│ │ ├── FontManager.cpp
│ │ ├── FontManager.h
│ │ ├── GlyphInfo.cpp
│ │ ├── GlyphInfo.h
│ │ ├── GlyphSet.cpp
│ │ └── GlyphSet.h
│ ├── fx/
│ │ ├── FxAction.cpp
│ │ ├── FxAction.h
│ │ ├── FxDeclaration.cpp
│ │ ├── FxDeclaration.h
│ │ ├── FxManager.cpp
│ │ └── FxManager.h
│ ├── grid/
│ │ ├── GridItem.h
│ │ ├── GridManager.cpp
│ │ └── GridManager.h
│ ├── imagefile/
│ │ ├── BMPLoader.cpp
│ │ ├── BMPLoader.h
│ │ ├── ImageLoader.cpp
│ │ ├── ImageLoader.h
│ │ ├── ImageTypeLoader.h
│ │ ├── JPEGLoader.cpp
│ │ ├── JPEGLoader.h
│ │ ├── PNGLoader.cpp
│ │ ├── PNGLoader.h
│ │ ├── TGALoader.cpp
│ │ ├── TGALoader.h
│ │ ├── dds.cpp
│ │ ├── dds.h
│ │ ├── ddslib.cpp
│ │ └── ddslib.h
│ ├── layers/
│ │ ├── AddToLayerWalker.h
│ │ ├── LayerInfoFileModule.cpp
│ │ ├── LayerInfoFileModule.h
│ │ ├── LayerManager.cpp
│ │ ├── LayerManager.h
│ │ ├── LayerModule.cpp
│ │ ├── MoveToLayerWalker.h
│ │ ├── RemoveFromLayerWalker.h
│ │ └── SetLayerSelectedWalker.h
│ ├── log/
│ │ ├── COutRedirector.cpp
│ │ ├── COutRedirector.h
│ │ ├── LogFile.cpp
│ │ ├── LogFile.h
│ │ ├── LogStream.cpp
│ │ ├── LogStream.h
│ │ ├── LogStreamBuf.cpp
│ │ ├── LogStreamBuf.h
│ │ ├── LogWriter.cpp
│ │ ├── LogWriter.h
│ │ ├── SegFaultHandler.cpp
│ │ ├── SegFaultHandler.h
│ │ ├── StringLogDevice.cpp
│ │ └── StringLogDevice.h
│ ├── map/
│ │ ├── ArchivedMapResource.cpp
│ │ ├── ArchivedMapResource.h
│ │ ├── CounterManager.cpp
│ │ ├── CounterManager.h
│ │ ├── EditingStopwatch.cpp
│ │ ├── EditingStopwatch.h
│ │ ├── EditingStopwatchInfoFileModule.cpp
│ │ ├── EditingStopwatchInfoFileModule.h
│ │ ├── Map.cpp
│ │ ├── Map.h
│ │ ├── MapFileManager.cpp
│ │ ├── MapFileManager.h
│ │ ├── MapModules.cpp
│ │ ├── MapPosition.cpp
│ │ ├── MapPosition.h
│ │ ├── MapPositionManager.cpp
│ │ ├── MapPositionManager.h
│ │ ├── MapPropertyInfoFileModule.cpp
│ │ ├── MapPropertyInfoFileModule.h
│ │ ├── MapResource.cpp
│ │ ├── MapResource.h
│ │ ├── MapResourceLoader.cpp
│ │ ├── MapResourceLoader.h
│ │ ├── MapResourceManager.cpp
│ │ ├── MapResourceManager.h
│ │ ├── NodeCounter.h
│ │ ├── PointFile.cpp
│ │ ├── PointFile.h
│ │ ├── RegionManager.cpp
│ │ ├── RegionManager.h
│ │ ├── RegionWalkers.h
│ │ ├── RenderablePointFile.h
│ │ ├── RootNode.cpp
│ │ ├── RootNode.h
│ │ ├── VcsMapResource.cpp
│ │ ├── VcsMapResource.h
│ │ ├── aas/
│ │ │ ├── AasFileManager.cpp
│ │ │ ├── AasFileManager.h
│ │ │ ├── Doom3AasFile.cpp
│ │ │ ├── Doom3AasFile.h
│ │ │ ├── Doom3AasFileLoader.cpp
│ │ │ ├── Doom3AasFileLoader.h
│ │ │ ├── Doom3AasFileSettings.cpp
│ │ │ ├── Doom3AasFileSettings.h
│ │ │ └── Util.h
│ │ ├── algorithm/
│ │ │ ├── Export.cpp
│ │ │ ├── Export.h
│ │ │ ├── Import.cpp
│ │ │ ├── Import.h
│ │ │ ├── MapExporter.cpp
│ │ │ ├── MapExporter.h
│ │ │ ├── MapImporter.cpp
│ │ │ ├── MapImporter.h
│ │ │ ├── Models.cpp
│ │ │ └── Models.h
│ │ ├── autosaver/
│ │ │ ├── AutoSaver.cpp
│ │ │ └── AutoSaver.h
│ │ ├── format/
│ │ │ ├── Doom3MapFormat.cpp
│ │ │ ├── Doom3MapFormat.h
│ │ │ ├── Doom3MapReader.cpp
│ │ │ ├── Doom3MapReader.h
│ │ │ ├── Doom3MapWriter.cpp
│ │ │ ├── Doom3MapWriter.h
│ │ │ ├── Doom3PrefabFormat.cpp
│ │ │ ├── Doom3PrefabFormat.h
│ │ │ ├── MapFormatManager.cpp
│ │ │ ├── MapFormatManager.h
│ │ │ ├── Quake3MapFormat.cpp
│ │ │ ├── Quake3MapFormat.h
│ │ │ ├── Quake3MapReader.cpp
│ │ │ ├── Quake3MapReader.h
│ │ │ ├── Quake3MapWriter.h
│ │ │ ├── Quake3Utils.h
│ │ │ ├── Quake4MapFormat.cpp
│ │ │ ├── Quake4MapFormat.h
│ │ │ ├── Quake4MapReader.cpp
│ │ │ ├── Quake4MapReader.h
│ │ │ ├── Quake4MapWriter.h
│ │ │ ├── portable/
│ │ │ │ ├── Constants.h
│ │ │ │ ├── PortableMapFormat.cpp
│ │ │ │ ├── PortableMapFormat.h
│ │ │ │ ├── PortableMapReader.cpp
│ │ │ │ ├── PortableMapReader.h
│ │ │ │ ├── PortableMapWriter.cpp
│ │ │ │ └── PortableMapWriter.h
│ │ │ ├── primitiveparsers/
│ │ │ │ ├── BrushDef.cpp
│ │ │ │ ├── BrushDef.h
│ │ │ │ ├── BrushDef3.cpp
│ │ │ │ ├── BrushDef3.h
│ │ │ │ ├── Patch.cpp
│ │ │ │ ├── Patch.h
│ │ │ │ ├── PatchDef2.cpp
│ │ │ │ ├── PatchDef2.h
│ │ │ │ ├── PatchDef3.cpp
│ │ │ │ └── PatchDef3.h
│ │ │ └── primitivewriters/
│ │ │ ├── BrushDef3Exporter.h
│ │ │ ├── BrushDefExporter.h
│ │ │ ├── ExportUtil.h
│ │ │ ├── LegacyBrushDefExporter.h
│ │ │ └── PatchDefExporter.h
│ │ ├── infofile/
│ │ │ ├── InfoFile.cpp
│ │ │ ├── InfoFile.h
│ │ │ ├── InfoFileExporter.cpp
│ │ │ ├── InfoFileExporter.h
│ │ │ ├── InfoFileManager.cpp
│ │ │ └── InfoFileManager.h
│ │ ├── mru/
│ │ │ ├── MRU.cpp
│ │ │ ├── MRU.h
│ │ │ └── MRUList.h
│ │ └── namespace/
│ │ ├── ComplexName.cpp
│ │ ├── ComplexName.h
│ │ ├── Namespace.cpp
│ │ ├── Namespace.h
│ │ ├── NamespaceFactory.cpp
│ │ ├── NamespaceFactory.h
│ │ └── UniqueNameSet.h
│ ├── messagebus/
│ │ └── MessageBus.h
│ ├── model/
│ │ ├── IndexedBoxSurface.h
│ │ ├── ModelCache.cpp
│ │ ├── ModelCache.h
│ │ ├── ModelFormatManager.cpp
│ │ ├── ModelFormatManager.h
│ │ ├── ModelNodeBase.cpp
│ │ ├── ModelNodeBase.h
│ │ ├── NullModel.cpp
│ │ ├── NullModel.h
│ │ ├── NullModelBoxSurface.h
│ │ ├── NullModelLoader.h
│ │ ├── NullModelNode.cpp
│ │ ├── NullModelNode.h
│ │ ├── RenderableModelSurface.h
│ │ ├── StaticModel.cpp
│ │ ├── StaticModel.h
│ │ ├── StaticModelNode.cpp
│ │ ├── StaticModelNode.h
│ │ ├── StaticModelSurface.cpp
│ │ ├── StaticModelSurface.h
│ │ ├── export/
│ │ │ ├── AseExporter.cpp
│ │ │ ├── AseExporter.h
│ │ │ ├── Lwo2Chunk.cpp
│ │ │ ├── Lwo2Chunk.h
│ │ │ ├── Lwo2Exporter.cpp
│ │ │ ├── Lwo2Exporter.h
│ │ │ ├── ModelExporter.cpp
│ │ │ ├── ModelExporter.h
│ │ │ ├── ModelExporterBase.h
│ │ │ ├── ModelScalePreserver.cpp
│ │ │ ├── ModelScalePreserver.h
│ │ │ ├── PatchSurface.cpp
│ │ │ ├── PatchSurface.h
│ │ │ ├── ScaledModelExporter.cpp
│ │ │ ├── ScaledModelExporter.h
│ │ │ ├── WavefrontExporter.cpp
│ │ │ └── WavefrontExporter.h
│ │ ├── import/
│ │ │ ├── AseModel.cpp
│ │ │ ├── AseModel.h
│ │ │ ├── AseModelLoader.cpp
│ │ │ ├── AseModelLoader.h
│ │ │ ├── FbxModelLoader.cpp
│ │ │ ├── FbxModelLoader.h
│ │ │ ├── FbxSurface.h
│ │ │ ├── ModelImporterBase.cpp
│ │ │ ├── ModelImporterBase.h
│ │ │ └── openfbx/
│ │ │ ├── LICENSE
│ │ │ ├── ofbx.cpp
│ │ │ └── ofbx.h
│ │ ├── md5/
│ │ │ ├── MD5Anim.cpp
│ │ │ ├── MD5Anim.h
│ │ │ ├── MD5AnimationCache.cpp
│ │ │ ├── MD5AnimationCache.h
│ │ │ ├── MD5DataStructures.h
│ │ │ ├── MD5Model.cpp
│ │ │ ├── MD5Model.h
│ │ │ ├── MD5ModelLoader.cpp
│ │ │ ├── MD5ModelLoader.h
│ │ │ ├── MD5ModelNode.cpp
│ │ │ ├── MD5ModelNode.h
│ │ │ ├── MD5Module.cpp
│ │ │ ├── MD5Skeleton.cpp
│ │ │ ├── MD5Skeleton.h
│ │ │ ├── MD5Surface.cpp
│ │ │ ├── MD5Surface.h
│ │ │ └── RenderableMD5Skeleton.h
│ │ └── picomodel/
│ │ ├── PicoModelLoader.cpp
│ │ ├── PicoModelLoader.h
│ │ ├── PicoModelModule.cpp
│ │ ├── PicoModelModule.h
│ │ └── lib/
│ │ ├── lwo/
│ │ │ ├── clip.c
│ │ │ ├── envelope.c
│ │ │ ├── list.c
│ │ │ ├── lwio.c
│ │ │ ├── lwo2.c
│ │ │ ├── lwo2.h
│ │ │ ├── lwob.c
│ │ │ ├── pntspols.c
│ │ │ ├── surface.c
│ │ │ ├── vecmath.c
│ │ │ └── vmap.c
│ │ ├── picointernal.c
│ │ ├── picointernal.h
│ │ ├── picomodel.c
│ │ ├── picomodel.h
│ │ ├── picomodules.c
│ │ ├── pm_3ds.c
│ │ ├── pm_fm.c
│ │ ├── pm_fm.h
│ │ ├── pm_fm.h.orig
│ │ ├── pm_iqm.c
│ │ ├── pm_lwo.c
│ │ ├── pm_md2.c
│ │ ├── pm_md3.c
│ │ ├── pm_mdc.c
│ │ ├── pm_ms3d.c
│ │ ├── pm_obj.c
│ │ └── pm_terrain.c
│ ├── modulesystem/
│ │ ├── ModuleLoader.cpp
│ │ ├── ModuleLoader.h
│ │ ├── ModuleRegistry.cpp
│ │ └── ModuleRegistry.h
│ ├── particles/
│ │ ├── ParticleDef.cpp
│ │ ├── ParticleDef.h
│ │ ├── ParticleNode.cpp
│ │ ├── ParticleNode.h
│ │ ├── ParticleParameter.cpp
│ │ ├── ParticleParameter.h
│ │ ├── ParticleQuad.h
│ │ ├── ParticleRenderInfo.h
│ │ ├── ParticlesManager.cpp
│ │ ├── ParticlesManager.h
│ │ ├── RenderableParticle.cpp
│ │ ├── RenderableParticle.h
│ │ ├── RenderableParticleBunch.cpp
│ │ ├── RenderableParticleBunch.h
│ │ ├── RenderableParticleStage.cpp
│ │ ├── RenderableParticleStage.h
│ │ ├── StageDef.cpp
│ │ └── StageDef.h
│ ├── patch/
│ │ ├── Patch.cpp
│ │ ├── Patch.h
│ │ ├── PatchConstants.h
│ │ ├── PatchControl.h
│ │ ├── PatchControlInstance.h
│ │ ├── PatchModule.cpp
│ │ ├── PatchModule.h
│ │ ├── PatchNode.cpp
│ │ ├── PatchNode.h
│ │ ├── PatchRenderables.cpp
│ │ ├── PatchRenderables.h
│ │ ├── PatchSavedState.h
│ │ ├── PatchSettings.h
│ │ ├── PatchTesselation.cpp
│ │ ├── PatchTesselation.h
│ │ └── algorithm/
│ │ ├── General.cpp
│ │ ├── General.h
│ │ ├── Prefab.cpp
│ │ └── Prefab.h
│ ├── precompiled.cpp
│ ├── precompiled.h
│ ├── rendersystem/
│ │ ├── GLFont.cpp
│ │ ├── GLFont.h
│ │ ├── OpenGLModule.cpp
│ │ ├── OpenGLModule.h
│ │ ├── OpenGLRenderSystem.cpp
│ │ ├── OpenGLRenderSystem.h
│ │ ├── RenderSystemFactory.cpp
│ │ ├── RenderSystemFactory.h
│ │ ├── SharedOpenGLContextModule.cpp
│ │ ├── SharedOpenGLContextModule.h
│ │ ├── backend/
│ │ │ ├── BlendLight.cpp
│ │ │ ├── BlendLight.h
│ │ │ ├── BufferObjectProvider.h
│ │ │ ├── BuiltInShader.cpp
│ │ │ ├── BuiltInShader.h
│ │ │ ├── ColourShader.cpp
│ │ │ ├── ColourShader.h
│ │ │ ├── DepthFillPass.cpp
│ │ │ ├── DepthFillPass.h
│ │ │ ├── FenceSyncProvider.h
│ │ │ ├── FrameBuffer.h
│ │ │ ├── FullBrightRenderer.cpp
│ │ │ ├── FullBrightRenderer.h
│ │ │ ├── GLProgramFactory.cpp
│ │ │ ├── GLProgramFactory.h
│ │ │ ├── GeometryRenderer.h
│ │ │ ├── InteractionPass.cpp
│ │ │ ├── InteractionPass.h
│ │ │ ├── LightingModeRenderResult.h
│ │ │ ├── LightingModeRenderer.cpp
│ │ │ ├── LightingModeRenderer.h
│ │ │ ├── ObjectRenderer.cpp
│ │ │ ├── ObjectRenderer.h
│ │ │ ├── OpenGLShader.cpp
│ │ │ ├── OpenGLShader.h
│ │ │ ├── OpenGLShaderPass.cpp
│ │ │ ├── OpenGLShaderPass.h
│ │ │ ├── OpenGLState.h
│ │ │ ├── OpenGLStateLess.h
│ │ │ ├── OpenGLStateManager.h
│ │ │ ├── RegularLight.cpp
│ │ │ ├── RegularLight.h
│ │ │ ├── SceneRenderer.cpp
│ │ │ ├── SceneRenderer.h
│ │ │ ├── SurfaceRenderer.h
│ │ │ ├── TextRenderer.h
│ │ │ └── glprogram/
│ │ │ ├── BlendLightProgram.cpp
│ │ │ ├── BlendLightProgram.h
│ │ │ ├── CubeMapProgram.cpp
│ │ │ ├── CubeMapProgram.h
│ │ │ ├── DepthFillAlphaProgram.cpp
│ │ │ ├── DepthFillAlphaProgram.h
│ │ │ ├── GLSLProgramBase.cpp
│ │ │ ├── GLSLProgramBase.h
│ │ │ ├── GenericVFPProgram.cpp
│ │ │ ├── GenericVFPProgram.h
│ │ │ ├── InteractionProgram.cpp
│ │ │ ├── InteractionProgram.h
│ │ │ ├── RegularStageProgram.cpp
│ │ │ ├── RegularStageProgram.h
│ │ │ ├── ShadowMapProgram.cpp
│ │ │ └── ShadowMapProgram.h
│ │ └── debug/
│ │ ├── SpacePartitionRenderer.cpp
│ │ └── SpacePartitionRenderer.h
│ ├── scenegraph/
│ │ ├── Octree.cpp
│ │ ├── Octree.h
│ │ ├── OctreeNode.h
│ │ ├── SceneGraph.cpp
│ │ ├── SceneGraph.h
│ │ ├── SceneGraphFactory.cpp
│ │ └── SceneGraphFactory.h
│ ├── selection/
│ │ ├── BasicSelectable.h
│ │ ├── BestSelector.h
│ │ ├── ManipulationPivot.cpp
│ │ ├── ManipulationPivot.h
│ │ ├── RadiantSelectionSystem.cpp
│ │ ├── RadiantSelectionSystem.h
│ │ ├── SceneManipulationPivot.cpp
│ │ ├── SceneManipulationPivot.h
│ │ ├── SceneSelectionTesters.cpp
│ │ ├── SceneSelectionTesters.h
│ │ ├── SceneWalkers.h
│ │ ├── SelectedNodeList.cpp
│ │ ├── SelectedNodeList.h
│ │ ├── SelectionTestWalkers.cpp
│ │ ├── SelectionTestWalkers.h
│ │ ├── TransformationVisitors.cpp
│ │ ├── TransformationVisitors.h
│ │ ├── algorithm/
│ │ │ ├── Curves.cpp
│ │ │ ├── Curves.h
│ │ │ ├── Entity.cpp
│ │ │ ├── Entity.h
│ │ │ ├── General.cpp
│ │ │ ├── General.h
│ │ │ ├── Group.cpp
│ │ │ ├── Group.h
│ │ │ ├── GroupCycle.cpp
│ │ │ ├── GroupCycle.h
│ │ │ ├── Patch.cpp
│ │ │ ├── Patch.h
│ │ │ ├── Planes.cpp
│ │ │ ├── Planes.h
│ │ │ ├── Primitives.cpp
│ │ │ ├── Primitives.h
│ │ │ ├── SelectionPolicies.h
│ │ │ ├── Shader.cpp
│ │ │ ├── Shader.h
│ │ │ ├── Texturing.cpp
│ │ │ ├── Texturing.h
│ │ │ ├── Transformation.cpp
│ │ │ └── Transformation.h
│ │ ├── clipboard/
│ │ │ ├── Clipboard.cpp
│ │ │ └── Clipboard.h
│ │ ├── group/
│ │ │ ├── SelectionGroup.h
│ │ │ ├── SelectionGroupInfoFileModule.cpp
│ │ │ ├── SelectionGroupInfoFileModule.h
│ │ │ ├── SelectionGroupManager.cpp
│ │ │ ├── SelectionGroupManager.h
│ │ │ └── SelectionGroupModule.cpp
│ │ ├── manipulators/
│ │ │ ├── ClipManipulator.h
│ │ │ ├── DragManipulator.cpp
│ │ │ ├── DragManipulator.h
│ │ │ ├── ManipulatorBase.cpp
│ │ │ ├── ManipulatorBase.h
│ │ │ ├── ManipulatorComponents.cpp
│ │ │ ├── ManipulatorComponents.h
│ │ │ ├── ModelScaleManipulator.cpp
│ │ │ ├── ModelScaleManipulator.h
│ │ │ ├── Renderables.h
│ │ │ ├── RotateManipulator.cpp
│ │ │ ├── RotateManipulator.h
│ │ │ ├── TranslateManipulator.cpp
│ │ │ └── TranslateManipulator.h
│ │ ├── selectionset/
│ │ │ ├── SelectionSet.cpp
│ │ │ ├── SelectionSet.h
│ │ │ ├── SelectionSetInfoFileModule.cpp
│ │ │ ├── SelectionSetInfoFileModule.h
│ │ │ ├── SelectionSetManager.cpp
│ │ │ ├── SelectionSetManager.h
│ │ │ └── SelectionSetModule.cpp
│ │ ├── shaderclipboard/
│ │ │ ├── ClosestTexturableFinder.cpp
│ │ │ ├── ClosestTexturableFinder.h
│ │ │ ├── ShaderClipboard.cpp
│ │ │ ├── ShaderClipboard.h
│ │ │ ├── Texturable.cpp
│ │ │ └── Texturable.h
│ │ └── textool/
│ │ ├── ColourSchemeManager.cpp
│ │ ├── FaceNode.cpp
│ │ ├── FaceNode.h
│ │ ├── Node.cpp
│ │ ├── Node.h
│ │ ├── PatchNode.cpp
│ │ ├── PatchNode.h
│ │ ├── SelectableVertex.h
│ │ ├── TextureToolDragManipulator.cpp
│ │ ├── TextureToolDragManipulator.h
│ │ ├── TextureToolManipulationPivot.cpp
│ │ ├── TextureToolManipulationPivot.h
│ │ ├── TextureToolRotateManipulator.cpp
│ │ ├── TextureToolRotateManipulator.h
│ │ ├── TextureToolSceneGraph.cpp
│ │ ├── TextureToolSceneGraph.h
│ │ ├── TextureToolSelectionSystem.cpp
│ │ └── TextureToolSelectionSystem.h
│ ├── settings/
│ │ ├── ColourScheme.cpp
│ │ ├── ColourScheme.h
│ │ ├── ColourSchemeManager.cpp
│ │ ├── ColourSchemeManager.h
│ │ ├── Game.cpp
│ │ ├── Game.h
│ │ ├── GameManager.cpp
│ │ ├── GameManager.h
│ │ ├── LanguageManager.cpp
│ │ ├── LanguageManager.h
│ │ ├── PreferenceItemBase.h
│ │ ├── PreferenceItems.h
│ │ ├── PreferencePage.cpp
│ │ ├── PreferencePage.h
│ │ ├── PreferenceSystem.cpp
│ │ └── PreferenceSystem.h
│ ├── shaders/
│ │ ├── CShader.cpp
│ │ ├── CShader.h
│ │ ├── CameraCubeMapDecl.cpp
│ │ ├── CameraCubeMapDecl.h
│ │ ├── Doom3ShaderLayer.cpp
│ │ ├── Doom3ShaderLayer.h
│ │ ├── ExpressionSlots.cpp
│ │ ├── ExpressionSlots.h
│ │ ├── MapExpression.cpp
│ │ ├── MapExpression.h
│ │ ├── MaterialManager.cpp
│ │ ├── MaterialManager.h
│ │ ├── MaterialSourceGenerator.cpp
│ │ ├── MaterialSourceGenerator.h
│ │ ├── ShaderLibrary.cpp
│ │ ├── ShaderLibrary.h
│ │ ├── ShaderTemplate.cpp
│ │ ├── ShaderTemplate.h
│ │ ├── SoundMapExpression.h
│ │ ├── TableDefinition.cpp
│ │ ├── TableDefinition.h
│ │ ├── TextureMatrix.cpp
│ │ ├── TextureMatrix.h
│ │ ├── VideoMapExpression.h
│ │ └── textures/
│ │ ├── CubeMapTexture.h
│ │ ├── GLTextureManager.cpp
│ │ └── GLTextureManager.h
│ ├── skins/
│ │ ├── Doom3ModelSkin.cpp
│ │ ├── Doom3ModelSkin.h
│ │ ├── Doom3SkinCache.cpp
│ │ └── Doom3SkinCache.h
│ ├── undo/
│ │ ├── Operation.h
│ │ ├── Stack.h
│ │ ├── StackFiller.h
│ │ ├── UndoSystem.cpp
│ │ ├── UndoSystem.h
│ │ └── UndoSystemFactory.cpp
│ ├── versioncontrol/
│ │ ├── VersionControlManager.cpp
│ │ └── VersionControlManager.h
│ ├── vfs/
│ │ ├── AssetsList.h
│ │ ├── DeflatedArchiveFile.h
│ │ ├── DeflatedArchiveTextFile.h
│ │ ├── DeflatedInputStream.cpp
│ │ ├── DeflatedInputStream.h
│ │ ├── DirectoryArchive.cpp
│ │ ├── DirectoryArchive.h
│ │ ├── DirectoryArchiveTextFile.h
│ │ ├── Doom3FileSystem.cpp
│ │ ├── Doom3FileSystem.h
│ │ ├── FileVisitor.h
│ │ ├── GenericFileSystem.h
│ │ ├── SortedFilenames.h
│ │ ├── StoredArchiveFile.h
│ │ ├── StoredArchiveTextFile.h
│ │ ├── UnixPath.h
│ │ ├── ZipArchive.cpp
│ │ ├── ZipArchive.h
│ │ └── ZipStreamUtils.h
│ └── xmlregistry/
│ ├── RegistryTree.cpp
│ ├── RegistryTree.h
│ ├── XMLRegistry.cpp
│ └── XMLRegistry.h
├── test/
│ ├── Basic.cpp
│ ├── Brush.cpp
│ ├── CMakeLists.txt
│ ├── CSG.cpp
│ ├── Camera.cpp
│ ├── Clipboard.cpp
│ ├── CodeTokeniser.cpp
│ ├── ColourSchemes.cpp
│ ├── CommandSystem.cpp
│ ├── ContinuousBuffer.cpp
│ ├── Curves.cpp
│ ├── DeclManager.cpp
│ ├── DefBlockSyntaxParser.cpp
│ ├── DefTokenisers.cpp
│ ├── Entity.cpp
│ ├── EntityClass.cpp
│ ├── EntityInspector.cpp
│ ├── FakeClipboardModule.h
│ ├── Favourites.cpp
│ ├── FileTypes.cpp
│ ├── Filters.cpp
│ ├── Fx.cpp
│ ├── Game.cpp
│ ├── GeometryStore.cpp
│ ├── Grid.cpp
│ ├── HeadlessOpenGLContext.cpp
│ ├── HeadlessOpenGLContext.h
│ ├── ImageLoading.cpp
│ ├── LayerManipulation.cpp
│ ├── MapExport.cpp
│ ├── MapMerging.cpp
│ ├── MapSavingLoading.cpp
│ ├── MaterialExport.cpp
│ ├── Materials.cpp
│ ├── MessageBus.cpp
│ ├── ModelExport.cpp
│ ├── ModelScale.cpp
│ ├── Models.cpp
│ ├── Particles.cpp
│ ├── Patch.cpp
│ ├── PatchIterators.cpp
│ ├── PatchWelding.cpp
│ ├── PointTrace.cpp
│ ├── Prefabs.cpp
│ ├── RadiantTest.h
│ ├── Registry.cpp
│ ├── Renderer.cpp
│ ├── SceneNode.cpp
│ ├── SceneStatistics.cpp
│ ├── Selection.cpp
│ ├── SelectionAlgorithm.cpp
│ ├── SelectionGroup.cpp
│ ├── Settings.cpp
│ ├── Skin.cpp
│ ├── SoundManager.cpp
│ ├── TdmMissionSetup.h
│ ├── TerrainGenerator.cpp
│ ├── TestContext.h
│ ├── TestLogFile.h
│ ├── TestOrthoViewManager.cpp
│ ├── TestOrthoViewManager.h
│ ├── TextureManipulation.cpp
│ ├── TextureTool.cpp
│ ├── Transformation.cpp
│ ├── TrimTool.cpp
│ ├── UndoRedo.cpp
│ ├── VFS.cpp
│ ├── WindingRendering.cpp
│ ├── WorldspawnColour.cpp
│ ├── XmlUtil.cpp
│ ├── algorithm/
│ │ ├── Entity.h
│ │ ├── FileUtils.h
│ │ ├── Primitives.h
│ │ ├── Scene.h
│ │ ├── Selection.h
│ │ ├── View.h
│ │ └── XmlUtils.h
│ ├── math/
│ │ ├── Matrix3.cpp
│ │ ├── Matrix4.cpp
│ │ ├── MatrixUtils.h
│ │ ├── Plane3.cpp
│ │ ├── Quaternion.cpp
│ │ └── Vector.cpp
│ ├── precompiled.cpp
│ ├── precompiled.h
│ ├── resources/
│ │ ├── fbx/
│ │ │ └── test_cube.fbx
│ │ ├── map_loading_test.pk4
│ │ ├── settings/
│ │ │ ├── colours_incomplete.xml
│ │ │ ├── colours_userdefined.xml
│ │ │ └── old_favourites.xml
│ │ ├── tdm/
│ │ │ ├── altar.pk4
│ │ │ ├── def/
│ │ │ │ ├── attribute_types.def
│ │ │ │ ├── base.def
│ │ │ │ ├── bucket.def
│ │ │ │ ├── entity_with_model.def
│ │ │ │ ├── func.def
│ │ │ │ ├── gameplay.def
│ │ │ │ ├── lights.def
│ │ │ │ ├── lights_static.def
│ │ │ │ ├── moveable.def
│ │ │ │ ├── mover_door.def
│ │ │ │ ├── player.def
│ │ │ │ ├── skinned_models.def
│ │ │ │ ├── speaker.def
│ │ │ │ ├── tdm_ai.def
│ │ │ │ └── tdm_frobable.def
│ │ │ ├── fx/
│ │ │ │ └── parsertest.fx
│ │ │ ├── guis/
│ │ │ │ ├── parse_test2.gui
│ │ │ │ └── parse_test_include2.guicode
│ │ │ ├── lights/
│ │ │ │ ├── squarelight1_amb.tga
│ │ │ │ └── squarelight1a.tga
│ │ │ ├── maps/
│ │ │ │ ├── ALTAr.lin
│ │ │ │ ├── altar.darkradiant
│ │ │ │ ├── altar_portalL_544_64_112.lin
│ │ │ │ ├── fingerprinting.mapx
│ │ │ │ ├── fingerprinting_2.mapx
│ │ │ │ ├── general_purpose.mapx
│ │ │ │ ├── layer_hierarchy_restore.darkradiant
│ │ │ │ ├── layer_hierarchy_restore.mapx
│ │ │ │ ├── merging_groups_1.mapx
│ │ │ │ ├── merging_groups_2.mapx
│ │ │ │ ├── merging_groups_3.mapx
│ │ │ │ ├── merging_groups_4.mapx
│ │ │ │ ├── merging_groups_5.mapx
│ │ │ │ ├── merging_groups_6.mapx
│ │ │ │ ├── merging_layers_1.mapx
│ │ │ │ ├── merging_layers_2.mapx
│ │ │ │ ├── merging_layers_3.mapx
│ │ │ │ ├── merging_layers_4.mapx
│ │ │ │ ├── merging_layers_5.mapx
│ │ │ │ ├── patch_cap_test.mapx
│ │ │ │ ├── selecting_filtered_items_with_layers.mapx
│ │ │ │ ├── threeway_merge_base.mapx
│ │ │ │ ├── threeway_merge_groups_base.mapx
│ │ │ │ ├── threeway_merge_groups_source_1.mapx
│ │ │ │ ├── threeway_merge_groups_target_1.mapx
│ │ │ │ ├── threeway_merge_layers_source_1.mapx
│ │ │ │ ├── threeway_merge_layers_target_1.mapx
│ │ │ │ ├── threeway_merge_source_1.mapx
│ │ │ │ ├── threeway_merge_source_2.mapx
│ │ │ │ ├── threeway_merge_target_1.mapx
│ │ │ │ ├── threeway_merge_target_2.mapx
│ │ │ │ ├── twosided_ivy.mapx
│ │ │ │ ├── weld_patches.mapx
│ │ │ │ └── weld_patches2.mapx
│ │ │ ├── materials/
│ │ │ │ ├── assets.lst
│ │ │ │ ├── example.mtr
│ │ │ │ ├── exporttest.mtr
│ │ │ │ ├── frobstage.mtr
│ │ │ │ ├── hidden.mtr
│ │ │ │ ├── lights.mtr
│ │ │ │ ├── null_byte_at_the_end.mtr
│ │ │ │ ├── numbers.mtr
│ │ │ │ ├── parsertest.mtr
│ │ │ │ ├── parsing_test.mtr
│ │ │ │ ├── pngs.mtr
│ │ │ │ ├── tables.mtr
│ │ │ │ ├── tdm_internal_engine.mtr
│ │ │ │ ├── twosided.mtr
│ │ │ │ └── z_precedence.mtr
│ │ │ ├── models/
│ │ │ │ ├── ase/
│ │ │ │ │ ├── exploded_cube.ase
│ │ │ │ │ ├── gauge_needle.ase
│ │ │ │ │ ├── merged_cube.ase
│ │ │ │ │ ├── separated_tiles.ase
│ │ │ │ │ ├── single_triangle.ase
│ │ │ │ │ ├── testcube.ase
│ │ │ │ │ ├── testcube_no_ab_bc_ca_in_mesh_face.ase
│ │ │ │ │ ├── testcube_no_smoothing_in_mesh_face.ase
│ │ │ │ │ ├── testcube_uv_angle.ase
│ │ │ │ │ ├── testcube_uv_offset.ase
│ │ │ │ │ ├── testcube_uv_tiling.ase
│ │ │ │ │ ├── testcube_without_material_ref.ase
│ │ │ │ │ ├── testsphere.ase
│ │ │ │ │ ├── tiles.ase
│ │ │ │ │ ├── tiles_two_materials.ase
│ │ │ │ │ ├── tiles_with_shared_vertex.ase
│ │ │ │ │ └── tiles_with_shared_vertex_and_colour.ase
│ │ │ │ ├── cube_with_usemtl.obj
│ │ │ │ ├── md5/
│ │ │ │ │ ├── flag01.md5mesh
│ │ │ │ │ ├── test_v11.md5mesh
│ │ │ │ │ ├── test_v12.md5mesh
│ │ │ │ │ └── testflag.md5mesh
│ │ │ │ ├── missing_texture.ase
│ │ │ │ ├── moss_patch.ase
│ │ │ │ ├── torch.lwo
│ │ │ │ └── twosided_ivy.lwo
│ │ │ ├── particles/
│ │ │ │ ├── assets.lst
│ │ │ │ ├── hiddenparticles.prt
│ │ │ │ ├── testparticles.prt
│ │ │ │ └── z_precedence.prt
│ │ │ ├── prefabs/
│ │ │ │ └── large_bounds.pfbx
│ │ │ ├── skins/
│ │ │ │ ├── selection_test.skin
│ │ │ │ └── test_skins.skin
│ │ │ ├── sound/
│ │ │ │ ├── assets.lst
│ │ │ │ ├── hidden.sndshd
│ │ │ │ ├── parsing_test.sndshd
│ │ │ │ └── test/
│ │ │ │ └── jorge.ogg
│ │ │ ├── tdm_example_mtrs.pk4
│ │ │ ├── test_decls.pk4
│ │ │ ├── test_models.pk4
│ │ │ ├── test_particles.pk4
│ │ │ ├── testdecls/
│ │ │ │ ├── exporttest.decl
│ │ │ │ ├── numbers.decl
│ │ │ │ ├── precedence_test1.decl
│ │ │ │ ├── precedence_test2.decl
│ │ │ │ ├── removal_tests.decl
│ │ │ │ ├── syntax_parser_test1.decl
│ │ │ │ ├── syntax_parser_test2.decl
│ │ │ │ └── syntax_parser_test3.decl
│ │ │ └── textures/
│ │ │ ├── a_1024x512.tga
│ │ │ ├── dds/
│ │ │ │ ├── not_a_dds.dds
│ │ │ │ ├── test_10x16_uncomp.dds
│ │ │ │ ├── test_128x128_dxt1.dds
│ │ │ │ ├── test_16x16_bc5.dds
│ │ │ │ ├── test_16x16_uncomp.dds
│ │ │ │ ├── test_16x16_uncomp_mips.dds
│ │ │ │ ├── test_60x128_dxt5.dds
│ │ │ │ └── test_60x128_dxt5_mips.dds
│ │ │ └── numbers/
│ │ │ ├── 0.tga
│ │ │ ├── 1.tga
│ │ │ ├── 10.tga
│ │ │ ├── 11.tga
│ │ │ ├── 12.tga
│ │ │ ├── 13.tga
│ │ │ ├── 14.tga
│ │ │ ├── 15.tga
│ │ │ ├── 16.tga
│ │ │ ├── 17.tga
│ │ │ ├── 18.tga
│ │ │ ├── 19.tga
│ │ │ ├── 2.tga
│ │ │ ├── 20.tga
│ │ │ ├── 21.tga
│ │ │ ├── 22.tga
│ │ │ ├── 23.tga
│ │ │ ├── 24.tga
│ │ │ ├── 25.tga
│ │ │ ├── 26.tga
│ │ │ ├── 27.tga
│ │ │ ├── 28.tga
│ │ │ ├── 29.tga
│ │ │ ├── 3.tga
│ │ │ ├── 30.tga
│ │ │ ├── 31.tga
│ │ │ ├── 32.tga
│ │ │ ├── 4.tga
│ │ │ ├── 5.tga
│ │ │ ├── 6.tga
│ │ │ ├── 7.tga
│ │ │ ├── 8.tga
│ │ │ └── 9.tga
│ │ └── xml/
│ │ ├── broken_file.xml
│ │ ├── darkmod.game
│ │ ├── input.xml
│ │ └── testfile.xml
│ └── testutil/
│ ├── CommandFailureHelper.h
│ ├── FileSaveConfirmationHelper.h
│ ├── FileSelectionHelper.h
│ ├── MapOperationMonitor.h
│ ├── RenderUtils.h
│ ├── TemporaryFile.h
│ ├── TestBufferObjectProvider.h
│ ├── TestObjectRenderer.h
│ ├── TestSyncObjectProvider.h
│ └── ThreadUtils.h
└── tools/
├── DependencyCheck/
│ ├── DependencyCheck.vcxproj
│ └── DependencyCheck.vcxproj.filters
├── i18n/
│ ├── build_pot.py
│ └── darkradiant.pot
├── innosetup/
│ └── darkradiant.x64.iss
├── msvc/
│ ├── DarkRadiant.vcxproj
│ ├── DarkRadiant.vcxproj.filters
│ ├── DarkRadiantCore.vcxproj
│ ├── DarkRadiantCore.vcxproj.filters
│ ├── Tests/
│ │ ├── Tests.vcxproj
│ │ ├── Tests.vcxproj.filters
│ │ └── packages.config
│ ├── dm.conversation.vcxproj
│ ├── dm.conversation.vcxproj.filters
│ ├── dm.difficulty.vcxproj
│ ├── dm.difficulty.vcxproj.filters
│ ├── dm.editing.vcxproj
│ ├── dm.editing.vcxproj.filters
│ ├── dm.gameconnection.vcxproj
│ ├── dm.gameconnection.vcxproj.filters
│ ├── dm.gui.vcxproj
│ ├── dm.gui.vcxproj.filters
│ ├── dm.objectives.vcxproj
│ ├── dm.objectives.vcxproj.filters
│ ├── dm.stimresponse.vcxproj
│ ├── dm.stimresponse.vcxproj.filters
│ ├── include.vcxproj
│ ├── include.vcxproj.filters
│ ├── libs.vcxproj
│ ├── libs.vcxproj.filters
│ ├── mathlib.vcxproj
│ ├── mathlib.vcxproj.filters
│ ├── modulelib.vcxproj
│ ├── modulelib.vcxproj.filters
│ ├── natvis/
│ │ └── mathlib.natvis
│ ├── post_build_event_x64.cmd
│ ├── properties/
│ │ ├── DarkRadiant Base Debug Win32.props
│ │ ├── DarkRadiant Base Debug x64.props
│ │ ├── DarkRadiant Base Release Win32.props
│ │ ├── DarkRadiant Base Release x64.props
│ │ ├── DarkRadiant Base.props
│ │ ├── DarkRadiant Core Library.props
│ │ ├── DarkRadiant Main Executable.props
│ │ ├── DarkRadiant Module DLL.props
│ │ ├── DarkRadiant Plugin DLL.props
│ │ ├── DarkRadiant Static Library.props
│ │ ├── GLEW.props
│ │ ├── OpenAL + Vorbis.props
│ │ ├── Python.props
│ │ ├── Tests.props
│ │ ├── ftgl.props
│ │ ├── libgit2.props
│ │ ├── libjpeg.props
│ │ ├── libpng.props
│ │ ├── wxWidgets.props
│ │ └── zlib.props
│ ├── scenelib.vcxproj
│ ├── scenelib.vcxproj.filters
│ ├── script.vcxproj
│ ├── script.vcxproj.filters
│ ├── sound.vcxproj
│ ├── sound.vcxproj.filters
│ ├── vcs.vcxproj
│ ├── vcs.vcxproj.filters
│ ├── wxutillib.vcxproj
│ ├── wxutillib.vcxproj.filters
│ └── xmlutillib.vcxproj
├── scripts/
│ ├── compile_release_package.ps1
│ ├── compile_release_package.x64.cmd
│ ├── ddsinfo.py
│ └── download_windeps.ps1
└── xcode/
├── DarkRadiant App/
│ └── Info.plist
├── DarkRadiant.xcconfig
├── DarkRadiant.xcodeproj/
│ ├── project.pbxproj
│ ├── project.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
│ └── xcshareddata/
│ └── xcschemes/
│ ├── DarkRadiant.xcscheme
│ ├── DarkRadiantCore.xcscheme
│ └── module.xcscheme
├── DarkRadiantCore.xcconfig
├── base.xcconfig
├── darkradiant.icns
├── dm.difficulty.xcconfig
├── dm.editing.xcconfig
├── eigen3.xcconfig
├── ftgl.xcconfig
├── glew.xcconfig
├── jpeg.xcconfig
├── libxml2.xcconfig
├── package_bundle.sh
├── picomodel.xcconfig
├── png.xcconfig
├── python.xcconfig
├── script.xcconfig
├── sigc++.xcconfig
├── sound.xcconfig
├── wxutil.xcconfig
├── wxwidgets.xcconfig
└── zlib.xcconfig
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
# To learn more about .editorconfig see https://aka.ms/editorconfigdocs
# All files
[*]
indent_style = space
# Xml files
[*.xml]
indent_size = 4
================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto
.gitattributes export-ignore
.github export-ignore
.gitlab-ci.yml export-ignore
# Custom for Visual Studio
*.cs diff=csharp
*.sln merge=union
*.csproj merge=union
*.vbproj merge=union
*.fsproj merge=union
*.dbproj merge=union
# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
================================================
FILE: .github/workflows/build.yml
================================================
name: Build
on: [push]
jobs:
Windows-Build:
runs-on: windows-latest
env:
# Path to the solution file relative to the root of the project.
SOLUTION_FILE_PATH: .\DarkRadiant.sln
TESTS_FILE_PATH: .\install\Tests.exe
BUILD_CONFIGURATION: Release
GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
- name: Inject commit hash in version.h Header
env:
VERSION_HEADER_FILE: include\version.h
SHA: ${{github.sha}}
run: |
$sha = $env:SHA.Substring(0, 7)
Write-Host "Writing $sha to $env:VERSION_HEADER_FILE"
$replaced = Get-Content $env:VERSION_HEADER_FILE | % { if ($_ -match '#define RADIANT_VERSION "((\d+.\d+.\d+)([\w\d]*))"') { $_.Replace($matches[1], $matches[2] + "_rev$sha") } else { $_ } };
$replaced | Out-File $env:VERSION_HEADER_FILE
shell: powershell
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v2
- name: Restore NuGet packages
working-directory: ${{env.GITHUB_WORKSPACE}}
run: nuget restore ${{env.SOLUTION_FILE_PATH}}
- name: Build
working-directory: ${{env.GITHUB_WORKSPACE}}
run: msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} /p:Platform=x64 /maxcpucount:4 /nodeReuse:false /p:UseSharedConfiguration=false ${{env.SOLUTION_FILE_PATH}}
- name: Install Mesa openGL Drivers
working-directory: ${{env.GITHUB_WORKSPACE}}
env:
UNIT_TEST_MESA_DRIVER_URL: https://github.com/codereader/DarkRadiant_WinDeps/releases/download/3.0.0/unit_test_mesa_driver-x64-20.1.8.7z
run: |
Write-Host ("Downloading Mesa driver package from {0}..." -f $env:UNIT_TEST_MESA_DRIVER_URL)
$outFile = ".\install\unit_test_mesa_driver-x64.7z"
Invoke-WebRequest $env:UNIT_TEST_MESA_DRIVER_URL -OutFile $outFile
Write-Host ("Unpacking {0}..." -f $outFile)
& .\tools\7z\7za.exe x $outFile -o".\install\"
Get-ChildItem .\install\OpenGL32.dll
shell: powershell
- name: Setup VSTest.console.exe
uses: darenm/Setup-VSTest@v1.3
- name: Run Unit Tests
run: |
FOR /F "tokens=* USEBACKQ" %%g IN (`powershell -Command "(Get-ChildItem -Recurse -Path 'C:\Program Files\Microsoft Visual Studio\' -Filter "GoogleTestAdapter.TestAdapter.dll" -ErrorAction SilentlyContinue).DirectoryName"`) do (SET "GTEST_ADAPTER_PATH=%%g")
echo Test Adapter Path resolved to: %GTEST_ADAPTER_PATH%
vstest.console.exe ${{env.TESTS_FILE_PATH}} /Platform:x64 /Logger:trx /TestAdapterPath:"%%GTEST_ADAPTER_PATH%%"
shell: cmd
- name: Generate Portable Package
run: |
echo Remove Mesa driver from output folder again
del ..\..\install\OpenGL32.dll
powershell -ExecutionPolicy ByPass .\compile_release_package.ps1 -Platform x64 -SkipBuild -GenerateSetupPackage:$false -GeneratePortablePackage:$false -OutputFolder ..\..\PortablePackage\
shell: cmd
working-directory: .\tools\scripts
- name: Upload Portable Package
uses: actions/upload-artifact@v4
with:
name: darkradiant-portable-package-x64
path: |
tools/scripts/DarkRadiant_install.x64/**/*
!tools/scripts/DarkRadiant_install.x64/**/*.pdb
- name: Upload Portable Package PDBs
uses: actions/upload-artifact@v4
with:
name: darkradiant-pdb-files-x64
path: |
tools/scripts/DarkRadiant_install.x64/**/*.pdb
- name: Upload Test Results
uses: actions/upload-artifact@v4
with:
name: unit-test-results
path: TestResults\*.trx
Linux-Build:
runs-on: ubuntu-latest
env:
BUILD_TYPE: Release
steps:
- uses: actions/checkout@v4
- name: Install Package Dependencies
run: |
sudo apt-get update
sudo apt-get install -yq gettext pkg-config zlib1g-dev libjpeg-dev libxml2-dev libsigc++-2.0-dev
sudo apt-get install -yq libgtest-dev libeigen3-dev libwxgtk3.2-dev libpng-dev
sudo apt-get install -yq libftgl-dev libglew-dev libalut-dev libvorbis-dev python3-dev libgit2-dev libglib2.0-dev
- name: Configure CMake
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install
- name: Build
env:
CMAKE_BUILD_PARALLEL_LEVEL: 3
CTEST_OUTPUT_ON_FAILURE: ON
shell: bash
run: cmake --build . --config $BUILD_TYPE --target install
================================================
FILE: .gitignore
================================================
# Linux build files
Makefile
CMakeFiles
CMakeCache.txt
cmake_install.cmake
/config.h
/install_manifest.txt
/radiant/darkradiant
/install/darkradiant.desktop
/test/drtest
*.o
*.lo
*.so
*.a
*.la
.deps
# Linux profiling
perf.data*
# Doxygen output
/dox
# Editor temporary files
*.swp
tags
# Windows directories
w32deps
w64deps
build
# Windows build files
*.dll
*.pdb
install/*.exe
tools/msvc/*.exe
/tools/innosetup/*.exe
*.exp
*.lib
# Image Source Files
*.psd
# Windows Visual Studio stuff
*.user
DarkRadiant.opensdf
DarkRadiant.sdf
gtkrc
testsuite.ilk
# VS Code
.vscode
.cache
# VS
/winbuild
*.psess
*.suo
*.ipch
*.dirstamp
/tools/innosetup/*.7z
*.vspx
*.bak
*.opendb
*.iobj
*.ipdb
# Mac OS X Stuff
.DS_Store
xcuserdata
/install/*.zip
/tools/msvc/.vs
/tools/msvc/DarkRadiant.VC.db
/tools/innosetup/*.zip
/tools/lwo_analyse/.vs
/radiant/*.aps
# Portable installation temp folders
/tools/scripts/DarkRadiant_install.x64
/tools/scripts/DarkRadiant_install
/install/*.ilk
/tools/msvc/Tests/x64
/tools/msvc/x64
/tools/msvc/packages
/install/*.testdurations
*.ilk
.vs/
windeps*.7z
/packages
/windeps
================================================
FILE: .gitlab-ci.yml
================================================
image: asciidoctor/docker-asciidoctor
pages:
stage: deploy
script:
- mkdir .public
- asciidoctor -a stylesheet=manual.css -D .public $PWD/doc/manual.adoc
- cp -r doc/img .public
- mv .public/manual.html .public/index.html
- gzip -k .public/index.html
- mv .public public
artifacts:
paths:
- public
only:
- master
================================================
FILE: AUTHORS
================================================
OrbWeaver
greebo
STiFU
mohij
angua
Crispy
Gildoran
Jesps (Bulge patch algorithm)
GtkRadiant CONTRIBUTORS and CREDITS
last update: 09/12/2004
=======================
Loki
----
Leonardo Zide leo@lokigames.com
Mike Phillips (Loki QA)
Bernd Kreimeier (overall coordination)
QER.com
-------
TTimo timo@idsoftware.com
^Fishman (Pablo Zurita) fish@gamedesign.net
RR2DO2 rr2do2@q3f.com
SmallPileofGibs spog@planetquake.com
Curry plugin
------------
Mike "mickey" Jackman
Tim "Maj" Rennie
PrtView plugin, various bug fixes and q3map guru
------------------------------------------------
Geoffrey DeWan
Gensurf plugin
--------------
David Hyde
PicoModel
---------
seaw0lf with assist by ydnar
Q3Map2
------
Randy 'ydnar' Reddig
Updated shader files, textures, entities.def, keyboard shortcut list
overall testing and feedback
----------------------------
Jean-Francois "Eutectic" Groleau
Improvements and bug fixing
---------------------------
Jan Paul "MrElusive" van Waveren
Robert Duffy
Forest "LordHavoc" Wroncy-Hale
Nurail
AcidDeath
Chronos
Michael Schlueter
Jamie Wilkinson
Robert "Tr3B" Beckebans
Web
---
Dave "Bargle" Koenig
Jason "Wolfen" Spencer
Shawn "EvilTypeGuy" Walker
Thanks to John Hutton, AstroCreep and W2k for web help
FAQ
---
Equim and Wex
Testing/Feedback
---
Black_Dog, d0nkey, Fjoggis, Jago, jetscreamer, gibbie, Godmil, Gom Jabbar,
Mindlink, mslaf, necros, Promit, Ravo, RPG, scampie, sock, sponge, thiste,
voodoochopsticks, Zwiffle
Misc
----
Thanks to everyone on the beta mailing list and
irc.telefragged.com #qeradiant for testing and feedback.
Updated icons by AstroCreep!
Bitch-slapping by RaYGunn!
Last minute bugs by SPoG! (SPoG--)
================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.12)
# Project name and version
project(darkradiant VERSION 3.9.2)
# C++ standard
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
# GCC 8 and earlier require explicit linking against stdc++fs
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9)
link_libraries(stdc++fs)
endif()
# Expose some build options
option(ENABLE_DM_PLUGINS "Build Dark Mod specific plugins" ON)
option(ENABLE_GIT_PLUGIN "Build the Git VCS integration plugin" ON)
option(ENABLE_RELOCATION
"Avoid hard-coded absolute paths to libraries or resources"
ON)
# Define GNU-style directory structure by default
include(GNUInstallDirs)
# Set up core build paths
set(CORE_MODULE_LIBRARY "libradiantcore")
set(PKGDATADIR "${CMAKE_INSTALL_FULL_DATADIR}/darkradiant")
set(PKGLIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}/darkradiant")
if (${ENABLE_RELOCATION})
set(RELATIVE_LIBDIR "../${CMAKE_INSTALL_LIBDIR}/darkradiant")
else()
set(HTMLDIR "${CMAKE_INSTALL_FULL_DATADIR}/doc/darkradiant")
endif()
# Build shared libraries by default
option(BUILD_SHARED_LIBS "Build shared libraries" ON)
if (${ENABLE_RELOCATION})
set(CMAKE_INSTALL_RPATH "$ORIGIN/${RELATIVE_LIBDIR}")
else()
set(CMAKE_INSTALL_RPATH "${PKGLIBDIR}")
endif()
# Debug or release mode
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
add_compile_definitions(
$<$<CONFIG:Debug>:_DEBUG>
$<$<CONFIG:Release>:NDEBUG>
)
# Locate system packages
include(FindPkgConfig)
pkg_check_modules(SIGC sigc++-2.0 REQUIRED)
pkg_check_modules(FTGL ftgl REQUIRED)
pkg_check_modules(FREETYPE freetype2 REQUIRED)
pkg_check_modules(GL gl REQUIRED)
pkg_check_modules(GLEW glew REQUIRED)
pkg_check_modules(JPEG libjpeg REQUIRED)
pkg_check_modules(PNG libpng REQUIRED)
pkg_check_modules(AL openal REQUIRED)
pkg_check_modules(OGG ogg REQUIRED)
pkg_check_modules(VORBIS vorbisfile REQUIRED)
pkg_check_modules(X11 x11 REQUIRED)
pkg_check_modules(ZLIB zlib REQUIRED)
pkg_check_modules(GLIB glib-2.0 REQUIRED)
pkg_check_modules(EIGEN eigen3 REQUIRED)
# Locate a packaged pugixml, if installed if not, fall back to embedded code copy.
find_package(pugixml QUIET)
if (TARGET pugixml::pugixml)
message(NOTICE "Distribution pugixml found and used.")
else()
include_directories(libs/pugixml)
endif()
# Locate wxWidgets
find_package(wxWidgets REQUIRED
COMPONENTS base core stc adv gl xrc aui)
include(${wxWidgets_USE_FILE})
# Locate Python
find_package(Python REQUIRED COMPONENTS Development)
# Global includes and flags
include_directories(libs libs/libfmt include)
add_compile_options(${SIGC_CFLAGS})
add_compile_definitions(POSIX
WXINTL_NO_GETTEXT_MACRO
FMT_HEADER_ONLY
HAVE_STD_FILESYSTEM)
add_link_options(LINKER:-z,defs)
# Generate config.h
configure_file(config.h.in config.h)
add_compile_definitions(HAVE_CONFIG_H)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
# Set up a usable installation tree within the binary dir so developers don't
# have to install to a temporary location
set(DR_STAGING_ROOT "${CMAKE_BINARY_DIR}/darkradiant")
set(DR_STAGING_LIBDIR "${DR_STAGING_ROOT}/lib/darkradiant")
set(DR_STAGING_MODULESDIR "${DR_STAGING_LIBDIR}/modules")
set(DR_STAGING_PLUGINSDIR "${DR_STAGING_LIBDIR}/plugins")
set(DR_STAGING_DATADIR "${DR_STAGING_ROOT}/share/darkradiant")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${DR_STAGING_ROOT}/bin")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${DR_STAGING_LIBDIR}")
# Supporting libraries
add_subdirectory(libs/math)
add_subdirectory(libs/xmlutil)
add_subdirectory(libs/scene)
add_subdirectory(libs/wxutil)
add_subdirectory(libs/module)
# Mandatory modules
add_subdirectory(plugins/script)
add_subdirectory(plugins/sound)
# Optional Git plugin
if (${ENABLE_GIT_PLUGIN})
pkg_check_modules(LIBGIT libgit2)
if (${LIBGIT_FOUND})
add_subdirectory(plugins/vcs)
endif()
endif()
# Dark Mod plugins
if (${ENABLE_DM_PLUGINS})
add_subdirectory(plugins/dm.conversation)
add_subdirectory(plugins/dm.stimresponse)
add_subdirectory(plugins/dm.objectives)
add_subdirectory(plugins/dm.difficulty)
add_subdirectory(plugins/dm.editing)
add_subdirectory(plugins/dm.gui)
add_subdirectory(plugins/dm.gameconnection)
endif()
# Main radiant components
add_subdirectory(radiantcore)
add_subdirectory(radiant)
# Tests
pkg_check_modules(GTEST gtest)
pkg_check_modules(GTEST_MAIN gtest_main)
if (${GTEST_FOUND} AND ${GTEST_MAIN_FOUND})
enable_testing()
add_subdirectory(test)
endif()
# Documentation
find_program(ASCIIDOCTOR asciidoctor)
if (ASCIIDOCTOR)
add_subdirectory(doc)
else()
message(WARNING "asciidoctor not found; documentation will not be generated")
endif()
# Install targets
include(install.cmake)
================================================
FILE: DarkRadiant.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.9.34728.123
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DarkRadiant", "tools\msvc\DarkRadiant.vcxproj", "{8E70385C-223A-4DD1-9B99-28FF2331A2B5}"
ProjectSection(ProjectDependencies) = postProject
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A} = {0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mathlib", "tools\msvc\mathlib.vcxproj", "{3C9FB5AA-7118-476E-B33D-D3AC1C8412BB}"
ProjectSection(ProjectDependencies) = postProject
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A} = {0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlutillib", "tools\msvc\xmlutillib.vcxproj", "{A15EFB56-927F-411D-A57B-0328321456A2}"
ProjectSection(ProjectDependencies) = postProject
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A} = {0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxutillib", "tools\msvc\wxutillib.vcxproj", "{B6D4B38A-0C39-42CD-8193-75979E1F4D68}"
ProjectSection(ProjectDependencies) = postProject
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A} = {0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}
{3C9FB5AA-7118-476E-B33D-D3AC1C8412BB} = {3C9FB5AA-7118-476E-B33D-D3AC1C8412BB}
{F7408B46-E4A9-470C-9731-9A1564247385} = {F7408B46-E4A9-470C-9731-9A1564247385}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sound", "tools\msvc\sound.vcxproj", "{1482AAB4-40B6-44C0-9FD8-AF80C18A5E7F}"
ProjectSection(ProjectDependencies) = postProject
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A} = {0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}
{B6D4B38A-0C39-42CD-8193-75979E1F4D68} = {B6D4B38A-0C39-42CD-8193-75979E1F4D68}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dm.stimresponse", "tools\msvc\dm.stimresponse.vcxproj", "{EE9A3B61-58E0-4AA4-8942-6CFCBFAACC3F}"
ProjectSection(ProjectDependencies) = postProject
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A} = {0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}
{B6D4B38A-0C39-42CD-8193-75979E1F4D68} = {B6D4B38A-0C39-42CD-8193-75979E1F4D68}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dm.objectives", "tools\msvc\dm.objectives.vcxproj", "{05E9A613-2108-4843-A567-16B432DAC272}"
ProjectSection(ProjectDependencies) = postProject
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A} = {0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}
{B6D4B38A-0C39-42CD-8193-75979E1F4D68} = {B6D4B38A-0C39-42CD-8193-75979E1F4D68}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dm.difficulty", "tools\msvc\dm.difficulty.vcxproj", "{68B95079-09DF-48F7-BAD9-81C33118BEFD}"
ProjectSection(ProjectDependencies) = postProject
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A} = {0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}
{3C9FB5AA-7118-476E-B33D-D3AC1C8412BB} = {3C9FB5AA-7118-476E-B33D-D3AC1C8412BB}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "scenelib", "tools\msvc\scenelib.vcxproj", "{F7408B46-E4A9-470C-9731-9A1564247385}"
ProjectSection(ProjectDependencies) = postProject
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A} = {0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "include", "tools\msvc\include.vcxproj", "{41CAAD78-9E48-4C6E-B8F8-A04A859C16F9}"
ProjectSection(ProjectDependencies) = postProject
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A} = {0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dm.conversation", "tools\msvc\dm.conversation.vcxproj", "{435F29EA-7236-49AD-BF1A-5DB8AD566B5D}"
ProjectSection(ProjectDependencies) = postProject
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A} = {0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}
{A15EFB56-927F-411D-A57B-0328321456A2} = {A15EFB56-927F-411D-A57B-0328321456A2}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "script", "tools\msvc\script.vcxproj", "{979A38FE-BE30-4121-845C-B705461BB1B0}"
ProjectSection(ProjectDependencies) = postProject
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A} = {0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dm.editing", "tools\msvc\dm.editing.vcxproj", "{3552912C-32C9-4D59-9E65-357AD147A1FC}"
ProjectSection(ProjectDependencies) = postProject
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A} = {0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dm.gui", "tools\msvc\dm.gui.vcxproj", "{586DBC32-C9D4-4720-B246-1E3D7D8C02B3}"
ProjectSection(ProjectDependencies) = postProject
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A} = {0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libs", "tools\msvc\libs.vcxproj", "{5EB15BCF-2131-4DE3-B411-FC0D2DEF702F}"
ProjectSection(ProjectDependencies) = postProject
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A} = {0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Static Libraries", "Static Libraries", "{026C3BBE-9A3B-4D21-A49D-12DD9DDF3CBA}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Modules", "Modules", "{3C3C0B81-D1B7-4EE4-9224-99ECA5774F25}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main Binary and Headers", "Main Binary and Headers", "{F0E8C46B-4F20-43B1-9A8D-13A9D0A3BA3D}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DarkRadiantCore", "tools\msvc\DarkRadiantCore.vcxproj", "{83D79C71-4E8F-4F78-9D46-EF02D5D5CD89}"
ProjectSection(ProjectDependencies) = postProject
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A} = {0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}
{3C9FB5AA-7118-476E-B33D-D3AC1C8412BB} = {3C9FB5AA-7118-476E-B33D-D3AC1C8412BB}
{76FF9B0F-B1FF-42BF-9E1D-8FBE2B3F6215} = {76FF9B0F-B1FF-42BF-9E1D-8FBE2B3F6215}
{A15EFB56-927F-411D-A57B-0328321456A2} = {A15EFB56-927F-411D-A57B-0328321456A2}
{F7408B46-E4A9-470C-9731-9A1564247385} = {F7408B46-E4A9-470C-9731-9A1564247385}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "modulelib", "tools\msvc\modulelib.vcxproj", "{76FF9B0F-B1FF-42BF-9E1D-8FBE2B3F6215}"
ProjectSection(ProjectDependencies) = postProject
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A} = {0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Tests", "tools\msvc\Tests\Tests.vcxproj", "{20C43725-BD6F-4E90-8D8C-5AB2AFFBF957}"
ProjectSection(ProjectDependencies) = postProject
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A} = {0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}
{83D79C71-4E8F-4F78-9D46-EF02D5D5CD89} = {83D79C71-4E8F-4F78-9D46-EF02D5D5CD89}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dm.gameconnection", "tools\msvc\dm.gameconnection.vcxproj", "{471AEAFE-68CE-4010-9B8F-3CB95810BEA5}"
ProjectSection(ProjectDependencies) = postProject
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A} = {0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}
{B6D4B38A-0C39-42CD-8193-75979E1F4D68} = {B6D4B38A-0C39-42CD-8193-75979E1F4D68}
{F7408B46-E4A9-470C-9731-9A1564247385} = {F7408B46-E4A9-470C-9731-9A1564247385}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DependencyCheck", "tools\DependencyCheck\DependencyCheck.vcxproj", "{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vcs", "tools\msvc\vcs.vcxproj", "{6591C1E2-6BCF-4874-B724-CC87B8AA0DA4}"
ProjectSection(ProjectDependencies) = postProject
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A} = {0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}
{A15EFB56-927F-411D-A57B-0328321456A2} = {A15EFB56-927F-411D-A57B-0328321456A2}
{B6D4B38A-0C39-42CD-8193-75979E1F4D68} = {B6D4B38A-0C39-42CD-8193-75979E1F4D68}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8E70385C-223A-4DD1-9B99-28FF2331A2B5}.Debug|x64.ActiveCfg = Debug|x64
{8E70385C-223A-4DD1-9B99-28FF2331A2B5}.Debug|x64.Build.0 = Debug|x64
{8E70385C-223A-4DD1-9B99-28FF2331A2B5}.Release|x64.ActiveCfg = Release|x64
{8E70385C-223A-4DD1-9B99-28FF2331A2B5}.Release|x64.Build.0 = Release|x64
{3C9FB5AA-7118-476E-B33D-D3AC1C8412BB}.Debug|x64.ActiveCfg = Debug|x64
{3C9FB5AA-7118-476E-B33D-D3AC1C8412BB}.Debug|x64.Build.0 = Debug|x64
{3C9FB5AA-7118-476E-B33D-D3AC1C8412BB}.Release|x64.ActiveCfg = Release|x64
{3C9FB5AA-7118-476E-B33D-D3AC1C8412BB}.Release|x64.Build.0 = Release|x64
{A15EFB56-927F-411D-A57B-0328321456A2}.Debug|x64.ActiveCfg = Debug|x64
{A15EFB56-927F-411D-A57B-0328321456A2}.Debug|x64.Build.0 = Debug|x64
{A15EFB56-927F-411D-A57B-0328321456A2}.Release|x64.ActiveCfg = Release|x64
{A15EFB56-927F-411D-A57B-0328321456A2}.Release|x64.Build.0 = Release|x64
{B6D4B38A-0C39-42CD-8193-75979E1F4D68}.Debug|x64.ActiveCfg = Debug|x64
{B6D4B38A-0C39-42CD-8193-75979E1F4D68}.Debug|x64.Build.0 = Debug|x64
{B6D4B38A-0C39-42CD-8193-75979E1F4D68}.Release|x64.ActiveCfg = Release|x64
{B6D4B38A-0C39-42CD-8193-75979E1F4D68}.Release|x64.Build.0 = Release|x64
{1482AAB4-40B6-44C0-9FD8-AF80C18A5E7F}.Debug|x64.ActiveCfg = Debug|x64
{1482AAB4-40B6-44C0-9FD8-AF80C18A5E7F}.Debug|x64.Build.0 = Debug|x64
{1482AAB4-40B6-44C0-9FD8-AF80C18A5E7F}.Release|x64.ActiveCfg = Release|x64
{1482AAB4-40B6-44C0-9FD8-AF80C18A5E7F}.Release|x64.Build.0 = Release|x64
{EE9A3B61-58E0-4AA4-8942-6CFCBFAACC3F}.Debug|x64.ActiveCfg = Debug|x64
{EE9A3B61-58E0-4AA4-8942-6CFCBFAACC3F}.Debug|x64.Build.0 = Debug|x64
{EE9A3B61-58E0-4AA4-8942-6CFCBFAACC3F}.Release|x64.ActiveCfg = Release|x64
{EE9A3B61-58E0-4AA4-8942-6CFCBFAACC3F}.Release|x64.Build.0 = Release|x64
{05E9A613-2108-4843-A567-16B432DAC272}.Debug|x64.ActiveCfg = Debug|x64
{05E9A613-2108-4843-A567-16B432DAC272}.Debug|x64.Build.0 = Debug|x64
{05E9A613-2108-4843-A567-16B432DAC272}.Release|x64.ActiveCfg = Release|x64
{05E9A613-2108-4843-A567-16B432DAC272}.Release|x64.Build.0 = Release|x64
{68B95079-09DF-48F7-BAD9-81C33118BEFD}.Debug|x64.ActiveCfg = Debug|x64
{68B95079-09DF-48F7-BAD9-81C33118BEFD}.Debug|x64.Build.0 = Debug|x64
{68B95079-09DF-48F7-BAD9-81C33118BEFD}.Release|x64.ActiveCfg = Release|x64
{68B95079-09DF-48F7-BAD9-81C33118BEFD}.Release|x64.Build.0 = Release|x64
{F7408B46-E4A9-470C-9731-9A1564247385}.Debug|x64.ActiveCfg = Debug|x64
{F7408B46-E4A9-470C-9731-9A1564247385}.Debug|x64.Build.0 = Debug|x64
{F7408B46-E4A9-470C-9731-9A1564247385}.Release|x64.ActiveCfg = Release|x64
{F7408B46-E4A9-470C-9731-9A1564247385}.Release|x64.Build.0 = Release|x64
{41CAAD78-9E48-4C6E-B8F8-A04A859C16F9}.Debug|x64.ActiveCfg = Debug|x64
{41CAAD78-9E48-4C6E-B8F8-A04A859C16F9}.Debug|x64.Build.0 = Debug|x64
{41CAAD78-9E48-4C6E-B8F8-A04A859C16F9}.Release|x64.ActiveCfg = Release|x64
{41CAAD78-9E48-4C6E-B8F8-A04A859C16F9}.Release|x64.Build.0 = Release|x64
{435F29EA-7236-49AD-BF1A-5DB8AD566B5D}.Debug|x64.ActiveCfg = Debug|x64
{435F29EA-7236-49AD-BF1A-5DB8AD566B5D}.Debug|x64.Build.0 = Debug|x64
{435F29EA-7236-49AD-BF1A-5DB8AD566B5D}.Release|x64.ActiveCfg = Release|x64
{435F29EA-7236-49AD-BF1A-5DB8AD566B5D}.Release|x64.Build.0 = Release|x64
{979A38FE-BE30-4121-845C-B705461BB1B0}.Debug|x64.ActiveCfg = Debug|x64
{979A38FE-BE30-4121-845C-B705461BB1B0}.Debug|x64.Build.0 = Debug|x64
{979A38FE-BE30-4121-845C-B705461BB1B0}.Release|x64.ActiveCfg = Release|x64
{979A38FE-BE30-4121-845C-B705461BB1B0}.Release|x64.Build.0 = Release|x64
{3552912C-32C9-4D59-9E65-357AD147A1FC}.Debug|x64.ActiveCfg = Debug|x64
{3552912C-32C9-4D59-9E65-357AD147A1FC}.Debug|x64.Build.0 = Debug|x64
{3552912C-32C9-4D59-9E65-357AD147A1FC}.Release|x64.ActiveCfg = Release|x64
{3552912C-32C9-4D59-9E65-357AD147A1FC}.Release|x64.Build.0 = Release|x64
{586DBC32-C9D4-4720-B246-1E3D7D8C02B3}.Debug|x64.ActiveCfg = Debug|x64
{586DBC32-C9D4-4720-B246-1E3D7D8C02B3}.Debug|x64.Build.0 = Debug|x64
{586DBC32-C9D4-4720-B246-1E3D7D8C02B3}.Release|x64.ActiveCfg = Release|x64
{586DBC32-C9D4-4720-B246-1E3D7D8C02B3}.Release|x64.Build.0 = Release|x64
{5EB15BCF-2131-4DE3-B411-FC0D2DEF702F}.Debug|x64.ActiveCfg = Debug|x64
{5EB15BCF-2131-4DE3-B411-FC0D2DEF702F}.Debug|x64.Build.0 = Debug|x64
{5EB15BCF-2131-4DE3-B411-FC0D2DEF702F}.Release|x64.ActiveCfg = Release|x64
{5EB15BCF-2131-4DE3-B411-FC0D2DEF702F}.Release|x64.Build.0 = Release|x64
{83D79C71-4E8F-4F78-9D46-EF02D5D5CD89}.Debug|x64.ActiveCfg = Debug|x64
{83D79C71-4E8F-4F78-9D46-EF02D5D5CD89}.Debug|x64.Build.0 = Debug|x64
{83D79C71-4E8F-4F78-9D46-EF02D5D5CD89}.Release|x64.ActiveCfg = Release|x64
{83D79C71-4E8F-4F78-9D46-EF02D5D5CD89}.Release|x64.Build.0 = Release|x64
{76FF9B0F-B1FF-42BF-9E1D-8FBE2B3F6215}.Debug|x64.ActiveCfg = Debug|x64
{76FF9B0F-B1FF-42BF-9E1D-8FBE2B3F6215}.Debug|x64.Build.0 = Debug|x64
{76FF9B0F-B1FF-42BF-9E1D-8FBE2B3F6215}.Release|x64.ActiveCfg = Release|x64
{76FF9B0F-B1FF-42BF-9E1D-8FBE2B3F6215}.Release|x64.Build.0 = Release|x64
{20C43725-BD6F-4E90-8D8C-5AB2AFFBF957}.Debug|x64.ActiveCfg = Debug|x64
{20C43725-BD6F-4E90-8D8C-5AB2AFFBF957}.Debug|x64.Build.0 = Debug|x64
{20C43725-BD6F-4E90-8D8C-5AB2AFFBF957}.Release|x64.ActiveCfg = Release|x64
{20C43725-BD6F-4E90-8D8C-5AB2AFFBF957}.Release|x64.Build.0 = Release|x64
{471AEAFE-68CE-4010-9B8F-3CB95810BEA5}.Debug|x64.ActiveCfg = Debug|x64
{471AEAFE-68CE-4010-9B8F-3CB95810BEA5}.Debug|x64.Build.0 = Debug|x64
{471AEAFE-68CE-4010-9B8F-3CB95810BEA5}.Release|x64.ActiveCfg = Release|x64
{471AEAFE-68CE-4010-9B8F-3CB95810BEA5}.Release|x64.Build.0 = Release|x64
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}.Debug|x64.ActiveCfg = Debug|x64
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}.Debug|x64.Build.0 = Debug|x64
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}.Release|x64.ActiveCfg = Release|x64
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A}.Release|x64.Build.0 = Release|x64
{6591C1E2-6BCF-4874-B724-CC87B8AA0DA4}.Debug|x64.ActiveCfg = Debug|x64
{6591C1E2-6BCF-4874-B724-CC87B8AA0DA4}.Debug|x64.Build.0 = Debug|x64
{6591C1E2-6BCF-4874-B724-CC87B8AA0DA4}.Release|x64.ActiveCfg = Release|x64
{6591C1E2-6BCF-4874-B724-CC87B8AA0DA4}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{8E70385C-223A-4DD1-9B99-28FF2331A2B5} = {F0E8C46B-4F20-43B1-9A8D-13A9D0A3BA3D}
{3C9FB5AA-7118-476E-B33D-D3AC1C8412BB} = {026C3BBE-9A3B-4D21-A49D-12DD9DDF3CBA}
{A15EFB56-927F-411D-A57B-0328321456A2} = {026C3BBE-9A3B-4D21-A49D-12DD9DDF3CBA}
{B6D4B38A-0C39-42CD-8193-75979E1F4D68} = {026C3BBE-9A3B-4D21-A49D-12DD9DDF3CBA}
{1482AAB4-40B6-44C0-9FD8-AF80C18A5E7F} = {3C3C0B81-D1B7-4EE4-9224-99ECA5774F25}
{EE9A3B61-58E0-4AA4-8942-6CFCBFAACC3F} = {3C3C0B81-D1B7-4EE4-9224-99ECA5774F25}
{05E9A613-2108-4843-A567-16B432DAC272} = {3C3C0B81-D1B7-4EE4-9224-99ECA5774F25}
{68B95079-09DF-48F7-BAD9-81C33118BEFD} = {3C3C0B81-D1B7-4EE4-9224-99ECA5774F25}
{F7408B46-E4A9-470C-9731-9A1564247385} = {026C3BBE-9A3B-4D21-A49D-12DD9DDF3CBA}
{41CAAD78-9E48-4C6E-B8F8-A04A859C16F9} = {F0E8C46B-4F20-43B1-9A8D-13A9D0A3BA3D}
{435F29EA-7236-49AD-BF1A-5DB8AD566B5D} = {3C3C0B81-D1B7-4EE4-9224-99ECA5774F25}
{979A38FE-BE30-4121-845C-B705461BB1B0} = {3C3C0B81-D1B7-4EE4-9224-99ECA5774F25}
{3552912C-32C9-4D59-9E65-357AD147A1FC} = {3C3C0B81-D1B7-4EE4-9224-99ECA5774F25}
{586DBC32-C9D4-4720-B246-1E3D7D8C02B3} = {3C3C0B81-D1B7-4EE4-9224-99ECA5774F25}
{5EB15BCF-2131-4DE3-B411-FC0D2DEF702F} = {F0E8C46B-4F20-43B1-9A8D-13A9D0A3BA3D}
{83D79C71-4E8F-4F78-9D46-EF02D5D5CD89} = {F0E8C46B-4F20-43B1-9A8D-13A9D0A3BA3D}
{76FF9B0F-B1FF-42BF-9E1D-8FBE2B3F6215} = {026C3BBE-9A3B-4D21-A49D-12DD9DDF3CBA}
{471AEAFE-68CE-4010-9B8F-3CB95810BEA5} = {3C3C0B81-D1B7-4EE4-9224-99ECA5774F25}
{0D4BE190-97F4-4DB9-BEAB-B0196868EC0A} = {F0E8C46B-4F20-43B1-9A8D-13A9D0A3BA3D}
{6591C1E2-6BCF-4874-B724-CC87B8AA0DA4} = {3C3C0B81-D1B7-4EE4-9224-99ECA5774F25}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C7F73C9B-AFA1-4AF0-9F99-7C3A7F503A86}
EndGlobalSection
EndGlobal
================================================
FILE: Doxyfile
================================================
# Doxyfile 1.5.3
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project
#
# All text after a hash (#) is considered a comment and will be ignored
# The format is:
# TAG = value [value, ...]
# For lists items can also be appended using:
# TAG += value [value, ...]
# Values that contain spaces should be placed between quotes (" ")
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
# This tag specifies the encoding used for all characters in the config file that
# follow. The default is UTF-8 which is also the encoding used for all text before
# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into
# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of
# possible encodings.
DOXYFILE_ENCODING = UTF-8
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
# by quotes) that should identify the project.
PROJECT_NAME = DarkRadiant
# The PROJECT_NUMBER tag can be used to enter a project or revision number.
# This could be handy for archiving the generated documentation or
# if some version control system is used.
PROJECT_NUMBER =
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
# If a relative path is entered, it will be relative to the location
# where doxygen was started. If left blank the current directory will be used.
OUTPUT_DIRECTORY = dox
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
# 4096 sub-directories (in 2 levels) under the output directory of each output
# format and will distribute the generated files over these directories.
# Enabling this option can be useful when feeding doxygen a huge amount of
# source files, where putting all generated files in the same directory would
# otherwise cause performance problems for the file system.
CREATE_SUBDIRS = YES
# The OUTPUT_LANGUAGE tag is used to specify the language in which all
# documentation generated by doxygen is written. Doxygen will use this
# information to generate all constant output in the proper language.
# The default language is English, other supported languages are:
# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian,
# Italian, Japanese, Japanese-en (Japanese with English messages), Korean,
# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian,
# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
OUTPUT_LANGUAGE = English
# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
# include brief member descriptions after the members that are listed in
# the file and class documentation (similar to JavaDoc).
# Set to NO to disable this.
BRIEF_MEMBER_DESC = YES
# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
# the brief description of a member or function before the detailed description.
# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
# brief descriptions will be completely suppressed.
REPEAT_BRIEF = YES
# This tag implements a quasi-intelligent brief description abbreviator
# that is used to form the text in various listings. Each string
# in this list, if found as the leading text of the brief description, will be
# stripped from the text and the result after processing the whole list, is
# used as the annotated text. Otherwise, the brief description is used as-is.
# If left blank, the following values are used ("$name" is automatically
# replaced with the name of the entity): "The $name class" "The $name widget"
# "The $name file" "is" "provides" "specifies" "contains"
# "represents" "a" "an" "the"
ABBREVIATE_BRIEF =
# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
# Doxygen will generate a detailed section even if there is only a brief
# description.
ALWAYS_DETAILED_SEC = NO
# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
# inherited members of a class in the documentation of that class as if those
# members were ordinary class members. Constructors, destructors and assignment
# operators of the base classes will not be shown.
INLINE_INHERITED_MEMB = NO
# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
# path before files name in the file list and in the header files. If set
# to NO the shortest path that makes the file name unique will be used.
FULL_PATH_NAMES = YES
# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
# can be used to strip a user-defined part of the path. Stripping is
# only done if one of the specified strings matches the left-hand part of
# the path. The tag can be used to show relative paths in the file list.
# If left blank the directory from which doxygen is run is used as the
# path to strip.
STRIP_FROM_PATH =
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
# the path mentioned in the documentation of a class, which tells
# the reader which header file to include in order to use a class.
# If left blank only the name of the header file containing the class
# definition is used. Otherwise one should specify the include paths that
# are normally passed to the compiler using the -I flag.
STRIP_FROM_INC_PATH =
# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
# (but less readable) file names. This can be useful is your file systems
# doesn't support long names like on DOS, Mac, or CD-ROM.
SHORT_NAMES = NO
# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
# will interpret the first line (until the first dot) of a JavaDoc-style
# comment as the brief description. If set to NO, the JavaDoc
# comments will behave just like regular Qt-style comments
# (thus requiring an explicit @brief command for a brief description.)
JAVADOC_AUTOBRIEF = YES
# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
# interpret the first line (until the first dot) of a Qt-style
# comment as the brief description. If set to NO, the comments
# will behave just like regular Qt-style comments (thus requiring
# an explicit \brief command for a brief description.)
QT_AUTOBRIEF = NO
# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
# treat a multi-line C++ special comment block (i.e. a block of //! or ///
# comments) as a brief description. This used to be the default behaviour.
# The new default is to treat a multi-line C++ comment block as a detailed
# description. Set this tag to YES if you prefer the old behaviour instead.
MULTILINE_CPP_IS_BRIEF = NO
# If the DETAILS_AT_TOP tag is set to YES then Doxygen
# will output the detailed description near the top, like JavaDoc.
# If set to NO, the detailed description appears after the member
# documentation.
DETAILS_AT_TOP = NO
# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
# member inherits the documentation from any documented member that it
# re-implements.
INHERIT_DOCS = YES
# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
# a new page for each member. If set to NO, the documentation of a member will
# be part of the file/class/namespace that contains it.
SEPARATE_MEMBER_PAGES = NO
# The TAB_SIZE tag can be used to set the number of spaces in a tab.
# Doxygen uses this value to replace tabs by spaces in code fragments.
TAB_SIZE = 8
# This tag can be used to specify a number of aliases that acts
# as commands in the documentation. An alias has the form "name=value".
# For example adding "sideeffect=\par Side Effects:\n" will allow you to
# put the command \sideeffect (or @sideeffect) in the documentation, which
# will result in a user-defined paragraph with heading "Side Effects:".
# You can put \n's in the value part of an alias to insert newlines.
ALIASES =
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
# sources only. Doxygen will then generate output that is more tailored for C.
# For instance, some of the names that are used will be different. The list
# of all members will be omitted, etc.
OPTIMIZE_OUTPUT_FOR_C = NO
# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
# sources only. Doxygen will then generate output that is more tailored for Java.
# For instance, namespaces will be presented as packages, qualified scopes
# will look different, etc.
OPTIMIZE_OUTPUT_JAVA = NO
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to
# include (a tag file for) the STL sources as input, then you should
# set this tag to YES in order to let doxygen match functions declarations and
# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
# func(std::string) {}). This also make the inheritance and collaboration
# diagrams that involve STL classes more complete and accurate.
BUILTIN_STL_SUPPORT = NO
# If you use Microsoft's C++/CLI language, you should set this option to YES to
# enable parsing support.
CPP_CLI_SUPPORT = NO
# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
# tag is set to YES, then doxygen will reuse the documentation of the first
# member in the group (if any) for the other members of the group. By default
# all members of a group must be documented explicitly.
DISTRIBUTE_GROUP_DOC = NO
# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
# the same type (for instance a group of public functions) to be put as a
# subgroup of that type (e.g. under the Public Functions section). Set it to
# NO to prevent subgrouping. Alternatively, this can be done per class using
# the \nosubgrouping command.
SUBGROUPING = YES
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
# documentation are documented, even if no documentation was available.
# Private class members and static file members will be hidden unless
# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
EXTRACT_ALL = NO
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
# will be included in the documentation.
EXTRACT_PRIVATE = NO
# If the EXTRACT_STATIC tag is set to YES all static members of a file
# will be included in the documentation.
EXTRACT_STATIC = NO
# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
# defined locally in source files will be included in the documentation.
# If set to NO only classes defined in header files are included.
EXTRACT_LOCAL_CLASSES = YES
# This flag is only useful for Objective-C code. When set to YES local
# methods, which are defined in the implementation section but not in
# the interface are included in the documentation.
# If set to NO (the default) only methods in the interface are included.
EXTRACT_LOCAL_METHODS = NO
# If this flag is set to YES, the members of anonymous namespaces will be extracted
# and appear in the documentation as a namespace called 'anonymous_namespace{file}',
# where file will be replaced with the base name of the file that contains the anonymous
# namespace. By default anonymous namespace are hidden.
EXTRACT_ANON_NSPACES = NO
# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
# undocumented members of documented classes, files or namespaces.
# If set to NO (the default) these members will be included in the
# various overviews, but no documentation section is generated.
# This option has no effect if EXTRACT_ALL is enabled.
HIDE_UNDOC_MEMBERS = NO
# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
# undocumented classes that are normally visible in the class hierarchy.
# If set to NO (the default) these classes will be included in the various
# overviews. This option has no effect if EXTRACT_ALL is enabled.
HIDE_UNDOC_CLASSES = NO
# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
# friend (class|struct|union) declarations.
# If set to NO (the default) these declarations will be included in the
# documentation.
HIDE_FRIEND_COMPOUNDS = NO
# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
# documentation blocks found inside the body of a function.
# If set to NO (the default) these blocks will be appended to the
# function's detailed documentation block.
HIDE_IN_BODY_DOCS = NO
# The INTERNAL_DOCS tag determines if documentation
# that is typed after a \internal command is included. If the tag is set
# to NO (the default) then the documentation will be excluded.
# Set it to YES to include the internal documentation.
INTERNAL_DOCS = NO
# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
# file names in lower-case letters. If set to YES upper-case letters are also
# allowed. This is useful if you have classes or files whose names only differ
# in case and if your file system supports case sensitive file names. Windows
# and Mac users are advised to set this option to NO.
CASE_SENSE_NAMES = YES
# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
# will show members with their full class and namespace scopes in the
# documentation. If set to YES the scope will be hidden.
HIDE_SCOPE_NAMES = NO
# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
# will put a list of the files that are included by a file in the documentation
# of that file.
SHOW_INCLUDE_FILES = YES
# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
# is inserted in the documentation for inline members.
INLINE_INFO = YES
# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
# will sort the (detailed) documentation of file and class members
# alphabetically by member name. If set to NO the members will appear in
# declaration order.
SORT_MEMBER_DOCS = YES
# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
# brief documentation of file, namespace and class members alphabetically
# by member name. If set to NO (the default) the members will appear in
# declaration order.
SORT_BRIEF_DOCS = NO
# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
# sorted by fully-qualified names, including namespaces. If set to
# NO (the default), the class list will be sorted only by class name,
# not including the namespace part.
# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
# Note: This option applies only to the class list, not to the
# alphabetical list.
SORT_BY_SCOPE_NAME = NO
# The GENERATE_TODOLIST tag can be used to enable (YES) or
# disable (NO) the todo list. This list is created by putting \todo
# commands in the documentation.
GENERATE_TODOLIST = YES
# The GENERATE_TESTLIST tag can be used to enable (YES) or
# disable (NO) the test list. This list is created by putting \test
# commands in the documentation.
GENERATE_TESTLIST = YES
# The GENERATE_BUGLIST tag can be used to enable (YES) or
# disable (NO) the bug list. This list is created by putting \bug
# commands in the documentation.
GENERATE_BUGLIST = YES
# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
# disable (NO) the deprecated list. This list is created by putting
# \deprecated commands in the documentation.
GENERATE_DEPRECATEDLIST= YES
# The ENABLED_SECTIONS tag can be used to enable conditional
# documentation sections, marked by \if sectionname ... \endif.
ENABLED_SECTIONS =
# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
# the initial value of a variable or define consists of for it to appear in
# the documentation. If the initializer consists of more lines than specified
# here it will be hidden. Use a value of 0 to hide initializers completely.
# The appearance of the initializer of individual variables and defines in the
# documentation can be controlled using \showinitializer or \hideinitializer
# command in the documentation regardless of this setting.
MAX_INITIALIZER_LINES = 30
# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
# at the bottom of the documentation of classes and structs. If set to YES the
# list will mention the files that were used to generate the documentation.
SHOW_USED_FILES = YES
# If the sources in your project are distributed over multiple directories
# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
# in the documentation. The default is NO.
SHOW_DIRECTORIES = NO
# The FILE_VERSION_FILTER tag can be used to specify a program or script that
# doxygen should invoke to get the current version for each file (typically from the
# version control system). Doxygen will invoke the program by executing (via
# popen()) the command <command> <input-file>, where <command> is the value of
# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
# provided by doxygen. Whatever the program writes to standard output
# is used as the file version. See the manual for examples.
FILE_VERSION_FILTER =
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
# The QUIET tag can be used to turn on/off the messages that are generated
# by doxygen. Possible values are YES and NO. If left blank NO is used.
QUIET = YES
# The WARNINGS tag can be used to turn on/off the warning messages that are
# generated by doxygen. Possible values are YES and NO. If left blank
# NO is used.
WARNINGS = YES
# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
# automatically be disabled.
WARN_IF_UNDOCUMENTED = NO
# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
# potential errors in the documentation, such as not documenting some
# parameters in a documented function, or documenting parameters that
# don't exist or using markup commands wrongly.
WARN_IF_DOC_ERROR = YES
# This WARN_NO_PARAMDOC option can be abled to get warnings for
# functions that are documented, but have no documentation for their parameters
# or return value. If set to NO (the default) doxygen will only warn about
# wrong or incomplete parameter documentation, but not about the absence of
# documentation.
WARN_NO_PARAMDOC = NO
# The WARN_FORMAT tag determines the format of the warning messages that
# doxygen can produce. The string should contain the $file, $line, and $text
# tags, which will be replaced by the file and line number from which the
# warning originated and the warning text. Optionally the format may contain
# $version, which will be replaced by the version of the file (if it could
# be obtained via FILE_VERSION_FILTER)
WARN_FORMAT = "$file:$line: $text"
# The WARN_LOGFILE tag can be used to specify a file to which warning
# and error messages should be written. If left blank the output is written
# to stderr.
WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
# The INPUT tag can be used to specify the files and/or directories that contain
# documented source files. You may enter file names like "myfile.cpp" or
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
INPUT = include libs radiant plugins
# This tag can be used to specify the character encoding of the source files that
# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default
# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding.
# See http://www.gnu.org/software/libiconv for the list of possible encodings.
INPUT_ENCODING = UTF-8
# If the value of the INPUT tag contains directories, you can use the
# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
# and *.h) to filter out the source-files in the directories. If left
# blank the following patterns are tested:
# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
FILE_PATTERNS =
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
# should be searched for input files as well. Possible values are YES and NO.
# If left blank NO is used.
RECURSIVE = YES
# The EXCLUDE tag can be used to specify files and/or directories that should
# excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag.
EXCLUDE = plugins/dm.d3hook/boost \
plugins/dm.d3hook/RCF \
plugins/dm.d3hook/SF \
libs/libfmt \
libs/pybind
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
# directories that are symbolic links (a Unix filesystem feature) are excluded
# from the input.
EXCLUDE_SYMLINKS = NO
# If the value of the INPUT tag contains directories, you can use the
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
# certain files from those directories. Note that the wildcards are matched
# against the file with absolute path, so to exclude all test directories
# for example use the pattern */test/*
EXCLUDE_PATTERNS =
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the output.
# The symbol name can be a fully qualified name, a word, or if the wildcard * is used,
# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test
EXCLUDE_SYMBOLS =
# The EXAMPLE_PATH tag can be used to specify one or more files or
# directories that contain example code fragments that are included (see
# the \include command).
EXAMPLE_PATH =
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
# and *.h) to filter out the source-files in the directories. If left
# blank all files are included.
EXAMPLE_PATTERNS =
# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
# searched for input files to be used with the \include or \dontinclude
# commands irrespective of the value of the RECURSIVE tag.
# Possible values are YES and NO. If left blank NO is used.
EXAMPLE_RECURSIVE = NO
# The IMAGE_PATH tag can be used to specify one or more files or
# directories that contain image that are included in the documentation (see
# the \image command).
IMAGE_PATH =
# The INPUT_FILTER tag can be used to specify a program that doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program
# by executing (via popen()) the command <filter> <input-file>, where <filter>
# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
# input file. Doxygen will then use the output that the filter program writes
# to standard output. If FILTER_PATTERNS is specified, this tag will be
# ignored.
INPUT_FILTER =
# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
# basis. Doxygen will compare the file name with each pattern and apply the
# filter if there is a match. The filters are a list of the form:
# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
# is applied to all files.
FILTER_PATTERNS =
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
# INPUT_FILTER) will be used to filter the input files when producing source
# files to browse (i.e. when SOURCE_BROWSER is set to YES).
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
# If the SOURCE_BROWSER tag is set to YES then a list of source files will
# be generated. Documented entities will be cross-referenced with these sources.
# Note: To get rid of all source code in the generated output, make sure also
# VERBATIM_HEADERS is set to NO. If you have enabled CALL_GRAPH or CALLER_GRAPH
# then you must also enable this option. If you don't then doxygen will produce
# a warning and turn it on anyway
SOURCE_BROWSER = NO
# Setting the INLINE_SOURCES tag to YES will include the body
# of functions and classes directly in the documentation.
INLINE_SOURCES = NO
# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
# doxygen to hide any special comment blocks from generated source code
# fragments. Normal C and C++ comments will always remain visible.
STRIP_CODE_COMMENTS = YES
# If the REFERENCED_BY_RELATION tag is set to YES (the default)
# then for each documented function all documented
# functions referencing it will be listed.
REFERENCED_BY_RELATION = YES
# If the REFERENCES_RELATION tag is set to YES (the default)
# then for each documented function all documented entities
# called/used by that function will be listed.
REFERENCES_RELATION = YES
# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
# link to the source code. Otherwise they will link to the documentstion.
REFERENCES_LINK_SOURCE = YES
# If the USE_HTAGS tag is set to YES then the references to source code
# will point to the HTML generated by the htags(1) tool instead of doxygen
# built-in source browser. The htags tool is part of GNU's global source
# tagging system (see http://www.gnu.org/software/global/global.html). You
# will need version 4.8.6 or higher.
USE_HTAGS = NO
# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
# will generate a verbatim copy of the header file for each class for
# which an include is specified. Set to NO to disable this.
VERBATIM_HEADERS = YES
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
# of all compounds will be generated. Enable this if the project
# contains a lot of classes, structs, unions or interfaces.
ALPHABETICAL_INDEX = NO
# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
# in which this list will be split (can be a number in the range [1..20])
COLS_IN_ALPHA_INDEX = 5
# In case all classes in a project start with a common prefix, all
# classes will be put under the same header in the alphabetical index.
# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
# should be ignored while generating the index headers.
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
# generate HTML output.
GENERATE_HTML = YES
# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
# put in front of it. If left blank `html' will be used as the default path.
HTML_OUTPUT = html
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
# doxygen will generate files with .html extension.
HTML_FILE_EXTENSION = .html
# The HTML_HEADER tag can be used to specify a personal HTML header for
# each generated HTML page. If it is left blank doxygen will generate a
# standard header.
HTML_HEADER =
# The HTML_FOOTER tag can be used to specify a personal HTML footer for
# each generated HTML page. If it is left blank doxygen will generate a
# standard footer.
HTML_FOOTER =
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
# style sheet that is used by each HTML page. It can be used to
# fine-tune the look of the HTML output. If the tag is left blank doxygen
# will generate a default style sheet. Note that doxygen will try to copy
# the style sheet file to the HTML output directory, so don't put your own
# stylesheet in the HTML output directory as well, or it will be erased!
HTML_STYLESHEET =
# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
# files or namespaces will be aligned in HTML using tables. If set to
# NO a bullet list will be used.
HTML_ALIGN_MEMBERS = YES
# If the GENERATE_HTMLHELP tag is set to YES, additional index files
# will be generated that can be used as input for tools like the
# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
# of the generated HTML documentation.
GENERATE_HTMLHELP = NO
# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the
# page has loaded. For this to work a browser that supports
# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
HTML_DYNAMIC_SECTIONS = NO
# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
# be used to specify the file name of the resulting .chm file. You
# can add a path in front of the file if the result should not be
# written to the html output directory.
CHM_FILE =
# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
# be used to specify the location (absolute path including file name) of
# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
# the HTML help compiler on the generated index.hhp.
HHC_LOCATION =
# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
# controls if a separate .chi index file is generated (YES) or that
# it should be included in the master .chm file (NO).
GENERATE_CHI = NO
# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
# controls whether a binary table of contents is generated (YES) or a
# normal table of contents (NO) in the .chm file.
BINARY_TOC = NO
# The TOC_EXPAND flag can be set to YES to add extra items for group members
# to the contents of the HTML help documentation and to the tree view.
TOC_EXPAND = NO
# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
# top of each HTML page. The value NO (the default) enables the index and
# the value YES disables it.
DISABLE_INDEX = NO
# This tag can be used to set the number of enum values (range [1..20])
# that doxygen will group on one line in the generated HTML documentation.
ENUM_VALUES_PER_LINE = 4
# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
# generated containing a tree-like index structure (just like the one that
# is generated for HTML Help). For this to work a browser that supports
# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
# probably better off using the HTML help feature.
GENERATE_TREEVIEW = NO
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
# used to set the initial width (in pixels) of the frame in which the tree
# is shown.
TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
# generate Latex output.
GENERATE_LATEX = NO
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
# put in front of it. If left blank `latex' will be used as the default path.
LATEX_OUTPUT = latex
# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
# invoked. If left blank `latex' will be used as the default command name.
LATEX_CMD_NAME = latex
# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
# generate index for LaTeX. If left blank `makeindex' will be used as the
# default command name.
MAKEINDEX_CMD_NAME = makeindex
# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
# LaTeX documents. This may be useful for small projects and may help to
# save some trees in general.
COMPACT_LATEX = NO
# The PAPER_TYPE tag can be used to set the paper type that is used
# by the printer. Possible values are: a4, a4wide, letter, legal and
# executive. If left blank a4wide will be used.
PAPER_TYPE = a4
# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
# packages that should be included in the LaTeX output.
EXTRA_PACKAGES =
# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
# the generated latex document. The header should contain everything until
# the first chapter. If it is left blank doxygen will generate a
# standard header. Notice: only use this tag if you know what you are doing!
LATEX_HEADER =
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
# is prepared for conversion to pdf (using ps2pdf). The pdf file will
# contain links (just like the HTML output) instead of page references
# This makes the output suitable for online browsing using a pdf viewer.
PDF_HYPERLINKS = YES
# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
# plain latex in the generated Makefile. Set this option to YES to get a
# higher quality PDF documentation.
USE_PDFLATEX = YES
# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
# command to the generated LaTeX files. This will instruct LaTeX to keep
# running if errors occur, instead of asking the user for help.
# This option is also used when generating formulas in HTML.
LATEX_BATCHMODE = NO
# If LATEX_HIDE_INDICES is set to YES then doxygen will not
# include the index chapters (such as File Index, Compound Index, etc.)
# in the output.
LATEX_HIDE_INDICES = NO
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
# The RTF output is optimized for Word 97 and may not look very pretty with
# other RTF readers or editors.
GENERATE_RTF = NO
# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
# put in front of it. If left blank `rtf' will be used as the default path.
RTF_OUTPUT = rtf
# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
# RTF documents. This may be useful for small projects and may help to
# save some trees in general.
COMPACT_RTF = NO
# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
# will contain hyperlink fields. The RTF file will
# contain links (just like the HTML output) instead of page references.
# This makes the output suitable for online browsing using WORD or other
# programs which support those fields.
# Note: wordpad (write) and others do not support links.
RTF_HYPERLINKS = NO
# Load stylesheet definitions from file. Syntax is similar to doxygen's
# config file, i.e. a series of assignments. You only have to provide
# replacements, missing definitions are set to their default value.
RTF_STYLESHEET_FILE =
# Set optional variables used in the generation of an rtf document.
# Syntax is similar to doxygen's config file.
RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
# generate man pages
GENERATE_MAN = NO
# The MAN_OUTPUT tag is used to specify where the man pages will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
# put in front of it. If left blank `man' will be used as the default path.
MAN_OUTPUT = man
# The MAN_EXTENSION tag determines the extension that is added to
# the generated man pages (default is the subroutine's section .3)
MAN_EXTENSION = .3
# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
# then it will generate one additional man file for each entity
# documented in the real man page(s). These additional files
# only source the real man page, but without them the man command
# would be unable to find the correct page. The default is NO.
MAN_LINKS = NO
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
# If the GENERATE_XML tag is set to YES Doxygen will
# generate an XML file that captures the structure of
# the code including all documentation.
GENERATE_XML = NO
# The XML_OUTPUT tag is used to specify where the XML pages will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
# put in front of it. If left blank `xml' will be used as the default path.
XML_OUTPUT = xml
# The XML_SCHEMA tag can be used to specify an XML schema,
# which can be used by a validating XML parser to check the
# syntax of the XML files.
XML_SCHEMA =
# The XML_DTD tag can be used to specify an XML DTD,
# which can be used by a validating XML parser to check the
# syntax of the XML files.
XML_DTD =
# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
# dump the program listings (including syntax highlighting
# and cross-referencing information) to the XML output. Note that
# enabling this will significantly increase the size of the XML output.
XML_PROGRAMLISTING = YES
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
# generate an AutoGen Definitions (see autogen.sf.net) file
# that captures the structure of the code including all
# documentation. Note that this feature is still experimental
# and incomplete at the moment.
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# configuration options related to the Perl module output
#---------------------------------------------------------------------------
# If the GENERATE_PERLMOD tag is set to YES Doxygen will
# generate a Perl module file that captures the structure of
# the code including all documentation. Note that this
# feature is still experimental and incomplete at the
# moment.
GENERATE_PERLMOD = NO
# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
# the necessary Makefile rules, Perl scripts and LaTeX code to be able
# to generate PDF and DVI output from the Perl module output.
PERLMOD_LATEX = NO
# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
# nicely formatted so it can be parsed by a human reader. This is useful
# if you want to understand what is going on. On the other hand, if this
# tag is set to NO the size of the Perl module output will be much smaller
# and Perl will parse it just the same.
PERLMOD_PRETTY = YES
# The names of the make variables in the generated doxyrules.make file
# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
# This is useful so different doxyrules.make files included by the same
# Makefile don't overwrite each other's variables.
PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
# evaluate all C-preprocessor directives found in the sources and include
# files.
ENABLE_PREPROCESSING = YES
# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
# names in the source code. If set to NO (the default) only conditional
# compilation will be performed. Macro expansion can be done in a controlled
# way by setting EXPAND_ONLY_PREDEF to YES.
MACRO_EXPANSION = NO
# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
# then the macro expansion is limited to the macros specified with the
# PREDEFINED and EXPAND_AS_DEFINED tags.
EXPAND_ONLY_PREDEF = NO
# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
# in the INCLUDE_PATH (see below) will be search if a #include is found.
SEARCH_INCLUDES = YES
# The INCLUDE_PATH tag can be used to specify one or more directories that
# contain include files that are not input files but should be processed by
# the preprocessor.
INCLUDE_PATH =
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
# directories. If left blank, the patterns specified with FILE_PATTERNS will
# be used.
INCLUDE_FILE_PATTERNS =
# The PREDEFINED tag can be used to specify one or more macro names that
# are defined before the preprocessor is started (similar to the -D option of
# gcc). The argument of the tag is a list of macros of the form: name
# or name=definition (no spaces). If the definition and the = are
# omitted =1 is assumed. To prevent a macro definition from being
# undefined via #undef or recursively expanded use the := operator
# instead of the = operator.
PREDEFINED =
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
# this tag can be used to specify a list of macro names that should be expanded.
# The macro definition that is found in the sources will be used.
# Use the PREDEFINED tag if you want to use a different macro definition.
EXPAND_AS_DEFINED =
# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
# doxygen's preprocessor will remove all function-like macros that are alone
# on a line, have an all uppercase name, and do not end with a semicolon. Such
# function macros are typically used for boiler-plate code, and will confuse
# the parser if not removed.
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::additions related to external references
#---------------------------------------------------------------------------
# The TAGFILES option can be used to specify one or more tagfiles.
# Optionally an initial location of the external documentation
# can be added for each tagfile. The format of a tag file without
# this location is as follows:
# TAGFILES = file1 file2 ...
# Adding location for the tag files is done as follows:
# TAGFILES = file1=loc1 "file2 = loc2" ...
# where "loc1" and "loc2" can be relative or absolute paths or
# URLs. If a location is present for each tag, the installdox tool
# does not have to be run to correct the links.
# Note that each tag file must have a unique name
# (where the name does NOT include the path)
# If a tag file is not located in the directory in which doxygen
# is run, you must also specify the path to the tagfile here.
TAGFILES =
# When a file name is specified after GENERATE_TAGFILE, doxygen will create
# a tag file that is based on the input files it reads.
GENERATE_TAGFILE =
# If the ALLEXTERNALS tag is set to YES all external classes will be listed
# in the class index. If set to NO only the inherited external classes
# will be listed.
ALLEXTERNALS = NO
# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
# in the modules index. If set to NO, only the current project's groups will
# be listed.
EXTERNAL_GROUPS = YES
# The PERL_PATH should be the absolute path and name of the perl script
# interpreter (i.e. the result of `which perl').
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
# or super classes. Setting the tag to NO turns the diagrams off. Note that
# this option is superseded by the HAVE_DOT option below. This is only a
# fallback. It is recommended to install and use dot, since it yields more
# powerful graphs.
CLASS_DIAGRAMS = YES
# You can define message sequence charts within doxygen comments using the \msc
# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to
# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to
# specify the directory where the mscgen tool resides. If left empty the tool is assumed to
# be found in the default search path.
MSCGEN_PATH =
# If set to YES, the inheritance and collaboration graphs will hide
# inheritance and usage relations if the target is undocumented
# or is not a class.
HIDE_UNDOC_RELATIONS = YES
# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
# available from the path. This tool is part of Graphviz, a graph visualization
# toolkit from AT&T and Lucent Bell Labs. The other options in this section
# have no effect if this option is set to NO (the default)
HAVE_DOT = YES
# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
# will generate a graph for each documented class showing the direct and
# indirect inheritance relations. Setting this tag to YES will force the
# the CLASS_DIAGRAMS tag to NO.
CLASS_GRAPH = NO
# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
# will generate a graph for each documented class showing the direct and
# indirect implementation dependencies (inheritance, containment, and
# class references variables) of the class with other documented classes.
COLLABORATION_GRAPH = NO
# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
# will generate a graph for groups, showing the direct groups dependencies
GROUP_GRAPHS = YES
# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
# collaboration diagrams in a style similar to the OMG's Unified Modeling
# Language.
UML_LOOK = NO
# If set to YES, the inheritance and collaboration graphs will show the
# relations between templates and their instances.
TEMPLATE_RELATIONS = NO
# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
# tags are set to YES then doxygen will generate a graph for each documented
# file showing the direct and indirect include dependencies of the file with
# other documented files.
INCLUDE_GRAPH = NO
# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
# documented header file showing the documented files that directly or
# indirectly include this file.
INCLUDED_BY_GRAPH = NO
# If the CALL_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will
# generate a call dependency graph for every global function or class method.
# Note that enabling this option will significantly increase the time of a run.
# So in most cases it will be better to enable call graphs for selected
# functions only using the \callgraph command.
CALL_GRAPH = NO
# If the CALLER_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will
# generate a caller dependency graph for every global function or class method.
# Note that enabling this option will significantly increase the time of a run.
# So in most cases it will be better to enable caller graphs for selected
# functions only using the \callergraph command.
CALLER_GRAPH = NO
# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
# will graphical hierarchy of all classes instead of a textual one.
GRAPHICAL_HIERARCHY = NO
# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
# then doxygen will show the dependencies a directory has on other directories
# in a graphical way. The dependency relations are determined by the #include
# relations between the files in the directories.
DIRECTORY_GRAPH = YES
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
# generated by dot. Possible values are png, jpg, or gif
# If left blank png will be used.
DOT_IMAGE_FORMAT = png
# The tag DOT_PATH can be used to specify the path where the dot tool can be
# found. If left blank, it is assumed the dot tool can be found in the path.
DOT_PATH =
# The DOTFILE_DIRS tag can be used to specify one or more directories that
# contain dot files that are included in the documentation (see the
# \dotfile command).
DOTFILE_DIRS =
# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
# nodes that will be shown in the graph. If the number of nodes in a graph
# becomes larger than this value, doxygen will truncate the graph, which is
# visualized by representing a node as a red box. Note that doxygen if the number
# of direct children of the root node in a graph is already larger than
# MAX_DOT_GRAPH_NOTES then the graph will not be shown at all. Also note
# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
DOT_GRAPH_MAX_NODES = 50
# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
# graphs generated by dot. A depth value of 3 means that only nodes reachable
# from the root by following a path via at most 3 edges will be shown. Nodes
# that lay further from the root node will be omitted. Note that setting this
# option to 1 or 2 may greatly reduce the computation time needed for large
# code bases. Also note that the size of a graph can be further restricted by
# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
MAX_DOT_GRAPH_DEPTH = 0
# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
# background. This is disabled by default, which results in a white background.
# Warning: Depending on the platform used, enabling this option may lead to
# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
# read).
DOT_TRANSPARENT = NO
# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
# files in one run (i.e. multiple -o and -T options on the command line). This
# makes dot run faster, but since only newer versions of dot (>1.8.10)
# support this, this feature is disabled by default.
DOT_MULTI_TARGETS = NO
# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
# generate a legend page explaining the meaning of the various boxes and
# arrows in the dot generated graphs.
GENERATE_LEGEND = YES
# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
# remove the intermediate dot files that are used to generate
# the various graphs.
DOT_CLEANUP = YES
#---------------------------------------------------------------------------
# Configuration::additions related to the search engine
#---------------------------------------------------------------------------
# The SEARCHENGINE tag specifies whether or not a search engine should be
# used. If set to NO the values of all tags below this one will be ignored.
SEARCHENGINE = NO
================================================
FILE: GPL
================================================
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
================================================
FILE: LICENSE
================================================
DarkRadiant License (last update: 2024-03-08)
----------------------------------------------------------------------------------------------
DarkRadiant is free software originally based on GtkRadiant, which has been licensed under
the GNU General Public License (GPLv2) http://www.gnu.org/licenses/gpl-2.0.html
Therefore all of the DarkRadiant source code (save a few exceptions noted below) is published
under the same GPLv2 license. Unless stated otherwise in the source file header, the following
applies to the DarkRadiant source code:
DarkRadiant - Open Source Level Editor for Doom 3 and The Dark Mod
Copyright (C) 2024 Matthias Baumann (on behalf of the DarkRadiant Team, see AUTHORS file)
==========================================================================================
This program is free software; you can redistribute it and/or modify it under the terms of
the GNU General Public License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program;
if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
MA 02110, USA
==========================================================================================
Exceptions to the above
----------------------------------------------------------------------------------------------
PicoModel Library - published under the modified Berkeley Software Distribution (BSD) license
DDS Library - published under the modified Berkeley Software Distribution (BSD) license
pybind11 Library - see the LICENSE file in the libs/pybind folder
fmtlib Library - see the LICENSE file in the libs/libfmt folder (BSD 2-clause "Simplified" License)
OpenFBX library - see the LICENSE file in radiantcore/model/import/openfbx (MIT license)
pugixml library - see the LICENSE file in the libs/pugixml folder (MIT license)
SHA256 implementation - by Brad Conte, released into the public domain, see this URL:
(https://github.com/B-Con/crypto-algorithms/tree/master#readme)
================================================
FILE: NEWS
================================================
================================================
FILE: PKGBUILD
================================================
# Maintainer: codereader <greebo[AT]angua[DOT]at>
pkgname=darkradiant
pkgver=3.8.0
pkgrel=1
pkgdesc="Level Editor for Doom 3 (idTech4) and The Dark Mod"
arch=("x86_64")
url="https://www.darkradiant.net/"
license=("GPL")
depends=(wxgtk2 ftgl glew freealut libvorbis python libsigc++ eigen)
makedepends=(cmake git)
source=("$pkgname::git+https://github.com/codereader/DarkRadiant.git#tag=3.8.0")
md5sums=("SKIP")
build() {
cd "$pkgname"
cmake .
make
}
package() {
cd "$pkgname"
make DESTDIR="$pkgdir/" install
}
================================================
FILE: README.md
================================================
<img align="right" src="https://github.com/codereader/DarkRadiant/blob/master/install/bitmaps/repository_logo.png?raw=true" alt="DarkRadiant Logo">
# DarkRadiant
DarkRadiant is a level (map) editor for the **The Dark Mod**, an open-source Doom 3 modification which is available at www.thedarkmod.com. Its primary use is creating missions for The Dark Mod as well as maps for idTech4-based games like Doom 3, Quake 4 and Prey.
## Download
Get the latest DarkRadiant binaries from the [releases page](https://github.com/codereader/DarkRadiant/releases/latest). We have binaries for Windows and macOS, plus [compilation instructions](https://wiki.thedarkmod.com/index.php?title=DarkRadiant_-_Compiling_in_Linux) for various Linux distributions.
# Getting started
DarkRadiant requires game resources to work with, these resources are not installed by this editor. You'll need to point DarkRadiant to one of these games (The Dark Mod, Doom 3, Quake 4, etc.) before you can start to work on your map. Visit [www.thedarkmod.com](https://www.thedarkmod.com) for download instructions, then proceed with one of the tutorials available on the web.
For The Dark Mod mappers, there are a couple of [Video Tutorials](https://wiki.thedarkmod.com/index.php?title=DarkRadiant_Video_Tutorials) on the project's wiki, which should get you started.
# Compiling on Windows
## Prerequisites
DarkRadiant is built on Windows using *Microsoft Visual Studio*, the free Community Edition can be obtained here:
*VC++ 2022:* https://visualstudio.microsoft.com/downloads/ (Choose Visual Studio Community)
When installing Studio please make sure to enable the "Desktop Development with C++" workload.
## Build
The main Visual C++ solution file is located in the root folder of this repository:
`DarkRadiant.sln`
Open this file with Visual Studio and start a build by right-clicking on the top-level
"Solution 'DarkRadiant'" item and choosing Build Solution. The `DarkRadiant.exe` file will be placed in the `install/` folder.
### Windows Build Dependencies
Since DarkRadiant requires a couple of open-source libraries that are not available on Windows by default, it will try to download and install the dependencies when the build starts. If it fails for some reason, you can try to run this script:
`tools/scripts/download_windeps.ps1`
or extract the tools manually, downloading the 7-Zip package containing the necessary files from the URL below ([Get 7-zip here](https://www.7-zip.org/)):
https://github.com/codereader/DarkRadiant_WinDeps/releases/latest/
The dependencies packages need to be extracted into the main DarkRadiant source directory, i.e. alongside the `include/` and `radiant/` directories.
Just drop the windeps.7z in the DarkRadiant folder and use 7-zip's "Extract to here"
# Compiling on Linux
## Prerequisites
To compile DarkRadiant a number of libraries (with development headers) and a standards-compliant C++17 compiler are required. On an Ubuntu system the requirements may include any or all of the following packages:
* zlib1g-dev
* libjpeg-dev
* libwxgtk3.0-dev
* libxml2-dev
* libsigc++-2.0-dev
* libpng-dev
* libftgl-dev
* libglew-dev
* libalut-dev
* libvorbis-dev
* libgtest-dev
* libeigen3-dev
* libgit2-dev (optional)
To generate the local offline HTML user guide, the `asciidoctor` command must be in your
PATH. This is an optional dependency: if the command is not found, the CMake build will
proceed without building the user guide.
This does not include core development tools such as g++ or the git client to download the
sources (use sudo apt-get install git for that). One possible set of packages might be:
`sudo apt-get install git cmake g++ gettext pkg-config`
More required package lists for various Linux distributions are [listed in the Wiki Article](https://wiki.thedarkmod.com/index.php?title=DarkRadiant_-_Compiling_in_Linux).
## Build
To build DarkRadiant the standard CMake build process is used:
```
cmake .
make
sudo make install
```
To install somewhere other than the default of `/usr/local`, use the `CMAKE_INSTALL_PREFIX` variable.
```
cmake -DCMAKE_INSTALL_PREFIX=/opt/darkradiant
make
sudo make install
```
Other useful variables are `CMAKE_BUILD_TYPE` to choose Debug or Release builds, `ENABLE_DM_PLUGINS` to disable the building of Dark Mod specific plugins (enabled by default), and `ENABLE_RELOCATION` to control whether DarkRadiant uses hard-coded absolute paths like `/usr/lib` or paths relative to the binary (useful for certain package formats like Snappy or FlatPak).
# Compiling on macOS
## Prerequisites
You'll need an Xcode version supporting C++17 and the macOS 10.15 (Catalina) target at minimum. Xcode 11.3 should be working fine. You will need to install the Xcode command line tools to install MacPorts (run `xcode-select --install`)
To compile DarkRadiant, a number of libraries (with development headers) are
required. You can obtain them by using [MacPorts](https://distfiles.macports.org/MacPorts/):
Install MacPorts, then open a fresh console and issue these commands:
```
sudo port install jpeg wxwidgets-3.0 pkgconfig libsigcxx2 freetype ftgl glew
sudo port install libxml2 freealut libvorbis libogg openal-soft eigen3
```
## Build
Start Xcode and open the project file in `tools/xcode/DarkRadiant.xcodeproj`.
Hit CMD-B to start the build, the output files will be placed to a folder
similar to this:
`~/Library/Developer/Xcode/DerivedData/DarkRadiant-somethingsomething/Build/Products/Release`
The `DarkRadiant.app` package in that folder can be launched right away or
copied to some location of your preference.
# More Build Information
A more detailed compilation guide can be found on The Dark Mod's wiki:
https://wiki.thedarkmod.com/index.php?title=DarkRadiant_-_Compilation_Guide
# Contact / Discussion
DarkRadiant Website: https://www.darkradiant.net
All discussion is ongoing primarily at [The Dark Mod Forums](https://forums.thedarkmod.com/forum/51-darkradiant-feedback-and-development/), where you can get in touch with knowledgeable people
and discuss changes or issues. If you happen to run into a bug, you're encouraged to report it to us, especially when running into
application crashes (see also [How to record a crashdump](https://wiki.thedarkmod.com/index.php?title=Save_a_Memory_Dump_for_debugging_Crashes)).
The issue tracker for DarkRadiant is also run by the Dark Mod folks: [DarkRadiant Bugtracker](https://bugs.thedarkmod.com/view_all_bug_page.php?project_id=1).
# License
The DarkRadiant source code is published under the [GNU General Public License 2.0 (GPLv2)](http://www.gnu.org/licenses/gpl-2.0.html
), except for a few libraries which are using the BSD or MIT licenses, see the [LICENSE](https://raw.githubusercontent.com/codereader/DarkRadiant/master/LICENSE) file for specifics.
================================================
FILE: config.h.in
================================================
/* Core module file, e.g. "libradiantcore" */
#cmakedefine CORE_MODULE_LIBRARY "@CORE_MODULE_LIBRARY@"
/* Project version */
#define PACKAGE_VERSION "@CMAKE_PROJECT_VERSION@"
/* Defined if this is a relocatable build */
#cmakedefine ENABLE_RELOCATION
/* Locale directory */
#define LOCALEDIR "@CMAKE_INSTALL_FULL_LOCALEDIR@"
/* Package library directory (e.g. /usr/lib/darkradiant) */
#cmakedefine PKGLIBDIR "@PKGLIBDIR@"
/* Relative library directory from binary (e.g. ../lib/darkradiant). Only
* defined if ENABLE_RELOCATION is defined. */
#cmakedefine RELATIVE_LIBDIR "@RELATIVE_LIBDIR@"
/* Package data directory (e.g. /usr/share/darkradiant) */
#cmakedefine PKGDATADIR "@PKGDATADIR@"
/* HTML directory (e.g. /usr/share/doc/darkradiant) */
#cmakedefine HTMLDIR "@HTMLDIR@"
================================================
FILE: darkradiant.spec
================================================
Name: darkradiant
Version: 0.9.12
Release: 2%{?dist}
Summary: Level editor for Doom 3 and The Dark Mod
Group: Applications/Editors
License: GPLv2 and LGPLv2 and BSD
URL: http://darkradiant.sourceforge.net/
Source0: %{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: automake, autoconf, libtool, desktop-file-utils
%description
DarkRadiant is a 3D level editor for Doom 3 and The Dark Mod, based on the GPL
release of GtkRadiant.
%prep
%setup -q
%build
%configure --enable-darkmod-plugins --enable-debug --prefix=/usr
make %{?_smp_mflags}
%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT
desktop-file-install \
--dir=${RPM_BUILD_ROOT}%{_datadir}/applications \
${RPM_BUILD_ROOT}%{_datadir}/applications/darkradiant.desktop
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%doc README
%{_bindir}/*
%{_libdir}/darkradiant/lib*
%{_libdir}/darkradiant/modules
%{_libdir}/darkradiant/scripts
%{_libdir}/darkradiant/plugins/eclasstree*
%{_datadir}/*
%package plugins-darkmod
Summary: DarkMod-specific plugins for DarkRadiant
Group: Applications/Editors
Requires: darkradiant
%description plugins-darkmod
These plugins are used for editing Dark Mod missions.
%files plugins-darkmod
%defattr(-,root,root,-)
%doc README.linux
%{_libdir}/darkradiant/plugins/dm_*
%changelog
* Tue Mar 26 2009 ibix <ibixian@gmail.com> - 0.9.12-2
- patches upstream. Removed here.
* Tue Mar 24 2009 ibix <ibixian@gmail.com> - 0.9.12-1
- spec file.
- patch for sound detection on fedora.
- patch for valid desktop entry.
================================================
FILE: debian/README
================================================
The Debian Package darkradiant
----------------------------
Comments regarding the Package
-- orbweaver <orbweaver3d@gmail.com> Sat, 21 Jun 2008 15:25:20 +0100
================================================
FILE: debian/changelog
================================================
darkradiant (3.9.2~jammy1) jammy; urgency=medium
* Fix incorrect preview rendering of vertex blends between pairs of diffuse
and bump maps.
* Fix inability to choose source and replacement materials using the Skin
Editor GUI.
* Several additional layout and usability improvements to Skin Editor.
* Improvements to layout and organisation of Preferences dialog; consolidate a
few pages and remove obsolete items.
* Add a new preference to control the font size of text in the various source
code editors.
* Fix wxGTK assertion failure on opening Stim/Response editor.
-- Matthew Mott <orbweaver3d@gmail.com> Mon, 19 Aug 2024 19:24:12 +0100
darkradiant (3.9.1~jammy1) jammy; urgency=medium
* Textures with RGTC normal maps no longer show as black in lighting preview
mode.
* Skin editor no longer crashes when editing the skin name.
* Reduced space wastage in Surface Editor.
* Several dialogs which could previously be shrunk to zero size no longer do
so.
-- Matthew Mott <orbweaver3d@gmail.com> Sat, 25 May 2024 13:10:46 +0100
darkradiant (3.9.0~jammy1) jammy; urgency=medium
* Add "Show definition" button for the "inherit" spawnarg.
* Preserve patch tesselation fixed subdivisions when creating caps.
* Add Filters for Location Entities and Player Start.
* Support saving entity key/value pairs containing double quotes.
* Allow a way to easily see all properties of attached entities.
* Ortho views preserve their orientation between sessions.
* Various bug fixes and minor improvements.
-- Matthew Mott <orbweaver3d@gmail.com> Tue, 02 Apr 2024 20:26:39 +0100
darkradiant (3.8.0~jammy1) jammy; urgency=medium
* New feature: Support new frob-related material keywords.
* Mission selection list in Game setup is now alphabetically sorted.
* Better distinction between inherited and regular spawnargs.
* Silence sound shader button.
* Add Reload Definitions button to Model Chooser.
* Various bug fixes and minor improvements.
-- Matthew Mott <orbweaver3d@gmail.com> Tue, 07 Feb 2023 20:34:04 +0000
darkradiant (3.7.0~jammy1) jammy; urgency=medium
* New feature: Skin Editor
* Script Window usability improvements
* Various bug fixes.
-- Matthew Mott <orbweaver3d@gmail.com> Wed, 11 Jan 2023 20:29:21 +0000
darkradiant (3.6.0~jammy1) jammy; urgency=medium
* New Selection Focus feature (Ctrl-F).
* Add Radiant.findEntityByName script method.
* Media Browser shows a thumbnail preview when selecting folders.
* Map is remembering layer visibilities between loads.
-- Matthew Mott <orbweaver3d@gmail.com> Tue, 15 Nov 2022 20:28:13 +0000
darkradiant (3.5.0~jammy1) jammy; urgency=medium
* More customisable layout: all windows and panes can be dragged and
re-arranged. Legacy layouts like Embedded, Regular and Splitpane are
superseded and removed.
* The LayerControlPanel's tooltip popup is now less annoying.
* Clarify distinction between Shadow render mode and other render modes
* Show/hide Light Volumes for combined entities inconsistent.
* Currently applied particleDef not selected in Particle Selector.
* Layer visibility checkbox not reacting to double-clicks.
* Cannot toggle visibility of layers in Linux.
* Drag-and-dropping layers is not working in Linux.
-- Matthew Mott <orbweaver3d@gmail.com> Tue, 08 Nov 2022 19:52:10 +0000
darkradiant (3.4.0~jammy1) jammy; urgency=medium
* Layers can now be organised into a tree rather than a flat list.
* Several bug fixes.
-- Matthew Mott <orbweaver3d@gmail.com> Tue, 11 Oct 2022 20:11:03 +0100
darkradiant (3.3.0~jammy1) jammy; urgency=medium
* New FX chooser and support for parsing FX declarations.
* Numerous menu entries greyed out when not currently available.
* Certain menu entries and UI elements hidden when not available in current
game.
* Renderer now handles "translucent" keyword.
* Lighting mode renderer now draws hidden lights.
* Several minor bugfixes.
-- Matthew Mott <orbweaver3d@gmail.com> Tue, 27 Sep 2022 19:53:22 +0100
darkradiant (3.2.0~jammy1) jammy; urgency=medium
* Show entityDefs related to selected models in Model Chooser.
* Support for rendering blend lights.
* Implement sorting of Interaction Stages.
* Recognise type of "set x on y" spawnargs.
* OBJ files: loader supports usemtl keywords directly referencing material
names (without .mtl file).
* Numerous bug fixes and improvements.
-- Matthew Mott <orbweaver3d@gmail.com> Tue, 06 Sep 2022 20:27:52 +0100
darkradiant (3.1.0~jammy1) jammy; urgency=medium
* Texture Tool now supports free scaling with the mouse.
* Improved robustness and correctness of decl handling.
* Numerous fixes to Material Editor.
* Improve Model Export dialog and workflow.
* Other fixes and improvements.
-- Matthew Mott <orbweaver3d@gmail.com> Tue, 23 Aug 2022 20:49:18 +0100
darkradiant (3.0.0~focal1) focal; urgency=medium
* New major release on all platforms
* Significant improvements to performance and functionality of renderer,
including shadow support.
* Numerous small fixes and improvements.
-- Matthew Mott <orbweaver3d@gmail.com> Wed, 15 Jun 2022 20:39:03 +0100
darkradiant (2.14.0~focal2) focal; urgency=medium
* New major release on all platforms.
* Multi-selection support in Entity Inspector.
* New model importer with ability to import FBX models.
* Improved copy-paste of textures on angled faces.
* Improved scaling functionality in Surface Inspector.
* Redesigned Game Connection UI to enable hot reload in The Dark Mod.
* Numerous smaller fixes and improvements.
-- Matthew Mott <orbweaver3d@gmail.com> Sun, 28 Nov 2021 18:52:23 +0000
darkradiant (2.13.0~focal4) focal; urgency=medium
* Fix for incorrect entity/brush colours in canvas windows.
-- Matthew Mott <orbweaver3d@gmail.com> Tue, 24 Aug 2021 19:45:54 +0100
darkradiant (2.13.0~focal1) focal; urgency=medium
* New major release on all platforms.
* Git integration with three-way map comparison and diffing.
* Ability to choose between several different pointfiles.
* Improved workflow for adjusting light brightness.
* Entity Inspector can show editor_usage information.
* BC5/RGTC normal map support.
* Aspect ratio-preserving Fit Texture option.
* Shader selector can show material definitions.
* Restore texture browser ability to show variable size thumbnails.
* Numerous other bug fixes and improvements.
-- Matthew Mott <orbweaver3d@gmail.com> Tue, 10 Aug 2021 19:41:21 +0100
darkradiant (2.12.0~focal3) focal; urgency=medium
* Include resources needed by the Material Editor preview.
-- Matthew Mott <orbweaver3d@gmail.com> Tue, 04 May 2021 19:35:53 +0100
darkradiant (2.12.0~focal2) focal; urgency=medium
* New major release on all platforms.
* Add a customisable UI layout using wxAUI.
* New material editor for visual editing of material definitions.
* Renderer improvements: entities with attached lights now render as lights,
and ambient lights display correctly regardless of surface orientation.
* New 3D grid feature.
* Add a script to detect duplicated objects.
* Various bug fixes and improvements.
-- Matthew Mott <orbweaver3d@gmail.com> Mon, 03 May 2021 13:39:18 +0100
darkradiant (2.11.0~focal2) focal; urgency=medium
* New favourites system for assets like entities, textures and sound shaders.
* Improved text search in resource browsers.
* Ability to list model definitions in model chooser.
* Initial GUI improvements to game connection plugin.
* Various bug fixes.
-- Matthew Mott <orbweaver3d@gmail.com> Fri, 29 Jan 2021 20:36:34 +0000
darkradiant (2.10.0~focal1) focal; urgency=medium
* New major release on all platforms.
* Introduce ability to merge/connect adjacent patches.
* Maps can now be loaded from within PK4 resource packages.
* Font family and size can be adjusted in 2D views (grid coordinates etc).
* Colour scheme can override light volume colour (instead of using the _color
spawnarg) in 2D views.
* New warning if overwriting map file which has been modified since loading
(e.g. by another DarkRadiant instance).
* Numerous bug fixes and minor UI improvements.
-- Matthew Mott <orbweaver3d@gmail.com> Sat, 26 Dec 2020 19:39:52 +0000
darkradiant (2.9.1~focal5) focal; urgency=medium
* First package built using the new CMake build system.
* Fix an assertion failure on showing the Stim/Response editor.
* Introduce preference to set the font and size of numeric text in the 2D
view.
* Maps can now be loaded directly from within the PK4 resource tree.
-- Matthew Mott <orbweaver3d@gmail.com> Thu, 10 Dec 2020 15:43:35 +0000
darkradiant (2.9.1~focal1) focal; urgency=medium
* 2.9.1 release for Focal.
* Includes the new GameConnection functionality for The Dark Mod, as well as
numerous bug fixes and improvements.
-- Matthew Mott <orbweaver3d@gmail.com> Tue, 24 Nov 2020 19:36:02 +0000
darkradiant (2.7.0) bionic; urgency=medium
* 2.7.0 release for Bionic.
-- Matthew Mott <orbweaver3d@gmail.com> Tue, 14 Jan 2020 21:37:34 +0000
darkradiant (2.6.0) bionic; urgency=medium
* 2.6.0 release for Bionic.
* This feature release is further improving on the Model Exporting
capabilities and introduces smaller features like a mapping time stopwatch
and the ability to define favourites in the Media Browser, making it more
convenient to work with a large number of materials.
-- Matthew Mott <orbweaver3d@gmail.com> Fri, 18 Jan 2019 20:17:22 +0000
darkradiant (2.0.2-2~vivid1) vivid; urgency=medium
* Entity list now shows entity names, and no longer crashes when an entity is
selected.
-- Matthew Mott <orbweaver3d@gmail.com> Thu, 24 Sep 2015 22:58:44 +0100
darkradiant (2.0.2-1~vivid1) vivid; urgency=medium
* 2.0.2 release for Vivid.
-- Matthew Mott <orbweaver3d@gmail.com> Fri, 28 Aug 2015 22:43:48 +0100
darkradiant (2.0.2) trusty; urgency=medium
* New upstream release.
-- Matthew Mott <orbweaver3d@gmail.com> Mon, 12 Jan 2015 18:48:28 +0000
darkradiant (2.0.1-1~trusty1) trusty; urgency=medium
* Fix for crash/assertion when trying to show Add Property dialog.
* Added .game file for The Dark Mod standalone that does not include a base/
subdirectory.
* Various other bugfixes.
-- Matthew Mott <orbweaver3d@gmail.com> Wed, 24 Dec 2014 14:41:12 +0000
darkradiant (2.0.1~trusty2) trusty; urgency=low
* 2.0 series release for Linux, including the switch from GTK to wxWidgets.
* 2.0.1 contains numerous bug-fixes over the original 2.0 version.
-- Matthew Mott <orbweaver3d@gmail.com> Mon, 17 Nov 2014 19:55:17 +0000
darkradiant (1.8.0~trusty1) trusty; urgency=low
* This release contains numerous bug and stability fixes as well as one new
feature for flooring objects. Some improvements have also been made to
better support different game types.
* Fix for patch mesh rendering on nVidia hardware with recent drivers.
-- Matthew Mott <orbweaver3d@gmail.com> Sat, 28 Jun 2014 10:02:35 +0100
darkradiant (1.7.3~raring1) raring; urgency=low
* Fixed progressive corruption of non-worldspawn brush geometry over multiple
save operations (#3272)
-- Matthew Mott <orbweaver3d@gmail.com> Sat, 02 Feb 2013 09:15:03 +0000
darkradiant (1.7.2~raring1) raring; urgency=low
* Fixed incorrect renaming of entities when importing a map (#2733).
-- Matthew Mott <orbweaver3d@gmail.com> Mon, 22 Oct 2012 18:35:36 +0100
darkradiant (1.7.1~raring2) raring; urgency=low
* Fixed black render artifacts in model preview window (#2939).
* Fixed lighting view turning black when certain models are in view (#2969).
* Fixed crash on exit after changing view layout (#2954).
* Fixed sky box textures failing to render.
* Fixed inability to move vertices with arrow keys in camera view (#2938).
* Fixed crash after Save As in Particle Editor (now renamed to Copy to better
reflect its behaviour).
* Fixed crash in Readables editor if certain font resources were missing from
the mod assets tree.
* Re-designed model chooser allows control over visibility of model's
component materials.
* Improved performance of map loading and population of certain asset tree
views (#2987).
* Splitter position in certain dialogs is persistent.
* Linux build does not fail if GtkSourceView is not available, this is now an
optional dependency.
* Updated GTK and related library versions on Windows (#2945)
-- Matthew Mott <orbweaver3d@gmail.com> Sun, 13 May 2012 11:25:18 +0100
darkradiant (1.7.0.1~raring1) raring; urgency=low
* Fixed possible crash in displaying particle editor on Linux.
* Fixed failure to find user-local mod assets in (e.g.) ~/.doom3/darkmod
-- Matthew Mott <orbweaver3d@gmail.com> Tue, 29 Nov 2011 19:51:12 +0000
darkradiant (1.7.0~raring1) raring; urgency=low
* 1.7.0 release.
-- Matthew Mott <orbweaver3d@gmail.com> Mon, 14 Nov 2011 11:13:41 +0000
================================================
FILE: debian/compat
================================================
10
================================================
FILE: debian/control
================================================
Source: darkradiant
Section: editors
Priority: optional
Maintainer: Matthew Mott <orbweaver3d@gmail.com>
Build-Depends: debhelper (>= 10), cmake (>= 3.12), pkg-config, asciidoctor, libxml2-dev, libglew-dev, python3-dev, libvorbis-dev, libopenal-dev, libalut-dev, libjpeg-dev, libftgl-dev, libwxgtk3.2-dev, libsigc++-2.0-dev, libglib2.0-dev, libeigen3-dev, libgit2-dev
Homepage: https://www.darkradiant.net/
Vcs-Git: https://gitlab.com/orbweaver/DarkRadiant.git
Standards-Version: 4.5.1
Package: darkradiant
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Level editor for Doom 3 and The Dark Mod
DarkRadiant is a 3D level editor for Doom 3 and The Dark Mod, based on the GPL
release of GtkRadiant.
Package: darkradiant-plugins-darkmod
Architecture: any
Depends: darkradiant, ${shlibs:Depends}, ${misc:Depends}
Description: DarkMod-specific plugins for DarkRadiant
These plugins are used for editing Dark Mod missions.
Package: darkradiant-plugin-git
Architecture: any
Depends: darkradiant, ${shlibs:Depends}, ${misc:Depends}
Description: Git integration plugin for DarkRadiant
This plugin allows DarkRadiant to integrate with Git version control.
Package: darkradiant-i18n
Architecture: any
Depends: darkradiant, ${misc:Depends}
Description: Internationalisation files for DarkRadiant.
This package includes the translated strings for localising DarkRadiant into
different languages. The currently-available languages are:
.
de (German)
================================================
FILE: debian/copyright
================================================
Copyright Notice:
© 2006 - 2010 OrbWeaver <orbweaver3d@gmail.com>, greebo & other DarkRadiant
authors listed below.
© 2006 GtkRadiant authors listed below.
Authors:
DarkRadiant portions:
OrbWeaver <orbweaver3d@gmail.com>
greebo
STiFU
mohij
angua
Crispy
Gildoran
Jesps (Bulge patch algorithm)
GtkRadiant portions:
Leonardo Zide leo@lokigames.com
Mike Phillips (Loki QA)
Bernd Kreimeier (overall coordination)
TTimo timo@idsoftware.com
^Fishman (Pablo Zurita) fish@gamedesign.net
RR2DO2 rr2do2@q3f.com
SmallPileofGibs spog@planetquake.com
Mike "mickey" Jackman
Tim "Maj" Rennie
Geoffrey DeWan
David Hyde
seaw0lf with assist by ydnar
Randy 'ydnar' Reddig
Jean-Francois "Eutectic" Groleau
Jan Paul "MrElusive" van Waveren
Robert Duffy
Forest "LordHavoc" Wroncy-Hale
Nurail
AcidDeath
Chronos
Michael Schlueter
Jamie Wilkinson
Robert "Tr3B" Beckebans
Licence:
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this package; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
On Debian systems, the complete text of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL'.
================================================
FILE: debian/darkradiant-i18n.install
================================================
usr/share/locale
================================================
FILE: debian/darkradiant-plugin-git.install
================================================
usr/lib/*/darkradiant/plugins/libvcs*
================================================
FILE: debian/darkradiant-plugins-darkmod.install
================================================
usr/lib/*/darkradiant/plugins/libdm_*
================================================
FILE: debian/darkradiant.install
================================================
usr/bin
usr/lib/*/darkradiant/lib*
usr/lib/*/darkradiant/modules
usr/share/darkradiant/scripts
usr/share/darkradiant
usr/share/doc/darkradiant
usr/share/applications
usr/share/icons
usr/share/metainfo
================================================
FILE: debian/darkradiant.manpages
================================================
man/darkradiant.1
================================================
FILE: debian/dirs
================================================
usr/bin
usr/lib
usr/share
================================================
FILE: debian/docs
================================================
README.md
================================================
FILE: debian/rules
================================================
#!/usr/bin/make -f
%:
dh $@
override_dh_auto_configure:
dh_auto_configure -- -DENABLE_RELOCATION:BOOL=OFF
override_dh_auto_test:
true
override_dh_shlibdeps:
dh_shlibdeps -l/usr/lib/darkradiant
================================================
FILE: debian/source/format
================================================
3.0 (native)
================================================
FILE: doc/CMakeLists.txt
================================================
set(DR_STAGING_DOCDIR "${DR_STAGING_ROOT}/share/doc/darkradiant")
add_custom_command(
OUTPUT manual.html
COMMAND ${ASCIIDOCTOR}
ARGS -a stylesheet=manual.css -D ${DR_STAGING_DOCDIR} ${CMAKE_CURRENT_SOURCE_DIR}/manual.adoc
DEPENDS manual.adoc
)
add_custom_target(doc ALL DEPENDS manual.html)
# Copy the images into the staging directory for local preview
file(GLOB_RECURSE DOC_IMAGES img/*.png)
execute_process(
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_CURRENT_SOURCE_DIR}/img
${DR_STAGING_DOCDIR}/img
)
# Installation at package time
install(FILES ${DR_STAGING_DOCDIR}/manual.html DESTINATION ${CMAKE_INSTALL_DOCDIR})
install(DIRECTORY img DESTINATION ${CMAKE_INSTALL_DOCDIR} FILES_MATCHING PATTERN "*.png")
================================================
FILE: doc/manual.adoc
================================================
= DarkRadiant User Guide
:toc: left
:toclevels: 3
:imagesdir: img
:icons:
:iconsdir: img
== Introduction
DarkRadiant is a level editor for Doom 3 and The Dark Mod, developed by The Dark
Mod team. It may also be used for editing levels for similar *id Software* games
such as Quake 4.
This User Guide describes the features and functionality of DarkRadiant, however
it is not intended as a guide to mapping techniques. Level design is a complex
topic, and is covered by various other learning resources, some of which are
listed below.
http://wiki.thedarkmod.com/index.php?title=Main_Page[The Dark Mod Wiki]:: The
starting point for most Dark Mod documentation and tutorials, including
gameplay, configuration and editing.
https://modwiki.xnet.fi[ModWiki]:: Online wiki covering editing topics for
vanilla Doom 3 and similar engines.
http://forums.thedarkmod.com[The Dark Mod forums]:: Online community for
discussion of the Dark Mod, including various ad-hoc mapping tutorial threads
posted by individual users.
=== Editing workflow
image::DarkRadiantWorkflow.png[align="center"]
The level editing process starts off with basic assets: models, textures,
sounds, entity definitions, skins, animations and so on. Many of these assets
will be packaged with a particular game installation, but a level designer may
also choose to create custom assets for a specific mission. These assets are
installed into a directory tree which is accessible both by DarkRadiant (for
editing) and the game engine itself (for playing the mission).
Once assets have been arranged in DarkRadiant according to the wishes of the
level designer, a `.map` file is saved to disk. This is a text file in a format
understood by the game engine, and includes both level geometry and references
to the assets used in the map. Since the `.map` file is simply text, and does
not actually embed the binary asset data, it tends to be fairly small.
The game engine includes functionality to _compile_ the `.map` file into a
`.proc` file containing low-level vertex geometry derived from the brushes and
patches within the `.map` file. The game engine can then render the mission in
realtime, making use of the same assets that were accessed by DarkRadiant during
editing.
DarkRadiant also maintains its own separate file containing various editing
information, such as object layers used within a map. This `.darkradiant` file
is never used by the game engine, and is non-critical -- a `.map` file with no
accompanying `.darkradiant` file can still be edited with DarkRadiant, although
certain DarkRadiant-specific state may be lost.
=== What's in a MAP?
There are three main types of object contained within a `.map` file: entities,
brushes and patches.
*Entities* are the top-level objects in a map -- essentially, a map file is just a
list of entities. Every entity has an *entity class* which determines the type
of entity it is: static mesh, AI, sound emitter, particle emitter, light etc.
Entities also store a list of string key/value pairs, known as *spawnargs* or
*properties*. Some entities also contain brushes and patches as children.
*Brushes* are convex solids used to define basic map geometry: walls, floors,
ceilings, steps and other medium to large items. Brushes are often rectangular
in shape, although a brush can actually have any number of faces provided that
it is convex (it is impossible to have a brush in an L or a U shape, for
example). Brushes are not smooth-shaded by the game engine, which generally
makes them unsuitable for representing curved surfaces.
*Patches* are smooth one-sided surfaces used to represent curved objects such as
vaulted ceilings, pillars or cave interiors. A patch is defined by a number of
Bezier control points, and offers control over the level of detail used when
subdividing the patch into triangles for rendering: more triangles will produce
a smoother surface but may lower rendering performance.
Brushes and patches together are also referred to as *primitives* (since they
define the basic geometry of the map), and are typically described as such in
situations where the distinction between brush and patch is not important.
The entities, brushes and patches in a map are arranged in a hierarchy: not
every entity has children, but every primitive must have an entity as a parent.
Each map therefore starts with a single default entity called the *worldspawn*,
which acts as the parent for new brushes and patches created in DarkRadiant.
== Initial configuration
[[GameSetup]]
=== Choosing a game type
When running DarkRadiant for the first time, the *Game Setup* dialog will be
shown. This is where you configure the path to the game installation from which
DarkRadiant will load assets, such as textures, models and entity definitions.
image::GameSetupDialog.png[align="center"]
The *Game Setup* dialog contains the following options:
*Game Type*:: DarkRadiant ships with support for several different game engines,
each of which is contained within a `.game` file. For editing Dark Mod
missions, the default choice of `The Dark Mod 2.0 (Standalone)` is the one to
use, but it is also possible to edit stock Doom 3 or Quake 4 missions.
*DarkMod Path* / *Engine Path*:: This is the path to the game installation on
the system. The label text will change depending on whether the selected game
is `The Dark Mod` or another engine.
*Mission*:: Optional path to a subdirectory containing assets specific to a
particular mission which is being worked on. For game types other than `The
Dark Mod`, this will be displayed as *Mod (fs_game)*, and should be set to the
path of a subdirectory containing a particular game mod, if one is being used.
*Mod Base (fs_game_base)*:: This field only appears for non-DarkMod game types.
It allows a two-level mod structure, where the *Mod Base* can point to a major
game mod, possibly downloaded from elsewhere, while *Mod* can be set to point
to an entirely local "sub-mod" which contains local changes and overrides.
Before the release of Dark Mod standalone, this field would have been set to
`darkmod` while the *Mod* field would have been set to the local mission,
however this is no longer necessary when `The Dark Mod 2.0 (Standalone)` is
being used.
Once the game paths are set up, click the *Save* button to proceed to the main
DarkRadiant interface.
NOTE: It is possible to *Cancel* the *Game Setup* dialog and proceed to the main
window without configuring a game installation, in which case DarkRadiant will
show a warning and ask if you wish to proceed. If you do, DarkRadiant will run
but there will be no available textures, models, entities or other game assets.
=== Interface layout
DarkRadiant uses a flexible layout system based on dockable windows which can be moved into
various positions around the edges of the main window, or floated as separate top-level
windows. The arrangement and sizes of these windows are saved into settings and persisted
between sessions.
Each window has a small title bar at the top showing the window's name. Dragging this title
bar will allow the docked window to be floated or docked into a different position depending
on the drag destination. When the window is dragged near a possible dock position, a shaded
rectangle will appear indicating where the window will be docked.
There is a central 2D view which cannot be undocked or replaced, although it can be made
arbitrarily small by expanding docked widgets towards the center. Likewise, the camera view
and properties panels cannot be removed, although they can be resized and moved into
different dock positions.
You can create _additional_ 2D and camera views using the *View -> New XY view* and *View ->
New Camera view* menu items. These additional views can be floated or docked like the main
windows, and can also be removed by clicking the *X* button at the top right of the title
bar. All 2D views store their orientation (XY/YZ/XZ) into settings, which makes it possible
to set up a traditional 3D modelling interface with three orthographic views and a camera
view, if desired.
[[ColourSchemes]]
=== Colour schemes
DarkRadiant defaults to a black-on-white colour scheme in the 2D windows, but ships with
four other colour schemes, which can be chosen with the *View -> Colours...* dialog. If you
prefer a dark theme, the `Black & Green` scheme might be suitable, whereas the
`Maya/Max/Lightwave Emulation` and `Super Mal` themes provide a more neutral, low-contrast
look.
Colour schemes only affect what is rendered in the 2D and 3D views by DarkRadiant itself.
The appearance of the user interface is determined by the *wxWidgets* toolkit based on the
system-wide widget theme, and can only be changed via system settings or other applications
(such as `gnome-tweaks` on Linux).
[align="center",cols="^.<a,^.<a,^.<a",grid="none"]
|===
|image:DarkRadiantDefaultTheme.png[] +
*DarkRadiant Default*
|image:BlackGreenTheme.png[] +
*Black and Green*
|image:Q3RadiantTheme.png[] +
*QE3Radiant Original*
|image:SuperMalTheme.png[] +
*Super Mal*
|image:MayaEmulationTheme.png[] +
*Maya/Max/Lightwave Emulation*
|
|===
Each of the colour schemes can be edited using the colour selector buttons in
the *Colours* dialog, and it is also possible to copy one of the default schemes
into a custom scheme with a new name.
NOTE: The game installation may specify the colour of certain entity types, in
which case it will not be possible to change the colour of these entities via
the *Colours* dialog.
== Basic editing
=== Navigating the 2D view
The game world is a three-dimensional vector space with a central origin,
rendered in the 2D editing window as a grid. The unit of measurement is an
arbitrary game unit which does not directly correspond to any real-world
measurement system -- in The Dark Mod, a typical human stands around 80 - 90
game units high, making a game unit about 2 cm.
Each 2D window shows which axes it is representing with an icon in the top-left
corner, as well as an identical icon at the `<0,0,0>` origin position, if
visible within the view.
.Components of the 2D view
image::2DViewMarkedUp.png[align="center"]
The 2D view also shows the current position of the camera (used for rendering
the separate 3D camera view window), and its view direction.
The following commands are available within the 2D view:
[cols="1h,3"]
|===
|Right drag|Scroll the view horizontally or vertically
|Mouse wheel|Zoom the view
|Shift + Right drag|Zoom the view (alternative binding)
|Ctrl + Middle click|Move the camera directly to the clicked position
|Middle click|Rotate the camera to look directly at the clicked point
|Ctrl + TAB|Change view axis (XY, XZ, YZ)
|Ctrl + Shift + TAB|Center 2D view on current camera position
|===
=== Adjusting the grid
The grid shown in the 2D view is used to snap the position and size of brushes
and patches, as well as the centerpoints of entities. The size of the grid can
be configured, in powers of 2, from 0.125 up to 256, using the *1-9* keys on the
main keyboard (not the numeric keypad), or the equivalent options in the *Grid*
menu.
The *0* key on the main keyboard can be used to toggle the display of the grid.
Note that objects will still be snapped to the grid even if the grid is not
visible; this is purely a visual toggle.
IMPORTANT: Level geometry built from brushes and patches should _always_ be
snapped to the grid to avoid problems such as rendering glitches and map leaks.
Static meshes and animated AI can be positioned more freely, however grid
snapping is a useful tool for ensuring that models are appropriately aligned
with the level geometry.
==== Customising the grid appearance
The appearance of the grid can be customised using the options in the *Grid* tab of the *Edit
-> Preferences* dialog. Separate styles can be chosen for major and minor grid lines.
[align="center",cols="^.<a,^.<a,^.<a",grid="none"]
|===
|image:GridStyleLines.png[] +
*Lines*
|image:GridStyleDottedLines.png[] +
*Dotted Lines*
|image:GridStyleMoreDottedLines.png[] +
*More Dotted Lines*
|image:GridStyleSquares.png[] +
*Squares*
|image:GridStyleDots.png[] +
*Dots*
|image:GridStyleBigDots.png[] +
*Big Dots*
|===
=== Adding a background image
The 2D view is capable of showing a background image, which may be useful to show image
references, or sketched 2D maps to guide the placement of level geometry.
To show a background image, choose *View -> Background image...* which will show the
background image configuration dialog.
*Use background image*:: Master toggle to show or hide the background image.
*Image file*:: Click on the widget to show a file chooser which allows you to find and
select the background image to show.
*Opacity*:: Drag the slider to control the opacity of the image, from fully transparent
(invisible) to fully opaque.
*Scale*:: Adjusts the size of the image.
*Horiz. offset*:: Adjusts the position of the image from left to right.
*Vert. offset*:: Adjusts the position of the image from top to bottom.
*Keep aspect*:: If checked, the image will always be displayed at its native aspect ratio.
If unchecked, the image will have the same aspect ratio as the containing 2D view.
*Zoom with viewport*:: If checked, the image will change size as the 2D view is zoomed in or
out. If unchecked, the image will always have the same size regardless of the 2D window
zoom.
*Pan with viewport*:: If checked, the image will be anchored in 2D space, and will stay in
the same position relative to the world as the 2D view is panned. If unchecked, the image
will always have the same position relative to the window, and the world geometry will pan
around it.
[[Using3DCameraView]]
=== Using the 3D camera view
The 3D camera view provides an approximate rendering of the map in three
dimensions, in several different render modes: wireframe, flat shaded, textured,
and fully lit by in-game light sources. While the 2D view is the main interface
for creating and aligning level geometry, the 3D view is a vital tool for tasks
such as texturing, or configuring light parameters.
IMPORTANT: The fully lit rendering mode in DarkRadiant is not identical to what
the game engine will ultimately render. Certain advanced rendering features such
as reflections and fog lights are not currently supported.
The 3D camera view provides its own toolbar which can be used to configure
various display settings.
[cols="^1h,3h,10"]
|===
3+^h|Render modes
|image:wireframeMode16.png[align="center",width=24]|Render in wireframe mode|
Render objects as wire meshes.
|image:solidMode16.png[align="center",width=24]|Render in flat-shaded mode|
Render objects as coloured solids, without textures or lighting.
|image:textureMode16.png[align="center",width=24]|Render in fullbright textured mode|
Render objects as preview textures, with no lighting or material effects such as
transparency.
|image:lightingMode.png[align="center",width=24]|Render in lighting preview mode|
Render all available lighting and texture effects.
|image:lightingModeWithShadows.png[align="center",width=24]|Toggle shadow rendering|
Enable the rendering of shadows when in lighting preview mode.
3+^h|Animation rendering
|image:StartPlayback.png[align="center",width=24]|Start render time|
Begin rendering animated effects.
|image:StopPlayback.png[align="center",width=24]|Stop render time|
Stop rendering animated effects.
3+^h|Far clip options
|image:toggleFarClip.png[align="center",width=24]|Toggle far clip|
Enable or disable the far clip plane.
The far clip plane is a performance optimisation which avoids rendering geometry
more than a certain distance away from the camera.
|image:farClipIn.png[align="center",width=24]|Clip plane in|
Move the far clip plane closer to the camera.
|image:farClipOut.png[align="center",width=24]|Clip plane out|
Move the far clip plane further away from the camera.
|===
The 3D view always renders the scene from a particular camera position, which is
shown in the 2D view as a blue diamond. This camera position can be set directly
from the 2D view with *Ctrl + Middle click*, and the camera view direction can
be set with *Middle click*. There are also various options within the 3D view
itself to adjust the camera position.
[cols="1h,3"]
|===
|Right click|Enter or leave free camera mode. In this mode, moving the mouse
around updates the camera view direction in real-time, and moving the mouse
around while holding *Ctrl* causes the camera to move up/down/left/right
according to the camera motion.
2+^h|Default mode (not free camera)
|Left/Right arrow|Pan the camera left or right
|Up/Down arrow|Move the camera forwards or backwards on the horizontal plane,
without changing its height on the Z axis.
2+^h|Free camera mode
|Left/Right arrow|Move ("truck") camera left or right, leaving view direction
the same.
|Up/Down arrow|Move ("dolly") the camera forwards or backwards along its view
axis
|===
=== Manipulating objects
Every object in a map can be selected and moved within the 2D view. Some objects
-- including brushes, patches and lights -- can also be resized.
For more advanced ways to select objects, see
<<BrushBasedSelection,brush-based selection>>.
[cols="1h,3"]
|===
|Shift + Left click|Select or deselect the object at the clicked position. Any
existing selected objects will remain selected. If the clicked position
overlaps more than one object, the closest one (according to the current 2D
view axis) will be affected.
|Alt + Shift + Left click|Select the object at the clicked position, and
deselect any existing selected objects. If the clicked position overlaps more
than one object, each click will cycle through the overlapping objects.
|Shift + Left drag|Draw a selection rectangle, which will select any objects
contained (fully or partially) within it.
|ESC|Deselect all objects
|Left drag (_inside_ object)|Move the selected object(s)
|Left drag (_outside_ object)|Resize the selected object(s) (if available)
|Space|Duplicate the selected object(s)
|Backspace|Delete the selected object(s)
|===
TIP: Like other editors in the Radiant family, DarkRadiant offers a rather
unusual system for resizing objects. Rather than clicking exactly on the edge,
or on a dedicated resizing handle, you can click and drag anywhere outside an
edge to move that edge inwards or outwards. Dragging outside a corner allows you
to move two edges at once.
==== Flipping and rotating
DarkRadiant provides six buttons to quickly flip or rotate objects (in 90 degree
increments) around each of the three world axes. These are available on the
left-hand vertical toolbar.
[cols="^1h,10"]
|===
|image:brush_flipx.png[align="center",width=24]|Flip along the X axis
|image:brush_rotatex.png[align="center",width=24]|Rotate around the X axis
|image:brush_flipy.png[align="center",width=24]|Flip along the Y axis
|image:brush_rotatey.png[align="center",width=24]|Rotate around the Y axis
|image:brush_flipz.png[align="center",width=24]|Flip along the Z axis
|image:brush_rotatez.png[align="center",width=24]|Rotate around the Z axis
|===
[[ManipulatorModes]]
==== Manipulator modes
For more precise control over object motion, there are three manipulator modes
which can be selected with buttons on the left-hand vertical toolbar.
[cols="^1h,3h,10"]
|===
|image:select_mousetranslate.png[align="center",width=24]|Translate mode|
A manipulator widget with axis-aligned arrows will be displayed at the selected
object's center. Click and drag one of the arrows to move the object along that
axis, or drag inside the manipulator box to move the object in two dimensions.
This mode may be useful for moving brushes around without accidentally resizing
them.
|image:select_mouserotate.png[align="center",width=24]|Rotate mode|
A widget with three axis-aligned rings will be displayed at the selected
object's center. Drag a ring to rotate the object by any arbitrary amount around
that ring's axis.
|image:select_mouseresize.png[align="center",width=24]|Resize mode|
This is the default Radiant drag mode (hence the "QE" icon referring to the
original QERadiant) which allows you to move objects by dragging inside them and
resize by dragging outside the boundary edges.
|===
=== Working with brushes
Brushes are the basic building blocks of all maps. Typically they are used for
coarse-grained level geometry such as walls, ceiling and floors. Brushes also
have a vital role in sealing a map from the void: even a map built entirely from
patches and static meshes must still be surrounded by brushes in order to avoid
leaking.
.Additive versus subtractive geometry
****
If you are used to mapping for the legacy Thief games using Dromed or T3Edit,
the system used by DarkRadiant may seem somewhat back-to-front. In previous
games, the world starts out as an infinite solid, in which you "carve out" rooms
using subtractive brushes. In DarkRadiant, the world starts out as an infinite
void, and all brushes are solid. The space in which the mission happens must be
fully enclosed by solid brushes, otherwise the map will "leak" and fail to
compile.
The need to deal with map leaks may at first seem like a burden, however the
exclusive use of solid brushes frees the engine from needing to worry about
"brush ordering", and allows an important performance optimisation: by "flood
filling" the map interior, the map compiler can efficiently discard geometry
that never needs to be rendered.
****
[[CreatingABrush]]
==== Creating a brush
To create a simple rectangular brush, ensure that nothing is selected (*ESC*),
then *Left drag* in the 2D view. A new brush will be created and sized according
to the dragged area, with its dimensions snapped to the current grid level. To
adjust the third dimension of the brush (perpendicular to the view direction),
used *Ctrl + TAB* to switch the 2D view axis, and *Left drag* outside the brush
boundary to adjust the size.
TIP: Whenever you drag to create a new brush, the third dimension will match the
size of the _most recently selected_ brush. This makes it easy to draw a series
of brushes with the same height, such as when you need to create a series of
floors or walls in succession. To match the height of an existing brush, simply
select (*Shift + Left click*) and deselect it (*ESC*) before drawing the new
brush.
[[BrushShapes]]
==== More complex brush shapes
Although each brush starts out as a six-sided cuboid, it doesn't have to stay
that way. DarkRadiant offers several options for creating multi-sided brushes in
more complex shapes. To create one of these shapes, first define a regular
cuboid brush covering the volume you want the new shape to occupy, then choose
the appropriate option from the *Brush* menu:
[%autowidth]
|===
|image:6Prism.png[]|
*Prism*
An n-sided approximation of a cylinder, with the axis of the cylinder
aligned with the current 2D view.
|image:6Cone.png[]|
*Cone*
A tapered n-sided cone, which always points upwards regardless of the
2D view axis.
|image:6Sphere.png[]|
*Sphere*
A rotationally symmetric n-sided approximation of a sphere, with the
axis of rotation pointing upwards.
|===
While these shapes can be useful for certain architectural modelling, remember
that brushes are always flat-shaded and are not generally a good substitute for
spheres or cones created with patches or static meshes.
[[CreatingARoom]]
==== Creating a room
Although it is not too difficult to create a hollow room by creating floor,
ceiling and wall brushes manually, this is a common enough operation that
DarkRadiant provides a couple of shortcuts. These options can be found on the
vertical toolbar at the far left of the main window.
[cols="1,4"]
|===
|image:CreateRoomBrush.png[width=320]|
image:CreateRoom.png[width=36] *Create Room*
Create a room whose interior size matches the size of the currently-selected
brush. The wall thickness will be equal to the current grid size.
|image:HollowBrush.png[width=320]|
image:Hollow.png[width=36] *Hollow*
Hollow out the selected brush, leaving the exterior dimensions the same. The
wall thickness will be equal to the current grid size, but the wall brushes will
overlap at the corners, rather than just touching each other as with *Create
Room*.
This is legacy tool from GtkRadiant, and generally inferior to *Create Room*.
The overlapping wall brushes make it more difficult to precisely align interior
textures, since part of the inner face is obscured (and therefore removed during
map compilation). However, there may be occasional situations in which *Hollow*
is useful, so it is retained in DarkRadiant.
|===
The room creation tools do not require the initial brush to be rectangular --
you can quite happily *Create Room* with a triangular or trapezoidal brush, or a
brush with sloping sides. However, with a more complex brush shape, the
complexity of the resulting wall geometry increases considerably, so attempting
to hollow out a 7-sided sphere is probably ill-advised.
[[SplittingBrushes]]
==== Splitting brushes
Sometimes it is necessary to divide a brush into two or more pieces, perhaps to
create a doorway or other opening. The *Clipper* tool, accessed with the *X*
key, is used for this purpose.
.Splitting a brush into two parts
image::ClipTool3D.png[align="center"]
. Select the brush to be split (the Clipper can be activated with nothing
selected, but it will not do anything useful).
. Press *X* to activate the Clipper, or click on the respective icon on the
left-hand editing toolbar.
. Click in the 2D window at two different positions, to define the plane along
which the brush will be split. The proposed split plane will be highlighted in
blue; feel free to change 2D view axis with *Ctrl + TAB* or use the 3D camera view
to better visualise the split plane.
. Once the split plane is defined, press *Shift + Enter* to execute the split and
keep _both_ halves of the brush; press *Enter* to execute the split and keep
only one half. The part of the brush that is kept with *Enter* depends on the
order in which you define the clip points: the points (marked *0* and *1*) will
appear _clockwise_ on the brush edge according to the current 2D view. If in
doubt, just use *Shift + Enter* to keep both parts, and delete the unwanted one
afterwards.
. Repeat the process to perform additional splits on the selected brush, or
disable the Clipper with the *X* key. The Clipper is a toggled tool and will
remain active until disabled.
NOTE: It is possible to create _three_ split points before executing the split,
which will define a split plane in three dimensions. Defining a three-point
split plane which is actually useful, however, may be challenging.
==== Reshaping brush edges
All brush edges can be moved independently, which gives you the ability to
quickly create shapes like triangles or trapeziums. This functionality is
accessed via the *Select Edges* tool on the upper toolbar, or with the *E* key.
.Creating a trapezium using edge editing
image::EdgeEditing.png[align="center"]
. Select a brush.
. Activate *Select Edges* with the toolbar button or *E* key. DarkRadiant will
place a green control point at the center of each brush edge.
. In either the 2D or the 3D view, click and drag on a control point to move its
edge. The control point will turn blue and move along with the cursor. In the 2D
view, dragging corners is generally easiest, since the resulting shape change
can more easily be seen.
. To reduce the number of brush sides, such as changing a rectangle into a
triangle, simply drag one corner directly on top of another. The two edges will
be merged.
[[BrushBasedSelection]]
==== Brush-based selection
As well as using brushes to define map geometry, you can also use them to select
objects. There are three commands on the top toolbar which convert the selected
brush(es) into a temporary selection volume:
[cols="^1h,3h,10"]
|===
|image:SelectCompleteTall.png[align="center",width=24]|Select complete tall|
Select all objects that are _completely_ contained within the two-dimensional
outline of the selected brush(es) in the current 2D view window, ignoring their
position on the third axis (perpendicular to the screen).
|image:SelectInside.png[align="center",width=24]|Select inside|
Select all objects that are _completely_ contained within the selected brush
volume(s) in all three dimensions.
|image:SelectTouching.png[align="center",width=24]|Select touching|
Select all objects that are touching the selected brushes. Unlike the previous
two commands, this one does not remove the selected brushes, since it is
designed to allow you to quickly select objects that are adjacent to real map
geometry.
|===
=== Working with patches
Patches are smooth-shaded Bezier surfaces that can be created and manipulated in
the editor (unlike models), and used to represent a variety of curved shapes
such as vaulted ceilings, arches or pillars. Patches are single-sided surfaces,
not solid like brushes, and cannot be used to seal a map from the void -- any
patch work on the boundary of a map will need solid brushes behind it to prevent
the map from leaking.
==== Creating a simple patch
A simple patch starts off as a flat rectangle, which can then be manipulated
with vertex editing to produce a curved surface, if desired.
To create a simple patch:
. Set the 2D view axes (*Ctrl + TAB*) to define the orientation of the patch.
The patch will be created facing directly towards the screen, so to create a
horizontal (ceiling or floor) patch, the 2D view should be in XY (Top)
orientation.
. <<CreatingABrush,Create a rectangular brush>> to define the width and height of
the patch in the current 2D view (the third dimension is not important, since
the patch will be infinitely thin once created).
. With the brush selected, choose *Create Simple Patch Mesh* from the *Patch*
menu.
. In the dialog, choose the number of control points to define the shape of the
patch along its width and height. A patch can have between 3 and 15 control
points in each dimension; there will always be a control point at the extreme
edge, and one in the middle. More control points allow more complex shapes but
also require more manual adjustment -- creating a simple arch is much easier
with just three control points.
. Click *OK* to create the patch.
.Simple patches with 3, 7 and 15 control points in both dimensions
image::SimplePatchesControlPoints.png[align="center"]
==== Manipulating control points
With a patch selected, press *V* to enter (or leave) vertex editing mode. This
will display all of the control vertices, and allow you to select and move them.
- *Left click* and drag a vertex to move just that one vertex.
- *Shift + Left click* to add a vertex to the current selection set. When
several vertices are selected, dragging any one of the selected vertices will
move all of them together.
- *Shift + Left drag* around several vertices to draw a selection rectangle that
will toggle the selection state of all vertices inside it, selecting them if
unselected and unselecting them if already selected.
.Making an arch by raising the central row of vertices in a simple patch
image::PatchVertexEditing.png[align="center"]
==== Adding or removing control points
Control points can be added or removed from a patch using the appropriate sub-menus in the *Patch*
menu.
[cols="1h,3"]
|===
|*Insert*|
Add rows or columns of control points without changing the dimensions of the patch — the control
points will become more densely packed.
|*Extend*|
Add rows or columns of control points while extending the patch dimensions. The existing control
points are left in the same position.
|*Delete*|
Remove rows or columns without changing the dimensions of the patch (the opposite of *Insert*). The
control points will become less densely packed.
|===
.Inserting (top), Extending (middle) and Deleting (bottom) control points in a patch
image::AddRemovePatchControlPoints.png[align="center"]
==== Thickening a patch
When created, every patch has zero thickness and can only be viewed from one side; however, a patch
can be made into an apparently solid object by creating additional patches automatically via the
*Thicken* command in the *Patch* menu.
.Thickening a patch (left) with side walls (center) and no side walls (right)
image::PatchThicken.png[align="center"]
The *Thicken* dialog presents several options:
[cols="1h,3"]
|===
|*Extrude along Vertex Normals*|
Thicken the patch by extruding the patch surface in the direction it is facing.
|*Extrude along X/Y/Z Axis*|
Thicken the patch by extruding the surface along the specified axis, ignoring the face normal
direction.
|*Thickness (units)*|
Distance in map units to extrude the patch by.
|*Create seams ("side walls")*|
If checked, the extruded patch will be made into a fully solid "object" with an interior volume
completely enclosed by patches. If unchecked, only the initial patch and its extruded copy will be
created, with the sides left open.
|===
TIP: Although a thickened patch appears as a solid object, it still consists of individual patches
which can be selected and manipulated individually. If you wish it to continue to behave as a
solid, you can <<Group,group>> the patches together.
==== More complex patch shapes
Just like with brushes, DarkRadiant offers several default patch shapes beyond
the flat simple patch. These can be created by choosing the corresponding option
in the *Patch* menu. There is no need to have a brush selected first in order to
create these shapes, however if a brush _is_ selected, it will be removed and
used to define the size of the patch shape.
[cols="1,3"]
|===
|image:PatchSphere.png[]|
*Sphere*
An approximation of a sphere (the quadratic Bezier patch implementation in Doom
3 and DarkRadiant does not permit the creation of a perfect sphere).
|image:PatchCylinder.png[]|
*Cylinder*
A hollow cylinder aligned with the direction of the 2D view.
|image:PatchCone.png[]|
*Cone*
A tapered cone pointing along the 2D view axis.
|image:PatchEndCap.png[]|
*End cap*
An arch or half-cylinder covering a 180 degree angle, aligned with the 2D view
axis. The peak of the arch will be at the top if created in front or side views,
making this useful for curved ceilings and the like.
|image:PatchBevel.png[]|
*Bevel*
Portion of an arch covering a 90 degree angle. This may be placed along room
edges to give a curved appearance.
|===
==== Controlling patch subdivision
Although patches are defined by Bezier curves, they are subdivided into flat
polygons for rendering. By default, the number of polygons to create is
determined dynamically by the game engine, based on the shape of the patch.
However, you can also use the *Patch Inspector* to explicitly set the level of
subdivision required, which can be useful when optimising a map by reducing
on-screen polygon counts.
.Default (automatic) subdivision, 2x2 subdivision, 3x3 subdivision, 3x10 subdivision
image::PatchSubdivision.png[align="center"]
To subdivide a patch:
. Select *Patch Inspector* in the *View* menu to make the inspector widget
visible.
. With the patch selected, enable the *Fixed Subdivisions* checkbox.
. Use the *Horizontal* and *Vertical* numeric spinboxes to set the number of
polygons to divide the patch into. The value can range from *1*, making the
patch completely flat regardless of control point positions, up to a maximum of
*32*. Each dimension can have a different subdivision level, if required.
=== Applying textures
When a brush or patch is created, it will be assigned a default texture. To
apply a new texture, you must first select the brush, face or patch to be
textured. There are two different selection commands:
[cols="1h,3"]
|===
|Shift + Left click|
Select an entire brush or patch. Any chosen texture will apply to all faces.
|Ctrl + Shift + Left click|
Select a single brush face for texturing. This command is only available in the
3D camera view
|===
Once you have selected the objects or faces to texture, you can use either the *Media*
or the *Textures* tab to perform the texturing operation.
[[MediaTab]]
==== The Media tab
The *Media* tab shows a tree view which contains all of the textures available
in the game installation. Selecting a texture in the tree will show a small
preview swatch, along with some metadata about the texture definition.
image::MediaTab.png[align="center"]
To apply a texture to the selected brush, simply *Double-click* on a texture
name in the tree. The tree view also offers a context menu with several options:
[cols="1h,3"]
|===
|Load in Textures view|
Load all textures contained within the selected folder, making them available on
the *Textures* tab. This option is not available when a single texture is
highlighted.
|Apply to selection|
Apply the highlighted texture to the current object. This is identical to the
*Double-click* operation, and is only available for single textures, not
folders.
|Show Shader Definition|
Show a syntax-highlighted text window containing the definition of the selected
texture.
|Selected/deselect elements using this shader|
Select or deselect objects in the map which the highlighted texture is
applied to. This can be used for organisational purposes, or to identify whether
a texture is used or not.
|Add to/Remove from favourites|
Add or remove the selected texture from the favourites list. The favourites list
provides easy access to a user-chosen group of textures, and can be accessed by
choosing the *Show Favourites* radio button at the top of the panel.
|===
[[TexturesTab]]
==== The Textures tab
The *Textures* tab provides a scrollable canvas containing preview swatches of
all the textures which are currently loaded in the current map.
image::TexturesTab.png[align="center"]
When DarkRadiant first starts up no textures are loaded and this panel is empty.
New textures can only be loaded via the *Media* tab (described in the
<<MediaTab,previous section>>), either by applying a texture directly to a
brush, or by using the *Load in Textures view* command to explicitly load an
entire folder of textures.
Once textures are loaded onto the *Textures* tab, you can apply them to a
selected object by *Left clicking* on them. By *Right clicking* on a texture you
can access a context menu with a single command *Seek in Media browser*, which
will highlight the clicked texture in the *Media* tab.
[[SurfaceInspector]]
==== Using the Surface Inspector
Once a texture is applied via the Media or Textures tabs, you will most likely
wish to adjust the alignment and scale of the texture on the brush or patch
face. DarkRadiant provides the *Surface Inspector* for this purpose, which can
be toggled with the *S* key or by choosing the option in the *View* menu.
image::SurfaceInspector.png[align="center"]
The Surface Inspector can be used to adjust textures on a single brush or patch
face, or several selected faces/brushes/patches at once. If more than one face
is selected and these faces have different values for text boxes in the dialog,
the text box will be greyed out, however it is still possible to use the buttons
to make changes which will be applied uniformly to all selected faces.
[cols="1h,3"]
|===
|Shader|This shows the full name of the texture applied to the selected
face(s). You can use the tree button to bring up a new dialog which allows you
to choose a new texture.
|X/Y Shift|These text boxes show the current texture shift (translation)
on the horizontal and vertical axes. The associated arrow buttons will increase
or decrease the texture shift by the current *Step* value.
|X/Y Scale|These show the current texture scale in the horizontal and
vertical directions. The arrow buttons will increase or decrease the scale by
the current *Step* value.
|Rotation|Shows the current texture rotation, in degrees. The arrow buttons will
rotate the texture clockwise or anticlockwise by the current *Step* value.
|Fit|These controls allow you to fit an exact number of copies of the
texture across the face, so that the texture edges correspond to the face edges.
The numeric spin boxes control how many copies of the texture are tiled on each
axis. You can enter a value manually (including fractional values above or below
1.0) or use the spin buttons to quickly increase or decrease the number of
tiles. Using the spin buttons will apply the fit immediately, so you can quickly
preview the results in the camera view.
Toggle the image:preserveAspect.png[] button to *preserve aspect ratio* when
using the spin buttons to fit the texture on one axis. This automatically
adjusts the other axis so that the aspect ratio of the texture image is
preserved, ignoring the value in the other axis' spin box. This can be useful
for textures like wooden planks, where you might want an exact number of plank
_widths_ on a certain brush face but the number of _lengths_ is not important
(since the texture is seamless); in this case, avoiding aspect ratio distortion
is more useful than fitting an exact number of lengths.
|
image:align_top.png[] 
image:align_bottom.png[] 
image:align_left.png[] 
image:align_right.png[]
|These buttons shift the texture so that the Top/Bottom/Left/Right
edge of the face are aligned with a texture boundary, but otherwise do not
modify the scaling of the texture (unlike the *Fit* operation).
|
image:flip_horiz.png[] image:flip_vert.png[]
|Flips (mirrors) the texture along the horizontal or vertical axis.
|Natural|This button resets the texture to a default alignment and scale, based
the location and size of the face. The adjacent *Scale* spinbox allows you to control the
default scale used for *Natural* fitting.
|image:texture_lock.png[]
|If this is enabled, the alignment of the texture will be preserved
relative to the face if the brush or patch is moved in 3D space. If disabled,
the texture itself will remain fixed in 3D space as the brush or patch moves,
resulting in the alignment changing.
Typically, if you have *Fit* a particular number of texture tiles across a face,
you will want to preserve alignment with *Texture Lock*. Conversely, if the
texture is applied to a much larger group of brushes with a common texture (that
needs to align across all of the brushes, regardless of how they are moved or
resized), you will want to disable *Texture Lock*.
|===
[[ShaderClipboard]]
==== Using the shader clipboard
While constructing a map it will frequently be necessary to apply the same
texture to several different surfaces such that they appear seamless in game. In
order to assist with this, DarkRadiant provides a *shader clipboard* which
allows shaders to be copied and pasted between primitives, and is independent of
the main clipboard used for copying and pasting other objects.
===== Copying a shader
There are two ways to copy a shader to the shader clipboard.
1. Select a _single face_ (not an entire brush) with *Ctrl + Shift + Left click*
in the 3D view, then choose *Edit -> Copy shader*.
2. Directly *Middle click* the face in the 3D view (there is no need to select
it first).
In both cases, the *ShaderClipboard* section of the bottom status bar will
update to show the new value of the shader clipboard. If the *Media* or
*Textures* tab is visible, their contents will also update to view the selected
shader.
NOTE: Selecting a texture explicitly in the *Media* or *Textures* tabs will also
update the shader clipboard with the selected shader.
===== Pasting a shader
Once a shader is on the shader clipboard, it can be pasted onto another surface
in a number of ways:
1. Select the destination face with *Ctrl + Shift + Left click*, then choose
*Edit -> Paste shader* or *Edit -> Paste shader (natural)*.
2. Directly *Middle click* the destination face while holding down either *Ctrl*
(to paste the shader with projected coordinates) or *Shift* (to paste the shader
with natural coordinates).
.Natural or projected pasting
****
The difference between natural and projected coordinates is apparent when
pasting a shader onto a curved patch.
With *projected* coordinates (*Ctrl + Middle click*) the texture on the patch
will be aligned identically to the texture on the source face, which might
result in a stretched texture depending on the angle between the patch and the
source face.
With *natural* coordinates (*Shift + Middle click*) the texture will flow over
the curved surface in a more natural manner.
When pasting a shader onto a flat brush face, there may be little or no
difference between the two options.
****
=== Working with entities
If brushes are the bricks and mortar of a map (often literally), entities are
its fixtures and fittings. Every object in a map which "does something" other
than form part of the level geometry is an entity: lights, audio speakers,
particle emitters, static meshes, animated creatures or machinery. There are
also various functional entity types which provide vital metadata to the game
engine, such as determining where the player should start, or how creatures
should navigate between locations.
DarkRadiant provides certain common functionality to all entities, such as the
ability to edit properties using the *Entity* tab. Particular entity types are
sufficiently common, however, that they have their own dedicated creation and
editing tools.
*Light*:: Every map requires at least one light source in order to render
anything in game. A light occupies a rectangular volume, which can be created
and resized much like a brush, and has properties to determine its colour,
visible shape and falloff pattern in three dimensions. Lights can optionally
cast shadows, and can even be animated to flicker or flash.
*Model (func_static)*:: Model entities represent geometry that is not compiled
as part of the map itself. The model geometry can either be derived from brushes
and patches created inside DarkRadiant, or from an external model file in ASE or
LWO format. Model files are the primary mechanism for including fine detail in a
map which would be cumbersome to create with brushes and patches.
*Speaker*:: Essentially the audio equivalent of a light, a speaker entity
represents the point from which an in-game sound source will emanate. It has
properties to control its size and falloff, and optionally override certain
properties of the sound shader itself, such as volume.
*Player start (info_player_start)*:: This entity tells the game engine where to
place the player when a map is first loaded. A map without such an entity will
not be playable.
[[CreatingLights]]
==== Creating lights
To create a light, *Right click* in the 2D view and choose *Create light…*.
The position and size of the light volume depends on the current selection:
- If _nothing_ is selected, then a light volume will be created at the clicked
position with a default size.
- If a _single brush_ is selected, the brush will be deleted and the light
volume will match the size and position of the brush.
- If _several brushes_ are selected, then all selected brushes will be deleted
and the light volume will be sized according to the bounding box of the
brushes (i.e. the smallest box that would contain all of the brushes).
Unselected lights are shown in the 2D view as small boxes, while selected lights
also show the boundaries of the light volume.
.Light entity selected (left) and unselected (right)
image::LightSelectedAndUnselected.png[align="center"]
A selected light entity can be moved by dragging inside the small center box,
and it can be resized by dragging outside the edge of the light volume. Unlike
brushes, light volumes will by default resize symmetrically, so that the center
point does not move during the resize.
NOTE: Although light volumes can be resized like brushes, their shape can never
be changed; every light is an axis-aligned cuboid. This does not, however, mean
that they need to _look_ rectangular in game. See the <<LightInspector,next
section>> for details on how to change the falloff texture using the light
inspector.
There are a couple of options on the top toolbar which control the display and
behaviour of light volumes:
[cols="^1h,3h,10"]
|===
|image:view_show_lightradii.png[align="center",width=24]|Show all light volumes|
If enabled, light volume boundaries will be rendered in the 2D view for _all_
light entities, not just selected entities. The default behaviour is to show
only the center box for unselected light entities.
|image:dragresize_symm.png[align="center",width=24]|Drag-resize entities symmetrically|
If enabled (the default), light entities will be resized symmetrically, without
moving the center point. If disabled, lights will be resized like brushes:
dragging an edge will move only that edge, while the opposite edge remains
fixed.
|===
[[LightInspector]]
===== The light inspector
When initially created, a light is pure white in colour and has an unrealistic
rectangular illumination pattern matching its shape. You can change these
properties using the light inspector, which is accessed with the *L* key.
image::LightInspector.png[align="center"]
TIP: The light inspector can change the properties of a single light, or
multiple selected lights simultaneously.
*Light volume (omni vs projected)*:: The majority of lights in a map will be the
default, omnidirectional shape. An omni light is a simple cuboid which emits
light in all directions from its center to its edges.
+
A projected light is pyramid-shaped, and emits light from the tip of the pyramid
towards the base. Projected lights behave more like spotlights in real-life, and
can be used to highlight particular areas or project images of windows onto the
floor.
*Colour*:: Use the colour selector button to display a standard colour selection
dialog. As well as changing the hue, the light colour also governs the overall
brightness of the light. You can use the slider below the colour button to
adjust the brightness of the selected light(s) without changing the hue, with
realtime feedback displayed in the 3D camera view if lighting preview mode is
enabled.
*Texture*:: The falloff texture controls the shape of the lit area when rendered
in-game; the square texture chosen here will be mapped directly onto the
rectangular shape of the light volume. Light textures can be simple, such as the
generic circular gradient of `biground1`, or much more complex, including
multiple colours or animation.
*Options*:: There are a few light-propagation options which are mostly used to
tweak performance. In particular, disabling shadows for any light which does
not actually _need_ to cast shadows can give a significant boost to rendering
speed.
[[CreatingModels]]
==== Creating models
Static models can be used to provide fine details in a map which would be
difficult or impossible to create in the editor with brushes or patches. Models
are created with an external 3D application such as Blender, Lightwave or Maya,
and saved into the game asset tree in LWO or ASE format.
To insert a model, ensure that nothing is selected, then *Right click* in the 2D
view and choose *Create model…*. DarkRadiant will show the model selector
dialog:
image::ModelSelector.png[align="center"]
In the top-left of the model selector window is a tree of all available models
in the game installation. Models may have different _skins_, which are variants
of the same model with different textures applied. If a model has skins
available, these will be listed as children of the model entry in the tree.
Choosing a model or one of its skins will show a preview render in the large
widget on the right-hand side. Various metadata such as the polygon count and
the applied textures are also shown in table at the lower left.
When you have chosen the desired model, click *OK* to insert it into the map.
The model will be inserted at the position where you originally right-clicked to
show the model chooser.
==== Creating a player start marker
The game requires a special entity (`info_player_start`) to mark the position at
which the player should enter the map. Without such an entity the map will be
unplayable.
To create this entity, ensure that nothing is selected then *Right click* in the
2D view and choose *Create player start here*. DarkRadiant will create the
player start entity at the clicked position.
Since it makes no sense to have more than one player start location, DarkRadiant
will not enable the *Create player start here* menu option if there is already
an `info_player_start` in the map. Instead, you may choose *Move player start
here* to move the existing entity to the clicked position.
==== Creating other entity types
Entity types without a dedicated item in the right-click menu are created using
the generic *Create entity…* option, which displays a dialog very similar to the
<<CreatingModels,model selector>>:
image::EntityClassSelector.png[align="center"]
Just like the model selector, the entity selector displays a tree of all
available entity types in the game installation, and a large preview widget
which shows an approximate rendering of the entity, if appropriate. Purely
functional entity types such as `info_location` or `info_player_start` do not
have any visible appearance and their render preview will be blank.
Some entity types have a short textual description giving information about
their usage; if present, this is displayed in the text box underneath the entity
class tree.
After selecting the desired entity type in the tree, click the *Add* button to
insert an instance of the entity into the map at the right-clicked location. If
the selected entity type requires a brush selection and no brush is selected, a
warning will be shown at this point.
[[EntityInspector]]
==== Editing entity properties
Every entity has a list of key/value pairs known as _properties_ or _spawnargs_.
These properties are displayed on the *Entity* tab of the editing panel.
image::EntityInspector.png[align="center"]
The entity panel lists all of the properties of the currently-selected entity,
showing each property's name, its current value, and an icon representing its
type (boolean, vector, text etc) if known. Selecting a property will populate
the two text boxes in the center of the widget with the property name and value,
allowing the value to be edited. If the selected property is of a known type,
the panel at the bottom will show a custom widget appropriate for editing the
particular property, e.g. three separate numeric spinboxes for a vector
property, a colour selector widget for a colour property, and so on.
*Changing a property value*:: To change the value of the selected property,
simply enter the new value in the lower text box, then hit *Enter* or click the
green tick button. If the property has a type-specific editing widget, you can
also change its value using the controls in this widget.
*Adding a new property*:: There are two different ways to add a new property:
. Enter a new property name in the upper text box (which shows the selected
property name), and hit *Enter*. This does not rename the selected property, but
adds a new property with the edited name and the current value.
. *Right click* in the list of properties and choose *Add property* from the
context menu. This will display a new dialog listing all known properties along
with their descriptive text (if available). Selecting a property in this dialog
and choosing *OK* will add the property to the entity with a default value of
"-", which can then be edited in the entity panel itself.
*Deleting a property*:: To delete the selected property, *Right click* on the
property in the list and choose *Delete property*.
The entity panel provides two options controlling its behaviour:
[cols="1h,3"]
|===
|Show inherited properties|If checked, all properties that apply to the
selected entity will be shown, including those which are inherited from the
entity type declaration in the game installation. If unchecked, only those
properties explicitly set on this particular entity (and stored in the map file)
will be shown.
You can change the value of an inherited property by selecting it and entering a
new value in the entity panel; this will create a new explicit property on the
entity which overrides the inherited default.
|Show help|Enables or disables the text widget at the bottom of the panel
which shows a brief explanation of certain properties. If a property has help
text available, the question mark icon will be shown in the *?* column.
|===
[[ReparentingPrimitives]]
=== Reparenting primitives
Whenever a new brush or patch is created, it will automatically be made a child
of the special *worldspawn* entity, which serves as the default entity
containing all of the primitives which define the world geometry. However,
*worldspawn* is not the only entity which can contain brushes and patches as
children.
When you create a model using the <<CreatingModels,model selector>>, DarkRadiant
will insert a type of entity called a *func_static* into the map to represent
the model geometry. A *func_static* can contain a model file loaded from disk in
LWO or ASE format, but it can also be used as a parent for one or more
primitives created within DarkRadiant. In either case, the behaviour of
*func_static* is the same: it represents a static mesh which is rendered in
game but is considered separate from the main world geometry, meaning that it
does not participate in map compilation, will not seal the map from leaks, and
will not cause intersecting brushes to be subdivided.
It is therefore often useful to make certain brushes and patches — typically
those which represent "fine detail" rather than entire walls, floors and the
like — into *func_static* entities to improve in-game performance and reduce the
chances for map compilation problems caused by excessively complex world
geometry.
The *func_static* entity class is not the only type of entity which can contain
primitives: there are several other *func_* entities which perform various
functions, for example *func_rotating* which allows geometry to rotate
continuously. DarkRadiant offers dedicated commands to convert to/from a
*func_static* since this is a very common operation, however the ability to
<<SelectChildPrimitives,select>>, <<AddRemoveChildPrimitives,add and remove>>
individual primitives behaves the same for all types of primitive-containing
entity.
==== Converting primitives into func_static
To convert one or more existing primitives into a *func_static* entity, simply
select all of the primitives, right-click in the 2D window, and choose *Convert
to func_static*.
[[SelectChildPrimitives]]
==== Manipulating individual child primitives
After converting a primitive, a number of changes are noticeable:
. The primitive may be drawn in a different colour.
. The primitive will no longer be resizeable by dragging its boundary with the
mouse.
. When the primitive is selected, the *Entity Inspector* will no longer show the
*worldspawn* entity, but a new entity with a different *classname* (e.g.
`func_static`). You can set spawnargs on this entity like any other (including
giving it a custom name).
. Selecting any contained primitive will cause a small X/Y/Z axis widget to be
drawn at the entity's origin position (which may be inside one of the
primitives, or outside all of them, depending on their layout).
. If there are multiple primitives contained within a single entity, selecting
any individual primitive will cause all of the entity's primitives to be
selected. This allows you to easily move the entire static object by simply
dragging any one of its primitives.
However, it is still possible to perform operations on a single primitive, for
example resizing a brush, by selecting it with the *TAB* key. Each press of
*TAB* will cause DarkRadiant to select a different primitive contained within
the entity, after which it will return to selecting the entire entity. With only
a single primitive selected, all of the normal operations are possible on that
primitive, for example deleting or resizing it.
The <<EntityInspector,entity inspector>> widget makes it clear whether you have
selected an entity or a primitive within that entity, using the text above the
list of entity properties. If an entire entity is selected, the text will appear
similar to `Entity 1`, whereas with a primitive selected it will read
`Entity 1, Primitive 1`.
[[AddRemoveChildPrimitives]]
==== Adding or removing primitives
Once you have created a *func_static* or similar entity from a number of
primitives, you can add or remove primitives without needing to create a new
entity from scratch.
*Adding a primitive*:: Select the entity, then expand the selection (i.e. using
*Shift + Left click*) to include one or more existing primitives to add to this
entity. Then choose *Edit -> Reparent primitives*.
*Removing a primitive*:: Use the *TAB* key to select the individual primitive to
remove (you must do this even if there is only one primitive in the entity),
then choose *Edit -> Reparent primitives to worldspawn*. The removed primitive
will still exist in the map but it will be a regular worldspawn brush or patch,
not parented to any other entity.
*Unparenting all primitives*:: With the entity selected, simply right-click in
the 2D view and choose *Revert to worldspawn* to turn all of the primitives
back into worldspawn.
=== Compiling a map
DarkRadiant does not include functionality for compiling a map into the form
needed by the game engine; instead, you must use external tools or the map
compiler built into the game itself.
For Doom 3 and the Dark Mod, the following commands are used within the in-game
console (which can normally be accessed with the key immediately above `TAB`):
[horizontal]
`dmap <mymapname.map>`:: Compile the map called `mymapname.map`, which must be
located within the `maps` directory of the mod installation. If there are any
problems compiling the map (e.g. a leak), the error will be displayed in the
console output.
`map <mymapname.map>`:: Load the compiled map `mymapname.map` into the game
engine and start playing it immediately.
TIP: When compiling and testing maps, it may be helpful to set your game to
play in windowed mode, with a reduced resolution. This will allow both the game
and DarkRadiant to be visible on the screen as separate windows, which you can
easily switch between during the compile and test cycle.
==== Preventing leaks
A map "leak" occurs when the play area is not fully enclosed with a complete
shell of opaque brushes. If the map leaks, compilation will fail and the map
will not be playable.
In order to minimise the likelihood of a map leak, ensure that your map has all
of the following properties:
- The map interior is _completely_ sealed from the exterior void by brushes (not
patches). It is much easier to achieve this by building up a map carefully,
making good use of the grid snapping functionality, rather than haphazardly
throwing brushes together and hoping to seal them later.
- All of the sealing brushes have an opaque texture. Skybox textures are
considered opaque and are OK, however semi-transparent or perforated mesh
textures are not.
- The origin point of _every_ entity in the map lies within the sealed map
interior. It is OK if a large model extends outside of the map, provided that
its origin point is on the inside.
WARNING: Do *not* be tempted to avoid leaks by enclosing your entire map in a
single huge box. This may seem to solve the problem (the map will indeed not
leak), but it completely negates the important performance optimisations that
the map compiler carries out when it "flood fills" the map interior.
[[PointFile]]
==== Locating leaks with a pointfile
No matter how hard you try to avoid leaks, occasionally they will happen. In
this case the *pointfile* functionality is helpful to identify the location of
the leak.
After the map compilation has failed with a leak, return to DarkRadiant and
choose *Pointfile* from the *File* menu. This will automatically load the point
file associated with the current map, which contains a series of points
identifying the path to the leak. This path will be rendered as a bright red
line in both the 2D and 3D views:
.A pointfile rendered in both 3D and 3D views
image::Pointfile.png[align="center"]
In this example we can clearly see that the map has leaked because the far wall
brush
gitextract_d_ogn0ar/
├── .editorconfig
├── .gitattributes
├── .github/
│ └── workflows/
│ └── build.yml
├── .gitignore
├── .gitlab-ci.yml
├── AUTHORS
├── CMakeLists.txt
├── DarkRadiant.sln
├── Doxyfile
├── GPL
├── LICENSE
├── NEWS
├── PKGBUILD
├── README.md
├── config.h.in
├── darkradiant.spec
├── debian/
│ ├── README
│ ├── changelog
│ ├── compat
│ ├── control
│ ├── copyright
│ ├── darkradiant-i18n.install
│ ├── darkradiant-plugin-git.install
│ ├── darkradiant-plugins-darkmod.install
│ ├── darkradiant.install
│ ├── darkradiant.manpages
│ ├── dirs
│ ├── docs
│ ├── rules
│ └── source/
│ └── format
├── doc/
│ ├── CMakeLists.txt
│ ├── manual.adoc
│ ├── manual.css
│ └── manual.html
├── include/
│ ├── Bounded.h
│ ├── GLProgramAttributes.h
│ ├── Rotatable.h
│ ├── Scalable.h
│ ├── StringSerialisable.h
│ ├── Texture.h
│ ├── Translatable.h
│ ├── VolumeIntersectionValue.h
│ ├── editable.h
│ ├── i18n.h
│ ├── iaasfile.h
│ ├── iarchive.h
│ ├── iarray.h
│ ├── iautosaver.h
│ ├── ibrush.h
│ ├── icameraview.h
│ ├── iclipboard.h
│ ├── iclipper.h
│ ├── icolourscheme.h
│ ├── icommandsystem.h
│ ├── icomparablenode.h
│ ├── icounter.h
│ ├── icurve.h
│ ├── idatastream.h
│ ├── ideclmanager.h
│ ├── idecltypes.h
│ ├── ieclass.h
│ ├── ieclasscolours.h
│ ├── ieditstopwatch.h
│ ├── ientity.h
│ ├── ifavourites.h
│ ├── ifilesystem.h
│ ├── ifiletypes.h
│ ├── ifilter.h
│ ├── ifonts.h
│ ├── ifx.h
│ ├── igame.h
│ ├── igameresource.h
│ ├── igeometryrenderer.h
│ ├── igeometrystore.h
│ ├── igl.h
│ ├── iglprogram.h
│ ├── igrid.h
│ ├── igroupnode.h
│ ├── igui.h
│ ├── iimage.h
│ ├── iinteractiveview.h
│ ├── ikeyvaluestore.h
│ ├── ilayer.h
│ ├── ilightnode.h
│ ├── ilogwriter.h
│ ├── imanipulator.h
│ ├── imap.h
│ ├── imapexporter.h
│ ├── imapfilechangetracker.h
│ ├── imapformat.h
│ ├── imapinfofile.h
│ ├── imapmerge.h
│ ├── imapresource.h
│ ├── imd5anim.h
│ ├── imd5model.h
│ ├── imessagebus.h
│ ├── imodel.h
│ ├── imodelcache.h
│ ├── imodelsurface.h
│ ├── imodule.h
│ ├── imousetool.h
│ ├── imousetoolevent.h
│ ├── imousetoolmanager.h
│ ├── imru.h
│ ├── inameobserver.h
│ ├── inamespace.h
│ ├── inode.h
│ ├── iobjectrenderer.h
│ ├── iorthoview.h
│ ├── iparticlenode.h
│ ├── iparticles.h
│ ├── iparticlestage.h
│ ├── ipatch.h
│ ├── ipath.h
│ ├── ipreferencesystem.h
│ ├── iradiant.h
│ ├── iregion.h
│ ├── iregistry.h
│ ├── irender.h
│ ├── irenderable.h
│ ├── irenderableobject.h
│ ├── irendersystemfactory.h
│ ├── irenderview.h
│ ├── iscatter.h
│ ├── iscenegraph.h
│ ├── iscenegraphfactory.h
│ ├── iscript.h
│ ├── iscriptinterface.h
│ ├── iselectable.h
│ ├── iselection.h
│ ├── iselectiongroup.h
│ ├── iselectionset.h
│ ├── iselectiontest.h
│ ├── ishaderclipboard.h
│ ├── ishaderexpression.h
│ ├── ishaderlayer.h
│ ├── ishaders.h
│ ├── isound.h
│ ├── ispacepartition.h
│ ├── ispeakernode.h
│ ├── isurfacerenderer.h
│ ├── itexdef.h
│ ├── itextstream.h
│ ├── itexturetoolcolours.h
│ ├── itexturetoolmodel.h
│ ├── itraceable.h
│ ├── itransformable.h
│ ├── itransformnode.h
│ ├── iundo.h
│ ├── iversioncontrol.h
│ ├── ivolumetest.h
│ ├── iwindingrenderer.h
│ ├── modelskin.h
│ ├── precompiled_interfaces.h
│ ├── precompiled_main.h
│ ├── precompiled_math.h
│ ├── precompiled_render_interfaces.h
│ ├── precompiled_ui_interfaces.h
│ ├── ui/
│ │ ├── ianimationchooser.h
│ │ ├── ideclpreview.h
│ │ ├── idialogmanager.h
│ │ ├── ientityinspector.h
│ │ ├── ieventmanager.h
│ │ ├── ifilechooser.h
│ │ ├── imainframe.h
│ │ ├── imenu.h
│ │ ├── imenumanager.h
│ │ ├── iorthocontextmenu.h
│ │ ├── iresourcechooser.h
│ │ ├── istatusbarmanager.h
│ │ ├── itoolbarmanager.h
│ │ ├── iusercontrol.h
│ │ ├── iuserinterface.h
│ │ ├── iwindowstate.h
│ │ └── iwxgl.h
│ └── version.h
├── install/
│ ├── bitmaps/
│ │ ├── .gitignore
│ │ └── missing_model.tga
│ ├── colours.xml
│ ├── commandsystem.xml
│ ├── darkradiant.desktop.in
│ ├── debug.xml
│ ├── games/
│ │ ├── darkmod.game
│ │ ├── doom3-demo.game
│ │ ├── doom3.game
│ │ ├── prey.game
│ │ ├── quake3.game
│ │ ├── quake4.game
│ │ └── xreal.game
│ ├── gl/
│ │ ├── blend_light_fp.glsl
│ │ ├── blend_light_vp.glsl
│ │ ├── cubemap_fp.glsl
│ │ ├── cubemap_vp.glsl
│ │ ├── interaction_fp.glsl
│ │ ├── interaction_vp.glsl
│ │ ├── regular_stage_fp.glsl
│ │ ├── regular_stage_vp.glsl
│ │ ├── shadowmap_fp.glsl
│ │ ├── shadowmap_vp.glsl
│ │ ├── zfill_alpha_fp.glsl
│ │ └── zfill_alpha_vp.glsl
│ ├── i18n/
│ │ ├── LINGUAS
│ │ ├── Makefile.in.in
│ │ ├── Makevars
│ │ ├── POTFILES.in
│ │ ├── darkradiant.pot
│ │ └── de/
│ │ └── LC_MESSAGES/
│ │ ├── darkradiant.mo
│ │ └── darkradiant.po
│ ├── input.xml
│ ├── menu.xml
│ ├── net.darkradiant.DarkRadiant.metainfo.xml
│ ├── resources/
│ │ └── preview/
│ │ ├── cube.ase
│ │ ├── room_cuboid.ase
│ │ ├── sphere.ase
│ │ └── tiles.ase
│ ├── scripts/
│ │ ├── brushtest.py
│ │ ├── commands/
│ │ │ ├── ase_export.py
│ │ │ ├── ase_export_blend.py
│ │ │ ├── check_for_invalid_visportals.py
│ │ │ ├── count_loot.py
│ │ │ ├── example.py
│ │ │ ├── export_obj.py
│ │ │ ├── find_duplicate_entities.py
│ │ │ ├── patchsplitter.py
│ │ │ ├── select_all_models_of_type.py
│ │ │ ├── shift_textures_randomly.py
│ │ │ ├── shift_textures_upwards_randomly.py
│ │ │ └── test_targets.py
│ │ ├── dialogtest.py
│ │ ├── init.py
│ │ ├── materialtest.py
│ │ ├── patchtest.py
│ │ └── test.py
│ ├── ui/
│ │ ├── aboutdialog.fbp
│ │ ├── aboutdialog.xrc
│ │ ├── addpropertydialog.fbp
│ │ ├── addpropertydialog.xrc
│ │ ├── arraydialog.fbp
│ │ ├── arraydialog.xrc
│ │ ├── camwnd.fbp
│ │ ├── camwnd.xrc
│ │ ├── conversationcmdeditor.fbp
│ │ ├── conversationcmdeditor.xrc
│ │ ├── conversationdialog.fbp
│ │ ├── conversationdialog.xrc
│ │ ├── conversationeditor.fbp
│ │ ├── conversationeditor.xrc
│ │ ├── convertmodeldialog.fbp
│ │ ├── convertmodeldialog.xrc
│ │ ├── difficultyeditor.fbp
│ │ ├── difficultyeditor.xrc
│ │ ├── exportasmodeldialog.fbp
│ │ ├── exportasmodeldialog.xrc
│ │ ├── filterdialog.fbp
│ │ ├── filterdialog.xrc
│ │ ├── filtereditor.fbp
│ │ ├── filtereditor.xrc
│ │ ├── findandreplacedialog.fbp
│ │ ├── findandreplacedialog.xrc
│ │ ├── gameconnection.fbp
│ │ ├── gameconnection.xrc
│ │ ├── lightinspector.fbp
│ │ ├── lightinspector.xrc
│ │ ├── materialeditor.fbp
│ │ ├── materialeditor.xrc
│ │ ├── mergecontroldialog.fbp
│ │ ├── mergecontroldialog.xrc
│ │ ├── missioninfoeditdialog.fbp
│ │ ├── missioninfoeditdialog.xrc
│ │ ├── missioninforeadmedialog.fbp
│ │ ├── missioninforeadmedialog.xrc
│ │ ├── modelselector.fbp
│ │ ├── modelselector.xrc
│ │ ├── objectivecomponentsdialog.fbp
│ │ ├── objectivecomponentsdialog.xrc
│ │ ├── objectiveconditionsdialog.fbp
│ │ ├── objectiveconditionsdialog.xrc
│ │ ├── objectiveseditor.fbp
│ │ ├── objectiveseditor.xrc
│ │ ├── particleeditor.fbp
│ │ ├── particleeditor.xrc
│ │ ├── patchcreatedialog.fbp
│ │ ├── patchcreatedialog.xrc
│ │ ├── patchinspector.fbp
│ │ ├── patchinspector.xrc
│ │ ├── patchthickendialog.fbp
│ │ ├── patchthickendialog.xrc
│ │ ├── readableeditor.fbp
│ │ ├── readableeditor.xrc
│ │ ├── renderpreview.fbp
│ │ ├── renderpreview.xrc
│ │ ├── scatterdialog.fbp
│ │ ├── scatterdialog.xrc
│ │ ├── skineditor.fbp
│ │ ├── skineditor.xrc
│ │ ├── stimresponseeditor.fbp
│ │ ├── stimresponseeditor.xrc
│ │ ├── terraingenerator.fbp
│ │ ├── terraingenerator.xrc
│ │ ├── texturetoolmanipulationpanel.fbp
│ │ ├── texturetoolmanipulationpanel.xrc
│ │ ├── vcscommitdialog.fbp
│ │ ├── vcscommitdialog.xrc
│ │ ├── vcsstatusbar.fbp
│ │ └── vcsstatusbar.xrc
│ └── user.xml
├── install.cmake
├── libs/
│ ├── BasicTexture2D.h
│ ├── BasicUndoMemento.h
│ ├── DirectoryArchiveFile.h
│ ├── EventRateLimiter.h
│ ├── GameConfigUtil.h
│ ├── KeyValueStore.h
│ ├── ModelExportOptions.h
│ ├── ObservedSelectable.h
│ ├── ObservedUndoable.h
│ ├── RGBAImage.h
│ ├── RandomOrigin.h
│ ├── Rectangle.h
│ ├── SequentialTaskQueue.h
│ ├── SurfaceShader.h
│ ├── Transformable.h
│ ├── UndoFileChangeTracker.h
│ ├── VcsMapResourceStream.h
│ ├── VersionControlLib.h
│ ├── character.h
│ ├── command/
│ │ ├── ExecutionFailure.h
│ │ └── ExecutionNotPossible.h
│ ├── debugging/
│ │ ├── ScenegraphUtils.h
│ │ ├── ScopedDebugTimer.h
│ │ ├── debugging.cpp
│ │ ├── debugging.h
│ │ ├── gl.h
│ │ └── render.h
│ ├── decl/
│ │ ├── DeclLib.h
│ │ ├── DeclarationBase.h
│ │ ├── DeclarationCreator.h
│ │ └── EditableDeclaration.h
│ ├── dragplanes.h
│ ├── eclass.h
│ ├── entitylib.h
│ ├── gamelib.h
│ ├── generic/
│ │ ├── Lazy.h
│ │ └── callback.h
│ ├── libfmt/
│ │ ├── LICENSE.rst
│ │ └── fmt/
│ │ ├── args.h
│ │ ├── chrono.h
│ │ ├── color.h
│ │ ├── compile.h
│ │ ├── core.h
│ │ ├── fmt.cc
│ │ ├── format-inl.h
│ │ ├── format.cc
│ │ ├── format.h
│ │ ├── os.cc
│ │ ├── os.h
│ │ ├── ostream.h
│ │ ├── printf.h
│ │ ├── ranges.h
│ │ ├── std.h
│ │ └── xchar.h
│ ├── maplib.h
│ ├── materials/
│ │ ├── FrobStageSetup.h
│ │ └── ParseLib.h
│ ├── math/
│ │ ├── AABB.cpp
│ │ ├── AABB.h
│ │ ├── CMakeLists.txt
│ │ ├── FloatTools.h
│ │ ├── Frustum.cpp
│ │ ├── Frustum.h
│ │ ├── Hash.h
│ │ ├── Line.h
│ │ ├── Matrix3.h
│ │ ├── Matrix4.cpp
│ │ ├── Matrix4.h
│ │ ├── Plane3.cpp
│ │ ├── Plane3.h
│ │ ├── Quaternion.h
│ │ ├── Ray.h
│ │ ├── SHA256.cpp
│ │ ├── SHA256.h
│ │ ├── Segment.h
│ │ ├── Vector2.h
│ │ ├── Vector3.h
│ │ ├── Vector4.h
│ │ ├── ViewProjection.h
│ │ ├── Viewer.h
│ │ ├── XYZ.h
│ │ ├── curve.h
│ │ ├── eigen.h
│ │ ├── lrint.h
│ │ └── pi.h
│ ├── messages/
│ │ ├── ApplicationIsActiveRequest.h
│ │ ├── ApplicationShutdownRequest.h
│ │ ├── AutomaticMapSaveRequest.h
│ │ ├── ClearConsole.h
│ │ ├── CommandExecutionFailed.h
│ │ ├── ComponentSelectionModeToggleRequest.h
│ │ ├── FileOverwriteConfirmation.h
│ │ ├── FileSaveConfirmation.h
│ │ ├── FileSelectionRequest.h
│ │ ├── GameConfigNeededMessage.h
│ │ ├── GridSnapRequest.h
│ │ ├── LongRunningOperationMessage.h
│ │ ├── ManipulatorModeToggleRequest.h
│ │ ├── MapFileOperation.h
│ │ ├── MapOperationMessage.h
│ │ ├── NotificationMessage.h
│ │ ├── ScopedLongRunningOperation.h
│ │ ├── TextureChanged.h
│ │ ├── TextureToolRequest.h
│ │ └── UnselectSelectionRequest.h
│ ├── module/
│ │ ├── ApplicationContextBase.cpp
│ │ ├── ApplicationContextBase.h
│ │ ├── CMakeLists.txt
│ │ ├── CoreModule.cpp
│ │ ├── CoreModule.h
│ │ ├── DynamicLibrary.cpp
│ │ ├── DynamicLibrary.h
│ │ ├── StaticModule.cpp
│ │ └── StaticModule.h
│ ├── noise/
│ │ ├── Noise.h
│ │ ├── PerlinNoise.h
│ │ └── SimplexNoise.h
│ ├── os/
│ │ ├── dir.h
│ │ ├── file.h
│ │ ├── fs.h
│ │ └── path.h
│ ├── parser/
│ │ ├── CodeTokeniser.h
│ │ ├── DefBlockSyntaxParser.h
│ │ ├── DefTokeniser.h
│ │ ├── GuiTokeniser.h
│ │ ├── ParseException.h
│ │ ├── ThreadedDeclParser.h
│ │ ├── ThreadedDefLoader.h
│ │ └── Tokeniser.h
│ ├── patch/
│ │ └── PatchIterators.h
│ ├── pivot.h
│ ├── pugixml/
│ │ ├── LICENSE
│ │ ├── pugiconfig.hpp
│ │ ├── pugixml.cpp
│ │ └── pugixml.hpp
│ ├── pybind/
│ │ ├── LICENSE
│ │ └── pybind11/
│ │ ├── attr.h
│ │ ├── buffer_info.h
│ │ ├── cast.h
│ │ ├── chrono.h
│ │ ├── common.h
│ │ ├── complex.h
│ │ ├── detail/
│ │ │ ├── class.h
│ │ │ ├── common.h
│ │ │ ├── descr.h
│ │ │ ├── init.h
│ │ │ ├── internals.h
│ │ │ ├── type_caster_base.h
│ │ │ └── typeid.h
│ │ ├── eigen.h
│ │ ├── embed.h
│ │ ├── eval.h
│ │ ├── functional.h
│ │ ├── gil.h
│ │ ├── iostream.h
│ │ ├── numpy.h
│ │ ├── operators.h
│ │ ├── options.h
│ │ ├── pybind11.h
│ │ ├── pytypes.h
│ │ ├── stl/
│ │ │ └── filesystem.h
│ │ ├── stl.h
│ │ └── stl_bind.h
│ ├── registry/
│ │ ├── CachedKey.h
│ │ ├── Widgets.h
│ │ ├── adaptors.h
│ │ ├── buffer.h
│ │ └── registry.h
│ ├── render/
│ │ ├── CamRenderer.h
│ │ ├── CameraView.h
│ │ ├── Colour4.h
│ │ ├── Colour4b.h
│ │ ├── CompactWindingVertexBuffer.h
│ │ ├── ContinuousBuffer.h
│ │ ├── GeometryStore.h
│ │ ├── IndexedVertexBuffer.h
│ │ ├── MeshVertex.h
│ │ ├── NopRenderView.h
│ │ ├── NopVolumeTest.h
│ │ ├── Rectangle.h
│ │ ├── RenderVertex.h
│ │ ├── RenderableBoundingBoxes.h
│ │ ├── RenderableBox.h
│ │ ├── RenderableCollectionWalker.h
│ │ ├── RenderableCollectorBase.h
│ │ ├── RenderableColouredBoundingBoxes.h
│ │ ├── RenderableGeometry.h
│ │ ├── RenderablePivot.h
│ │ ├── RenderableSpacePartition.h
│ │ ├── RenderableSurface.h
│ │ ├── RenderableTextBase.h
│ │ ├── RenderableVertexArray.h
│ │ ├── SceneRenderWalker.h
│ │ ├── StaticRenderableText.h
│ │ ├── TexCoord2f.h
│ │ ├── TextureToolView.h
│ │ ├── VBO.h
│ │ ├── Vertex3f.h
│ │ ├── VertexBuffer.h
│ │ ├── VertexCb.h
│ │ ├── VertexHashing.h
│ │ ├── VertexNCb.h
│ │ ├── VertexNT.h
│ │ ├── VertexTraits.h
│ │ ├── View.h
│ │ └── WindingRenderer.h
│ ├── render.h
│ ├── scene/
│ │ ├── AABBAccumulateWalker.h
│ │ ├── AttachmentData.cpp
│ │ ├── AttachmentData.h
│ │ ├── BasicRootNode.h
│ │ ├── CMakeLists.txt
│ │ ├── ChildPrimitives.cpp
│ │ ├── ChildPrimitives.h
│ │ ├── Clone.h
│ │ ├── ColourKey.h
│ │ ├── Entity.cpp
│ │ ├── Entity.h
│ │ ├── EntityAttachment.h
│ │ ├── EntityBreakdown.h
│ │ ├── EntityClass.cpp
│ │ ├── EntityClass.h
│ │ ├── EntityKeyValue.cpp
│ │ ├── EntityKeyValue.h
│ │ ├── EntityNode.cpp
│ │ ├── EntityNode.h
│ │ ├── EntitySelector.h
│ │ ├── EntitySettings.cpp
│ │ ├── EntitySettings.h
│ │ ├── Group.h
│ │ ├── GroupNodeChecker.h
│ │ ├── InstanceWalkers.cpp
│ │ ├── InstanceWalkers.h
│ │ ├── KeyObserverDelegate.h
│ │ ├── KeyObserverMap.h
│ │ ├── KeyValueObserver.cpp
│ │ ├── KeyValueObserver.h
│ │ ├── LayerUsageBreakdown.cpp
│ │ ├── LayerUsageBreakdown.h
│ │ ├── LayerValidityCheckWalker.h
│ │ ├── ModelBreakdown.h
│ │ ├── ModelFinder.cpp
│ │ ├── ModelFinder.h
│ │ ├── ModelKey.cpp
│ │ ├── ModelKey.h
│ │ ├── NameKey.h
│ │ ├── NameKeyObserver.cpp
│ │ ├── NameKeyObserver.h
│ │ ├── NamespaceManager.cpp
│ │ ├── NamespaceManager.h
│ │ ├── Node.cpp
│ │ ├── Node.h
│ │ ├── OriginKey.h
│ │ ├── PointTrace.h
│ │ ├── PrefabBoundsAccumulator.h
│ │ ├── RenderableEntityName.cpp
│ │ ├── RenderableEntityName.h
│ │ ├── RenderableObjectCollection.h
│ │ ├── RenderableTargetLines.cpp
│ │ ├── RenderableTargetLines.h
│ │ ├── SelectableNode.cpp
│ │ ├── SelectableNode.h
│ │ ├── SelectionIndex.cpp
│ │ ├── SelectionIndex.h
│ │ ├── ShaderBreakdown.h
│ │ ├── ShaderParms.cpp
│ │ ├── ShaderParms.h
│ │ ├── Target.h
│ │ ├── TargetKey.cpp
│ │ ├── TargetKey.h
│ │ ├── TargetKeyCollection.cpp
│ │ ├── TargetKeyCollection.h
│ │ ├── TargetLineNode.cpp
│ │ ├── TargetLineNode.h
│ │ ├── TargetManager.cpp
│ │ ├── TargetManager.h
│ │ ├── TargetableNode.cpp
│ │ ├── TargetableNode.h
│ │ ├── TransformedCopy.h
│ │ ├── TraversableNodeSet.cpp
│ │ ├── TraversableNodeSet.h
│ │ ├── Traverse.cpp
│ │ ├── Traverse.h
│ │ ├── filters/
│ │ │ ├── FilterGroup.cpp
│ │ │ ├── FilterGroup.h
│ │ │ ├── FilterRule.h
│ │ │ ├── SceneFilter.cpp
│ │ │ └── SceneFilter.h
│ │ ├── merge/
│ │ │ ├── ComparisonResult.h
│ │ │ ├── GraphComparer.cpp
│ │ │ ├── GraphComparer.h
│ │ │ ├── LayerMerger.h
│ │ │ ├── LayerMergerBase.h
│ │ │ ├── MergeAction.h
│ │ │ ├── MergeActionNode.cpp
│ │ │ ├── MergeActionNode.h
│ │ │ ├── MergeLib.h
│ │ │ ├── MergeOperation.cpp
│ │ │ ├── MergeOperation.h
│ │ │ ├── MergeOperationBase.cpp
│ │ │ ├── MergeOperationBase.h
│ │ │ ├── NodeUtils.h
│ │ │ ├── SelectionGroupMerger.h
│ │ │ ├── SelectionGroupMergerBase.h
│ │ │ ├── ThreeWayLayerMerger.h
│ │ │ ├── ThreeWayMergeOperation.cpp
│ │ │ ├── ThreeWayMergeOperation.h
│ │ │ └── ThreeWaySelectionGroupMerger.h
│ │ ├── scene_fwd.h
│ │ ├── shaders/
│ │ │ ├── NamedBindable.h
│ │ │ ├── ShaderExpression.cpp
│ │ │ └── ShaderExpression.h
│ │ └── textures/
│ │ ├── HeightmapCreator.h
│ │ ├── TextureManipulator.cpp
│ │ └── TextureManipulator.h
│ ├── scenelib.h
│ ├── selection/
│ │ ├── BestPoint.h
│ │ ├── CollectiveSpawnargs.h
│ │ ├── Device.h
│ │ ├── EntitiesFirstSelector.h
│ │ ├── EntitySelection.h
│ │ ├── OccludeSelector.h
│ │ ├── Pivot2World.h
│ │ ├── SelectedPlaneSet.h
│ │ ├── SelectionPool.h
│ │ ├── SelectionVolume.h
│ │ └── SingleItemSelector.h
│ ├── selectionlib.h
│ ├── settings/
│ │ ├── MajorMinorVersion.h
│ │ └── SettingsManager.h
│ ├── shaderlib.h
│ ├── splines/
│ │ ├── .cvsignore
│ │ ├── math_angles.cpp
│ │ ├── math_angles.h
│ │ ├── math_matrix.cpp
│ │ ├── math_matrix.h
│ │ ├── math_quaternion.cpp
│ │ ├── math_quaternion.h
│ │ ├── math_vector.cpp
│ │ ├── math_vector.h
│ │ ├── q_parse.cpp
│ │ ├── q_shared.cpp
│ │ ├── q_shared.h
│ │ ├── splines.cpp
│ │ ├── splines.h
│ │ ├── util_list.h
│ │ ├── util_str.cpp
│ │ └── util_str.h
│ ├── stream/
│ │ ├── BinaryToTextInputStream.h
│ │ ├── BufferInputStream.h
│ │ ├── ExportStream.h
│ │ ├── FileInputStream.h
│ │ ├── MapResourceStream.h
│ │ ├── PointerInputStream.h
│ │ ├── ScopedArchiveBuffer.h
│ │ ├── ScopedFileOutputStream.h
│ │ ├── TemporaryOutputStream.h
│ │ ├── TextFileInputStream.h
│ │ ├── VcsMapResourceStream.h
│ │ └── utils.h
│ ├── string/
│ │ ├── case_conv.h
│ │ ├── convert.h
│ │ ├── encoding.h
│ │ ├── format.h
│ │ ├── join.h
│ │ ├── predicate.h
│ │ ├── replace.h
│ │ ├── split.h
│ │ ├── string.h
│ │ ├── tokeniser.h
│ │ └── trim.h
│ ├── texturelib.h
│ ├── time/
│ │ ├── ScopeTimer.h
│ │ ├── StopWatch.h
│ │ └── Timer.h
│ ├── transformlib.h
│ ├── util/
│ │ ├── Noncopyable.h
│ │ └── ScopedBoolLock.h
│ ├── wxutil/
│ │ ├── Bitmap.h
│ │ ├── BitmapToggleButton.h
│ │ ├── Button.h
│ │ ├── CMakeLists.txt
│ │ ├── ChoiceHelper.h
│ │ ├── ConsoleView.cpp
│ │ ├── ConsoleView.h
│ │ ├── ControlButton.h
│ │ ├── Debug.h
│ │ ├── DeferredMotionDelta.h
│ │ ├── DirChooser.cpp
│ │ ├── DirChooser.h
│ │ ├── DockablePanel.h
│ │ ├── EntityClassChooser.cpp
│ │ ├── EntityClassChooser.h
│ │ ├── EntryAbortedException.h
│ │ ├── FileChooser.cpp
│ │ ├── FileChooser.h
│ │ ├── FormLayout.h
│ │ ├── FreezePointer.cpp
│ │ ├── FreezePointer.h
│ │ ├── GLContext.h
│ │ ├── GLWidget.cpp
│ │ ├── GLWidget.h
│ │ ├── IConv.h
│ │ ├── Icon.h
│ │ ├── ModalProgressDialog.cpp
│ │ ├── ModalProgressDialog.h
│ │ ├── Modifier.h
│ │ ├── MouseButton.h
│ │ ├── MouseToolHandler.cpp
│ │ ├── MouseToolHandler.h
│ │ ├── MultiMonitor.h
│ │ ├── NonModalEntry.h
│ │ ├── PanedPosition.cpp
│ │ ├── PanedPosition.h
│ │ ├── PathEntry.cpp
│ │ ├── PathEntry.h
│ │ ├── ScopeTimer.h
│ │ ├── ScrollWindow.h
│ │ ├── SerialisableWidgets.cpp
│ │ ├── SerialisableWidgets.h
│ │ ├── Splitter.cpp
│ │ ├── Splitter.h
│ │ ├── TransientPopupWindow.h
│ │ ├── WindowPosition.cpp
│ │ ├── WindowPosition.h
│ │ ├── WindowState.cpp
│ │ ├── WindowState.h
│ │ ├── XmlResourceBasedWidget.h
│ │ ├── dataview/
│ │ │ ├── DeclarationTreeView.cpp
│ │ │ ├── DeclarationTreeView.h
│ │ │ ├── IResourceTreePopulator.h
│ │ │ ├── IndicatorColumn.h
│ │ │ ├── KeyValueTable.cpp
│ │ │ ├── KeyValueTable.h
│ │ │ ├── ResourceTreeView.cpp
│ │ │ ├── ResourceTreeView.h
│ │ │ ├── ResourceTreeViewToolbar.cpp
│ │ │ ├── ResourceTreeViewToolbar.h
│ │ │ ├── ThreadedDeclarationTreePopulator.h
│ │ │ ├── ThreadedResourceTreePopulator.cpp
│ │ │ ├── ThreadedResourceTreePopulator.h
│ │ │ ├── TreeModel.cpp
│ │ │ ├── TreeModel.h
│ │ │ ├── TreeModelFilter.cpp
│ │ │ ├── TreeModelFilter.h
│ │ │ ├── TreeView.cpp
│ │ │ ├── TreeView.h
│ │ │ ├── TreeViewItemStyle.h
│ │ │ ├── VFSTreePopulator.cpp
│ │ │ └── VFSTreePopulator.h
│ │ ├── decl/
│ │ │ ├── DeclFileInfo.h
│ │ │ ├── DeclarationSelector.cpp
│ │ │ ├── DeclarationSelector.h
│ │ │ ├── DeclarationSelectorDialog.cpp
│ │ │ └── DeclarationSelectorDialog.h
│ │ ├── dialog/
│ │ │ ├── AutoSaveRequestBlocker.h
│ │ │ ├── Dialog.cpp
│ │ │ ├── Dialog.h
│ │ │ ├── DialogBase.cpp
│ │ │ ├── DialogBase.h
│ │ │ ├── DialogElements.h
│ │ │ ├── MessageBox.cpp
│ │ │ ├── MessageBox.h
│ │ │ └── ScrollEventPropagationFilter.h
│ │ ├── event/
│ │ │ ├── KeyEventFilter.h
│ │ │ └── SingleIdleCallback.h
│ │ ├── fsview/
│ │ │ ├── FileSystemView.cpp
│ │ │ ├── FileSystemView.h
│ │ │ ├── Populator.cpp
│ │ │ └── Populator.h
│ │ ├── menu/
│ │ │ ├── CommandMenuItem.h
│ │ │ ├── FilterPopupMenu.cpp
│ │ │ ├── FilterPopupMenu.h
│ │ │ ├── IconTextMenuItem.h
│ │ │ ├── MenuItem.h
│ │ │ ├── PopupMenu.cpp
│ │ │ ├── PopupMenu.h
│ │ │ └── SeparatorItem.h
│ │ ├── preview/
│ │ │ ├── EntityClassPreview.h
│ │ │ ├── EntityPreview.cpp
│ │ │ ├── EntityPreview.h
│ │ │ ├── GuiRenderer.cpp
│ │ │ ├── GuiRenderer.h
│ │ │ ├── GuiView.cpp
│ │ │ ├── GuiView.h
│ │ │ ├── ModelPreview.cpp
│ │ │ ├── ModelPreview.h
│ │ │ ├── ParticlePreview.cpp
│ │ │ ├── ParticlePreview.h
│ │ │ ├── RenderPreview.cpp
│ │ │ ├── RenderPreview.h
│ │ │ └── SkinPreview.h
│ │ └── sourceview/
│ │ ├── DeclarationSourceView.cpp
│ │ ├── DeclarationSourceView.h
│ │ ├── DefinitionView.cpp
│ │ ├── DefinitionView.h
│ │ ├── SourceView.cpp
│ │ └── SourceView.h
│ └── xmlutil/
│ ├── CMakeLists.txt
│ ├── Document.cpp
│ ├── Document.h
│ ├── InvalidNodeException.h
│ ├── MissingXMLNodeException.h
│ ├── Node.cpp
│ ├── Node.h
│ └── XPathException.h
├── man/
│ ├── darkradiant.1
│ └── darkradiant.adoc
├── plugins/
│ ├── dm.conversation/
│ │ ├── ActorNodeFinder.h
│ │ ├── CMakeLists.txt
│ │ ├── CommandArgumentItem.cpp
│ │ ├── CommandArgumentItem.h
│ │ ├── CommandEditor.cpp
│ │ ├── CommandEditor.h
│ │ ├── Conversation.h
│ │ ├── ConversationCommand.cpp
│ │ ├── ConversationCommand.h
│ │ ├── ConversationCommandInfo.cpp
│ │ ├── ConversationCommandInfo.h
│ │ ├── ConversationCommandLibrary.cpp
│ │ ├── ConversationCommandLibrary.h
│ │ ├── ConversationDialog.cpp
│ │ ├── ConversationDialog.h
│ │ ├── ConversationEditor.cpp
│ │ ├── ConversationEditor.h
│ │ ├── ConversationEntity.cpp
│ │ ├── ConversationEntity.h
│ │ ├── ConversationEntityFinder.h
│ │ ├── ConversationKeyExtractor.cpp
│ │ ├── ConversationKeyExtractor.h
│ │ └── plugin.cpp
│ ├── dm.difficulty/
│ │ ├── CMakeLists.txt
│ │ ├── ClassNameStore.cpp
│ │ ├── ClassNameStore.h
│ │ ├── DifficultyDialog.cpp
│ │ ├── DifficultyDialog.h
│ │ ├── DifficultyEditor.cpp
│ │ ├── DifficultyEditor.h
│ │ ├── DifficultyEntity.cpp
│ │ ├── DifficultyEntity.h
│ │ ├── DifficultyEntityFinder.h
│ │ ├── DifficultySettings.cpp
│ │ ├── DifficultySettings.h
│ │ ├── DifficultySettingsManager.cpp
│ │ ├── DifficultySettingsManager.h
│ │ ├── Setting.cpp
│ │ ├── Setting.h
│ │ └── plugin.cpp
│ ├── dm.editing/
│ │ ├── AIEditingControl.h
│ │ ├── AIEditingPanel.cpp
│ │ ├── AIEditingPanel.h
│ │ ├── AIHeadChooserDialog.cpp
│ │ ├── AIHeadChooserDialog.h
│ │ ├── AIHeadPropertyEditor.cpp
│ │ ├── AIHeadPropertyEditor.h
│ │ ├── AIVocalSetChooserDialog.cpp
│ │ ├── AIVocalSetChooserDialog.h
│ │ ├── AIVocalSetPreview.cpp
│ │ ├── AIVocalSetPreview.h
│ │ ├── AIVocalSetPropertyEditor.cpp
│ │ ├── AIVocalSetPropertyEditor.h
│ │ ├── CMakeLists.txt
│ │ ├── DarkmodTxt.cpp
│ │ ├── DarkmodTxt.h
│ │ ├── DeprecatedEclassCollector.h
│ │ ├── FixupMap.cpp
│ │ ├── FixupMap.h
│ │ ├── FixupMapDialog.cpp
│ │ ├── FixupMapDialog.h
│ │ ├── MissionInfoEditDialog.cpp
│ │ ├── MissionInfoEditDialog.h
│ │ ├── MissionInfoGuiView.cpp
│ │ ├── MissionInfoGuiView.h
│ │ ├── MissionInfoTextFile.cpp
│ │ ├── MissionInfoTextFile.h
│ │ ├── MissionReadmeDialog.cpp
│ │ ├── MissionReadmeDialog.h
│ │ ├── ReadmeTxt.cpp
│ │ ├── ReadmeTxt.h
│ │ ├── ShaderReplacer.h
│ │ ├── SpawnargLinkedCheckbox.h
│ │ ├── SpawnargLinkedSpinButton.h
│ │ ├── SpawnargReplacer.h
│ │ ├── ThreadedEntityDefPopulator.h
│ │ └── plugin.cpp
│ ├── dm.gameconnection/
│ │ ├── AutomationEngine.cpp
│ │ ├── AutomationEngine.h
│ │ ├── CMakeLists.txt
│ │ ├── DiffDoom3MapWriter.cpp
│ │ ├── DiffDoom3MapWriter.h
│ │ ├── DiffStatus.h
│ │ ├── GameConnection.cpp
│ │ ├── GameConnection.h
│ │ ├── GameConnectionControl.h
│ │ ├── GameConnectionPanel.cpp
│ │ ├── GameConnectionPanel.h
│ │ ├── MapObserver.cpp
│ │ ├── MapObserver.h
│ │ ├── MessageTcp.cpp
│ │ ├── MessageTcp.h
│ │ └── clsocket/
│ │ ├── ActiveSocket.cpp
│ │ ├── ActiveSocket.h
│ │ ├── Host.h
│ │ ├── PassiveSocket.cpp
│ │ ├── PassiveSocket.h
│ │ ├── SimpleSocket.cpp
│ │ ├── SimpleSocket.h
│ │ ├── StatTimer.h
│ │ └── readme.txt
│ ├── dm.gui/
│ │ ├── CMakeLists.txt
│ │ ├── GuiSelector.cpp
│ │ ├── GuiSelector.h
│ │ ├── ReadableEditorDialog.cpp
│ │ ├── ReadableEditorDialog.h
│ │ ├── ReadableGuiView.cpp
│ │ ├── ReadableGuiView.h
│ │ ├── ReadablePopulator.h
│ │ ├── ReadableReloader.h
│ │ ├── TextViewInfoDialog.h
│ │ ├── XData.cpp
│ │ ├── XData.h
│ │ ├── XDataLoader.cpp
│ │ ├── XDataLoader.h
│ │ ├── XDataSelector.cpp
│ │ ├── XDataSelector.h
│ │ ├── XdFileChooserDialog.cpp
│ │ ├── XdFileChooserDialog.h
│ │ ├── gui/
│ │ │ ├── Gui.cpp
│ │ │ ├── Gui.h
│ │ │ ├── GuiExpression.cpp
│ │ │ ├── GuiExpression.h
│ │ │ ├── GuiManager.cpp
│ │ │ ├── GuiManager.h
│ │ │ ├── GuiScript.cpp
│ │ │ ├── GuiScript.h
│ │ │ ├── GuiWindowDef.cpp
│ │ │ ├── GuiWindowDef.h
│ │ │ ├── RenderableCharacterBatch.cpp
│ │ │ ├── RenderableCharacterBatch.h
│ │ │ ├── RenderableText.cpp
│ │ │ ├── RenderableText.h
│ │ │ ├── TextParts.h
│ │ │ ├── Variable.cpp
│ │ │ └── Variable.h
│ │ └── plugin.cpp
│ ├── dm.objectives/
│ │ ├── CMakeLists.txt
│ │ ├── Component.cpp
│ │ ├── Component.h
│ │ ├── ComponentType.cpp
│ │ ├── ComponentType.h
│ │ ├── ComponentsDialog.cpp
│ │ ├── ComponentsDialog.h
│ │ ├── DifficultyPanel.cpp
│ │ ├── DifficultyPanel.h
│ │ ├── Logic.h
│ │ ├── LogicEditor.cpp
│ │ ├── LogicEditor.h
│ │ ├── MissionLogicDialog.cpp
│ │ ├── MissionLogicDialog.h
│ │ ├── Objective.h
│ │ ├── ObjectiveCondition.h
│ │ ├── ObjectiveConditionsDialog.cpp
│ │ ├── ObjectiveConditionsDialog.h
│ │ ├── ObjectiveEntity.cpp
│ │ ├── ObjectiveEntity.h
│ │ ├── ObjectiveEntityFinder.cpp
│ │ ├── ObjectiveEntityFinder.h
│ │ ├── ObjectiveKeyExtractor.cpp
│ │ ├── ObjectiveKeyExtractor.h
│ │ ├── ObjectivesEditor.cpp
│ │ ├── ObjectivesEditor.h
│ │ ├── Specifier.cpp
│ │ ├── Specifier.h
│ │ ├── SpecifierType.cpp
│ │ ├── SpecifierType.h
│ │ ├── TargetList.h
│ │ ├── ce/
│ │ │ ├── AIFindBodyComponentEditor.cpp
│ │ │ ├── AIFindBodyComponentEditor.h
│ │ │ ├── AIFindItemComponentEditor.cpp
│ │ │ ├── AIFindItemComponentEditor.h
│ │ │ ├── AlertComponentEditor.cpp
│ │ │ ├── AlertComponentEditor.h
│ │ │ ├── ComponentEditor.h
│ │ │ ├── ComponentEditorBase.h
│ │ │ ├── ComponentEditorFactory.cpp
│ │ │ ├── ComponentEditorFactory.h
│ │ │ ├── CustomClockedComponentEditor.cpp
│ │ │ ├── CustomClockedComponentEditor.h
│ │ │ ├── CustomComponentEditor.cpp
│ │ │ ├── CustomComponentEditor.h
│ │ │ ├── DestroyComponentEditor.cpp
│ │ │ ├── DestroyComponentEditor.h
│ │ │ ├── DistanceComponentEditor.cpp
│ │ │ ├── DistanceComponentEditor.h
│ │ │ ├── InfoLocationComponentEditor.cpp
│ │ │ ├── InfoLocationComponentEditor.h
│ │ │ ├── ItemComponentEditor.cpp
│ │ │ ├── ItemComponentEditor.h
│ │ │ ├── KillComponentEditor.cpp
│ │ │ ├── KillComponentEditor.h
│ │ │ ├── KnockoutComponentEditor.cpp
│ │ │ ├── KnockoutComponentEditor.h
│ │ │ ├── LocationComponentEditor.cpp
│ │ │ ├── LocationComponentEditor.h
│ │ │ ├── PickpocketComponentEditor.cpp
│ │ │ ├── PickpocketComponentEditor.h
│ │ │ ├── ReadableClosedComponentEditor.cpp
│ │ │ ├── ReadableClosedComponentEditor.h
│ │ │ ├── ReadableOpenedComponentEditor.cpp
│ │ │ ├── ReadableOpenedComponentEditor.h
│ │ │ ├── ReadablePageReachedComponentEditor.cpp
│ │ │ ├── ReadablePageReachedComponentEditor.h
│ │ │ ├── SpecifierEditCombo.cpp
│ │ │ ├── SpecifierEditCombo.h
│ │ │ └── specpanel/
│ │ │ ├── AIInnocenceSpecifierPanel.cpp
│ │ │ ├── AIInnocenceSpecifierPanel.h
│ │ │ ├── AITeamSpecifierPanel.cpp
│ │ │ ├── AITeamSpecifierPanel.h
│ │ │ ├── AITypeSpecifierPanel.cpp
│ │ │ ├── AITypeSpecifierPanel.h
│ │ │ ├── ClassnameSpecifierPanel.cpp
│ │ │ ├── ClassnameSpecifierPanel.h
│ │ │ ├── EntityNameSpecifierPanel.cpp
│ │ │ ├── EntityNameSpecifierPanel.h
│ │ │ ├── GroupSpecifierPanel.cpp
│ │ │ ├── GroupSpecifierPanel.h
│ │ │ ├── SpawnClassSpecifierPanel.cpp
│ │ │ ├── SpawnClassSpecifierPanel.h
│ │ │ ├── SpecifierPanel.h
│ │ │ ├── SpecifierPanelFactory.cpp
│ │ │ ├── SpecifierPanelFactory.h
│ │ │ ├── TextSpecifierPanel.cpp
│ │ │ └── TextSpecifierPanel.h
│ │ ├── objectives.cpp
│ │ ├── precompiled.cpp
│ │ ├── precompiled.h
│ │ └── util/
│ │ ├── ObjectivesException.h
│ │ └── TwoColumnTextCombo.h
│ ├── dm.stimresponse/
│ │ ├── CMakeLists.txt
│ │ ├── ClassEditor.cpp
│ │ ├── ClassEditor.h
│ │ ├── CustomStimEditor.cpp
│ │ ├── CustomStimEditor.h
│ │ ├── EffectArgumentItem.cpp
│ │ ├── EffectArgumentItem.h
│ │ ├── EffectEditor.cpp
│ │ ├── EffectEditor.h
│ │ ├── ResponseEditor.cpp
│ │ ├── ResponseEditor.h
│ │ ├── ResponseEffect.cpp
│ │ ├── ResponseEffect.h
│ │ ├── ResponseEffectTypes.cpp
│ │ ├── ResponseEffectTypes.h
│ │ ├── SREntity.cpp
│ │ ├── SREntity.h
│ │ ├── SRPropertyLoader.cpp
│ │ ├── SRPropertyLoader.h
│ │ ├── SRPropertyRemover.cpp
│ │ ├── SRPropertyRemover.h
│ │ ├── SRPropertySaver.cpp
│ │ ├── SRPropertySaver.h
│ │ ├── StimEditor.cpp
│ │ ├── StimEditor.h
│ │ ├── StimResponse.cpp
│ │ ├── StimResponse.h
│ │ ├── StimResponseEditor.cpp
│ │ ├── StimResponseEditor.h
│ │ ├── StimTypes.cpp
│ │ ├── StimTypes.h
│ │ ├── plugin.cpp
│ │ ├── precompiled.cpp
│ │ └── precompiled.h
│ ├── script/
│ │ ├── CMakeLists.txt
│ │ ├── PythonConsoleWriter.h
│ │ ├── PythonModule.cpp
│ │ ├── PythonModule.h
│ │ ├── SceneNodeBuffer.cpp
│ │ ├── SceneNodeBuffer.h
│ │ ├── ScriptCommand.cpp
│ │ ├── ScriptCommand.h
│ │ ├── ScriptModule.cpp
│ │ ├── ScriptingSystem.cpp
│ │ ├── ScriptingSystem.h
│ │ ├── interfaces/
│ │ │ ├── BrushInterface.cpp
│ │ │ ├── BrushInterface.h
│ │ │ ├── CameraInterface.cpp
│ │ │ ├── CameraInterface.h
│ │ │ ├── CommandSystemInterface.cpp
│ │ │ ├── CommandSystemInterface.h
│ │ │ ├── DeclarationManagerInterface.cpp
│ │ │ ├── DeclarationManagerInterface.h
│ │ │ ├── DialogInterface.cpp
│ │ │ ├── DialogInterface.h
│ │ │ ├── EClassInterface.cpp
│ │ │ ├── EClassInterface.h
│ │ │ ├── EntityInterface.cpp
│ │ │ ├── EntityInterface.h
│ │ │ ├── FileSystemInterface.cpp
│ │ │ ├── FileSystemInterface.h
│ │ │ ├── FxManagerInterface.cpp
│ │ │ ├── FxManagerInterface.h
│ │ │ ├── GameInterface.cpp
│ │ │ ├── GameInterface.h
│ │ │ ├── GridInterface.cpp
│ │ │ ├── GridInterface.h
│ │ │ ├── LayerInterface.cpp
│ │ │ ├── LayerInterface.h
│ │ │ ├── MapInterface.cpp
│ │ │ ├── MapInterface.h
│ │ │ ├── MathInterface.cpp
│ │ │ ├── MathInterface.h
│ │ │ ├── ModelInterface.cpp
│ │ │ ├── ModelInterface.h
│ │ │ ├── PatchInterface.cpp
│ │ │ ├── PatchInterface.h
│ │ │ ├── RadiantInterface.cpp
│ │ │ ├── RadiantInterface.h
│ │ │ ├── RegistryInterface.h
│ │ │ ├── SceneGraphInterface.cpp
│ │ │ ├── SceneGraphInterface.h
│ │ │ ├── SelectionGroupInterface.cpp
│ │ │ ├── SelectionGroupInterface.h
│ │ │ ├── SelectionInterface.cpp
│ │ │ ├── SelectionInterface.h
│ │ │ ├── SelectionSetInterface.cpp
│ │ │ ├── SelectionSetInterface.h
│ │ │ ├── ShaderSystemInterface.cpp
│ │ │ ├── ShaderSystemInterface.h
│ │ │ ├── SkinInterface.cpp
│ │ │ ├── SkinInterface.h
│ │ │ ├── SoundInterface.cpp
│ │ │ └── SoundInterface.h
│ │ ├── precompiled.cpp
│ │ └── precompiled.h
│ ├── sound/
│ │ ├── CMakeLists.txt
│ │ ├── OggFileLoader.h
│ │ ├── OggFileStream.h
│ │ ├── SoundManager.cpp
│ │ ├── SoundManager.h
│ │ ├── SoundPlayer.cpp
│ │ ├── SoundPlayer.h
│ │ ├── SoundShader.cpp
│ │ ├── SoundShader.h
│ │ ├── WavFileLoader.h
│ │ └── sound.cpp
│ └── vcs/
│ ├── Algorithm.h
│ ├── CMakeLists.txt
│ ├── Commit.h
│ ├── CommitMetadata.h
│ ├── CredentialManager.h
│ ├── Diff.h
│ ├── GitArchiveTextFile.h
│ ├── GitException.h
│ ├── GitModule.cpp
│ ├── GitModule.h
│ ├── Index.cpp
│ ├── Index.h
│ ├── Reference.h
│ ├── Remote.h
│ ├── Repository.cpp
│ ├── Repository.h
│ ├── Signature.h
│ ├── Tree.h
│ └── ui/
│ ├── CommitDialog.h
│ ├── VcsStatus.cpp
│ └── VcsStatus.h
├── radiant/
│ ├── ApplicationContext.h
│ ├── CMakeLists.txt
│ ├── RadiantApp.cpp
│ ├── RadiantApp.h
│ ├── camera/
│ │ ├── CamWnd.cpp
│ │ ├── CamWnd.h
│ │ ├── CameraSettings.cpp
│ │ ├── CameraSettings.h
│ │ ├── CameraWndManager.cpp
│ │ ├── CameraWndManager.h
│ │ ├── FloorHeightWalker.h
│ │ └── tools/
│ │ ├── CameraMouseToolEvent.h
│ │ ├── DecalShooterTool.cpp
│ │ ├── DecalShooterTool.h
│ │ ├── FaceIntersectionFinder.cpp
│ │ ├── FaceIntersectionFinder.h
│ │ ├── FreeMoveTool.h
│ │ ├── JumpToObjectTool.h
│ │ ├── ObjectFinder.h
│ │ ├── PanViewTool.h
│ │ └── ShaderClipboardTools.h
│ ├── clipboard/
│ │ ├── ClipboardModule.cpp
│ │ └── ClipboardModule.h
│ ├── darkradiant.rc
│ ├── eventmanager/
│ │ ├── Accelerator.cpp
│ │ ├── Accelerator.h
│ │ ├── Event.h
│ │ ├── EventManager.cpp
│ │ ├── EventManager.h
│ │ ├── GlobalKeyEventFilter.cpp
│ │ ├── GlobalKeyEventFilter.h
│ │ ├── KeyEvent.h
│ │ ├── ModifierHintPopup.h
│ │ ├── MouseToolGroup.cpp
│ │ ├── MouseToolGroup.h
│ │ ├── MouseToolManager.cpp
│ │ ├── MouseToolManager.h
│ │ ├── RegistryToggle.h
│ │ ├── ShortcutSaver.h
│ │ ├── Statement.cpp
│ │ ├── Statement.h
│ │ ├── Toggle.cpp
│ │ ├── Toggle.h
│ │ ├── WidgetToggle.cpp
│ │ └── WidgetToggle.h
│ ├── log/
│ │ ├── PIDFile.h
│ │ └── PopupErrorHandler.h
│ ├── main.cpp
│ ├── map/
│ │ ├── AutoSaveTimer.cpp
│ │ ├── AutoSaveTimer.h
│ │ ├── StartupMapLoader.cpp
│ │ └── StartupMapLoader.h
│ ├── precompiled.cpp
│ ├── precompiled.h
│ ├── render/
│ │ └── RenderStatistics.h
│ ├── selection/
│ │ ├── ManipulateMouseTool.cpp
│ │ ├── ManipulateMouseTool.h
│ │ ├── SceneManipulateMouseTool.cpp
│ │ ├── SceneManipulateMouseTool.h
│ │ ├── SelectionMouseTools.cpp
│ │ └── SelectionMouseTools.h
│ ├── settings/
│ │ ├── LocalisationModule.cpp
│ │ ├── LocalisationModule.h
│ │ ├── LocalisationProvider.cpp
│ │ ├── LocalisationProvider.h
│ │ ├── Win32Registry.cpp
│ │ └── Win32Registry.h
│ ├── textool/
│ │ ├── TexTool.cpp
│ │ ├── TexTool.h
│ │ ├── TexToolModeToggles.h
│ │ ├── TextureToolControl.h
│ │ └── tools/
│ │ ├── TextureToolCycleSelectionTool.h
│ │ ├── TextureToolManipulateMouseTool.cpp
│ │ ├── TextureToolManipulateMouseTool.h
│ │ ├── TextureToolMouseEvent.h
│ │ └── TextureToolSelectionTool.h
│ ├── ui/
│ │ ├── AutoSaveRequestHandler.h
│ │ ├── DispatchEvent.cpp
│ │ ├── DispatchEvent.h
│ │ ├── Documentation.cpp
│ │ ├── Documentation.h
│ │ ├── FileOverwriteConfirmationHandler.h
│ │ ├── FileSaveConfirmationHandler.h
│ │ ├── FileSelectionRequestHandler.h
│ │ ├── LongRunningOperationHandler.cpp
│ │ ├── LongRunningOperationHandler.h
│ │ ├── ManipulatorToggle.h
│ │ ├── MapCommands.cpp
│ │ ├── MapCommands.h
│ │ ├── MapFileProgressHandler.cpp
│ │ ├── MapFileProgressHandler.h
│ │ ├── PointFileChooser.cpp
│ │ ├── PointFileChooser.h
│ │ ├── SelectionModeToggle.h
│ │ ├── UserInterfaceModule.cpp
│ │ ├── UserInterfaceModule.h
│ │ ├── aas/
│ │ │ ├── AasFileControl.cpp
│ │ │ ├── AasFileControl.h
│ │ │ ├── AasVisualisationControl.h
│ │ │ ├── AasVisualisationPanel.cpp
│ │ │ ├── AasVisualisationPanel.h
│ │ │ ├── RenderableAasFile.cpp
│ │ │ └── RenderableAasFile.h
│ │ ├── about/
│ │ │ ├── AboutDialog.cpp
│ │ │ └── AboutDialog.h
│ │ ├── animationpreview/
│ │ │ ├── AnimationPreview.cpp
│ │ │ ├── AnimationPreview.h
│ │ │ ├── MD5AnimationChooser.cpp
│ │ │ ├── MD5AnimationChooser.h
│ │ │ ├── MD5AnimationViewer.cpp
│ │ │ └── MD5AnimationViewer.h
│ │ ├── array/
│ │ │ ├── ArrayDialog.cpp
│ │ │ └── ArrayDialog.h
│ │ ├── brush/
│ │ │ ├── CreateTrimDialog.cpp
│ │ │ ├── CreateTrimDialog.h
│ │ │ ├── FindBrush.cpp
│ │ │ ├── FindBrush.h
│ │ │ ├── QuerySidesDialog.cpp
│ │ │ └── QuerySidesDialog.h
│ │ ├── colourscheme/
│ │ │ ├── ColourSchemeEditor.cpp
│ │ │ └── ColourSchemeEditor.h
│ │ ├── commandlist/
│ │ │ ├── CommandList.cpp
│ │ │ ├── CommandList.h
│ │ │ ├── CommandListPopulator.h
│ │ │ ├── ShortcutChooser.cpp
│ │ │ └── ShortcutChooser.h
│ │ ├── common/
│ │ │ ├── DialogManager.cpp
│ │ │ ├── DialogManager.h
│ │ │ ├── EntityChooser.cpp
│ │ │ ├── EntityChooser.h
│ │ │ ├── ImageFilePopulator.cpp
│ │ │ ├── ImageFilePopulator.h
│ │ │ ├── ImageFileSelector.cpp
│ │ │ ├── ImageFileSelector.h
│ │ │ ├── MapPreview.cpp
│ │ │ ├── MapPreview.h
│ │ │ ├── SkinChooser.cpp
│ │ │ ├── SkinChooser.h
│ │ │ ├── SoundChooser.cpp
│ │ │ ├── SoundChooser.h
│ │ │ ├── SoundShaderPreview.cpp
│ │ │ ├── SoundShaderPreview.h
│ │ │ ├── SoundShaderSelector.h
│ │ │ ├── TexturePreviewCombo.cpp
│ │ │ └── TexturePreviewCombo.h
│ │ ├── console/
│ │ │ ├── CommandEntry.cpp
│ │ │ ├── CommandEntry.h
│ │ │ ├── Console.cpp
│ │ │ ├── Console.h
│ │ │ └── ConsoleControl.h
│ │ ├── decalshooter/
│ │ │ ├── DecalShooterControl.h
│ │ │ ├── DecalShooterPanel.cpp
│ │ │ └── DecalShooterPanel.h
│ │ ├── eclasstree/
│ │ │ ├── EClassTree.cpp
│ │ │ ├── EClassTree.h
│ │ │ ├── EClassTreeBuilder.cpp
│ │ │ └── EClassTreeBuilder.h
│ │ ├── einspector/
│ │ │ ├── AddPropertyDialog.cpp
│ │ │ ├── AddPropertyDialog.h
│ │ │ ├── Algorithm.cpp
│ │ │ ├── Algorithm.h
│ │ │ ├── AnglePropertyEditor.cpp
│ │ │ ├── AnglePropertyEditor.h
│ │ │ ├── BooleanPropertyEditor.cpp
│ │ │ ├── BooleanPropertyEditor.h
│ │ │ ├── ClassnamePropertyEditor.cpp
│ │ │ ├── ClassnamePropertyEditor.h
│ │ │ ├── ColourPropertyEditor.cpp
│ │ │ ├── ColourPropertyEditor.h
│ │ │ ├── EntityInspector.cpp
│ │ │ ├── EntityInspector.h
│ │ │ ├── EntityInspectorModule.cpp
│ │ │ ├── EntityInspectorModule.h
│ │ │ ├── EntityPropertyEditor.cpp
│ │ │ ├── EntityPropertyEditor.h
│ │ │ ├── FloatPropertyEditor.cpp
│ │ │ ├── FloatPropertyEditor.h
│ │ │ ├── FxPropertyEditor.cpp
│ │ │ ├── FxPropertyEditor.h
│ │ │ ├── InheritPropertyEditor.cpp
│ │ │ ├── InheritPropertyEditor.h
│ │ │ ├── ModelPropertyEditor.cpp
│ │ │ ├── ModelPropertyEditor.h
│ │ │ ├── PropertyEditor.cpp
│ │ │ ├── PropertyEditor.h
│ │ │ ├── PropertyEditorFactory.cpp
│ │ │ ├── PropertyEditorFactory.h
│ │ │ ├── SkinPropertyEditor.cpp
│ │ │ ├── SkinPropertyEditor.h
│ │ │ ├── SoundPropertyEditor.cpp
│ │ │ ├── SoundPropertyEditor.h
│ │ │ ├── TargetKey.h
│ │ │ ├── TexturePropertyEditor.cpp
│ │ │ ├── TexturePropertyEditor.h
│ │ │ ├── Vector3PropertyEditor.cpp
│ │ │ └── Vector3PropertyEditor.h
│ │ ├── entitylist/
│ │ │ ├── EntityList.cpp
│ │ │ ├── EntityList.h
│ │ │ ├── EntityListControl.h
│ │ │ ├── GraphTreeModel.cpp
│ │ │ ├── GraphTreeModel.h
│ │ │ ├── GraphTreeModelPopulator.h
│ │ │ └── GraphTreeNode.h
│ │ ├── favourites/
│ │ │ ├── FavouritesBrowser.cpp
│ │ │ ├── FavouritesBrowser.h
│ │ │ ├── FavouritesBrowserControl.h
│ │ │ └── FavouritesUserInterfaceModule.cpp
│ │ ├── filters/
│ │ │ ├── FilterContextMenu.cpp
│ │ │ ├── FilterContextMenu.h
│ │ │ ├── FilterOrthoContextMenuItem.cpp
│ │ │ ├── FilterOrthoContextMenuItem.h
│ │ │ ├── FilterUserInterface.cpp
│ │ │ ├── FilterUserInterface.h
│ │ │ ├── FiltersMainMenu.cpp
│ │ │ ├── FiltersMainMenu.h
│ │ │ └── editor/
│ │ │ ├── Filter.h
│ │ │ ├── FilterDialog.cpp
│ │ │ ├── FilterDialog.h
│ │ │ ├── FilterEditor.cpp
│ │ │ └── FilterEditor.h
│ │ ├── findshader/
│ │ │ ├── FindShader.cpp
│ │ │ ├── FindShader.h
│ │ │ └── FindShaderControl.h
│ │ ├── fx/
│ │ │ ├── FxChooser.cpp
│ │ │ └── FxChooser.h
│ │ ├── gl/
│ │ │ ├── WxGLWidgetManager.cpp
│ │ │ └── WxGLWidgetManager.h
│ │ ├── grid/
│ │ │ ├── GridUserInterface.cpp
│ │ │ └── GridUserInterface.h
│ │ ├── layers/
│ │ │ ├── CreateLayerDialog.cpp
│ │ │ ├── CreateLayerDialog.h
│ │ │ ├── LayerContextMenu.cpp
│ │ │ ├── LayerContextMenu.h
│ │ │ ├── LayerControl.h
│ │ │ ├── LayerControlPanel.cpp
│ │ │ ├── LayerControlPanel.h
│ │ │ ├── LayerOrthoContextMenuItem.cpp
│ │ │ └── LayerOrthoContextMenuItem.h
│ │ ├── lightinspector/
│ │ │ ├── LightInspector.cpp
│ │ │ ├── LightInspector.h
│ │ │ └── LightInspectorControl.h
│ │ ├── mainframe/
│ │ │ ├── AuiFloatingFrame.cpp
│ │ │ ├── AuiFloatingFrame.h
│ │ │ ├── AuiLayout.cpp
│ │ │ ├── AuiLayout.h
│ │ │ ├── AuiManager.cpp
│ │ │ ├── AuiManager.h
│ │ │ ├── MainFrame.cpp
│ │ │ ├── MainFrame.h
│ │ │ ├── PropertyNotebook.cpp
│ │ │ ├── PropertyNotebook.h
│ │ │ ├── ScreenUpdateBlocker.cpp
│ │ │ ├── ScreenUpdateBlocker.h
│ │ │ ├── TopLevelFrame.cpp
│ │ │ ├── TopLevelFrame.h
│ │ │ ├── ViewMenu.cpp
│ │ │ └── ViewMenu.h
│ │ ├── mapinfo/
│ │ │ ├── EntityInfoTab.cpp
│ │ │ ├── EntityInfoTab.h
│ │ │ ├── LayerInfoTab.cpp
│ │ │ ├── LayerInfoTab.h
│ │ │ ├── MapInfoDialog.cpp
│ │ │ ├── MapInfoDialog.h
│ │ │ ├── ModelInfoTab.cpp
│ │ │ ├── ModelInfoTab.h
│ │ │ ├── ShaderInfoTab.cpp
│ │ │ └── ShaderInfoTab.h
│ │ ├── mapselector/
│ │ │ ├── MapSelector.cpp
│ │ │ └── MapSelector.h
│ │ ├── materials/
│ │ │ ├── MaterialChooser.cpp
│ │ │ ├── MaterialChooser.h
│ │ │ ├── MaterialPopulator.cpp
│ │ │ ├── MaterialPopulator.h
│ │ │ ├── MaterialSelector.cpp
│ │ │ ├── MaterialSelector.h
│ │ │ ├── MaterialThumbnailBrowser.cpp
│ │ │ ├── MaterialThumbnailBrowser.h
│ │ │ ├── MaterialTreeView.cpp
│ │ │ ├── MaterialTreeView.h
│ │ │ └── editor/
│ │ │ ├── Binding.h
│ │ │ ├── CheckBoxBinding.h
│ │ │ ├── ExpressionBinding.h
│ │ │ ├── MapExpressionEntry.h
│ │ │ ├── MaterialEditor.cpp
│ │ │ ├── MaterialEditor.h
│ │ │ ├── MaterialEditorModule.cpp
│ │ │ ├── MaterialPreview.cpp
│ │ │ ├── MaterialPreview.h
│ │ │ ├── RadioButtonBinding.h
│ │ │ ├── SpinCtrlBinding.h
│ │ │ ├── TestModelSkin.h
│ │ │ └── TexturePreview.h
│ │ ├── mediabrowser/
│ │ │ ├── FocusMaterialRequest.h
│ │ │ ├── MediaBrowser.cpp
│ │ │ ├── MediaBrowser.h
│ │ │ ├── MediaBrowserModule.cpp
│ │ │ ├── MediaBrowserTreeView.cpp
│ │ │ ├── MediaBrowserTreeView.h
│ │ │ └── TextureDirectoryLoader.h
│ │ ├── menu/
│ │ │ ├── MenuBar.cpp
│ │ │ ├── MenuBar.h
│ │ │ ├── MenuElement.cpp
│ │ │ ├── MenuElement.h
│ │ │ ├── MenuFolder.cpp
│ │ │ ├── MenuFolder.h
│ │ │ ├── MenuItem.cpp
│ │ │ ├── MenuItem.h
│ │ │ ├── MenuManager.cpp
│ │ │ ├── MenuManager.h
│ │ │ ├── MenuRootElement.h
│ │ │ ├── MenuSeparator.cpp
│ │ │ └── MenuSeparator.h
│ │ ├── merge/
│ │ │ ├── MapMergeControl.h
│ │ │ ├── MapMergePanel.cpp
│ │ │ └── MapMergePanel.h
│ │ ├── modelexport/
│ │ │ ├── ConvertModelDialog.cpp
│ │ │ ├── ConvertModelDialog.h
│ │ │ ├── ExportAsModelDialog.cpp
│ │ │ ├── ExportAsModelDialog.h
│ │ │ ├── ExportCollisionModelDialog.cpp
│ │ │ └── ExportCollisionModelDialog.h
│ │ ├── modelselector/
│ │ │ ├── MaterialsList.cpp
│ │ │ ├── MaterialsList.h
│ │ │ ├── ModelDataInserter.h
│ │ │ ├── ModelPopulator.h
│ │ │ ├── ModelSelector.cpp
│ │ │ ├── ModelSelector.h
│ │ │ ├── ModelTreeView.cpp
│ │ │ └── ModelTreeView.h
│ │ ├── mousetool/
│ │ │ ├── BindToolDialog.cpp
│ │ │ ├── BindToolDialog.h
│ │ │ ├── RegistrationHelper.h
│ │ │ ├── ToolMappingDialog.cpp
│ │ │ └── ToolMappingDialog.h
│ │ ├── mru/
│ │ │ └── MRUMenu.h
│ │ ├── ortho/
│ │ │ ├── OrthoContextMenu.cpp
│ │ │ └── OrthoContextMenu.h
│ │ ├── overlay/
│ │ │ ├── OrthoBackgroundControl.h
│ │ │ ├── OrthoBackgroundPanel.cpp
│ │ │ ├── OrthoBackgroundPanel.h
│ │ │ ├── Overlay.cpp
│ │ │ ├── Overlay.h
│ │ │ └── OverlayRegistryKeys.h
│ │ ├── particles/
│ │ │ ├── ParticleChooserDialog.cpp
│ │ │ ├── ParticleChooserDialog.h
│ │ │ ├── ParticleEditor.cpp
│ │ │ ├── ParticleEditor.h
│ │ │ ├── ParticleSelector.cpp
│ │ │ ├── ParticleSelector.h
│ │ │ └── ThreadedParticlesLoader.h
│ │ ├── patch/
│ │ │ ├── BulgePatchDialog.cpp
│ │ │ ├── BulgePatchDialog.h
│ │ │ ├── CapDialog.cpp
│ │ │ ├── CapDialog.h
│ │ │ ├── PatchCreateDialog.cpp
│ │ │ ├── PatchCreateDialog.h
│ │ │ ├── PatchInspector.cpp
│ │ │ ├── PatchInspector.h
│ │ │ ├── PatchInspectorControl.h
│ │ │ ├── PatchPrefabDialog.cpp
│ │ │ ├── PatchPrefabDialog.h
│ │ │ ├── PatchThickenDialog.cpp
│ │ │ └── PatchThickenDialog.h
│ │ ├── prefabselector/
│ │ │ ├── PrefabSelector.cpp
│ │ │ └── PrefabSelector.h
│ │ ├── prefdialog/
│ │ │ ├── GameSetupDialog.cpp
│ │ │ ├── GameSetupDialog.h
│ │ │ ├── GameSetupPage.cpp
│ │ │ ├── GameSetupPage.h
│ │ │ ├── GameSetupPageIdTech.cpp
│ │ │ ├── GameSetupPageIdTech.h
│ │ │ ├── GameSetupPageTdm.cpp
│ │ │ ├── GameSetupPageTdm.h
│ │ │ ├── PrefDialog.cpp
│ │ │ ├── PrefDialog.h
│ │ │ ├── PrefPage.cpp
│ │ │ ├── PrefPage.h
│ │ │ ├── PreferenceItem.cpp
│ │ │ └── PreferenceItem.h
│ │ ├── scatter/
│ │ │ ├── ScatterDialog.cpp
│ │ │ └── ScatterDialog.h
│ │ ├── script/
│ │ │ ├── ScriptMenu.cpp
│ │ │ ├── ScriptMenu.h
│ │ │ ├── ScriptPanel.h
│ │ │ ├── ScriptWindow.cpp
│ │ │ └── ScriptWindow.h
│ │ ├── selectiongroup/
│ │ │ ├── SelectionGroupControl.h
│ │ │ ├── SelectionGroupPanel.cpp
│ │ │ └── SelectionGroupPanel.h
│ │ ├── selectionset/
│ │ │ ├── SelectionSetToolmenu.cpp
│ │ │ └── SelectionSetToolmenu.h
│ │ ├── skin/
│ │ │ ├── SkinEditor.cpp
│ │ │ ├── SkinEditor.h
│ │ │ ├── SkinEditorTreeView.cpp
│ │ │ └── SkinEditorTreeView.h
│ │ ├── splash/
│ │ │ ├── Splash.cpp
│ │ │ └── Splash.h
│ │ ├── statusbar/
│ │ │ ├── CommandStatus.cpp
│ │ │ ├── CommandStatus.h
│ │ │ ├── EditingStopwatchStatus.cpp
│ │ │ ├── EditingStopwatchStatus.h
│ │ │ ├── MapStatistics.cpp
│ │ │ ├── MapStatistics.h
│ │ │ ├── ShaderClipboardStatus.h
│ │ │ ├── StatusBarManager.cpp
│ │ │ └── StatusBarManager.h
│ │ ├── surfaceinspector/
│ │ │ ├── SurfaceInspector.cpp
│ │ │ ├── SurfaceInspector.h
│ │ │ └── SurfaceInspectorControl.h
│ │ ├── terrain/
│ │ │ ├── TerrainGeneratorDialog.cpp
│ │ │ └── TerrainGeneratorDialog.h
│ │ ├── texturebrowser/
│ │ │ ├── MapTextureBrowser.cpp
│ │ │ ├── MapTextureBrowser.h
│ │ │ ├── TextureBrowserManager.cpp
│ │ │ ├── TextureBrowserManager.h
│ │ │ ├── TextureBrowserPanel.cpp
│ │ │ ├── TextureBrowserPanel.h
│ │ │ ├── TextureDirectoryBrowser.h
│ │ │ ├── TextureThumbnailBrowser.cpp
│ │ │ └── TextureThumbnailBrowser.h
│ │ ├── toolbar/
│ │ │ ├── ToolbarManager.cpp
│ │ │ └── ToolbarManager.h
│ │ └── transform/
│ │ ├── TransformPanel.cpp
│ │ ├── TransformPanel.h
│ │ └── TransformPanelControl.h
│ └── xyview/
│ ├── GlobalXYWnd.cpp
│ ├── GlobalXYWnd.h
│ ├── OrthoView.cpp
│ ├── OrthoView.h
│ ├── XYRenderer.h
│ └── tools/
│ ├── BrushCreatorTool.cpp
│ ├── BrushCreatorTool.h
│ ├── CameraAngleTool.h
│ ├── CameraMoveTool.h
│ ├── ClipperTool.cpp
│ ├── ClipperTool.h
│ ├── MeasurementTool.cpp
│ ├── MeasurementTool.h
│ ├── MoveViewTool.h
│ ├── PolygonTool.cpp
│ ├── PolygonTool.h
│ ├── XYMouseToolEvent.h
│ └── ZoomTool.h
├── radiantcore/
│ ├── CMakeLists.txt
│ ├── Radiant.cpp
│ ├── Radiant.h
│ ├── brush/
│ │ ├── Brush.cpp
│ │ ├── Brush.h
│ │ ├── BrushClipPlane.h
│ │ ├── BrushModule.cpp
│ │ ├── BrushModule.h
│ │ ├── BrushNode.cpp
│ │ ├── BrushNode.h
│ │ ├── BrushSettings.h
│ │ ├── BrushVisit.h
│ │ ├── EdgeInstance.h
│ │ ├── Face.cpp
│ │ ├── Face.h
│ │ ├── FaceInstance.cpp
│ │ ├── FaceInstance.h
│ │ ├── FacePlane.cpp
│ │ ├── FacePlane.h
│ │ ├── FixedWinding.cpp
│ │ ├── FixedWinding.h
│ │ ├── PlanePoints.h
│ │ ├── RenderableBrushVertices.cpp
│ │ ├── RenderableBrushVertices.h
│ │ ├── RenderableWinding.h
│ │ ├── SelectableComponents.h
│ │ ├── TextureMatrix.cpp
│ │ ├── TextureMatrix.h
│ │ ├── TextureProjection.cpp
│ │ ├── TextureProjection.h
│ │ ├── VertexInstance.h
│ │ ├── VertexSelection.h
│ │ ├── Winding.cpp
│ │ ├── Winding.h
│ │ ├── csg/
│ │ │ ├── CSG.cpp
│ │ │ └── CSG.h
│ │ └── export/
│ │ ├── CollisionModel.cpp
│ │ ├── CollisionModel.h
│ │ └── Geometry.h
│ ├── camera/
│ │ ├── Camera.cpp
│ │ ├── Camera.h
│ │ ├── CameraManager.cpp
│ │ └── CameraManager.h
│ ├── clipper/
│ │ ├── BrushByPlaneClipper.cpp
│ │ ├── BrushByPlaneClipper.h
│ │ ├── ClipPoint.cpp
│ │ ├── ClipPoint.h
│ │ ├── Clipper.cpp
│ │ ├── Clipper.h
│ │ ├── SplitAlgorithm.cpp
│ │ └── SplitAlgorithm.h
│ ├── commandsystem/
│ │ ├── Command.h
│ │ ├── CommandSystem.cpp
│ │ ├── CommandSystem.h
│ │ ├── CommandTokeniser.h
│ │ ├── Executable.h
│ │ └── Statement.h
│ ├── decl/
│ │ ├── DeclarationFile.h
│ │ ├── DeclarationFolderParser.cpp
│ │ ├── DeclarationFolderParser.h
│ │ ├── DeclarationManager.cpp
│ │ ├── DeclarationManager.h
│ │ ├── FavouriteSet.h
│ │ ├── FavouritesManager.cpp
│ │ └── FavouritesManager.h
│ ├── eclass/
│ │ ├── Doom3ModelDef.h
│ │ ├── EClassColourManager.cpp
│ │ ├── EClassColourManager.h
│ │ ├── EClassManager.cpp
│ │ └── EClassManager.h
│ ├── entity/
│ │ ├── AngleKey.cpp
│ │ ├── AngleKey.h
│ │ ├── EntityModule.cpp
│ │ ├── EntityModule.h
│ │ ├── RenderableArrow.cpp
│ │ ├── RenderableArrow.h
│ │ ├── RenderableEntityBox.cpp
│ │ ├── RenderableEntityBox.h
│ │ ├── RotationKey.cpp
│ │ ├── RotationKey.h
│ │ ├── RotationMatrix.cpp
│ │ ├── RotationMatrix.h
│ │ ├── VertexInstance.h
│ │ ├── algorithm/
│ │ │ └── Speaker.h
│ │ ├── curve/
│ │ │ ├── Curve.cpp
│ │ │ ├── Curve.h
│ │ │ ├── CurveCatmullRom.cpp
│ │ │ ├── CurveCatmullRom.h
│ │ │ ├── CurveControlPointFunctors.h
│ │ │ ├── CurveEditInstance.cpp
│ │ │ ├── CurveEditInstance.h
│ │ │ ├── CurveNURBS.cpp
│ │ │ ├── CurveNURBS.h
│ │ │ ├── RenderableCurve.h
│ │ │ └── RenderableCurveVertices.h
│ │ ├── doom3group/
│ │ │ ├── RenderableVertex.h
│ │ │ ├── StaticGeometryNode.cpp
│ │ │ └── StaticGeometryNode.h
│ │ ├── eclassmodel/
│ │ │ ├── EclassModelNode.cpp
│ │ │ └── EclassModelNode.h
│ │ ├── generic/
│ │ │ ├── GenericEntityNode.cpp
│ │ │ └── GenericEntityNode.h
│ │ ├── light/
│ │ │ ├── Doom3LightRadius.h
│ │ │ ├── LightNode.cpp
│ │ │ ├── LightNode.h
│ │ │ ├── LightShader.h
│ │ │ ├── LightVertexInstanceSet.h
│ │ │ ├── Renderables.cpp
│ │ │ └── Renderables.h
│ │ └── speaker/
│ │ ├── SpeakerNode.cpp
│ │ ├── SpeakerNode.h
│ │ ├── SpeakerRenderables.cpp
│ │ └── SpeakerRenderables.h
│ ├── filetypes/
│ │ ├── FileTypeRegistry.cpp
│ │ └── FileTypeRegistry.h
│ ├── filters/
│ │ ├── BasicFilterSystem.cpp
│ │ ├── BasicFilterSystem.h
│ │ ├── InstanceUpdateWalker.h
│ │ ├── SetObjectSelectionByFilterWalker.h
│ │ ├── XmlFilterEventAdapter.cpp
│ │ └── XmlFilterEventAdapter.h
│ ├── fonts/
│ │ ├── FontInfo.h
│ │ ├── FontLoader.cpp
│ │ ├── FontLoader.h
│ │ ├── FontManager.cpp
│ │ ├── FontManager.h
│ │ ├── GlyphInfo.cpp
│ │ ├── GlyphInfo.h
│ │ ├── GlyphSet.cpp
│ │ └── GlyphSet.h
│ ├── fx/
│ │ ├── FxAction.cpp
│ │ ├── FxAction.h
│ │ ├── FxDeclaration.cpp
│ │ ├── FxDeclaration.h
│ │ ├── FxManager.cpp
│ │ └── FxManager.h
│ ├── grid/
│ │ ├── GridItem.h
│ │ ├── GridManager.cpp
│ │ └── GridManager.h
│ ├── imagefile/
│ │ ├── BMPLoader.cpp
│ │ ├── BMPLoader.h
│ │ ├── ImageLoader.cpp
│ │ ├── ImageLoader.h
│ │ ├── ImageTypeLoader.h
│ │ ├── JPEGLoader.cpp
│ │ ├── JPEGLoader.h
│ │ ├── PNGLoader.cpp
│ │ ├── PNGLoader.h
│ │ ├── TGALoader.cpp
│ │ ├── TGALoader.h
│ │ ├── dds.cpp
│ │ ├── dds.h
│ │ ├── ddslib.cpp
│ │ └── ddslib.h
│ ├── layers/
│ │ ├── AddToLayerWalker.h
│ │ ├── LayerInfoFileModule.cpp
│ │ ├── LayerInfoFileModule.h
│ │ ├── LayerManager.cpp
│ │ ├── LayerManager.h
│ │ ├── LayerModule.cpp
│ │ ├── MoveToLayerWalker.h
│ │ ├── RemoveFromLayerWalker.h
│ │ └── SetLayerSelectedWalker.h
│ ├── log/
│ │ ├── COutRedirector.cpp
│ │ ├── COutRedirector.h
│ │ ├── LogFile.cpp
│ │ ├── LogFile.h
│ │ ├── LogStream.cpp
│ │ ├── LogStream.h
│ │ ├── LogStreamBuf.cpp
│ │ ├── LogStreamBuf.h
│ │ ├── LogWriter.cpp
│ │ ├── LogWriter.h
│ │ ├── SegFaultHandler.cpp
│ │ ├── SegFaultHandler.h
│ │ ├── StringLogDevice.cpp
│ │ └── StringLogDevice.h
│ ├── map/
│ │ ├── ArchivedMapResource.cpp
│ │ ├── ArchivedMapResource.h
│ │ ├── CounterManager.cpp
│ │ ├── CounterManager.h
│ │ ├── EditingStopwatch.cpp
│ │ ├── EditingStopwatch.h
│ │ ├── EditingStopwatchInfoFileModule.cpp
│ │ ├── EditingStopwatchInfoFileModule.h
│ │ ├── Map.cpp
│ │ ├── Map.h
│ │ ├── MapFileManager.cpp
│ │ ├── MapFileManager.h
│ │ ├── MapModules.cpp
│ │ ├── MapPosition.cpp
│ │ ├── MapPosition.h
│ │ ├── MapPositionManager.cpp
│ │ ├── MapPositionManager.h
│ │ ├── MapPropertyInfoFileModule.cpp
│ │ ├── MapPropertyInfoFileModule.h
│ │ ├── MapResource.cpp
│ │ ├── MapResource.h
│ │ ├── MapResourceLoader.cpp
│ │ ├── MapResourceLoader.h
│ │ ├── MapResourceManager.cpp
│ │ ├── MapResourceManager.h
│ │ ├── NodeCounter.h
│ │ ├── PointFile.cpp
│ │ ├── PointFile.h
│ │ ├── RegionManager.cpp
│ │ ├── RegionManager.h
│ │ ├── RegionWalkers.h
│ │ ├── RenderablePointFile.h
│ │ ├── RootNode.cpp
│ │ ├── RootNode.h
│ │ ├── VcsMapResource.cpp
│ │ ├── VcsMapResource.h
│ │ ├── aas/
│ │ │ ├── AasFileManager.cpp
│ │ │ ├── AasFileManager.h
│ │ │ ├── Doom3AasFile.cpp
│ │ │ ├── Doom3AasFile.h
│ │ │ ├── Doom3AasFileLoader.cpp
│ │ │ ├── Doom3AasFileLoader.h
│ │ │ ├── Doom3AasFileSettings.cpp
│ │ │ ├── Doom3AasFileSettings.h
│ │ │ └── Util.h
│ │ ├── algorithm/
│ │ │ ├── Export.cpp
│ │ │ ├── Export.h
│ │ │ ├── Import.cpp
│ │ │ ├── Import.h
│ │ │ ├── MapExporter.cpp
│ │ │ ├── MapExporter.h
│ │ │ ├── MapImporter.cpp
│ │ │ ├── MapImporter.h
│ │ │ ├── Models.cpp
│ │ │ └── Models.h
│ │ ├── autosaver/
│ │ │ ├── AutoSaver.cpp
│ │ │ └── AutoSaver.h
│ │ ├── format/
│ │ │ ├── Doom3MapFormat.cpp
│ │ │ ├── Doom3MapFormat.h
│ │ │ ├── Doom3MapReader.cpp
│ │ │ ├── Doom3MapReader.h
│ │ │ ├── Doom3MapWriter.cpp
│ │ │ ├── Doom3MapWriter.h
│ │ │ ├── Doom3PrefabFormat.cpp
│ │ │ ├── Doom3PrefabFormat.h
│ │ │ ├── MapFormatManager.cpp
│ │ │ ├── MapFormatManager.h
│ │ │ ├── Quake3MapFormat.cpp
│ │ │ ├── Quake3MapFormat.h
│ │ │ ├── Quake3MapReader.cpp
│ │ │ ├── Quake3MapReader.h
│ │ │ ├── Quake3MapWriter.h
│ │ │ ├── Quake3Utils.h
│ │ │ ├── Quake4MapFormat.cpp
│ │ │ ├── Quake4MapFormat.h
│ │ │ ├── Quake4MapReader.cpp
│ │ │ ├── Quake4MapReader.h
│ │ │ ├── Quake4MapWriter.h
│ │ │ ├── portable/
│ │ │ │ ├── Constants.h
│ │ │ │ ├── PortableMapFormat.cpp
│ │ │ │ ├── PortableMapFormat.h
│ │ │ │ ├── PortableMapReader.cpp
│ │ │ │ ├── PortableMapReader.h
│ │ │ │ ├── PortableMapWriter.cpp
│ │ │ │ └── PortableMapWriter.h
│ │ │ ├── primitiveparsers/
│ │ │ │ ├── BrushDef.cpp
│ │ │ │ ├── BrushDef.h
│ │ │ │ ├── BrushDef3.cpp
│ │ │ │ ├── BrushDef3.h
│ │ │ │ ├── Patch.cpp
│ │ │ │ ├── Patch.h
│ │ │ │ ├── PatchDef2.cpp
│ │ │ │ ├── PatchDef2.h
│ │ │ │ ├── PatchDef3.cpp
│ │ │ │ └── PatchDef3.h
│ │ │ └── primitivewriters/
│ │ │ ├── BrushDef3Exporter.h
│ │ │ ├── BrushDefExporter.h
│ │ │ ├── ExportUtil.h
│ │ │ ├── LegacyBrushDefExporter.h
│ │ │ └── PatchDefExporter.h
│ │ ├── infofile/
│ │ │ ├── InfoFile.cpp
│ │ │ ├── InfoFile.h
│ │ │ ├── InfoFileExporter.cpp
│ │ │ ├── InfoFileExporter.h
│ │ │ ├── InfoFileManager.cpp
│ │ │ └── InfoFileManager.h
│ │ ├── mru/
│ │ │ ├── MRU.cpp
│ │ │ ├── MRU.h
│ │ │ └── MRUList.h
│ │ └── namespace/
│ │ ├── ComplexName.cpp
│ │ ├── ComplexName.h
│ │ ├── Namespace.cpp
│ │ ├── Namespace.h
│ │ ├── NamespaceFactory.cpp
│ │ ├── NamespaceFactory.h
│ │ └── UniqueNameSet.h
│ ├── messagebus/
│ │ └── MessageBus.h
│ ├── model/
│ │ ├── IndexedBoxSurface.h
│ │ ├── ModelCache.cpp
│ │ ├── ModelCache.h
│ │ ├── ModelFormatManager.cpp
│ │ ├── ModelFormatManager.h
│ │ ├── ModelNodeBase.cpp
│ │ ├── ModelNodeBase.h
│ │ ├── NullModel.cpp
│ │ ├── NullModel.h
│ │ ├── NullModelBoxSurface.h
│ │ ├── NullModelLoader.h
│ │ ├── NullModelNode.cpp
│ │ ├── NullModelNode.h
│ │ ├── RenderableModelSurface.h
│ │ ├── StaticModel.cpp
│ │ ├── StaticModel.h
│ │ ├── StaticModelNode.cpp
│ │ ├── StaticModelNode.h
│ │ ├── StaticModelSurface.cpp
│ │ ├── StaticModelSurface.h
│ │ ├── export/
│ │ │ ├── AseExporter.cpp
│ │ │ ├── AseExporter.h
│ │ │ ├── Lwo2Chunk.cpp
│ │ │ ├── Lwo2Chunk.h
│ │ │ ├── Lwo2Exporter.cpp
│ │ │ ├── Lwo2Exporter.h
│ │ │ ├── ModelExporter.cpp
│ │ │ ├── ModelExporter.h
│ │ │ ├── ModelExporterBase.h
│ │ │ ├── ModelScalePreserver.cpp
│ │ │ ├── ModelScalePreserver.h
│ │ │ ├── PatchSurface.cpp
│ │ │ ├── PatchSurface.h
│ │ │ ├── ScaledModelExporter.cpp
│ │ │ ├── ScaledModelExporter.h
│ │ │ ├── WavefrontExporter.cpp
│ │ │ └── WavefrontExporter.h
│ │ ├── import/
│ │ │ ├── AseModel.cpp
│ │ │ ├── AseModel.h
│ │ │ ├── AseModelLoader.cpp
│ │ │ ├── AseModelLoader.h
│ │ │ ├── FbxModelLoader.cpp
│ │ │ ├── FbxModelLoader.h
│ │ │ ├── FbxSurface.h
│ │ │ ├── ModelImporterBase.cpp
│ │ │ ├── ModelImporterBase.h
│ │ │ └── openfbx/
│ │ │ ├── LICENSE
│ │ │ ├── ofbx.cpp
│ │ │ └── ofbx.h
│ │ ├── md5/
│ │ │ ├── MD5Anim.cpp
│ │ │ ├── MD5Anim.h
│ │ │ ├── MD5AnimationCache.cpp
│ │ │ ├── MD5AnimationCache.h
│ │ │ ├── MD5DataStructures.h
│ │ │ ├── MD5Model.cpp
│ │ │ ├── MD5Model.h
│ │ │ ├── MD5ModelLoader.cpp
│ │ │ ├── MD5ModelLoader.h
│ │ │ ├── MD5ModelNode.cpp
│ │ │ ├── MD5ModelNode.h
│ │ │ ├── MD5Module.cpp
│ │ │ ├── MD5Skeleton.cpp
│ │ │ ├── MD5Skeleton.h
│ │ │ ├── MD5Surface.cpp
│ │ │ ├── MD5Surface.h
│ │ │ └── RenderableMD5Skeleton.h
│ │ └── picomodel/
│ │ ├── PicoModelLoader.cpp
│ │ ├── PicoModelLoader.h
│ │ ├── PicoModelModule.cpp
│ │ ├── PicoModelModule.h
│ │ └── lib/
│ │ ├── lwo/
│ │ │ ├── clip.c
│ │ │ ├── envelope.c
│ │ │ ├── list.c
│ │ │ ├── lwio.c
│ │ │ ├── lwo2.c
│ │ │ ├── lwo2.h
│ │ │ ├── lwob.c
│ │ │ ├── pntspols.c
│ │ │ ├── surface.c
│ │ │ ├── vecmath.c
│ │ │ └── vmap.c
│ │ ├── picointernal.c
│ │ ├── picointernal.h
│ │ ├── picomodel.c
│ │ ├── picomodel.h
│ │ ├── picomodules.c
│ │ ├── pm_3ds.c
│ │ ├── pm_fm.c
│ │ ├── pm_fm.h
│ │ ├── pm_fm.h.orig
│ │ ├── pm_iqm.c
│ │ ├── pm_lwo.c
│ │ ├── pm_md2.c
│ │ ├── pm_md3.c
│ │ ├── pm_mdc.c
│ │ ├── pm_ms3d.c
│ │ ├── pm_obj.c
│ │ └── pm_terrain.c
│ ├── modulesystem/
│ │ ├── ModuleLoader.cpp
│ │ ├── ModuleLoader.h
│ │ ├── ModuleRegistry.cpp
│ │ └── ModuleRegistry.h
│ ├── particles/
│ │ ├── ParticleDef.cpp
│ │ ├── ParticleDef.h
│ │ ├── ParticleNode.cpp
│ │ ├── ParticleNode.h
│ │ ├── ParticleParameter.cpp
│ │ ├── ParticleParameter.h
│ │ ├── ParticleQuad.h
│ │ ├── ParticleRenderInfo.h
│ │ ├── ParticlesManager.cpp
│ │ ├── ParticlesManager.h
│ │ ├── RenderableParticle.cpp
│ │ ├── RenderableParticle.h
│ │ ├── RenderableParticleBunch.cpp
│ │ ├── RenderableParticleBunch.h
│ │ ├── RenderableParticleStage.cpp
│ │ ├── RenderableParticleStage.h
│ │ ├── StageDef.cpp
│ │ └── StageDef.h
│ ├── patch/
│ │ ├── Patch.cpp
│ │ ├── Patch.h
│ │ ├── PatchConstants.h
│ │ ├── PatchControl.h
│ │ ├── PatchControlInstance.h
│ │ ├── PatchModule.cpp
│ │ ├── PatchModule.h
│ │ ├── PatchNode.cpp
│ │ ├── PatchNode.h
│ │ ├── PatchRenderables.cpp
│ │ ├── PatchRenderables.h
│ │ ├── PatchSavedState.h
│ │ ├── PatchSettings.h
│ │ ├── PatchTesselation.cpp
│ │ ├── PatchTesselation.h
│ │ └── algorithm/
│ │ ├── General.cpp
│ │ ├── General.h
│ │ ├── Prefab.cpp
│ │ └── Prefab.h
│ ├── precompiled.cpp
│ ├── precompiled.h
│ ├── rendersystem/
│ │ ├── GLFont.cpp
│ │ ├── GLFont.h
│ │ ├── OpenGLModule.cpp
│ │ ├── OpenGLModule.h
│ │ ├── OpenGLRenderSystem.cpp
│ │ ├── OpenGLRenderSystem.h
│ │ ├── RenderSystemFactory.cpp
│ │ ├── RenderSystemFactory.h
│ │ ├── SharedOpenGLContextModule.cpp
│ │ ├── SharedOpenGLContextModule.h
│ │ ├── backend/
│ │ │ ├── BlendLight.cpp
│ │ │ ├── BlendLight.h
│ │ │ ├── BufferObjectProvider.h
│ │ │ ├── BuiltInShader.cpp
│ │ │ ├── BuiltInShader.h
│ │ │ ├── ColourShader.cpp
│ │ │ ├── ColourShader.h
│ │ │ ├── DepthFillPass.cpp
│ │ │ ├── DepthFillPass.h
│ │ │ ├── FenceSyncProvider.h
│ │ │ ├── FrameBuffer.h
│ │ │ ├── FullBrightRenderer.cpp
│ │ │ ├── FullBrightRenderer.h
│ │ │ ├── GLProgramFactory.cpp
│ │ │ ├── GLProgramFactory.h
│ │ │ ├── GeometryRenderer.h
│ │ │ ├── InteractionPass.cpp
│ │ │ ├── InteractionPass.h
│ │ │ ├── LightingModeRenderResult.h
│ │ │ ├── LightingModeRenderer.cpp
│ │ │ ├── LightingModeRenderer.h
│ │ │ ├── ObjectRenderer.cpp
│ │ │ ├── ObjectRenderer.h
│ │ │ ├── OpenGLShader.cpp
│ │ │ ├── OpenGLShader.h
│ │ │ ├── OpenGLShaderPass.cpp
│ │ │ ├── OpenGLShaderPass.h
│ │ │ ├── OpenGLState.h
│ │ │ ├── OpenGLStateLess.h
│ │ │ ├── OpenGLStateManager.h
│ │ │ ├── RegularLight.cpp
│ │ │ ├── RegularLight.h
│ │ │ ├── SceneRenderer.cpp
│ │ │ ├── SceneRenderer.h
│ │ │ ├── SurfaceRenderer.h
│ │ │ ├── TextRenderer.h
│ │ │ └── glprogram/
│ │ │ ├── BlendLightProgram.cpp
│ │ │ ├── BlendLightProgram.h
│ │ │ ├── CubeMapProgram.cpp
│ │ │ ├── CubeMapProgram.h
│ │ │ ├── DepthFillAlphaProgram.cpp
│ │ │ ├── DepthFillAlphaProgram.h
│ │ │ ├── GLSLProgramBase.cpp
│ │ │ ├── GLSLProgramBase.h
│ │ │ ├── GenericVFPProgram.cpp
│ │ │ ├── GenericVFPProgram.h
│ │ │ ├── InteractionProgram.cpp
│ │ │ ├── InteractionProgram.h
│ │ │ ├── RegularStageProgram.cpp
│ │ │ ├── RegularStageProgram.h
│ │ │ ├── ShadowMapProgram.cpp
│ │ │ └── ShadowMapProgram.h
│ │ └── debug/
│ │ ├── SpacePartitionRenderer.cpp
│ │ └── SpacePartitionRenderer.h
│ ├── scenegraph/
│ │ ├── Octree.cpp
│ │ ├── Octree.h
│ │ ├── OctreeNode.h
│ │ ├── SceneGraph.cpp
│ │ ├── SceneGraph.h
│ │ ├── SceneGraphFactory.cpp
│ │ └── SceneGraphFactory.h
│ ├── selection/
│ │ ├── BasicSelectable.h
│ │ ├── BestSelector.h
│ │ ├── ManipulationPivot.cpp
│ │ ├── ManipulationPivot.h
│ │ ├── RadiantSelectionSystem.cpp
│ │ ├── RadiantSelectionSystem.h
│ │ ├── SceneManipulationPivot.cpp
│ │ ├── SceneManipulationPivot.h
│ │ ├── SceneSelectionTesters.cpp
│ │ ├── SceneSelectionTesters.h
│ │ ├── SceneWalkers.h
│ │ ├── SelectedNodeList.cpp
│ │ ├── SelectedNodeList.h
│ │ ├── SelectionTestWalkers.cpp
│ │ ├── SelectionTestWalkers.h
│ │ ├── TransformationVisitors.cpp
│ │ ├── TransformationVisitors.h
│ │ ├── algorithm/
│ │ │ ├── Curves.cpp
│ │ │ ├── Curves.h
│ │ │ ├── Entity.cpp
│ │ │ ├── Entity.h
│ │ │ ├── General.cpp
│ │ │ ├── General.h
│ │ │ ├── Group.cpp
│ │ │ ├── Group.h
│ │ │ ├── GroupCycle.cpp
│ │ │ ├── GroupCycle.h
│ │ │ ├── Patch.cpp
│ │ │ ├── Patch.h
│ │ │ ├── Planes.cpp
│ │ │ ├── Planes.h
│ │ │ ├── Primitives.cpp
│ │ │ ├── Primitives.h
│ │ │ ├── SelectionPolicies.h
│ │ │ ├── Shader.cpp
│ │ │ ├── Shader.h
│ │ │ ├── Texturing.cpp
│ │ │ ├── Texturing.h
│ │ │ ├── Transformation.cpp
│ │ │ └── Transformation.h
│ │ ├── clipboard/
│ │ │ ├── Clipboard.cpp
│ │ │ └── Clipboard.h
│ │ ├── group/
│ │ │ ├── SelectionGroup.h
│ │ │ ├── SelectionGroupInfoFileModule.cpp
│ │ │ ├── SelectionGroupInfoFileModule.h
│ │ │ ├── SelectionGroupManager.cpp
│ │ │ ├── SelectionGroupManager.h
│ │ │ └── SelectionGroupModule.cpp
│ │ ├── manipulators/
│ │ │ ├── ClipManipulator.h
│ │ │ ├── DragManipulator.cpp
│ │ │ ├── DragManipulator.h
│ │ │ ├── ManipulatorBase.cpp
│ │ │ ├── ManipulatorBase.h
│ │ │ ├── ManipulatorComponents.cpp
│ │ │ ├── ManipulatorComponents.h
│ │ │ ├── ModelScaleManipulator.cpp
│ │ │ ├── ModelScaleManipulator.h
│ │ │ ├── Renderables.h
│ │ │ ├── RotateManipulator.cpp
│ │ │ ├── RotateManipulator.h
│ │ │ ├── TranslateManipulator.cpp
│ │ │ └── TranslateManipulator.h
│ │ ├── selectionset/
│ │ │ ├── SelectionSet.cpp
│ │ │ ├── SelectionSet.h
│ │ │ ├── SelectionSetInfoFileModule.cpp
│ │ │ ├── SelectionSetInfoFileModule.h
│ │ │ ├── SelectionSetManager.cpp
│ │ │ ├── SelectionSetManager.h
│ │ │ └── SelectionSetModule.cpp
│ │ ├── shaderclipboard/
│ │ │ ├── ClosestTexturableFinder.cpp
│ │ │ ├── ClosestTexturableFinder.h
│ │ │ ├── ShaderClipboard.cpp
│ │ │ ├── ShaderClipboard.h
│ │ │ ├── Texturable.cpp
│ │ │ └── Texturable.h
│ │ └── textool/
│ │ ├── ColourSchemeManager.cpp
│ │ ├── FaceNode.cpp
│ │ ├── FaceNode.h
│ │ ├── Node.cpp
│ │ ├── Node.h
│ │ ├── PatchNode.cpp
│ │ ├── PatchNode.h
│ │ ├── SelectableVertex.h
│ │ ├── TextureToolDragManipulator.cpp
│ │ ├── TextureToolDragManipulator.h
│ │ ├── TextureToolManipulationPivot.cpp
│ │ ├── TextureToolManipulationPivot.h
│ │ ├── TextureToolRotateManipulator.cpp
│ │ ├── TextureToolRotateManipulator.h
│ │ ├── TextureToolSceneGraph.cpp
│ │ ├── TextureToolSceneGraph.h
│ │ ├── TextureToolSelectionSystem.cpp
│ │ └── TextureToolSelectionSystem.h
│ ├── settings/
│ │ ├── ColourScheme.cpp
│ │ ├── ColourScheme.h
│ │ ├── ColourSchemeManager.cpp
│ │ ├── ColourSchemeManager.h
│ │ ├── Game.cpp
│ │ ├── Game.h
│ │ ├── GameManager.cpp
│ │ ├── GameManager.h
│ │ ├── LanguageManager.cpp
│ │ ├── LanguageManager.h
│ │ ├── PreferenceItemBase.h
│ │ ├── PreferenceItems.h
│ │ ├── PreferencePage.cpp
│ │ ├── PreferencePage.h
│ │ ├── PreferenceSystem.cpp
│ │ └── PreferenceSystem.h
│ ├── shaders/
│ │ ├── CShader.cpp
│ │ ├── CShader.h
│ │ ├── CameraCubeMapDecl.cpp
│ │ ├── CameraCubeMapDecl.h
│ │ ├── Doom3ShaderLayer.cpp
│ │ ├── Doom3ShaderLayer.h
│ │ ├── ExpressionSlots.cpp
│ │ ├── ExpressionSlots.h
│ │ ├── MapExpression.cpp
│ │ ├── MapExpression.h
│ │ ├── MaterialManager.cpp
│ │ ├── MaterialManager.h
│ │ ├── MaterialSourceGenerator.cpp
│ │ ├── MaterialSourceGenerator.h
│ │ ├── ShaderLibrary.cpp
│ │ ├── ShaderLibrary.h
│ │ ├── ShaderTemplate.cpp
│ │ ├── ShaderTemplate.h
│ │ ├── SoundMapExpression.h
│ │ ├── TableDefinition.cpp
│ │ ├── TableDefinition.h
│ │ ├── TextureMatrix.cpp
│ │ ├── TextureMatrix.h
│ │ ├── VideoMapExpression.h
│ │ └── textures/
│ │ ├── CubeMapTexture.h
│ │ ├── GLTextureManager.cpp
│ │ └── GLTextureManager.h
│ ├── skins/
│ │ ├── Doom3ModelSkin.cpp
│ │ ├── Doom3ModelSkin.h
│ │ ├── Doom3SkinCache.cpp
│ │ └── Doom3SkinCache.h
│ ├── undo/
│ │ ├── Operation.h
│ │ ├── Stack.h
│ │ ├── StackFiller.h
│ │ ├── UndoSystem.cpp
│ │ ├── UndoSystem.h
│ │ └── UndoSystemFactory.cpp
│ ├── versioncontrol/
│ │ ├── VersionControlManager.cpp
│ │ └── VersionControlManager.h
│ ├── vfs/
│ │ ├── AssetsList.h
│ │ ├── DeflatedArchiveFile.h
│ │ ├── DeflatedArchiveTextFile.h
│ │ ├── DeflatedInputStream.cpp
│ │ ├── DeflatedInputStream.h
│ │ ├── DirectoryArchive.cpp
│ │ ├── DirectoryArchive.h
│ │ ├── DirectoryArchiveTextFile.h
│ │ ├── Doom3FileSystem.cpp
│ │ ├── Doom3FileSystem.h
│ │ ├── FileVisitor.h
│ │ ├── GenericFileSystem.h
│ │ ├── SortedFilenames.h
│ │ ├── StoredArchiveFile.h
│ │ ├── StoredArchiveTextFile.h
│ │ ├── UnixPath.h
│ │ ├── ZipArchive.cpp
│ │ ├── ZipArchive.h
│ │ └── ZipStreamUtils.h
│ └── xmlregistry/
│ ├── RegistryTree.cpp
│ ├── RegistryTree.h
│ ├── XMLRegistry.cpp
│ └── XMLRegistry.h
├── test/
│ ├── Basic.cpp
│ ├── Brush.cpp
│ ├── CMakeLists.txt
│ ├── CSG.cpp
│ ├── Camera.cpp
│ ├── Clipboard.cpp
│ ├── CodeTokeniser.cpp
│ ├── ColourSchemes.cpp
│ ├── CommandSystem.cpp
│ ├── ContinuousBuffer.cpp
│ ├── Curves.cpp
│ ├── DeclManager.cpp
│ ├── DefBlockSyntaxParser.cpp
│ ├── DefTokenisers.cpp
│ ├── Entity.cpp
│ ├── EntityClass.cpp
│ ├── EntityInspector.cpp
│ ├── FakeClipboardModule.h
│ ├── Favourites.cpp
│ ├── FileTypes.cpp
│ ├── Filters.cpp
│ ├── Fx.cpp
│ ├── Game.cpp
│ ├── GeometryStore.cpp
│ ├── Grid.cpp
│ ├── HeadlessOpenGLContext.cpp
│ ├── HeadlessOpenGLContext.h
│ ├── ImageLoading.cpp
│ ├── LayerManipulation.cpp
│ ├── MapExport.cpp
│ ├── MapMerging.cpp
│ ├── MapSavingLoading.cpp
│ ├── MaterialExport.cpp
│ ├── Materials.cpp
│ ├── MessageBus.cpp
│ ├── ModelExport.cpp
│ ├── ModelScale.cpp
│ ├── Models.cpp
│ ├── Particles.cpp
│ ├── Patch.cpp
│ ├── PatchIterators.cpp
│ ├── PatchWelding.cpp
│ ├── PointTrace.cpp
│ ├── Prefabs.cpp
│ ├── RadiantTest.h
│ ├── Registry.cpp
│ ├── Renderer.cpp
│ ├── SceneNode.cpp
│ ├── SceneStatistics.cpp
│ ├── Selection.cpp
│ ├── SelectionAlgorithm.cpp
│ ├── SelectionGroup.cpp
│ ├── Settings.cpp
│ ├── Skin.cpp
│ ├── SoundManager.cpp
│ ├── TdmMissionSetup.h
│ ├── TerrainGenerator.cpp
│ ├── TestContext.h
│ ├── TestLogFile.h
│ ├── TestOrthoViewManager.cpp
│ ├── TestOrthoViewManager.h
│ ├── TextureManipulation.cpp
│ ├── TextureTool.cpp
│ ├── Transformation.cpp
│ ├── TrimTool.cpp
│ ├── UndoRedo.cpp
│ ├── VFS.cpp
│ ├── WindingRendering.cpp
│ ├── WorldspawnColour.cpp
│ ├── XmlUtil.cpp
│ ├── algorithm/
│ │ ├── Entity.h
│ │ ├── FileUtils.h
│ │ ├── Primitives.h
│ │ ├── Scene.h
│ │ ├── Selection.h
│ │ ├── View.h
│ │ └── XmlUtils.h
│ ├── math/
│ │ ├── Matrix3.cpp
│ │ ├── Matrix4.cpp
│ │ ├── MatrixUtils.h
│ │ ├── Plane3.cpp
│ │ ├── Quaternion.cpp
│ │ └── Vector.cpp
│ ├── precompiled.cpp
│ ├── precompiled.h
│ ├── resources/
│ │ ├── fbx/
│ │ │ └── test_cube.fbx
│ │ ├── map_loading_test.pk4
│ │ ├── settings/
│ │ │ ├── colours_incomplete.xml
│ │ │ ├── colours_userdefined.xml
│ │ │ └── old_favourites.xml
│ │ ├── tdm/
│ │ │ ├── altar.pk4
│ │ │ ├── def/
│ │ │ │ ├── attribute_types.def
│ │ │ │ ├── base.def
│ │ │ │ ├── bucket.def
│ │ │ │ ├── entity_with_model.def
│ │ │ │ ├── func.def
│ │ │ │ ├── gameplay.def
│ │ │ │ ├── lights.def
│ │ │ │ ├── lights_static.def
│ │ │ │ ├── moveable.def
│ │ │ │ ├── mover_door.def
│ │ │ │ ├── player.def
│ │ │ │ ├── skinned_models.def
│ │ │ │ ├── speaker.def
│ │ │ │ ├── tdm_ai.def
│ │ │ │ └── tdm_frobable.def
│ │ │ ├── fx/
│ │ │ │ └── parsertest.fx
│ │ │ ├── guis/
│ │ │ │ ├── parse_test2.gui
│ │ │ │ └── parse_test_include2.guicode
│ │ │ ├── lights/
│ │ │ │ ├── squarelight1_amb.tga
│ │ │ │ └── squarelight1a.tga
│ │ │ ├── maps/
│ │ │ │ ├── ALTAr.lin
│ │ │ │ ├── altar.darkradiant
│ │ │ │ ├── altar_portalL_544_64_112.lin
│ │ │ │ ├── fingerprinting.mapx
│ │ │ │ ├── fingerprinting_2.mapx
│ │ │ │ ├── general_purpose.mapx
│ │ │ │ ├── layer_hierarchy_restore.darkradiant
│ │ │ │ ├── layer_hierarchy_restore.mapx
│ │ │ │ ├── merging_groups_1.mapx
│ │ │ │ ├── merging_groups_2.mapx
│ │ │ │ ├── merging_groups_3.mapx
│ │ │ │ ├── merging_groups_4.mapx
│ │ │ │ ├── merging_groups_5.mapx
│ │ │ │ ├── merging_groups_6.mapx
│ │ │ │ ├── merging_layers_1.mapx
│ │ │ │ ├── merging_layers_2.mapx
│ │ │ │ ├── merging_layers_3.mapx
│ │ │ │ ├── merging_layers_4.mapx
│ │ │ │ ├── merging_layers_5.mapx
│ │ │ │ ├── patch_cap_test.mapx
│ │ │ │ ├── selecting_filtered_items_with_layers.mapx
│ │ │ │ ├── threeway_merge_base.mapx
│ │ │ │ ├── threeway_merge_groups_base.mapx
│ │ │ │ ├── threeway_merge_groups_source_1.mapx
│ │ │ │ ├── threeway_merge_groups_target_1.mapx
│ │ │ │ ├── threeway_merge_layers_source_1.mapx
│ │ │ │ ├── threeway_merge_layers_target_1.mapx
│ │ │ │ ├── threeway_merge_source_1.mapx
│ │ │ │ ├── threeway_merge_source_2.mapx
│ │ │ │ ├── threeway_merge_target_1.mapx
│ │ │ │ ├── threeway_merge_target_2.mapx
│ │ │ │ ├── twosided_ivy.mapx
│ │ │ │ ├── weld_patches.mapx
│ │ │ │ └── weld_patches2.mapx
│ │ │ ├── materials/
│ │ │ │ ├── assets.lst
│ │ │ │ ├── example.mtr
│ │ │ │ ├── exporttest.mtr
│ │ │ │ ├── frobstage.mtr
│ │ │ │ ├── hidden.mtr
│ │ │ │ ├── lights.mtr
│ │ │ │ ├── null_byte_at_the_end.mtr
│ │ │ │ ├── numbers.mtr
│ │ │ │ ├── parsertest.mtr
│ │ │ │ ├── parsing_test.mtr
│ │ │ │ ├── pngs.mtr
│ │ │ │ ├── tables.mtr
│ │ │ │ ├── tdm_internal_engine.mtr
│ │ │ │ ├── twosided.mtr
│ │ │ │ └── z_precedence.mtr
│ │ │ ├── models/
│ │ │ │ ├── ase/
│ │ │ │ │ ├── exploded_cube.ase
│ │ │ │ │ ├── gauge_needle.ase
│ │ │ │ │ ├── merged_cube.ase
│ │ │ │ │ ├── separated_tiles.ase
│ │ │ │ │ ├── single_triangle.ase
│ │ │ │ │ ├── testcube.ase
│ │ │ │ │ ├── testcube_no_ab_bc_ca_in_mesh_face.ase
│ │ │ │ │ ├── testcube_no_smoothing_in_mesh_face.ase
│ │ │ │ │ ├── testcube_uv_angle.ase
│ │ │ │ │ ├── testcube_uv_offset.ase
│ │ │ │ │ ├── testcube_uv_tiling.ase
│ │ │ │ │ ├── testcube_without_material_ref.ase
│ │ │ │ │ ├── testsphere.ase
│ │ │ │ │ ├── tiles.ase
│ │ │ │ │ ├── tiles_two_materials.ase
│ │ │ │ │ ├── tiles_with_shared_vertex.ase
│ │ │ │ │ └── tiles_with_shared_vertex_and_colour.ase
│ │ │ │ ├── cube_with_usemtl.obj
│ │ │ │ ├── md5/
│ │ │ │ │ ├── flag01.md5mesh
│ │ │ │ │ ├── test_v11.md5mesh
│ │ │ │ │ ├── test_v12.md5mesh
│ │ │ │ │ └── testflag.md5mesh
│ │ │ │ ├── missing_texture.ase
│ │ │ │ ├── moss_patch.ase
│ │ │ │ ├── torch.lwo
│ │ │ │ └── twosided_ivy.lwo
│ │ │ ├── particles/
│ │ │ │ ├── assets.lst
│ │ │ │ ├── hiddenparticles.prt
│ │ │ │ ├── testparticles.prt
│ │ │ │ └── z_precedence.prt
│ │ │ ├── prefabs/
│ │ │ │ └── large_bounds.pfbx
│ │ │ ├── skins/
│ │ │ │ ├── selection_test.skin
│ │ │ │ └── test_skins.skin
│ │ │ ├── sound/
│ │ │ │ ├── assets.lst
│ │ │ │ ├── hidden.sndshd
│ │ │ │ ├── parsing_test.sndshd
│ │ │ │ └── test/
│ │ │ │ └── jorge.ogg
│ │ │ ├── tdm_example_mtrs.pk4
│ │ │ ├── test_decls.pk4
│ │ │ ├── test_models.pk4
│ │ │ ├── test_particles.pk4
│ │ │ ├── testdecls/
│ │ │ │ ├── exporttest.decl
│ │ │ │ ├── numbers.decl
│ │ │ │ ├── precedence_test1.decl
│ │ │ │ ├── precedence_test2.decl
│ │ │ │ ├── removal_tests.decl
│ │ │ │ ├── syntax_parser_test1.decl
│ │ │ │ ├── syntax_parser_test2.decl
│ │ │ │ └── syntax_parser_test3.decl
│ │ │ └── textures/
│ │ │ ├── a_1024x512.tga
│ │ │ ├── dds/
│ │ │ │ ├── not_a_dds.dds
│ │ │ │ ├── test_10x16_uncomp.dds
│ │ │ │ ├── test_128x128_dxt1.dds
│ │ │ │ ├── test_16x16_bc5.dds
│ │ │ │ ├── test_16x16_uncomp.dds
│ │ │ │ ├── test_16x16_uncomp_mips.dds
│ │ │ │ ├── test_60x128_dxt5.dds
│ │ │ │ └── test_60x128_dxt5_mips.dds
│ │ │ └── numbers/
│ │ │ ├── 0.tga
│ │ │ ├── 1.tga
│ │ │ ├── 10.tga
│ │ │ ├── 11.tga
│ │ │ ├── 12.tga
│ │ │ ├── 13.tga
│ │ │ ├── 14.tga
│ │ │ ├── 15.tga
│ │ │ ├── 16.tga
│ │ │ ├── 17.tga
│ │ │ ├── 18.tga
│ │ │ ├── 19.tga
│ │ │ ├── 2.tga
│ │ │ ├── 20.tga
│ │ │ ├── 21.tga
│ │ │ ├── 22.tga
│ │ │ ├── 23.tga
│ │ │ ├── 24.tga
│ │ │ ├── 25.tga
│ │ │ ├── 26.tga
│ │ │ ├── 27.tga
│ │ │ ├── 28.tga
│ │ │ ├── 29.tga
│ │ │ ├── 3.tga
│ │ │ ├── 30.tga
│ │ │ ├── 31.tga
│ │ │ ├── 32.tga
│ │ │ ├── 4.tga
│ │ │ ├── 5.tga
│ │ │ ├── 6.tga
│ │ │ ├── 7.tga
│ │ │ ├── 8.tga
│ │ │ └── 9.tga
│ │ └── xml/
│ │ ├── broken_file.xml
│ │ ├── darkmod.game
│ │ ├── input.xml
│ │ └── testfile.xml
│ └── testutil/
│ ├── CommandFailureHelper.h
│ ├── FileSaveConfirmationHelper.h
│ ├── FileSelectionHelper.h
│ ├── MapOperationMonitor.h
│ ├── RenderUtils.h
│ ├── TemporaryFile.h
│ ├── TestBufferObjectProvider.h
│ ├── TestObjectRenderer.h
│ ├── TestSyncObjectProvider.h
│ └── ThreadUtils.h
└── tools/
├── DependencyCheck/
│ ├── DependencyCheck.vcxproj
│ └── DependencyCheck.vcxproj.filters
├── i18n/
│ ├── build_pot.py
│ └── darkradiant.pot
├── innosetup/
│ └── darkradiant.x64.iss
├── msvc/
│ ├── DarkRadiant.vcxproj
│ ├── DarkRadiant.vcxproj.filters
│ ├── DarkRadiantCore.vcxproj
│ ├── DarkRadiantCore.vcxproj.filters
│ ├── Tests/
│ │ ├── Tests.vcxproj
│ │ ├── Tests.vcxproj.filters
│ │ └── packages.config
│ ├── dm.conversation.vcxproj
│ ├── dm.conversation.vcxproj.filters
│ ├── dm.difficulty.vcxproj
│ ├── dm.difficulty.vcxproj.filters
│ ├── dm.editing.vcxproj
│ ├── dm.editing.vcxproj.filters
│ ├── dm.gameconnection.vcxproj
│ ├── dm.gameconnection.vcxproj.filters
│ ├── dm.gui.vcxproj
│ ├── dm.gui.vcxproj.filters
│ ├── dm.objectives.vcxproj
│ ├── dm.objectives.vcxproj.filters
│ ├── dm.stimresponse.vcxproj
│ ├── dm.stimresponse.vcxproj.filters
│ ├── include.vcxproj
│ ├── include.vcxproj.filters
│ ├── libs.vcxproj
│ ├── libs.vcxproj.filters
│ ├── mathlib.vcxproj
│ ├── mathlib.vcxproj.filters
│ ├── modulelib.vcxproj
│ ├── modulelib.vcxproj.filters
│ ├── natvis/
│ │ └── mathlib.natvis
│ ├── post_build_event_x64.cmd
│ ├── properties/
│ │ ├── DarkRadiant Base Debug Win32.props
│ │ ├── DarkRadiant Base Debug x64.props
│ │ ├── DarkRadiant Base Release Win32.props
│ │ ├── DarkRadiant Base Release x64.props
│ │ ├── DarkRadiant Base.props
│ │ ├── DarkRadiant Core Library.props
│ │ ├── DarkRadiant Main Executable.props
│ │ ├── DarkRadiant Module DLL.props
│ │ ├── DarkRadiant Plugin DLL.props
│ │ ├── DarkRadiant Static Library.props
│ │ ├── GLEW.props
│ │ ├── OpenAL + Vorbis.props
│ │ ├── Python.props
│ │ ├── Tests.props
│ │ ├── ftgl.props
│ │ ├── libgit2.props
│ │ ├── libjpeg.props
│ │ ├── libpng.props
│ │ ├── wxWidgets.props
│ │ └── zlib.props
│ ├── scenelib.vcxproj
│ ├── scenelib.vcxproj.filters
│ ├── script.vcxproj
│ ├── script.vcxproj.filters
│ ├── sound.vcxproj
│ ├── sound.vcxproj.filters
│ ├── vcs.vcxproj
│ ├── vcs.vcxproj.filters
│ ├── wxutillib.vcxproj
│ ├── wxutillib.vcxproj.filters
│ └── xmlutillib.vcxproj
├── scripts/
│ ├── compile_release_package.ps1
│ ├── compile_release_package.x64.cmd
│ ├── ddsinfo.py
│ └── download_windeps.ps1
└── xcode/
├── DarkRadiant App/
│ └── Info.plist
├── DarkRadiant.xcconfig
├── DarkRadiant.xcodeproj/
│ ├── project.pbxproj
│ ├── project.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
│ └── xcshareddata/
│ └── xcschemes/
│ ├── DarkRadiant.xcscheme
│ ├── DarkRadiantCore.xcscheme
│ └── module.xcscheme
├── DarkRadiantCore.xcconfig
├── base.xcconfig
├── darkradiant.icns
├── dm.difficulty.xcconfig
├── dm.editing.xcconfig
├── eigen3.xcconfig
├── ftgl.xcconfig
├── glew.xcconfig
├── jpeg.xcconfig
├── libxml2.xcconfig
├── package_bundle.sh
├── picomodel.xcconfig
├── png.xcconfig
├── python.xcconfig
├── script.xcconfig
├── sigc++.xcconfig
├── sound.xcconfig
├── wxutil.xcconfig
├── wxwidgets.xcconfig
└── zlib.xcconfig
Showing preview only (807K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (9187 symbols across 2154 files)
FILE: include/Bounded.h
function class (line 10) | class Bounded
type std (line 18) | typedef std::shared_ptr<Bounded> BoundedPtr;
FILE: include/GLProgramAttributes.h
function namespace (line 3) | namespace render
FILE: include/Rotatable.h
function class (line 6) | class Rotatable
FILE: include/Scalable.h
function class (line 6) | class Scalable
FILE: include/Translatable.h
function class (line 6) | class Translatable
FILE: include/VolumeIntersectionValue.h
type VolumeIntersectionValue (line 7) | enum VolumeIntersectionValue
FILE: include/editable.h
function class (line 7) | class Snappable
type std (line 13) | typedef std::shared_ptr<Snappable> SnappablePtr;
function SnappablePtr (line 15) | inline SnappablePtr Node_getSnappable(const scene::INodePtr& node)
function class (line 20) | class ComponentEditable {
type std (line 25) | typedef std::shared_ptr<ComponentEditable> ComponentEditablePtr;
function ComponentEditablePtr (line 27) | inline ComponentEditablePtr Node_getComponentEditable(const scene::INode...
function class (line 32) | class ComponentSnappable {
type std (line 37) | typedef std::shared_ptr<ComponentSnappable> ComponentSnappablePtr;
function ComponentSnappablePtr (line 39) | inline ComponentSnappablePtr Node_getComponentSnappable(const scene::INo...
FILE: include/i18n.h
function namespace (line 7) | namespace language
function language (line 47) | inline language::ILanguageManager& GlobalLanguageManager()
function std (line 61) | inline std::string _(const char* s)
FILE: include/iaasfile.h
function namespace (line 11) | namespace map
FILE: include/iarchive.h
function class (line 23) | class IArchiveFileInfoProvider
function class (line 42) | class ArchiveFile
FILE: include/iarray.h
type class (line 6) | enum class
function ArrayOffsetMethod (line 13) | enum class ArrayOffsetMethod
FILE: include/iautosaver.h
function namespace (line 5) | namespace map
function map (line 44) | inline map::IAutomaticMapSaver& GlobalAutoSaver()
FILE: include/ibrush.h
function virtual (line 25) | virtual const Vector3& getVertexColour() const = 0;
function PrefabType (line 43) | enum class PrefabType : int
type WindingVertex (line 67) | struct WindingVertex
type std (line 88) | typedef std::vector<WindingVertex> IWinding;
type ShiftScaleRotation (line 97) | struct ShiftScaleRotation
type BrushSplitType (line 217) | struct BrushSplitType
function virtual (line 244) | virtual std::size_t getNumFaces() const = 0;
type std (line 335) | typedef std::shared_ptr<IBrushNode> IBrushNodePtr;
function Node_isBrush (line 337) | inline bool Node_isBrush(const scene::INodePtr& node)
function Brush (line 344) | inline Brush* Node_getBrush(const scene::INodePtr& node)
function IBrush (line 354) | inline IBrush* Node_getIBrush(const scene::INodePtr& node)
function brush (line 365) | inline brush::BrushCreator& GlobalBrushCreator()
FILE: include/icameraview.h
type BasicVector3 (line 8) | typedef BasicVector3<double> Vector3;
function namespace (line 11) | namespace camera
FILE: include/iclipboard.h
function namespace (line 6) | namespace radiant
function radiant (line 37) | inline radiant::IClipboard& GlobalClipboard()
FILE: include/iclipper.h
type EBrushSplit (line 9) | enum EBrushSplit {
type PlaneClassification (line 15) | enum PlaneClassification {
function class (line 28) | class IClipper :
FILE: include/icommandsystem.h
function namespace (line 12) | namespace cmd
function tryVectorConversion (line 162) | void tryVectorConversion()
type std (line 189) | typedef std::vector<Argument> ArgumentList;
type std (line 198) | typedef std::function<void (const ArgumentList&)> Function;
type std (line 213) | typedef std::vector<std::size_t> Signature;
type AutoCompletionInfo (line 219) | struct AutoCompletionInfo
function class (line 243) | class ICommandSystem: public RegisterableModule
type std (line 363) | typedef std::shared_ptr<ICommandSystem> ICommandSystemPtr;
function cmd (line 370) | inline cmd::ICommandSystem& GlobalCommandSystem()
FILE: include/icomparablenode.h
function namespace (line 5) | namespace scene
FILE: include/icounter.h
function class (line 6) | class ICounter
type CounterType (line 23) | enum CounterType
function class (line 35) | class ICounterManager :
function ICounterManager (line 45) | inline ICounterManager& GlobalCounters()
FILE: include/icurve.h
function class (line 6) | class CurveNode
type std (line 38) | typedef std::shared_ptr<CurveNode> CurveNodePtr;
function CurveNodePtr (line 40) | inline CurveNodePtr Node_getCurve(const scene::INodePtr& node) {
FILE: include/idatastream.h
function class (line 27) | class StreamBase
function class (line 36) | class InputStream : public StreamBase
function class (line 45) | class OutputStream : public StreamBase
function class (line 53) | class SeekableStream
FILE: include/ideclmanager.h
function namespace (line 9) | namespace decl
FILE: include/idecltypes.h
function namespace (line 11) | namespace decl
FILE: include/ieclass.h
type std (line 21) | typedef std::shared_ptr<Shader> ShaderPtr;
function class (line 58) | class EntityClassVisitor
function class (line 74) | class IEntityClassManager :
function IEntityClassManager (line 131) | inline IEntityClassManager& GlobalEntityClassManager()
FILE: include/ieclasscolours.h
function namespace (line 9) | namespace eclass
function eclass (line 62) | inline eclass::IColourManager& GlobalEclassColourManager()
FILE: include/ieditstopwatch.h
function namespace (line 6) | namespace map
function map (line 49) | inline map::IMapEditStopwatch& GlobalMapEditStopwatch()
FILE: include/ientity.h
function class (line 12) | class KeyObserver: public sigc::trackable
function Node_isEntity (line 29) | inline bool Node_isEntity(const scene::INodePtr& node)
function virtual (line 42) | virtual bool empty() const = 0;
type std (line 79) | typedef std::shared_ptr<ITargetableObject> ITargetableObjectPtr;
function class (line 99) | class ITargetManager
type std (line 128) | typedef std::shared_ptr<ITargetManager> ITargetManagerPtr;
type class (line 130) | enum class
function virtual (line 159) | virtual bool getRenderEntityNames() const = 0;
FILE: include/ifavourites.h
function namespace (line 7) | namespace game
function game (line 53) | inline game::IFavouritesManager& GlobalFavouritesManager()
FILE: include/ifilesystem.h
function namespace (line 20) | namespace vfs
function Visibility (line 41) | enum class Visibility
function class (line 149) | class VirtualFileSystem :
FILE: include/ifiletypes.h
type FileTypePattern (line 11) | struct FileTypePattern
function namespace (line 81) | namespace filetype
function IFileTypeRegistry (line 94) | inline IFileTypeRegistry& GlobalFiletypes()
FILE: include/ifilter.h
function namespace (line 16) | namespace filters
function filters (line 191) | inline filters::IFilterSystem& GlobalFilterSystem()
FILE: include/ifonts.h
type std (line 9) | typedef std::shared_ptr<Material> MaterialPtr;
function namespace (line 14) | namespace q3font
function class (line 22) | class IGlyphInfo
type std (line 42) | typedef std::shared_ptr<IGlyphInfo> IGlyphInfoPtr;
type Resolution (line 45) | enum Resolution
function virtual (line 85) | virtual Resolution getResolution() const = 0;
FILE: include/ifx.h
function namespace (line 7) | namespace fx
FILE: include/igame.h
function namespace (line 19) | namespace game
FILE: include/igameresource.h
function namespace (line 5) | namespace game
FILE: include/igeometryrenderer.h
function namespace (line 10) | namespace render
FILE: include/igeometrystore.h
function namespace (line 8) | namespace render
FILE: include/igl.h
function namespace (line 9) | namespace gl
function gl (line 50) | inline gl::ISharedGLContextHolder& GlobalOpenGLContext()
type class (line 63) | enum class
function virtual (line 72) | virtual float getLineHeight() const = 0;
function OpenGLBinding (line 95) | inline OpenGLBinding& GlobalOpenGL()
FILE: include/iglprogram.h
function class (line 6) | class GLProgram
function class (line 20) | class ISupportsAlphaTest
FILE: include/igrid.h
type GridSize (line 11) | enum GridSize
function namespace (line 27) | namespace grid
FILE: include/igroupnode.h
function namespace (line 5) | namespace scene
function scene (line 34) | inline scene::GroupNodePtr Node_getGroupNode(const scene::INodePtr& node)
FILE: include/igui.h
function namespace (line 15) | namespace gui
FILE: include/iimage.h
type byte (line 6) | typedef unsigned char byte;
type std (line 9) | typedef std::shared_ptr<Texture> TexturePtr;
function class (line 15) | class BindableTexture
FILE: include/iinteractiveview.h
function class (line 11) | class IInteractiveView
FILE: include/ikeyvaluestore.h
function class (line 12) | class IKeyValueStore
FILE: include/ilayer.h
function namespace (line 9) | namespace scene
function scene (line 252) | inline scene::ILayerModule& GlobalLayerModule()
FILE: include/ilightnode.h
function class (line 13) | class ILightNode
FILE: include/ilogwriter.h
function namespace (line 6) | namespace applog
FILE: include/imanipulator.h
type BasicVector2 (line 9) | typedef BasicVector2<double> Vector2;
type std (line 17) | typedef std::shared_ptr<RenderSystem> RenderSystemPtr;
function namespace (line 19) | namespace selection
FILE: include/imap.h
type std (line 23) | typedef std::shared_ptr<INamespace> INamespacePtr;
function namespace (line 37) | namespace selection
function namespace (line 43) | namespace scene
type std (line 98) | typedef std::shared_ptr<IMapRootNode> IMapRootNodePtr;
function class (line 106) | class IMap :
FILE: include/imapexporter.h
function namespace (line 7) | namespace map
FILE: include/imapfilechangetracker.h
function class (line 14) | class IMapFileChangeTracker
FILE: include/imapformat.h
function namespace (line 6) | namespace scene
function namespace (line 15) | namespace parser { class DefTokeniser; }
type std (line 18) | typedef std::shared_ptr<IPatchNode> IPatchNodePtr;
type std (line 20) | typedef std::shared_ptr<IBrushNode> IBrushNodePtr;
type std (line 25) | typedef std::function<void(const scene::INodePtr& root, scene::NodeVisit...
function namespace (line 27) | namespace map
FILE: include/imapinfofile.h
function namespace (line 9) | namespace parser { class DefTokeniser; }
function namespace (line 10) | namespace scene { class INode; typedef std::shared_ptr<INode> INodePtr; }
function namespace (line 12) | namespace map
function map (line 160) | inline map::IMapInfoFileManager& GlobalMapInfoFileManager()
FILE: include/imapmerge.h
type class (line 14) | enum class
type class (line 27) | enum class
type class (line 48) | enum class
function virtual (line 67) | virtual ActionType getType() const = 0;
FILE: include/imapresource.h
function namespace (line 10) | namespace map
function class (line 16) | class IMapResource
type std (line 96) | typedef std::shared_ptr<IMapResource> IMapResourcePtr;
function class (line 100) | class IMapResourceManager :
function IMapResourceManager (line 128) | inline IMapResourceManager& GlobalMapResourceManager()
FILE: include/imd5anim.h
function namespace (line 9) | namespace md5
FILE: include/imd5model.h
function namespace (line 6) | namespace md5
FILE: include/imessagebus.h
function namespace (line 6) | namespace radiant
FILE: include/imodel.h
type std (line 21) | typedef std::vector<std::string> StringList;
function virtual (line 105) | virtual const IModel& getIModel() const = 0;
function Node_isModel (line 228) | inline bool Node_isModel(const scene::INodePtr& node)
function model (line 233) | inline model::ModelNodePtr Node_getModel(const scene::INodePtr& node)
function model (line 243) | inline model::IModelFormatManager& GlobalModelFormatManager()
FILE: include/imodelcache.h
function namespace (line 8) | namespace model
function model (line 63) | inline model::IModelCache& GlobalModelCache()
FILE: include/imodelsurface.h
function namespace (line 8) | namespace model
FILE: include/imodule.h
type std (line 37) | typedef std::function<void (const std::string&, const std::string&)> Err...
function ErrorHandlingFunction (line 41) | inline ErrorHandlingFunction& GlobalErrorHandler()
function class (line 53) | class IApplicationContext
type std (line 203) | typedef std::shared_ptr<RegisterableModule> RegisterableModulePtr;
function class (line 215) | class IModuleRegistry
function namespace (line 323) | namespace module
function initialiseStreams (line 446) | inline void initialiseStreams(applog::ILogWriter& logWriter)
function shutdownStreams (line 465) | inline void shutdownStreams()
function performDefaultInitialisation (line 477) | inline void performDefaultInitialisation(IModuleRegistry& registry)
FILE: include/imousetool.h
function namespace (line 12) | namespace ui
FILE: include/imousetoolevent.h
function namespace (line 7) | namespace ui
FILE: include/imousetoolmanager.h
function namespace (line 9) | namespace ui
FILE: include/imru.h
function namespace (line 6) | namespace map
FILE: include/inameobserver.h
function class (line 13) | class NameObserver
type std (line 23) | typedef std::shared_ptr<NameObserver> NameObserverPtr;
FILE: include/inamespace.h
function class (line 19) | class INamespace
type std (line 107) | typedef std::shared_ptr<INamespace> INamespacePtr;
function class (line 122) | class Namespaced
FILE: include/inode.h
type std (line 15) | typedef std::shared_ptr<IRenderEntity> IRenderEntityPtr;
function namespace (line 17) | namespace scene
FILE: include/iobjectrenderer.h
function namespace (line 8) | namespace render
FILE: include/iorthoview.h
type class (line 13) | enum class
type class (line 47) | enum class
function virtual (line 54) | virtual const Vector3& getOrigin() const = 0;
FILE: include/iparticlenode.h
function namespace (line 6) | namespace particles
FILE: include/iparticles.h
type BasicVector3 (line 13) | typedef BasicVector3<double> Vector3;
function namespace (line 16) | namespace scene
function namespace (line 23) | namespace particles
FILE: include/iparticlestage.h
type BasicVector3 (line 7) | typedef BasicVector3<double> Vector3;
type BasicVector4 (line 9) | typedef BasicVector4<double> Vector4;
function namespace (line 11) | namespace particles
FILE: include/ipatch.h
type PatchControl (line 25) | struct PatchControl
type PatchMesh (line 36) | struct PatchMesh
type PatchRenderIndices (line 45) | struct PatchRenderIndices
type Subdivisions (line 56) | typedef BasicVector2<unsigned int> Subdivisions;
function virtual (line 88) | virtual ~IPatch() {}
function virtual (line 94) | virtual std::size_t getWidth() const = 0;
type class (line 239) | enum class
type class (line 249) | enum class
function class (line 256) | class IPatchSettings
function PatchDefType (line 267) | enum class PatchDefType
function class (line 291) | class IPatchNode
type std (line 304) | typedef std::shared_ptr<IPatchNode> IPatchNodePtr;
function Node_isPatch (line 306) | inline bool Node_isPatch(const scene::INodePtr& node)
function IPatch (line 312) | inline IPatch* Node_getIPatch(const scene::INodePtr& node)
function Patch (line 325) | inline Patch* Node_getPatch(const scene::INodePtr& node)
function patch (line 339) | inline patch::IPatchModule& GlobalPatchModule()
FILE: include/ipath.h
function namespace (line 7) | namespace scene {
FILE: include/ipreferencesystem.h
type std (line 8) | typedef std::list<std::string> ComboBoxValueList;
function virtual (line 17) | virtual ~IPreferenceItemBase() {}
function virtual (line 18) | virtual const std::string& getLabel() const = 0;
function class (line 29) | class IPreferenceEntry: public virtual IPreferenceItemBase
function class (line 35) | class IPreferenceCheckbox: public virtual IPreferenceItemBase
function virtual (line 46) | virtual const ComboBoxValueList& getValues() const = 0;
function class (line 58) | class IPreferenceSpinner: public virtual IPreferenceItemBase
function class (line 68) | class IPreferenceSlider: public virtual IPreferenceItemBase
function virtual (line 101) | virtual const std::string& getName() const = 0;
function class (line 169) | class IPreferenceSystem: public RegisterableModule
function IPreferenceSystem (line 192) | inline IPreferenceSystem& GlobalPreferenceSystem()
FILE: include/iradiant.h
function namespace (line 10) | namespace applog { class ILogWriter; }
function namespace (line 11) | namespace language { class ILanguageManager; }
function namespace (line 13) | namespace radiant
function radiant (line 77) | inline radiant::IRadiant& GlobalRadiantCore()
FILE: include/iregion.h
function namespace (line 6) | namespace map
function map (line 27) | inline map::IRegionManager& GlobalRegionManager()
FILE: include/iregistry.h
function class (line 21) | class Registry: public RegisterableModule
FILE: include/irender.h
type RenderStateFlags (line 112) | typedef unsigned RenderStateFlags;
type BasicVector3 (line 118) | typedef BasicVector3<double> Vector3;
type std (line 121) | typedef std::shared_ptr<Shader> ShaderPtr;
type RenderableGeometry (line 123) | struct RenderableGeometry
function virtual (line 217) | virtual const IRenderEntity& getLightEntity() const = 0;
type std (line 279) | typedef std::function<void(Renderable&)> RenderableCallback;
type std (line 281) | typedef std::function<void(const RendererLight&)> RendererLightCallback;
function class (line 292) | class OpenGLRenderable
type std (line 310) | typedef std::shared_ptr<Material> MaterialPtr;
function virtual (line 335) | virtual ~Shader() {}
function virtual (line 364) | virtual bool isVisible() const = 0;
function class (line 412) | class ITextRenderer
type class (line 433) | enum class
type class (line 439) | enum class
type class (line 508) | enum class
function class (line 529) | class IRenderResult
type ShaderProgram (line 662) | enum ShaderProgram
FILE: include/irenderable.h
type std (line 7) | typedef std::shared_ptr<Shader> ShaderPtr;
type std (line 10) | typedef std::shared_ptr<RenderSystem> RenderSystemPtr;
function class (line 29) | class IRenderableCollector
FILE: include/irenderableobject.h
function namespace (line 9) | namespace render
FILE: include/irendersystemfactory.h
type std (line 7) | typedef std::shared_ptr<RenderSystem> RenderSystemPtr;
function namespace (line 9) | namespace render
function render (line 34) | inline render::IRenderSystemFactory& GlobalRenderSystemFactory()
FILE: include/irenderview.h
function namespace (line 9) | namespace render
FILE: include/iscatter.h
type class (line 6) | enum class
type class (line 12) | enum class
function ScatterFaceDirection (line 18) | enum class ScatterFaceDirection
FILE: include/iscenegraph.h
function namespace (line 23) | namespace scene
function scene (line 135) | inline scene::Graph& GlobalSceneGraph()
function SceneChangeNotify (line 141) | inline void SceneChangeNotify()
FILE: include/iscenegraphfactory.h
function namespace (line 5) | namespace scene
function scene (line 32) | inline scene::ISceneGraphFactory& GlobalSceneGraphFactory()
FILE: include/iscript.h
function namespace (line 6) | namespace script
FILE: include/iscriptinterface.h
function namespace (line 9) | namespace script
FILE: include/iselectable.h
function class (line 10) | class ISelectable
type std (line 21) | typedef std::shared_ptr<ISelectable> ISelectablePtr;
function namespace (line 23) | namespace scene
function Node_setSelected (line 29) | inline void Node_setSelected(const scene::INodePtr& node, bool selected)
function Node_isSelected (line 39) | inline bool Node_isSelected(const scene::INodePtr& node)
FILE: include/iselection.h
function namespace (line 14) | namespace scene
type BasicVector2 (line 21) | typedef BasicVector2<double> Vector2;
type BasicVector3 (line 23) | typedef BasicVector3<double> Vector3;
type BasicVector4 (line 25) | typedef BasicVector4<double> Vector4;
type sigc (line 29) | typedef sigc::signal<void, const
type std (line 30) | typedef std::function<void(const ISelectable&)> SelectionChangedSlot;
type WorkZone (line 40) | struct WorkZone
type class (line 44) | enum class
function SelectionMode (line 53) | enum class SelectionMode
function class (line 66) | class SelectionSystem :
FILE: include/iselectiongroup.h
function virtual (line 15) | virtual ~IGroupSelectable() {}
function class (line 44) | class ISelectionGroup
function selection (line 128) | inline selection::ISelectionGroupModule& GlobalSelectionGroupModule()
FILE: include/iselectionset.h
function namespace (line 9) | namespace selection
function selection (line 114) | inline selection::ISelectionSetModule& GlobalSelectionSetModule()
FILE: include/iselectiontest.h
function class (line 11) | class SelectionIntersection
function equalEpsilon (line 42) | bool equalEpsilon(const SelectionIntersection& other, float distanceEpsi...
function isCloserThan (line 59) | bool isCloserThan(const SelectionIntersection& other) const
function assignIfCloser (line 65) | void assignIfCloser(const SelectionIntersection& other)
function class (line 80) | class VertexPointer
function iterator (line 107) | iterator operator+=(std::size_t i)
function vector_reference (line 140) | vector_reference operator[](std::size_t i) const
type index_type (line 157) | typedef const index_type* pointer;
function class (line 159) | class iterator
function iterator (line 177) | iterator operator+=(std::size_t i)
function virtual (line 228) | virtual const VolumeTest& getVolume() const = 0;
function class (line 298) | class SelectionTestable
type std (line 304) | typedef std::shared_ptr<SelectionTestable> SelectionTestablePtr;
function SelectionTestablePtr (line 306) | inline SelectionTestablePtr Node_getSelectionTestable(const scene::INode...
function virtual (line 313) | virtual bool isSelectedComponents() const = 0;
type std (line 341) | typedef std::shared_ptr<PlaneSelectable> PlaneSelectablePtr;
function PlaneSelectablePtr (line 343) | inline PlaneSelectablePtr Node_getPlaneSelectable(const scene::INodePtr&...
function class (line 358) | class ISceneSelectionTester
FILE: include/ishaderclipboard.h
type class (line 9) | enum class
type class (line 34) | enum class
FILE: include/ishaderexpression.h
type std (line 13) | typedef std::vector<float> Registers;
type ReservedRegisters (line 16) | enum ReservedRegisters
function virtual (line 78) | virtual bool isLinked() const = 0;
FILE: include/ishaderlayer.h
type ClampType (line 18) | enum ClampType
type Type (line 62) | enum Type
type Flags (line 71) | enum Flags
type TexGenType (line 87) | enum TexGenType
type ParseFlags (line 96) | enum ParseFlags
type Expression (line 104) | struct Expression
type class (line 128) | enum class
type Transformation (line 138) | struct Transformation
function virtual (line 149) | virtual ~IShaderLayer() {}
type ColourComponentSelector (line 218) | enum ColourComponentSelector
type VertexColourMode (line 235) | enum VertexColourMode
type class (line 248) | enum class
type CubeMapMode (line 266) | enum CubeMapMode
FILE: include/ishaders.h
function namespace (line 20) | namespace shaders {
type CullType (line 39) | enum CullType
type Flags (line 47) | enum Flags
type ParseFlags (line 67) | enum ParseFlags
type SurfaceFlags (line 80) | enum SurfaceFlags
type SurfaceType (line 113) | enum SurfaceType
type SortRequest (line 141) | enum SortRequest
type DeformType (line 159) | enum DeformType
type DecalInfo (line 173) | struct DecalInfo
type std (line 497) | typedef std::shared_ptr<Material> MaterialPtr;
type std (line 518) | typedef std::function<void(const std::string&)> ShaderNameCallback;
function virtual (line 527) | virtual ~ITableDefinition() {}
function virtual (line 584) | virtual sigc::signal<void> signal_activeShadersChanged() const = 0;
FILE: include/isound.h
type std (line 11) | typedef std::vector<std::string> SoundFileList;
function class (line 17) | class SoundRadii {
function class (line 82) | class ISoundManager :
function ISoundManager (line 123) | inline ISoundManager& GlobalSoundManager()
FILE: include/ispacepartition.h
type std (line 16) | typedef std::shared_ptr<INode> INodePtr;
type std (line 19) | typedef std::shared_ptr<ISPNode> ISPNodePtr;
type std (line 20) | typedef std::weak_ptr<ISPNode> ISPNodeWeakPtr;
function class (line 38) | class ISPNode
FILE: include/ispeakernode.h
function class (line 11) | class ISpeakerNode
function std (line 23) | inline std::shared_ptr<ISpeakerNode> Node_getSpeakerNode(const scene::IN...
FILE: include/isurfacerenderer.h
function namespace (line 12) | namespace render
FILE: include/itexdef.h
function namespace (line 3) | namespace brush
FILE: include/itextstream.h
function class (line 17) | class TextInputStream
function class (line 60) | class OutputStreamHolder
function OutputStreamHolder (line 147) | inline OutputStreamHolder& GlobalOutputStream()
function OutputStreamHolder (line 153) | inline OutputStreamHolder& GlobalErrorStream()
function OutputStreamHolder (line 159) | inline OutputStreamHolder& GlobalWarningStream()
function OutputStreamHolder (line 165) | inline OutputStreamHolder& GlobalDebugStream()
function TemporaryThreadsafeStream (line 174) | inline TemporaryThreadsafeStream rMessage()
function TemporaryThreadsafeStream (line 182) | inline TemporaryThreadsafeStream rError()
function TemporaryThreadsafeStream (line 190) | inline TemporaryThreadsafeStream rWarning()
function TemporaryThreadsafeStream (line 205) | inline TemporaryThreadsafeStream rDebug()
function TemporaryThreadsafeStream (line 223) | inline TemporaryThreadsafeStream rConsole()
function TemporaryThreadsafeStream (line 239) | inline TemporaryThreadsafeStream rConsoleError()
FILE: include/itexturetoolcolours.h
type class (line 9) | enum class
type class (line 15) | enum class
FILE: include/itexturetoolmodel.h
function namespace (line 17) | namespace textool
function class (line 159) | class ITextureToolSceneGraph :
function class (line 175) | class ITextureToolSelectionSystem :
FILE: include/itraceable.h
type BasicVector3 (line 4) | typedef BasicVector3<double> Vector3;
function class (line 14) | class ITraceable
type std (line 25) | typedef std::shared_ptr<ITraceable> ITraceablePtr;
FILE: include/itransformable.h
type TransformModifierType (line 5) | enum TransformModifierType
type BasicVector3 (line 13) | typedef BasicVector3<double> Vector3;
type BasicVector4 (line 15) | typedef BasicVector4<double> Vector4;
function class (line 30) | class ITransformable
type std (line 51) | typedef std::shared_ptr<ITransformable> ITransformablePtr;
FILE: include/itransformnode.h
function class (line 8) | class ITransformNode
type std (line 16) | typedef std::shared_ptr<ITransformNode> ITransformNodePtr;
function class (line 19) | class IMatrixTransform: public ITransformNode
FILE: include/iundo.h
function class (line 17) | class IUndoMemento
type std (line 22) | typedef std::shared_ptr<IUndoMemento> IUndoMementoPtr;
function class (line 33) | class IUndoable
function class (line 54) | class IUndoStateSaver
function class (line 66) | class IUndoSystem
FILE: include/iversioncontrol.h
function namespace (line 6) | namespace vcs
function vcs (line 60) | inline vcs::IVersionControlManager& GlobalVersionControlManager()
FILE: include/ivolumetest.h
type BasicVector3 (line 28) | typedef BasicVector3<double> Vector3;
function class (line 34) | class VolumeTest
FILE: include/iwindingrenderer.h
function namespace (line 10) | namespace render
FILE: include/modelskin.h
function namespace (line 12) | namespace decl
function class (line 73) | class SkinnedModel
function namespace (line 97) | namespace decl
function decl (line 161) | inline decl::IModelSkinCache& GlobalModelSkinCache()
FILE: include/ui/ianimationchooser.h
function namespace (line 5) | namespace ui
FILE: include/ui/ideclpreview.h
function namespace (line 7) | namespace ui
FILE: include/ui/idialogmanager.h
function namespace (line 8) | namespace ui
function ui (line 170) | inline ui::IDialogManager& GlobalDialogManager()
FILE: include/ui/ientityinspector.h
function namespace (line 10) | namespace ui
FILE: include/ui/ieventmanager.h
function namespace (line 22) | namespace ui
function virtual (line 41) | virtual ~IAccelerator() {}
function virtual (line 92) | virtual bool isToggle() const = 0;
type std (line 113) | typedef std::function<void(bool)> ToggleCallback;
function class (line 125) | class IEventManager :
function IEventManager (line 210) | inline IEventManager& GlobalEventManager()
FILE: include/ui/ifilechooser.h
function namespace (line 8) | namespace ui
FILE: include/ui/imainframe.h
function class (line 16) | class IScopedScreenUpdateBlocker
type std (line 31) | typedef std::shared_ptr<IScopedScreenUpdateBlocker> IScopedScreenUpdateB...
function class (line 36) | class IMainFrame :
function IMainFrame (line 171) | inline IMainFrame& GlobalMainFrame()
FILE: include/ui/imenu.h
function namespace (line 10) | namespace ui
FILE: include/ui/imenumanager.h
function ItemType (line 16) | enum class ItemType
function ui (line 114) | inline ui::menu::IMenuManager& GlobalMenuManager()
FILE: include/ui/iorthocontextmenu.h
function namespace (line 6) | namespace ui
function ui (line 44) | inline ui::IOrthoContextMenu& GlobalOrthoContextMenu()
FILE: include/ui/iresourcechooser.h
function namespace (line 8) | namespace ui
FILE: include/ui/istatusbarmanager.h
function namespace (line 7) | namespace ui
function ui (line 91) | inline ui::statusbar::IStatusBarManager& GlobalStatusBarManager()
FILE: include/ui/itoolbarmanager.h
function namespace (line 7) | namespace ui
function ui (line 55) | inline ui::IToolbarManager& GlobalToolBarManager()
FILE: include/ui/iusercontrol.h
function namespace (line 8) | namespace ui
FILE: include/ui/iuserinterface.h
function namespace (line 6) | namespace ui
function ui (line 64) | inline ui::IUserInterfaceModule& GlobalUserInterface()
FILE: include/ui/iwindowstate.h
function namespace (line 5) | namespace ui
FILE: include/ui/iwxgl.h
function namespace (line 5) | namespace wxutil { class GLWidget; }
function namespace (line 7) | namespace ui
function ui (line 29) | inline ui::IWxGLWidgetManager& GlobalWxGlWidgetManager()
FILE: include/version.h
function std (line 35) | inline std::string RADIANT_APPNAME_FULL()
FILE: install/scripts/brushtest.py
class BrushManipulator (line 4) | class BrushManipulator(SceneNodeVisitor) :
method pre (line 5) | def pre(self, node):
FILE: install/scripts/commands/ase_export.py
function execute (line 26) | def execute():
FILE: install/scripts/commands/ase_export_blend.py
function execute (line 26) | def execute():
FILE: install/scripts/commands/check_for_invalid_visportals.py
function execute (line 12) | def execute():
FILE: install/scripts/commands/count_loot.py
function execute (line 4) | def execute():
FILE: install/scripts/commands/example.py
function execute (line 6) | def execute():
FILE: install/scripts/commands/export_obj.py
function execute (line 24) | def execute():
FILE: install/scripts/commands/find_duplicate_entities.py
class EntityCache (line 7) | class EntityCache(dr.SceneNodeVisitor):
method pre (line 9) | def pre(self, node):
FILE: install/scripts/commands/patchsplitter.py
function execute (line 4) | def execute():
FILE: install/scripts/commands/select_all_models_of_type.py
function execute (line 7) | def execute():
FILE: install/scripts/commands/shift_textures_randomly.py
function execute (line 8) | def execute():
FILE: install/scripts/commands/shift_textures_upwards_randomly.py
function execute (line 8) | def execute():
FILE: install/scripts/commands/test_targets.py
function execute (line 14) | def execute():
FILE: install/scripts/patchtest.py
class PatchManipulator (line 2) | class PatchManipulator(SceneNodeVisitor) :
method pre (line 3) | def pre(self, node):
FILE: install/scripts/test.py
class TestDeclarationVisitor (line 17) | class TestDeclarationVisitor(dr.DeclarationVisitor) :
method visit (line 18) | def visit(self, decl):
class SceneWalker (line 127) | class SceneWalker(dr.SceneNodeVisitor) :
method pre (line 128) | def pre(self, node):
class Walker (line 145) | class Walker(dr.SelectionVisitor) :
method visit (line 146) | def visit(self, node):
class FaceVisitor (line 178) | class FaceVisitor(dr.SelectedFaceVisitor) :
method visitFace (line 179) | def visitFace(self, face):
class TestEntityVisitor (line 215) | class TestEntityVisitor(dr.EntityVisitor) :
method visit (line 216) | def visit(self, key, value):
class TestFileVisitor (line 249) | class TestFileVisitor(dr.FileVisitor) :
method visit (line 250) | def visit(self, filename):
class TestMaterialVisitor (line 263) | class TestMaterialVisitor(dr.MaterialVisitor) :
method visit (line 264) | def visit(self, shader):
class ModelFinder (line 278) | class ModelFinder(dr.SceneNodeVisitor) :
method pre (line 279) | def pre(self, node):
class PatchManipulator (line 330) | class PatchManipulator(dr.SceneNodeVisitor) :
method pre (line 331) | def pre(self, node):
class SelectionSetWalker (line 357) | class SelectionSetWalker(dr.SelectionSetVisitor) :
method visit (line 358) | def visit(self, selectionset):
class GroupAdder (line 400) | class GroupAdder(dr.SelectionVisitor) :
method visit (line 401) | def visit(self, node):
class SelectionGroupWalker (line 413) | class SelectionGroupWalker(dr.SelectionGroupVisitor) :
method visit (line 414) | def visit(self, node):
function printLayers (line 425) | def printLayers():
FILE: libs/BasicTexture2D.h
function class (line 9) | class BasicTexture2D
function setGLTexNum (line 40) | void setGLTexNum(GLuint texnum)
function setWidth (line 49) | void setWidth(std::size_t width)
function setHeight (line 58) | void setHeight(std::size_t height)
type std (line 83) | typedef std::shared_ptr<BasicTexture2D> BasicTexture2DPtr;
FILE: libs/BasicUndoMemento.h
function namespace (line 5) | namespace undo
FILE: libs/DirectoryArchiveFile.h
function namespace (line 6) | namespace archive
FILE: libs/EventRateLimiter.h
function class (line 20) | class EventRateLimiter
FILE: libs/GameConfigUtil.h
function namespace (line 9) | namespace game
FILE: libs/KeyValueStore.h
function class (line 11) | class KeyValueStore :
FILE: libs/ModelExportOptions.h
function namespace (line 7) | namespace model
FILE: libs/ObservedSelectable.h
function namespace (line 6) | namespace selection
FILE: libs/ObservedUndoable.h
function namespace (line 7) | namespace undo
FILE: libs/RGBAImage.h
function namespace (line 10) | namespace image
function TexturePtr (line 57) | TexturePtr bindTexture(const std::string& name, Role role) const override
type std (line 99) | typedef std::shared_ptr<RGBAImage> RGBAImagePtr;
FILE: libs/RandomOrigin.h
function class (line 12) | class RandomOrigin
FILE: libs/Rectangle.h
function namespace (line 6) | namespace selection
FILE: libs/SequentialTaskQueue.h
function namespace (line 8) | namespace util
FILE: libs/SurfaceShader.h
function virtual (line 50) | virtual ~SurfaceShader()
function setInUse (line 59) | void setInUse(bool isUsed)
function setMaterialName (line 89) | void setMaterialName(const std::string& name)
function setRenderSystem (line 136) | void setRenderSystem(const RenderSystemPtr& renderSystem)
function setRealisedCallback (line 144) | void setRealisedCallback(const std::function<void()>& callback)
function setUnrealisedCallback (line 150) | void setUnrealisedCallback(const std::function<void()>& callback)
function realise (line 156) | void realise()
function unrealise (line 168) | void unrealise()
function releaseShader (line 207) | void releaseShader()
function onShaderRealised (line 223) | void onShaderRealised() override
function onShaderUnrealised (line 228) | void onShaderUnrealised() override
FILE: libs/Transformable.h
function class (line 14) | class Transformable :
FILE: libs/UndoFileChangeTracker.h
function class (line 8) | class UndoFileChangeTracker :
FILE: libs/VcsMapResourceStream.h
function namespace (line 5) | namespace stream
FILE: libs/VersionControlLib.h
function namespace (line 7) | namespace vcs
FILE: libs/character.h
function char_is_ascii (line 29) | inline bool char_is_ascii(char c)
function string_is_ascii (line 35) | inline bool string_is_ascii(const char* string)
FILE: libs/command/ExecutionFailure.h
function namespace (line 5) | namespace cmd
FILE: libs/command/ExecutionNotPossible.h
function namespace (line 7) | namespace cmd
FILE: libs/debugging/ScenegraphUtils.h
function std (line 10) | inline std::string getNameForNodeType(scene::INode::Type type)
function std (line 27) | inline std::string getNodeInfo(const scene::INodePtr& node)
function std (line 47) | inline std::string getPathInfo(const scene::Path& path) {
function dumpSceneGraph (line 81) | inline void dumpSceneGraph() {
FILE: libs/debugging/ScopedDebugTimer.h
type timeval (line 13) | struct timeval
function gettimeofday (line 24) | inline int gettimeofday(struct timeval* tv, void*)
function class (line 65) | class ScopedDebugTimer
FILE: libs/debugging/debugging.cpp
function TEST_ASSERT (line 24) | void TEST_ASSERT()
FILE: libs/debugging/gl.h
function namespace (line 6) | namespace debug
FILE: libs/debugging/render.h
function namespace (line 7) | namespace debug
function class (line 51) | class ColorMaskInserter { }
function class (line 69) | class DepthMaskInserter { }
function Colour4 (line 82) | inline Colour4 getGLColor()
function getGLInt (line 90) | inline int getGLInt(GLenum name)
function getGLBool (line 98) | inline bool getGLBool(GLenum name)
FILE: libs/decl/DeclLib.h
function namespace (line 8) | namespace decl
FILE: libs/decl/DeclarationBase.h
function namespace (line 6) | namespace decl
FILE: libs/decl/DeclarationCreator.h
function namespace (line 5) | namespace decl
FILE: libs/decl/EditableDeclaration.h
function namespace (line 5) | namespace decl
FILE: libs/dragplanes.h
function namespace (line 8) | namespace selection
FILE: libs/eclass.h
function namespace (line 14) | namespace eclass
function std (line 112) | inline std::string getUsage(const scene::EntityClass::Ptr& entityClass)
FILE: libs/entitylib.h
function aabb_testselect (line 19) | inline void aabb_testselect(const AABB& aabb, SelectionTest& test, Selec...
function Node_isWorldspawn (line 49) | inline bool Node_isWorldspawn(const scene::INodePtr& node)
function scene (line 67) | inline scene::INodePtr changeEntityClassname(const scene::INodePtr& node,
function pre (line 141) | bool pre(const scene::INodePtr& node) override
function namespace (line 170) | namespace scene
FILE: libs/gamelib.h
function namespace (line 9) | namespace game
FILE: libs/generic/callback.h
type std (line 7) | typedef std::function<void()> Callback;
FILE: libs/libfmt/fmt/args.h
function FMT_BEGIN_NAMESPACE (line 17) | FMT_BEGIN_NAMESPACE
function data (line 121) | auto data() const -> const basic_format_arg<Context>* {
function pop_one (line 136) | auto pop_one = [](std::vector<basic_format_arg<Context>>* data) {
function clear (line 213) | void clear() {
function reserve (line 225) | void reserve(size_t new_cap, size_t new_cap_named) {
FILE: libs/libfmt/fmt/chrono.h
function namespace (line 69) | namespace safe_duration_cast {
type Factor (line 200) | struct Factor
type Factor (line 264) | struct Factor
function min1 (line 294) | constexpr auto min1 = std::numeric_limits<IntermediateRep>::lowest() /
function namespace (line 325) | namespace detail {
function FMT_BEGIN_EXPORT (line 482) | FMT_BEGIN_EXPORT
function tm (line 527) | auto localtime(std::chrono::local_time<Duration> time) -> std::tm {
function tm (line 538) | inline auto gmtime(std::time_t time) -> std::tm {
function namespace (line 580) | namespace detail {
function noexcept (line 1218) | auto split_year_lower(long long year) const noexcept -> int {
function noexcept (line 1225) | auto iso_year_weeks(long long curr_year) const noexcept -> int {
function write1 (line 1254) | void write1(int value) {
function write2 (line 1257) | void write2(int value) {
function write2 (line 1262) | void write2(int value, pad_type pad) {
function write_year_extended (line 1274) | void write_year_extended(long long year) {
function write_year (line 1287) | void write_year(long long year) {
function write_utc_offset (line 1296) | void write_utc_offset(long offset, numeric_system ns) {
function on_full_weekday (line 1376) | void on_full_weekday() {
function on_dec0_weekday (line 1382) | void on_dec0_weekday(numeric_system ns) {
function on_dec1_weekday (line 1386) | void on_dec1_weekday(numeric_system ns) {
function on_abbr_month (line 1395) | void on_abbr_month() {
function on_full_month (line 1401) | void on_full_month() {
function on_datetime (line 1408) | void on_datetime(numeric_system ns) {
function on_loc_date (line 1423) | void on_loc_date(numeric_system ns) {
function on_loc_time (line 1429) | void on_loc_time(numeric_system ns) {
function on_us_date (line 1435) | void on_us_date() {
function on_iso_date (line 1442) | void on_iso_date() {
function on_utc_offset (line 1459) | void on_utc_offset(numeric_system ns) { format_utc_offset_impl(tm_, ns); }
function on_tz_name (line 1460) | void on_tz_name() { format_tz_name_impl(tm_); }
function on_year (line 1462) | void on_year(numeric_system ns) {
function on_short_year (line 1467) | void on_short_year(numeric_system ns) {
function on_offset_year (line 1472) | void on_offset_year() {
function on_century (line 1477) | void on_century(numeric_system ns) {
function on_dec_month (line 1495) | void on_dec_month(numeric_system ns) {
function on_dec0_week_of_year (line 1501) | void on_dec0_week_of_year(numeric_system ns) {
function on_dec1_week_of_year (line 1506) | void on_dec1_week_of_year(numeric_system ns) {
function on_iso_week_of_year (line 1516) | void on_iso_week_of_year(numeric_system ns) {
function on_iso_week_based_year (line 1522) | void on_iso_week_based_year() { write_year(tm_iso_week_year()); }
function on_iso_week_based_short_year (line 1523) | void on_iso_week_based_short_year() {
function on_day_of_year (line 1527) | void on_day_of_year() {
function on_day_of_month (line 1532) | void on_day_of_month(numeric_system ns) {
function on_day_of_month_space (line 1536) | void on_day_of_month_space(numeric_system ns) {
function on_24_hour (line 1547) | void on_24_hour(numeric_system ns, pad_type pad) {
function on_12_hour (line 1552) | void on_12_hour(numeric_system ns, pad_type pad) {
function on_minute (line 1557) | void on_minute(numeric_system ns, pad_type pad) {
function on_second (line 1563) | void on_second(numeric_system ns, pad_type pad) {
function on_12_hour_time (line 1584) | void on_12_hour_time() {
function on_24_hour_time (line 1596) | void on_24_hour_time() {
function on_iso_time (line 1601) | void on_iso_time() {
function on_am_pm (line 1607) | void on_am_pm() {
function on_duration_value (line 1617) | void on_duration_value() {}
function on_duration_unit (line 1618) | void on_duration_unit() {}
function chrono_format_checker (line 1621) | struct chrono_format_checker : null_chrono_spec_handler<chrono_format_ch...
function FMT_CONSTEXPR (line 1642) | FMT_CONSTEXPR void on_duration_unit() {}
function write_sign (line 1836) | void write_sign() {
function write_nan (line 1855) | void write_nan() { std::copy_n("nan", 3, out); }
function write_pinf (line 1856) | void write_pinf() { std::copy_n("inf", 3, out); }
function write_ninf (line 1857) | void write_ninf() { std::copy_n("-inf", 4, out); }
function on_text (line 1868) | void on_text(const char_type* begin, const char_type* end) {
function on_abbr_weekday (line 1873) | void on_abbr_weekday() {}
function on_full_weekday (line 1874) | void on_full_weekday() {}
function on_dec0_weekday (line 1875) | void on_dec0_weekday(numeric_system) {}
function on_dec1_weekday (line 1876) | void on_dec1_weekday(numeric_system) {}
function on_abbr_month (line 1877) | void on_abbr_month() {}
function on_full_month (line 1878) | void on_full_month() {}
function on_datetime (line 1879) | void on_datetime(numeric_system) {}
function on_loc_date (line 1880) | void on_loc_date(numeric_system) {}
function on_loc_time (line 1881) | void on_loc_time(numeric_system) {}
function on_us_date (line 1882) | void on_us_date() {}
function on_iso_date (line 1883) | void on_iso_date() {}
function on_utc_offset (line 1884) | void on_utc_offset(numeric_system) {}
function on_tz_name (line 1885) | void on_tz_name() {}
function on_year (line 1886) | void on_year(numeric_system) {}
function on_short_year (line 1887) | void on_short_year(numeric_system) {}
function on_offset_year (line 1888) | void on_offset_year() {}
function on_century (line 1889) | void on_century(numeric_system) {}
function on_iso_week_based_year (line 1890) | void on_iso_week_based_year() {}
function on_iso_week_based_short_year (line 1891) | void on_iso_week_based_short_year() {}
function on_dec_month (line 1892) | void on_dec_month(numeric_system) {}
function on_dec0_week_of_year (line 1893) | void on_dec0_week_of_year(numeric_system) {}
function on_dec1_week_of_year (line 1894) | void on_dec1_week_of_year(numeric_system) {}
function on_iso_week_of_year (line 1895) | void on_iso_week_of_year(numeric_system) {}
function on_day_of_month (line 1896) | void on_day_of_month(numeric_system) {}
function on_day_of_month_space (line 1897) | void on_day_of_month_space(numeric_system) {}
function on_day_of_year (line 1899) | void on_day_of_year() {
function on_24_hour (line 1904) | void on_24_hour(numeric_system ns, pad_type pad) {
function on_12_hour (line 1913) | void on_12_hour(numeric_system ns, pad_type pad) {
function on_minute (line 1922) | void on_minute(numeric_system ns, pad_type pad) {
function on_second (line 1931) | void on_second(numeric_system ns, pad_type pad) {
function on_12_hour_time (line 1956) | void on_12_hour_time() {
function on_24_hour_time (line 1961) | void on_24_hour_time() {
function on_iso_time (line 1973) | void on_iso_time() {
function on_am_pm (line 1980) | void on_am_pm() {
function on_duration_value (line 1985) | void on_duration_value() {
function on_duration_unit (line 1991) | void on_duration_unit() {
function class (line 2002) | class weekday {
function class (line 2013) | class year_month_day {}
function FMT_CONSTEXPR (line 2113) | FMT_CONSTEXPR formatter() {
function FMT_CONSTEXPR (line 2148) | FMT_CONSTEXPR formatter() {
FILE: libs/libfmt/fmt/color.h
function color (line 16) | enum class color : uint32_t {
function FMT_CONSTEXPR (line 314) | FMT_CONSTEXPR inline auto fg(detail::color_type foreground) noexcept
function FMT_CONSTEXPR (line 320) | FMT_CONSTEXPR inline auto bg(detail::color_type background) noexcept
function FMT_CONSTEXPR (line 369) | FMT_CONSTEXPR ansi_color_escape(emphasis em) noexcept {
function Char (line 390) | const Char*() const noexcept { return buffer; }
function FMT_CONSTEXPR (line 392) | FMT_CONSTEXPR auto begin() const noexcept -> const Char* { return buffer; }
function FMT_CONSTEXPR (line 401) | static FMT_CONSTEXPR void to_esc(uint8_t c, Char* out,
function FMT_CONSTEXPR (line 408) | static FMT_CONSTEXPR auto has_emphasis(emphasis em, emphasis mask) noexcept
function noexcept (line 415) | auto make_foreground_color(detail::color_type foreground) noexcept
function noexcept (line 421) | auto make_background_color(detail::color_type background) noexcept
function noexcept (line 427) | auto make_emphasis(emphasis em) noexcept
function vprint (line 469) | inline void vprint(std::FILE* f, const text_style& ts, string_view fmt,
function T (line 635) | auto styled(const T& value, text_style ts)
FILE: libs/libfmt/fmt/compile.h
function FMT_BEGIN_NAMESPACE (line 13) | FMT_BEGIN_NAMESPACE
function class (line 23) | class compiled_string {}
function Args (line 70) | [[maybe_unused]] const Args&... rest) {
function OutputIt (line 101) | OutputIt format(OutputIt out, const Args&...) const {
function OutputIt (line 120) | OutputIt format(OutputIt out, const Args&...) const {
function OutputIt (line 145) | OutputIt format(OutputIt out, const Args&... args) const {
function try_format_argument (line 164) | static bool try_format_argument(
function OutputIt (line 178) | OutputIt format(OutputIt out, const Args&... args) const {
function FMT_INLINE (line 196) | FMT_INLINE OutputIt format(OutputIt out,
function OutputIt (line 214) | OutputIt format(OutputIt out, const Args&... args) const {
type unknown_format (line 228) | struct unknown_format {}
function on_auto (line 279) | constexpr int on_auto() {
function on_index (line 283) | constexpr int on_index(int id) {
function on_name (line 287) | constexpr int on_name(basic_string_view<Char> id) {
function FMT_INLINE (line 442) | FMT_INLINE OutputIt format_to(OutputIt out, const CompiledFormat& cf,
function OutputIt (line 476) | OutputIt format_to(OutputIt out, const S&, Args&&... args) {
function namespace (line 523) | inline namespace literals {
FILE: libs/libfmt/fmt/core.h
function const_check (line 293) | struct monostate {
function T (line 376) | auto convert_for_visit(T value) -> T {
function int128_opt (line 383) | enum class int128_opt {}
function uint128_opt (line 384) | enum class uint128_opt {}
function FMT_CONSTEXPR (line 397) | FMT_CONSTEXPR inline auto is_utf8() -> bool {
function operator (line 465) | constexpr auto operator[](size_t pos) const noexcept -> const Char& {
function FMT_CONSTEXPR (line 469) | FMT_CONSTEXPR void remove_prefix(size_t n) noexcept {
function FMT_CONSTEXPR_CHAR_TRAITS (line 474) | FMT_CONSTEXPR_CHAR_TRAITS auto starts_with(
function FMT_CONSTEXPR_CHAR_TRAITS (line 479) | FMT_CONSTEXPR_CHAR_TRAITS auto starts_with(Char c) const noexcept -> bool {
function FMT_CONSTEXPR_CHAR_TRAITS (line 482) | FMT_CONSTEXPR_CHAR_TRAITS auto starts_with(const Char* s) const -> bool {
function FMT_CONSTEXPR_CHAR_TRAITS (line 487) | FMT_CONSTEXPR_CHAR_TRAITS auto compare(basic_string_view other) const ->...
function FMT_EXPORT (line 521) | FMT_EXPORT
function true_type (line 523) | struct is_char<char> : std::true_type {}
function namespace (line 525) | namespace detail {
function type (line 573) | enum class type {
type error_handler (line 650) | struct error_handler {
function FMT_EXPORT (line 673) | FMT_EXPORT
function namespace (line 742) | namespace detail {
function FMT_CONSTEXPR (line 834) | FMT_CONSTEXPR void set(T* buf_data, size_t buf_capacity) noexcept {
function FMT_INLINE (line 850) | FMT_INLINE auto begin() noexcept -> T* { return ptr_; }
function FMT_INLINE (line 854) | FMT_INLINE auto end() const noexcept -> const T* { return ptr_ + size_; }
function FMT_CONSTEXPR (line 863) | FMT_CONSTEXPR auto data() noexcept -> T* { return ptr_; }
function clear (line 867) | void clear() { size_ = 0; }
function FMT_CONSTEXPR20 (line 871) | FMT_CONSTEXPR20 void try_resize(size_t count) {
function FMT_CONSTEXPR20 (line 880) | FMT_CONSTEXPR20 void try_reserve(size_t new_capacity) {
function FMT_CONSTEXPR20 (line 884) | FMT_CONSTEXPR20 void push_back(const T& value) {
function count (line 901) | struct buffer_traits {
function override (line 931) | grow(size_t) override {
function flush (line 935) | void flush() {
function override (line 965) | grow(size_t) override {
function flush (line 969) | void flush() {
function override (line 1003) | grow(size_t) override {}
function override (line 1045) | grow(size_t) override {
function class (line 1100) | class appender : public std::back_insert_iterator<detail::buffer<char>> {
function namespace (line 1112) | namespace detail {
type view (line 1154) | struct view {}
type arg_data (line 1182) | struct arg_data<T, Char, NUM_ARGS, 0> {
type is_named_arg (line 1197) | struct is_named_arg
type is_statically_named_arg (line 1198) | struct is_statically_named_arg
type is_named_arg (line 1201) | struct is_named_arg<named_arg<Char, T>> : std::true_type {}
function init_named_args (line 1219) | void init_named_args(std::nullptr_t, int, int,
type unformattable (line 1236) | struct unformattable {}
function unformattable (line 1237) | struct unformattable_char : unformattable {}
function unformattable (line 1238) | struct unformattable_pointer : unformattable {}
function FMT_INLINE (line 1280) | constexpr FMT_INLINE value() : no_value() {}
function FMT_INLINE (line 1301) | FMT_INLINE value(const named_arg_info<char_type>* args, size_t size)
function format_custom_arg (line 1320) | void format_custom_arg(void* arg,
function FMT_CONSTEXPR (line 1358) | FMT_CONSTEXPR FMT_INLINE auto map(signed char val) -> int { return val; }
function FMT_CONSTEXPR (line 1359) | FMT_CONSTEXPR FMT_INLINE auto map(unsigned char val) -> unsigned {
function FMT_CONSTEXPR (line 1366) | FMT_CONSTEXPR FMT_INLINE auto map(int val) -> int { return val; }
function long_type (line 1368) | auto map(long val) -> long_type { return val; }
function ulong_type (line 1369) | auto map(unsigned long val) -> ulong_type {
function FMT_CONSTEXPR (line 1377) | FMT_CONSTEXPR FMT_INLINE auto map(int128_opt val) -> int128_opt {
function FMT_CONSTEXPR (line 1380) | FMT_CONSTEXPR FMT_INLINE auto map(uint128_opt val) -> uint128_opt {
function FMT_CONSTEXPR (line 1383) | FMT_CONSTEXPR FMT_INLINE auto map(bool val) -> bool { return val; }
function FMT_INLINE (line 1387) | FMT_INLINE auto map(T val) -> char_type {
function FMT_INLINE (line 1417) | FMT_INLINE auto map(const T& val)
function FMT_INLINE (line 1424) | FMT_INLINE auto map(const T&) -> unformattable_char {
function FMT_CONSTEXPR (line 1428) | FMT_CONSTEXPR FMT_INLINE auto map(void* val) -> const void* { return val; }
function FMT_CONSTEXPR (line 1429) | FMT_CONSTEXPR FMT_INLINE auto map(const void* val) -> const void* {
function void (line 1432) | auto map(std::nullptr_t val) -> const void* {
function unformattable_pointer (line 1445) | auto map(const T&) -> unformattable_pointer {
function FMT_INLINE (line 1458) | FMT_INLINE auto map(const T& val)
function FMT_INLINE (line 1469) | FMT_INLINE auto do_map(T& val) -> T& {
function FMT_INLINE (line 1473) | FMT_INLINE auto do_map(T&) -> unformattable {
function FMT_INLINE (line 1489) | FMT_INLINE auto map(const T& named_arg)
function class (line 1553) | class locale_ref {
function FMT_INLINE (line 1582) | FMT_INLINE auto make_arg(T& val) -> value<Context> {
function Context (line 1619) | inline auto make_arg(T& val) -> basic_format_arg<Context> {
function FMT_BEGIN_EXPORT (line 1623) | FMT_BEGIN_EXPORT
function format_custom (line 1675) | auto is_arithmetic() const -> bool {
function FMT_INLINE (line 1698) | FMT_INLINE auto visit_format_arg(
function FMT_CONSTEXPR (line 1767) | FMT_CONSTEXPR auto arg(basic_string_view<Char> name) -> format_arg {
function FMT_CONSTEXPR (line 1770) | FMT_CONSTEXPR auto arg_id(basic_string_view<Char> name) -> int {
function FMT_CONSTEXPR (line 1776) | FMT_CONSTEXPR auto error_handler() -> detail::error_handler { return {}; }
function FMT_CONSTEXPR (line 1787) | FMT_CONSTEXPR auto locale() -> detail::locale_ref { return loc_; }
function FMT_CONSTEXPR (line 1919) | FMT_CONSTEXPR auto type(int index) const -> detail::type {
function FMT_INLINE (line 1925) | constexpr FMT_INLINE basic_format_args(unsigned long long desc,
function namespace (line 2016) | namespace align {
function FMT_CONSTEXPR (line 2492) | FMT_CONSTEXPR void on_auto() { arg_id = handler.on_arg_id(); }
function FMT_CONSTEXPR (line 2493) | FMT_CONSTEXPR void on_index(int id) { arg_id = handler.on_arg_id(id); }
function adapter (line 2506) | auto adapter = id_adapter{handler, 0};
function parse_format_string (line 2523) | void parse_format_string(
function on_text (line 2658) | void on_text(const Char*, const Char*) {}
function FMT_CONSTEXPR (line 2661) | FMT_CONSTEXPR auto on_arg_id(int id) -> int {
function FMT_CONSTEXPR (line 2664) | FMT_CONSTEXPR auto on_arg_id(basic_string_view<Char> id) -> int {
function FMT_CONSTEXPR (line 2676) | FMT_CONSTEXPR void on_replacement_field(int id, const Char* begin) {
function FMT_CONSTEXPR (line 2687) | FMT_CONSTEXPR void on_error(const char* message) {
function check_format_string (line 2694) | void check_format_string(const S&) {
function char (line 2715) | struct vformat_args<char> {
function vprint_mojibake (line 2726) | inline void vprint_mojibake(std::FILE*, string_view, format_args) {}
function FMT_INLINE (line 2776) | FMT_INLINE basic_format_string(const S& s) : str_(s) {
function string_view (line 2802) | inline auto runtime(string_view s) -> string_view { return s; }
function runtime_format_string (line 2816) | inline auto runtime(string_view s) -> runtime_format_string<> { return {...
function FMT_INLINE (line 2833) | FMT_INLINE auto format(format_string<T...> fmt, T&&... args)
function print (line 2938) | void print(std::FILE* f, format_string<T...> fmt, T&&... args) {
function println (line 2949) | void println(std::FILE* f, format_string<T...> fmt, T&&... args) {
FILE: libs/libfmt/fmt/format-inl.h
function FMT_BEGIN_NAMESPACE (line 27) | FMT_BEGIN_NAMESPACE
function FMT_FUNC (line 140) | FMT_FUNC auto format_facet<std::locale>::do_put(
function FMT_FUNC (line 147) | FMT_FUNC auto vsystem_error(int error_code, string_view fmt, format_args...
function namespace (line 153) | namespace detail {
function noexcept (line 194) | inline auto floor_log10_pow2_minus_log10_4_over_3(int e) noexcept -> int {
function FMT_INLINE_VARIABLE (line 199) | FMT_INLINE_VARIABLE constexpr struct {
function noexcept (line 242) | inline auto divide_by_10_to_kappa_plus_1(uint32_t n) noexcept -> uint32_t {
function noexcept (line 247) | inline auto divide_by_10_to_kappa_plus_1(uint64_t n) noexcept -> uint64_t {
function float (line 255) | struct cache_accessor<float> {
function noexcept (line 309) | static auto compute_delta(const cache_entry_type& cache, int beta) noexcept
function carrier_uint (line 326) | static auto compute_left_endpoint_for_shorter_interval_case(
function carrier_uint (line 333) | static auto compute_right_endpoint_for_shorter_interval_case(
function carrier_uint (line 340) | static auto compute_round_up_for_shorter_interval_case(
function double (line 349) | struct cache_accessor<double> {
function bigint (line 1369) | struct formatter<detail::bigint> {
function FMT_FUNC (line 1395) | FMT_FUNC detail::utf8_to_utf16::utf8_to_utf16(string_view s) {
function FMT_FUNC (line 1410) | FMT_FUNC void format_system_error(detail::buffer<char>& out, int error_c...
function FMT_FUNC (line 1421) | FMT_FUNC void report_system_error(int error_code,
function FMT_FUNC (line 1426) | FMT_FUNC auto vformat(string_view fmt, format_args args) -> std::string {
function namespace (line 1434) | namespace detail {
function FMT_FUNC (line 1475) | FMT_FUNC void vprint(std::FILE* f, string_view fmt, format_args args) {
function FMT_FUNC (line 1481) | FMT_FUNC void vprint(string_view fmt, format_args args) {
function namespace (line 1485) | namespace detail {
function FMT_FUNC (line 1524) | FMT_FUNC auto is_printable(uint32_t cp) -> bool {
FILE: libs/libfmt/fmt/format.cc
function FMT_BEGIN_NAMESPACE (line 10) | FMT_BEGIN_NAMESPACE
FILE: libs/libfmt/fmt/format.h
function FMT_BEGIN_NAMESPACE (line 118) | FMT_BEGIN_NAMESPACE
function FMT_BEGIN_NAMESPACE (line 209) | FMT_BEGIN_NAMESPACE
function FMT_BEGIN_NAMESPACE (line 279) | FMT_BEGIN_NAMESPACE
function FMT_CONSTEXPR (line 388) | FMT_CONSTEXPR auto operator>>(int shift) const -> uint128_fallback {
function FMT_CONSTEXPR (line 393) | FMT_CONSTEXPR auto operator<<(int shift) const -> uint128_fallback {
function FMT_CONSTEXPR (line 398) | FMT_CONSTEXPR auto operator>>=(int shift) -> uint128_fallback& {
function uint128_fallback (line 413) | uint64_t n) noexcept -> uint128_fallback& {
function To (line 462) | auto bit_cast(const From& from) -> To {
function FMT_INLINE (line 500) | FMT_INLINE void assume(bool condition) {
function Char (line 516) | auto get_data(std::basic_string<Char>& s) -> Char* {
function Container (line 568) | auto base_iterator(std::back_insert_iterator<Container> it,
type char8_type (line 599) | enum char8_type : unsigned char {}
function FMT_NOINLINE (line 603) | FMT_NOINLINE auto copy_str_noinline(InputIt begin, InputIt end,
function FMT_CONSTEXPR (line 625) | FMT_CONSTEXPR inline auto utf8_decode(const char* s, uint32_t* c, int* e)
function for_each_codepoint (line 667) | void for_each_codepoint(string_view s, F f) {
function FMT_CONSTEXPR (line 703) | FMT_CONSTEXPR inline auto compute_width(string_view s) -> size_t {
function true_type (line 770) | struct is_integral<int128_opt> : std::true_type {}
function true_type (line 771) | struct is_integral<uint128_t> : std::true_type {}
function FMT_BEGIN_EXPORT (line 854) | FMT_BEGIN_EXPORT
function FMT_CONSTEXPR20 (line 981) | FMT_CONSTEXPR20 void resize(size_t count) { this->try_resize(count); }
function reserve (line 984) | void reserve(size_t new_capacity) { this->try_reserve(new_capacity); }
function FMT_END_EXPORT (line 999) | FMT_END_EXPORT
function namespace (line 1019) | namespace detail_exported {
function class (line 1045) | class loc_value {
function FMT_CONSTEXPR (line 1159) | FMT_CONSTEXPR inline auto count_digits(uint128_opt n) -> int {
function FMT_CONSTEXPR20 (line 1187) | FMT_CONSTEXPR20 inline auto count_digits(uint64_t n) -> int {
function FMT_INLINE (line 1216) | FMT_INLINE auto do_count_digits(uint32_t n) -> int {
function FMT_CONSTEXPR20 (line 1239) | FMT_CONSTEXPR20 inline auto count_digits(uint32_t n) -> int {
function wchar_t (line 1267) | inline auto thousands_sep(locale_ref loc) -> thousands_sep_result<wchar_...
function wchar_t (line 1276) | inline auto decimal_point(locale_ref loc) -> wchar_t {
function class (line 1368) | class utf8_to_utf16 {
function namespace (line 1478) | namespace dragonbox {
function double (line 1530) | struct float_info<double> {
function FMT_CONSTEXPR (line 1684) | FMT_CONSTEXPR inline auto multiply(uint64_t lhs, uint64_t rhs) -> uint64...
function FMT_CONSTEXPR (line 1701) | FMT_CONSTEXPR inline auto operator*(fp x, fp y) -> fp {
function write (line 1769) | auto write = [=](reserve_iterator<OutputIt> it) {
function FMT_CONSTEXPR (line 1965) | FMT_CONSTEXPR write_int_data(int num_digits, unsigned prefix,
type next_state (line 2014) | struct next_state {
function class (line 2275) | class counting_iterator {
function FMT_CONSTEXPR (line 2310) | FMT_CONSTEXPR auto operator*() const -> value_type { return {}; }
function float_format (line 2417) | enum class float_format : unsigned char {
type big_decimal_fp (line 2497) | struct big_decimal_fp {
function write (line 2641) | auto write = [=](iterator it) {
function signbit (line 2761) | bool signbit(T value) {
function class (line 2781) | class bigint {
function FMT_CONSTEXPR20 (line 2890) | FMT_CONSTEXPR20 auto num_bigits() const -> int {
function FMT_CONSTEXPR20 (line 2961) | FMT_CONSTEXPR20 void assign_pow10(int exp) {
function FMT_CONSTEXPR20 (line 2980) | FMT_CONSTEXPR20 void square() {
function FMT_CONSTEXPR20 (line 3010) | FMT_CONSTEXPR20 void align(const bigint& other) {
function FMT_CONSTEXPR20 (line 3023) | FMT_CONSTEXPR20 auto divmod_assign(const bigint& divisor) -> int {
type dragon (line 3038) | enum dragon {
function f (line 3631) | auto f = big_decimal_fp{buffer.data(), static_cast<int>(buffer.size()), ...
function OutputIt (line 3637) | auto write(OutputIt out, T value, format_specs<Char> specs,
function FMT_INLINE (line 3795) | FMT_INLINE auto operator()(T value) -> iterator {
type precision_checker (line 3819) | struct precision_checker {
function value (line 3872) | statically_named_arg(const T& v) : value(v) {}
function explicit (line 3994) | explicit format_int(long value) : str_(format_signed(value)) {}
function explicit (line 3995) | explicit format_int(long long value) : str_(format_signed(value)) {}
function explicit (line 3996) | explicit format_int(unsigned value) : str_(format_unsigned(value)) {}
function explicit (line 3997) | explicit format_int(unsigned long value) : str_(format_unsigned(value)) {}
function explicit (line 3998) | explicit format_int(unsigned long long value)
function data (line 4010) | auto data() const -> const char* { return str_; }
function namespace (line 4094) | namespace enums {
function class (line 4101) | class bytes {
function bytes (line 4110) | struct formatter<bytes> {
function FMT_CONSTEXPR (line 4181) | FMT_CONSTEXPR auto parse(format_parse_context& ctx) -> const char* {
function decltype (line 4184) | auto format(nested_view<T> view, format_context& ctx) const
function T (line 4223) | auto nested(const T& value) const -> nested_view<T> {
function string (line 4326) | auto to_string(T value) -> std::string {
function FMT_END_EXPORT (line 4349) | FMT_END_EXPORT
function namespace (line 4437) | inline namespace literals {
function string (line 4462) | auto vformat(const Locale& loc, string_view fmt, format_args args)
FILE: libs/libfmt/fmt/os.cc
function convert_rwcount (line 65) | inline unsigned convert_rwcount(std::size_t count) {
function convert_rwcount (line 72) | inline std::size_t convert_rwcount(std::size_t count) { return count; }
type detail (line 79) | namespace detail {
class system_message (line 81) | class system_message {
method system_message (line 82) | system_message(const system_message&) = delete;
method is_whitespace (line 88) | static bool is_whitespace(wchar_t c) noexcept {
method system_message (line 93) | explicit system_message(unsigned long error_code)
class utf8_system_category (line 113) | class utf8_system_category final : public std::error_category {
method message (line 116) | std::string message(int error_code) const override {
function FMT_API (line 130) | FMT_API const std::error_category& system_category() noexcept {
function vwindows_error (line 135) | std::system_error vwindows_error(int err_code, string_view format_str,
function FMT_CATCH (line 154) | FMT_CATCH(...) {}
function report_windows_error (line 158) | void report_windows_error(int error_code, const char* message) noexcept {
type stat (line 252) | struct stat
function file (line 278) | file file::dup(int fd) {
function buffered_file (line 327) | buffered_file file::fdopen(const char* mode) {
function file (line 344) | file file::open_windows_file(wcstring_view path, int oflag) {
function getpagesize (line 356) | long getpagesize() {
type detail (line 375) | namespace detail {
class system_message (line 81) | class system_message {
method system_message (line 82) | system_message(const system_message&) = delete;
method is_whitespace (line 88) | static bool is_whitespace(wchar_t c) noexcept {
method system_message (line 93) | explicit system_message(unsigned long error_code)
class utf8_system_category (line 113) | class utf8_system_category final : public std::error_category {
method message (line 116) | std::string message(int error_code) const override {
FILE: libs/libfmt/fmt/os.h
function FMT_API (line 127) | FMT_API const std::error_category& system_category() noexcept;
function system_error (line 166) | system_error windows_error(int error_code, string_view message,
function class (line 189) | class buffered_file {
function descriptor (line 226) | auto get() const noexcept -> FILE* { return file_; }
function print (line 235) | void print(string_view format_str, const Args&... args) {
function class (line 247) | class FMT_API file {
function noexcept (line 289) | auto descriptor() const noexcept -> int { return fd_; }
function detail (line 333) | auto getpagesize() -> long;
function flush (line 382) | void flush() {
function close (line 388) | void close() {
function detail (line 398) | constexpr detail::buffer_size buffer_size{}
function class (line 401) | class FMT_API ostream {
FILE: libs/libfmt/fmt/ostream.h
function FMT_BEGIN_NAMESPACE (line 23) | FMT_BEGIN_NAMESPACE
type file_access_tag (line 60) | struct file_access_tag {}
function friend (line 64) | friend auto get_file(BufType& obj) -> FILE* { return obj.*FileMemberPtr; }
function T (line 179) | auto streamed(const T& value) -> detail::streamed_view<T> {
function namespace (line 183) | namespace detail {
function FMT_EXPORT (line 222) | FMT_EXPORT
function FMT_EXPORT (line 235) | FMT_EXPORT
FILE: libs/libfmt/fmt/printf.h
function advance_to (line 48) | void advance_to(detail::buffer_appender<Char>) {}
function basic_printf_context (line 52) | auto arg(int id) const -> basic_format_arg<basic_printf_context> {
function FMT_CONSTEXPR (line 56) | FMT_CONSTEXPR void on_error(const char* message) {
function namespace (line 61) | namespace detail {
type int_checker (line 73) | struct int_checker
type printf_precision_handler (line 81) | struct printf_precision_handler {
type is_zero_int (line 97) | struct is_zero_int {
function bool (line 111) | struct make_unsigned_or_bool<bool> {
function arg_ (line 177) | arg_(arg) {}
function specs_ (line 203) | specs_(specs) {}
function get_arg (line 428) | auto get_arg = [&](int arg_index) {
FILE: libs/libfmt/fmt/ranges.h
function T (line 101) | range_begin(const T (&arr)[N]) -> const T* {
function T (line 105) | range_end(const T (&arr)[N]) -> const T* {
function FMT_CONSTEXPR (line 186) | static FMT_CONSTEXPR auto size() -> size_t { return sizeof...(N); }
function namespace (line 253) | namespace tuple {
function namespace (line 385) | namespace detail {
function FMT_CONSTEXPR (line 445) | FMT_CONSTEXPR auto underlying() -> detail::range_formatter_type<Char, T>& {
function range_format (line 500) | enum class range_format { disabled, map, set, sequence, string, debug_st...
function typename (line 634) | const ->
FILE: libs/libfmt/fmt/std.h
function FMT_BEGIN_NAMESPACE (line 84) | FMT_BEGIN_NAMESPACE
type formatter (line 172) | struct formatter
type writer (line 175) | struct writer {
function decltype (line 216) | static auto maybe_set_debug_format(U& u, bool set)
function maybe_set_debug_format (line 222) | static void maybe_set_debug_format(U&, ...) {}
function source_location (line 248) | struct formatter<std::source_location> {
function FMT_BEGIN_NAMESPACE (line 271) | FMT_BEGIN_NAMESPACE
function namespace (line 469) | namespace detail {
FILE: libs/libfmt/fmt/xchar.h
function FMT_BEGIN_NAMESPACE (line 19) | FMT_BEGIN_NAMESPACE
function wstring_view (line 51) | inline auto runtime(wstring_view s) -> wstring_view { return s; }
function wchar_t (line 55) | inline auto runtime(wstring_view s) -> runtime_format_string<wchar_t> {
function true_type (line 60) | struct is_char<wchar_t> : std::true_type {}
function true_type (line 61) | struct is_char<detail::char8_type> : std::true_type {}
function true_type (line 62) | struct is_char<char16_t> : std::true_type {}
function true_type (line 63) | struct is_char<char32_t> : std::true_type {}
function vprint (line 220) | inline void vprint(std::FILE* f, wstring_view fmt, wformat_args args) {
function vprint (line 228) | inline void vprint(wstring_view fmt, wformat_args args) {
function wstring (line 253) | auto to_wstring(const T& value) -> std::wstring {
FILE: libs/maplib.h
function namespace (line 5) | namespace map
FILE: libs/materials/FrobStageSetup.h
function namespace (line 8) | namespace shaders
function AddAdditiveDiffuseStage (line 210) | static void AddAdditiveDiffuseStage(const MaterialPtr& material)
function AddWhiteBlendStage (line 228) | static void AddWhiteBlendStage(const MaterialPtr& material)
FILE: libs/materials/ParseLib.h
function std (line 19) | inline std::string getMaterialsFolderName()
function std (line 31) | inline std::string getMaterialFileExtension()
function std (line 45) | inline std::string getDeclNamePatternForMaterialName(const std::string& ...
function std (line 66) | inline std::string getStringForMaterialFlag(Material::Flags flag)
function Material (line 111) | inline Material::SurfaceType getSurfaceTypeForString(const std::string& ...
function Material (line 172) | inline Material::CullType getCullTypeForString(const std::string& typeSt...
function getSortRequestValueForString (line 213) | inline float getSortRequestValueForString(const std::string& value)
function IShaderLayer (line 250) | inline IShaderLayer::MapType getMapTypeForString(const std::string& type...
function isDefaultBlendFunc (line 298) | inline bool isDefaultBlendFunc(const std::pair<std::string, std::string>...
function std (line 312) | inline std::string getStringForTexGenType(IShaderLayer::TexGenType type)
FILE: libs/math/AABB.cpp
function VolumeIntersectionValue (line 74) | VolumeIntersectionValue AABB::classifyPlane(const Plane3& plane) const
function AABB (line 168) | AABB AABB::createFromOrientedAABB(const AABB& aabb, const Matrix4& trans...
FILE: libs/math/AABB.h
function class (line 19) | class AABB
FILE: libs/math/FloatTools.h
function lrint (line 26) | inline int lrint(double f) {
function float_equal_epsilon (line 52) | bool float_equal_epsilon(const Element& self, const OtherElement& other,...
function Element (line 59) | Element float_mid(const Element& self, const Element& other)
function float_to_integer (line 66) | int float_to_integer(const Element& f)
function Element (line 73) | Element float_snapped(const Element& f, const OtherElement& snap)
function float_is_integer (line 80) | bool float_is_integer(const Element& f)
function Element (line 88) | Element float_mod_range(const Element& self, const ModulusElement& modulus)
function Element (line 95) | Element float_mod(const Element& self, const ModulusElement& modulus)
function isNaN (line 101) | bool isNaN(Element x) {
function isValid (line 108) | bool isValid(Element x) {
FILE: libs/math/Frustum.cpp
function Matrix4 (line 17) | Matrix4 Frustum::getProjectionMatrix() const
function Frustum (line 44) | Frustum Frustum::getTransformedBy(const Matrix4& matrix) const
function VolumeIntersectionValue (line 76) | VolumeIntersectionValue Frustum::testIntersection(const AABB& aabb) const
function VolumeIntersectionValue (line 143) | VolumeIntersectionValue Frustum::testIntersection(const AABB& aabb, cons...
FILE: libs/math/Frustum.h
function class (line 32) | class Frustum
FILE: libs/math/Hash.h
function namespace (line 8) | namespace math
FILE: libs/math/Line.h
function class (line 9) | class Line
FILE: libs/math/Matrix3.h
function class (line 17) | class Matrix3
function Matrix3 (line 171) | inline Matrix3::Matrix3(double xx_, double xy_, double xz_,
function Matrix3 (line 187) | inline Matrix3 Matrix3::byColumns(double xx, double xy, double xz,
function Matrix3 (line 197) | inline Matrix3 Matrix3::byRows(double xx, double yx, double zx,
FILE: libs/math/Matrix4.cpp
function Vector3 (line 10) | inline Vector3 euler_degrees_to_radians(const Vector3& euler)
function quaternion_component_is_90 (line 19) | inline bool quaternion_component_is_90(double component)
function Matrix4 (line 52) | Matrix4 Matrix4::getRotation(const Vector3& a, const Vector3& b)
function Matrix4 (line 60) | Matrix4 Matrix4::getRotation(const Vector3& axis, const double angle)
function Matrix4 (line 77) | Matrix4 Matrix4::getRotation(const Quaternion& quaternion)
function Matrix4 (line 112) | Matrix4 Matrix4::getRotationQuantised(const Quaternion& quaternion)
function Matrix4 (line 132) | Matrix4 Matrix4::getRotationAboutXForSinCos(double s, double c)
function Matrix4 (line 142) | Matrix4 Matrix4::getRotationAboutYForSinCos(double s, double c)
function Matrix4 (line 152) | Matrix4 Matrix4::getRotationAboutZForSinCos(double s, double c)
function Matrix4 (line 184) | Matrix4 Matrix4::getRotationForEulerXYZ(const Vector3& euler)
function Matrix4 (line 213) | Matrix4 Matrix4::getRotationForEulerXYZDegrees(const Vector3& euler)
FILE: libs/math/Matrix4.h
function class (line 23) | class alignas(16) Matrix4
function Matrix4 (line 447) | inline Matrix4 operator* (const Matrix4& m1, const Matrix4& m2)
function Matrix4 (line 453) | inline Matrix4 operator- (const Matrix4& l, const Matrix4& r)
function Matrix4 (line 488) | inline Matrix4 Matrix4::byColumns(double xx, double xy, double xz, doubl...
function Matrix4 (line 500) | inline Matrix4 Matrix4::byRows(double xx, double yx, double zx, double tx,
function Vector3 (line 534) | inline Vector3 Matrix4::getEulerAnglesXYZ() const
function scaleBy (line 572) | inline void Matrix4::scaleBy(const Vector3& scale, const Vector3& pivot)
function namespace (line 589) | namespace math
FILE: libs/math/Plane3.cpp
function Plane3 (line 27) | Plane3& Plane3::transform(const Matrix4& m)
function Plane3 (line 38) | Plane3 Plane3::transformed(const Matrix4& m) const
FILE: libs/math/Plane3.h
function class (line 36) | class Plane3
function operator (line 82) | bool operator== (const Plane3& other) const
function operator (line 88) | bool operator!= (const Plane3& other) const
function dist (line 114) | double& dist()
function Plane3 (line 126) | Plane3 getNormalised() const
function reverse (line 142) | void reverse()
function Vector3 (line 173) | Vector3 getProjection(const Vector3& pointToProject) const
function distanceToPoint (line 187) | double distanceToPoint(const Vector3& point) const
function testPoint (line 196) | bool testPoint(const Vector3& point) const
function Vector3 (line 204) | static Vector3 intersect(const Plane3& plane1, const Plane3& plane2, con...
FILE: libs/math/Quaternion.h
function class (line 13) | class Quaternion :
FILE: libs/math/Ray.h
function class (line 8) | class Ray
FILE: libs/math/SHA256.cpp
type math (line 20) | namespace math
function sha256_transform (line 50) | void sha256_transform(SHA256_CTX* ctx, const BYTE data[])
function sha256_init (line 91) | void sha256_init(SHA256_CTX* ctx)
function sha256_update (line 105) | void sha256_update(SHA256_CTX* ctx, const BYTE data[], size_t len)
function sha256_final (line 120) | void sha256_final(SHA256_CTX* ctx, BYTE hash[])
FILE: libs/math/SHA256.h
function namespace (line 19) | namespace math
FILE: libs/math/Segment.h
function class (line 6) | class Segment
FILE: libs/math/Vector2.h
function Element (line 98) | const Element* data() const { return _v; }
function Element (line 101) | const Element& operator[] (std::size_t index) const
function operator (line 118) | bool operator!= (const BasicVector2& other) const {
function normalise (line 270) | double normalise()
function namespace (line 340) | namespace math
FILE: libs/math/Vector3.h
function set (line 95) | void set(T x, T y, T z)
function T (line 111) | const T& operator[](std::size_t index) const {
function T (line 121) | T* data() {
function T (line 126) | const T* data() const {
function operator (line 131) | bool operator== (const BasicVector3& other) const {
function operator (line 138) | bool operator!= (const BasicVector3& other) const {
function snap (line 213) | void snap(T snap)
function namespace (line 346) | namespace math
type BasicVector3 (line 387) | typedef BasicVector3<double> Vector3;
type BasicVector3 (line 390) | typedef BasicVector3<float> Vector3f;
FILE: libs/math/Vector4.h
function _v (line 66) | BasicVector4(const Eigen_T& vec): _v(vec)
function T (line 85) | const T* data() const
function T (line 91) | const T& operator[] (const std::size_t index) const
type BasicVector4 (line 245) | typedef BasicVector4<double> Vector4;
type BasicVector4 (line 248) | typedef BasicVector4<float> Vector4f;
function namespace (line 250) | namespace math
FILE: libs/math/ViewProjection.h
function class (line 9) | class ViewProjection :
function testPoint (line 26) | inline bool ViewProjection::testPoint(const Vector3& point) const
function testPoint (line 40) | inline bool ViewProjection::testPoint(const Vector3& point, const Matrix...
FILE: libs/math/Viewer.h
function class (line 8) | class Viewer :
function testPlane (line 35) | inline bool Viewer::testPlane(const Plane3& plane) const
function testPlane (line 41) | inline bool Viewer::testPlane(const Plane3& plane, const Matrix4& localT...
function Viewer (line 46) | inline Viewer Viewer::createFromTransformedViewer(const Vector4& viewer,...
function Vector3 (line 58) | inline Vector3 triangle_cross(const Vector3& p0, const Vector3& p1, cons...
function testTriangle (line 63) | inline bool Viewer::testTriangle(const Vector3& p0, const Vector3& p1, c...
function Viewer (line 70) | inline Viewer Viewer::createFromViewProjection(const ViewProjection& vie...
FILE: libs/math/XYZ.h
function namespace (line 3) | namespace math
FILE: libs/math/curve.h
function apply (line 35) | static double apply(double t)
type unnamed_ (line 45) | enum unnamed_{ VALUE = VALUE_ }
type IntegralConstantC (line 48) | typedef IntegralConstantC<0> Zero;
type IntegralConstantC (line 49) | typedef IntegralConstantC<1> One;
type IntegralConstantC (line 50) | typedef IntegralConstantC<2> Two;
type IntegralConstantC (line 51) | typedef IntegralConstantC<3> Three;
type IntegralConstantC (line 52) | typedef IntegralConstantC<4> Four;
type BernsteinPolynomial (line 55) | struct BernsteinPolynomial
function apply (line 57) | static double apply(double t)
type BernsteinPolynomial (line 64) | struct BernsteinPolynomial
function apply (line 66) | static double apply(double t)
type BernsteinPolynomial (line 73) | struct BernsteinPolynomial
function apply (line 75) | static double apply(double t)
type BernsteinPolynomial (line 82) | struct BernsteinPolynomial
function apply (line 84) | static double apply(double t)
type BernsteinPolynomial (line 91) | struct BernsteinPolynomial
function apply (line 93) | static double apply(double t)
type BernsteinPolynomial (line 100) | struct BernsteinPolynomial
function apply (line 102) | static double apply(double t)
type BernsteinPolynomial (line 109) | struct BernsteinPolynomial
function apply (line 111) | static double apply(double t)
type BernsteinPolynomial (line 118) | struct BernsteinPolynomial
function apply (line 120) | static double apply(double t)
type BernsteinPolynomial (line 127) | struct BernsteinPolynomial
function apply (line 129) | static double apply(double t)
type BernsteinPolynomial (line 136) | struct BernsteinPolynomial
function apply (line 138) | static double apply(double t)
type std (line 144) | typedef std::vector<Vector3> ControlPoints;
function Vector3 (line 146) | inline Vector3 CubicBezier_evaluate(const Vector3* firstPoint, double t)
function Vector3 (line 175) | inline Vector3 CubicBezier_evaluateMid(const Vector3* firstPoint)
function Vector3 (line 180) | inline Vector3 CatmullRom_evaluate(const ControlPoints& controlPoints, d...
type std (line 211) | typedef std::vector<float> Knots;
function BSpline_basis (line 213) | inline double BSpline_basis(const Knots& knots, std::size_t i, std::size...
function Vector3 (line 232) | inline Vector3 BSpline_evaluate(const ControlPoints& controlPoints, cons...
type std (line 242) | typedef std::vector<float> NURBSWeights;
function Vector3 (line 244) | inline Vector3 NURBS_evaluate(const ControlPoints& controlPoints, const ...
function KnotVector_openUniform (line 257) | inline void KnotVector_openUniform(Knots& knots, std::size_t count, std:...
FILE: libs/math/lrint.h
function lrint (line 19) | inline int lrint(const double x)
function lrint (line 32) | inline int lrint (double flt) {
function lrint (line 48) | inline int lrint(double f)
FILE: libs/math/pi.h
function namespace (line 24) | namespace math
function radians_to_degrees (line 35) | inline double radians_to_degrees(double radians)
function degrees_to_radians (line 39) | inline double degrees_to_radians(double degrees)
function namespace (line 44) | namespace math
FILE: libs/messages/ApplicationIsActiveRequest.h
function namespace (line 5) | namespace radiant
FILE: libs/messages/ApplicationShutdownRequest.h
function namespace (line 5) | namespace radiant
FILE: libs/messages/AutomaticMapSaveRequest.h
function namespace (line 5) | namespace map
FILE: libs/messages/ClearConsole.h
function namespace (line 6) | namespace radiant
FILE: libs/messages/CommandExecutionFailed.h
function namespace (line 6) | namespace radiant
FILE: libs/messages/ComponentSelectionModeToggleRequest.h
function namespace (line 6) | namespace selection
FILE: libs/messages/FileOverwriteConfirmation.h
function namespace (line 7) | namespace radiant
FILE: libs/messages/FileSaveConfirmation.h
function namespace (line 7) | namespace radiant
FILE: libs/messages/FileSelectionRequest.h
function namespace (line 7) | namespace radiant
FILE: libs/messages/GameConfigNeededMessage.h
function namespace (line 6) | namespace game
FILE: libs/messages/GridSnapRequest.h
function namespace (line 6) | namespace selection
FILE: libs/messages/LongRunningOperationMessage.h
function namespace (line 5) | namespace radiant
FILE: libs/messages/ManipulatorModeToggleRequest.h
function namespace (line 6) | namespace selection
FILE: libs/messages/MapFileOperation.h
function namespace (line 6) | namespace map
FILE: libs/messages/MapOperationMessage.h
function namespace (line 6) | namespace map
FILE: libs/messages/NotificationMessage.h
function namespace (line 6) | namespace radiant
FILE: libs/messages/ScopedLongRunningOperation.h
function namespace (line 7) | namespace radiant
FILE: libs/messages/TextureChanged.h
function namespace (line 6) | namespace radiant
FILE: libs/messages/TextureToolRequest.h
function namespace (line 6) | namespace ui
FILE: libs/messages/UnselectSelectionRequest.h
function namespace (line 5) | namespace selection
FILE: libs/module/ApplicationContextBase.cpp
type radiant (line 20) | namespace radiant
function getExecutablePath (line 154) | std::string getExecutablePath(char* argv[])
function getExecutablePath (line 190) | std::string getExecutablePath(char* argv[])
function strenv (line 218) | std::string strenv(const std::string& key)
function getXDGPath (line 226) | std::string getXDGPath(const std::string& envVar, const std::string& f...
type passwd (line 248) | struct passwd
function ErrorHandlingFunction (line 360) | const ErrorHandlingFunction& ApplicationContextBase::getErrorHandlingF...
FILE: libs/module/ApplicationContextBase.h
function namespace (line 6) | namespace radiant
FILE: libs/module/CoreModule.cpp
type module (line 13) | namespace module
FILE: libs/module/CoreModule.h
function namespace (line 12) | namespace module
FILE: libs/module/DynamicLibrary.cpp
type module (line 6) | namespace module
function FormatGetLastError (line 17) | std::string FormatGetLastError()
FILE: libs/module/DynamicLibrary.h
function namespace (line 27) | namespace module
function namespace (line 70) | namespace module
function namespace (line 108) | namespace module
FILE: libs/module/StaticModule.cpp
type module (line 5) | namespace module
type internal (line 8) | namespace internal
function StaticModuleList (line 24) | StaticModuleList& StaticModuleList::Instance()
FILE: libs/module/StaticModule.h
function namespace (line 6) | namespace module
FILE: libs/noise/Noise.h
function namespace (line 8) | namespace noise
FILE: libs/noise/PerlinNoise.h
function namespace (line 7) | namespace noise
FILE: libs/noise/SimplexNoise.h
function namespace (line 7) | namespace noise
FILE: libs/os/dir.h
function namespace (line 12) | namespace os
function removeDirectory (line 136) | inline bool removeDirectory(const std::string& path)
FILE: libs/os/file.h
function namespace (line 25) | namespace os
FILE: libs/os/fs.h
function namespace (line 46) | namespace boost { namespace filesystem { typedef std::size_t file_time_t...
function namespace (line 52) | namespace os
FILE: libs/os/path.h
function path_equal_n (line 44) | inline bool path_equal_n(const char* path, const char* other, std::size_...
function path_is_absolute (line 56) | inline bool path_is_absolute(const char* path)
function namespace (line 80) | namespace os
FILE: libs/parser/CodeTokeniser.h
function namespace (line 16) | namespace parser
function class (line 534) | class Macro
function class (line 554) | class SingleCodeFileTokeniser :
function class (line 656) | class CodeTokeniser :
function StringList (line 898) | static StringList getMacroTokens(std::string token, const Macro& macro, ...
function handlePreprocessorToken (line 914) | void handlePreprocessorToken(const std::string& token)
function parseMacro (line 987) | void parseMacro(const std::string& token)
function skipInactivePreprocessorBlock (line 1067) | void skipInactivePreprocessorBlock()
FILE: libs/parser/DefBlockSyntaxParser.h
function namespace (line 11) | namespace parser
function class (line 204) | class DefNameSyntax :
function setName (line 224) | void setName(const std::string& name)
function Ptr (line 234) | static Ptr Create(const std::string& name)
function class (line 242) | class DefBlockSyntax :
FILE: libs/parser/DefTokeniser.h
function namespace (line 11) | namespace parser
function class (line 360) | class DefTokeniser
type string (line 440) | typedef string::Tokeniser<DefTokeniserFunc> CharTokeniser;
type string (line 528) | typedef string::Tokeniser<DefTokeniserFunc, CharStreamIterator> CharToke...
function std (line 533) | static std::istream& setNoskipws(std::istream& is)
FILE: libs/parser/GuiTokeniser.h
function namespace (line 5) | namespace parser
FILE: libs/parser/ParseException.h
function namespace (line 6) | namespace parser
FILE: libs/parser/ThreadedDeclParser.h
function namespace (line 10) | namespace parser
function processFiles (line 76) | void processFiles()
FILE: libs/parser/ThreadedDefLoader.h
function namespace (line 9) | namespace parser
FILE: libs/parser/Tokeniser.h
function namespace (line 8) | namespace parser
FILE: libs/patch/PatchIterators.h
function namespace (line 6) | namespace patch
function class (line 255) | class ColumnWisePatchReverseIterator :
function class (line 270) | class RowWisePatchIteratorBase :
function class (line 311) | class RowWisePatchIterator :
function class (line 327) | class RowWisePatchReverseIterator :
FILE: libs/pivot.h
function Vector3 (line 16) | Vector3 zCol{-x.z(), -y.z(), -z.z()};
function billboard_viewpointOriented (line 21) | inline void billboard_viewpointOriented(Matrix4& rotation, const Matrix4...
function Matrix4 (line 38) | inline Matrix4 constructObject2Screen(const Matrix4& object2world, const...
function Matrix4 (line 48) | inline Matrix4 constructObject2Device(const Matrix4& object2world, const...
function Matrix4 (line 57) | inline Matrix4 constructDevice2Object(const Matrix4& object2world, const...
function Matrix4 (line 80) | inline Matrix4 getInverseScale(const Matrix4& transform)
function Matrix4 (line 86) | inline Matrix4 getPerspectiveScale(const Matrix4& pivot2screen)
function Matrix4 (line 98) | inline Matrix4 constructPivot2Device(const Matrix4& pivot2world, const V...
function Matrix4 (line 125) | inline Matrix4 constructDevice2Pivot(const Matrix4& pivot2world, const V...
FILE: libs/pugixml/pugixml.cpp
type pugi (line 183) | namespace pugi
type xml_attribute_struct (line 1065) | struct xml_attribute_struct
method xml_attribute_struct (line 1067) | xml_attribute_struct(impl::xml_memory_page* page): header(page, 0), ...
method xml_attribute_struct (line 1112) | xml_attribute_struct(impl::xml_memory_page* page): name(0), value(0)...
type xml_node_struct (line 1083) | struct xml_node_struct
method xml_node_struct (line 1085) | xml_node_struct(impl::xml_memory_page* page, xml_node_type type): he...
method xml_node_struct (line 1128) | xml_node_struct(impl::xml_memory_page* page, xml_node_type type): na...
type xml_attribute_struct (line 1110) | struct xml_attribute_struct
method xml_attribute_struct (line 1067) | xml_attribute_struct(impl::xml_memory_page* page): header(page, 0), ...
method xml_attribute_struct (line 1112) | xml_attribute_struct(impl::xml_memory_page* page): name(0), value(0)...
type xml_node_struct (line 1126) | struct xml_node_struct
method xml_node_struct (line 1085) | xml_node_struct(impl::xml_memory_page* page, xml_node_type type): he...
method xml_node_struct (line 1128) | xml_node_struct(impl::xml_memory_page* page, xml_node_type type): na...
function PUGI_IMPL_NS_BEGIN (line 198) | PUGI_IMPL_NS_BEGIN
function PUGI_IMPL_FN (line 204) | PUGI_IMPL_FN void default_deallocate(void* ptr)
type xml_memory_management_function_storage (line 210) | struct xml_memory_management_function_storage
function PUGI_IMPL_NS_END (line 222) | PUGI_IMPL_NS_END
function PUGI_IMPL_FN (line 239) | PUGI_IMPL_FN bool strequal(const char_t* src, const char_t* dst)
function PUGI_IMPL_FN (line 251) | PUGI_IMPL_FN bool strequalrange(const char_t* lhs, const char_t* rhs, si...
function PUGI_IMPL_FN (line 261) | PUGI_IMPL_FN size_t strlength_wide(const wchar_t* s)
function PUGI_IMPL_NS_END (line 273) | PUGI_IMPL_NS_END
function PUGI_IMPL_NS_BEGIN (line 303) | PUGI_IMPL_NS_BEGIN
function PUGI_IMPL_FN_NO_INLINE (line 409) | PUGI_IMPL_FN_NO_INLINE bool compact_hash_table::rehash(size_t count)
type xml_allocator (line 471) | struct xml_allocator
method xml_allocator (line 525) | xml_allocator(xml_memory_page* root): _root(root), _busy_size(root->bu...
method xml_memory_page (line 532) | xml_memory_page* allocate_page(size_t data_size)
method deallocate_page (line 550) | static void deallocate_page(xml_memory_page* page)
method deallocate_memory (line 609) | void deallocate_memory(void* ptr, size_t size, xml_memory_page* page)
method char_t (line 653) | char_t* allocate_string(size_t length)
method deallocate_string (line 687) | void deallocate_string(char_t* string)
method reserve (line 706) | bool reserve()
type xml_memory_page (line 473) | struct xml_memory_page
method xml_memory_page (line 475) | static xml_memory_page* construct(void* memory)
type xml_memory_string_header (line 517) | struct xml_memory_string_header
type xml_allocator (line 523) | struct xml_allocator
method xml_allocator (line 525) | xml_allocator(xml_memory_page* root): _root(root), _busy_size(root->bu...
method xml_memory_page (line 532) | xml_memory_page* allocate_page(size_t data_size)
method deallocate_page (line 550) | static void deallocate_page(xml_memory_page* page)
method deallocate_memory (line 609) | void deallocate_memory(void* ptr, size_t size, xml_memory_page* page)
method char_t (line 653) | char_t* allocate_string(size_t length)
method deallocate_string (line 687) | void deallocate_string(char_t* string)
method reserve (line 706) | bool reserve()
function PUGI_IMPL_FN_NO_INLINE (line 723) | PUGI_IMPL_FN_NO_INLINE void* xml_allocator::allocate_memory_oob(size_t s...
class compact_header (line 767) | class compact_header
method compact_header (line 770) | compact_header(xml_memory_page* page, unsigned int flags)
method xml_memory_page (line 796) | xml_memory_page* get_page() const
function PUGI_IMPL_FN (line 810) | PUGI_IMPL_FN xml_memory_page* compact_get_page(const void* object, int h...
function PUGI_IMPL_FN_NO_INLINE (line 817) | PUGI_IMPL_FN_NO_INLINE T* compact_get_value(const void* object)
function PUGI_IMPL_FN_NO_INLINE (line 822) | PUGI_IMPL_FN_NO_INLINE void compact_set_value(const void* object, T* value)
class compact_pointer (line 827) | class compact_pointer
method compact_pointer (line 830) | compact_pointer(): _data(0)
method T (line 880) | T* operator->() const
class compact_pointer_parent (line 889) | class compact_pointer_parent
method compact_pointer_parent (line 892) | compact_pointer_parent(): _data(0)
method T (line 960) | T* operator->() const
class compact_string (line 969) | class compact_string
method compact_string (line 972) | compact_string(): _data(0)
type pugi (line 1063) | namespace pugi
type xml_attribute_struct (line 1065) | struct xml_attribute_struct
method xml_attribute_struct (line 1067) | xml_attribute_struct(impl::xml_memory_page* page): header(page, 0), ...
method xml_attribute_struct (line 1112) | xml_attribute_struct(impl::xml_memory_page* page): name(0), value(0)...
type xml_node_struct (line 1083) | struct xml_node_struct
method xml_node_struct (line 1085) | xml_node_struct(impl::xml_memory_page* page, xml_node_type type): he...
method xml_node_struct (line 1128) | xml_node_struct(impl::xml_memory_page* page, xml_node_type type): na...
type xml_attribute_struct (line 1110) | struct xml_attribute_struct
method xml_attribute_struct (line 1067) | xml_attribute_struct(impl::xml_memory_page* page): header(page, 0), ...
method xml_attribute_struct (line 1112) | xml_attribute_struct(impl::xml_memory_page* page): name(0), value(0)...
type xml_node_struct (line 1126) | struct xml_node_struct
method xml_node_struct (line 1085) | xml_node_struct(impl::xml_memory_page* page, xml_node_type type): he...
method xml_node_struct (line 1128) | xml_node_struct(impl::xml_memory_page* page, xml_node_type type): na...
type pugi (line 1108) | namespace pugi
type xml_attribute_struct (line 1065) | struct xml_attribute_struct
method xml_attribute_struct (line 1067) | xml_attribute_struct(impl::xml_memory_page* page): header(page, 0), ...
method xml_attribute_struct (line 1112) | xml_attribute_struct(impl::xml_memory_page* page): name(0), value(0)...
type xml_node_struct (line 1083) | struct xml_node_struct
method xml_node_struct (line 1085) | xml_node_struct(impl::xml_memory_page* page, xml_node_type type): he...
method xml_node_struct (line 1128) | xml_node_struct(impl::xml_memory_page* page, xml_node_type type): na...
type xml_attribute_struct (line 1110) | struct xml_attribute_struct
method xml_attribute_struct (line 1067) | xml_attribute_struct(impl::xml_memory_page* page): header(page, 0), ...
method xml_attribute_struct (line 1112) | xml_attribute_struct(impl::xml_memory_page* page): name(0), value(0)...
type xml_node_struct (line 1126) | struct xml_node_struct
method xml_node_struct (line 1085) | xml_node_struct(impl::xml_memory_page* page, xml_node_type type): he...
method xml_node_struct (line 1128) | xml_node_struct(impl::xml_memory_page* page, xml_node_type type): na...
function PUGI_IMPL_NS_BEGIN (line 1150) | PUGI_IMPL_NS_BEGIN
type xml_document_struct (line 1157) | struct xml_document_struct: public xml_node_struct, public xml_allocator
method xml_document_struct (line 1159) | xml_document_struct(xml_memory_page* page): xml_node_struct(page, node...
function xml_allocator (line 1172) | inline xml_allocator& get_allocator(const Object* object)
method xml_allocator (line 525) | xml_allocator(xml_memory_page* root): _root(root), _busy_size(root->bu...
method xml_memory_page (line 532) | xml_memory_page* allocate_page(size_t data_size)
method deallocate_page (line 550) | static void deallocate_page(xml_memory_page* page)
method deallocate_memory (line 609) | void deallocate_memory(void* ptr, size_t size, xml_memory_page* page)
method char_t (line 653) | char_t* allocate_string(size_t length)
method deallocate_string (line 687) | void deallocate_string(char_t* string)
method reserve (line 706) | bool reserve()
function xml_document_struct (line 1179) | inline xml_document_struct& get_document(const Object* object)
method xml_document_struct (line 1159) | xml_document_struct(xml_memory_page* page): xml_node_struct(page, node...
function PUGI_IMPL_NS_END (line 1185) | PUGI_IMPL_NS_END
function xml_node_struct (line 1198) | inline xml_node_struct* allocate_node(xml_allocator& alloc, xml_node_typ...
function destroy_attribute (line 1207) | inline void destroy_attribute(xml_attribute_struct* a, xml_allocator& al...
function destroy_node (line 1218) | inline void destroy_node(xml_node_struct* n, xml_allocator& alloc)
function append_node (line 1247) | inline void append_node(xml_node_struct* child, xml_node_struct* node)
function prepend_node (line 1268) | inline void prepend_node(xml_node_struct* child, xml_node_struct* node)
function insert_node_after (line 1286) | inline void insert_node_after(xml_node_struct* child, xml_node_struct* n...
function insert_node_before (line 1305) | inline void insert_node_before(xml_node_struct* child, xml_node_struct* ...
function remove_node (line 1324) | inline void remove_node(xml_node_struct* node)
function append_attribute (line 1346) | inline void append_attribute(xml_attribute_struct* attr, xml_node_struct...
function prepend_attribute (line 1365) | inline void prepend_attribute(xml_attribute_struct* attr, xml_node_struc...
function insert_attribute_after (line 1381) | inline void insert_attribute_after(xml_attribute_struct* attr, xml_attri...
function insert_attribute_before (line 1395) | inline void insert_attribute_before(xml_attribute_struct* attr, xml_attr...
function remove_attribute (line 1409) | inline void remove_attribute(xml_attribute_struct* attr, xml_node_struct...
function PUGI_IMPL_FN_NO_INLINE (line 1428) | PUGI_IMPL_FN_NO_INLINE xml_node_struct* append_new_node(xml_node_struct*...
function PUGI_IMPL_FN_NO_INLINE (line 1440) | PUGI_IMPL_FN_NO_INLINE xml_attribute_struct* append_new_attribute(xml_no...
function PUGI_IMPL_NS_END (line 1451) | PUGI_IMPL_NS_END
type opt_true (line 1460) | struct opt_true
function PUGI_IMPL_NS_END (line 1464) | PUGI_IMPL_NS_END
function endian_swap (line 1473) | inline uint32_t endian_swap(uint32_t value)
type utf8_counter (line 1478) | struct utf8_counter
method value_type (line 1482) | static value_type low(value_type result, uint32_t ch)
method value_type (line 1492) | static value_type high(value_type result, uint32_t)
type utf8_writer (line 1499) | struct utf8_writer
method value_type (line 1503) | static value_type low(value_type result, uint32_t ch)
method value_type (line 1528) | static value_type high(value_type result, uint32_t ch)
method value_type (line 1538) | static value_type any(value_type result, uint32_t ch)
type utf16_counter (line 1544) | struct utf16_counter
method value_type (line 1548) | static value_type low(value_type result, uint32_t)
method value_type (line 1553) | static value_type high(value_type result, uint32_t)
type utf16_writer (line 1559) | struct utf16_writer
method value_type (line 1563) | static value_type low(value_type result, uint32_t ch)
method value_type (line 1570) | static value_type high(value_type result, uint32_t ch)
method value_type (line 1581) | static value_type any(value_type result, uint32_t ch)
type utf32_counter (line 1587) | struct utf32_counter
method value_type (line 1591) | static value_type low(value_type result, uint32_t)
method value_type (line 1596) | static value_type high(value_type result, uint32_t)
type utf32_writer (line 1602) | struct utf32_writer
method value_type (line 1606) | static value_type low(value_type result, uint32_t ch)
method value_type (line 1613) | static value_type high(value_type result, uint32_t ch)
method value_type (line 1620) | static value_type any(value_type result, uint32_t ch)
type latin1_writer (line 1628) | struct latin1_writer
method value_type (line 1632) | static value_type low(value_type result, uint32_t ch)
method value_type (line 1639) | static value_type high(value_type result, uint32_t ch)
type utf8_decoder (line 1649) | struct utf8_decoder
method process (line 1653) | static inline typename Traits::value_type process(const uint8_t* data,...
type utf16_decoder (line 1716) | struct utf16_decoder
method process (line 1720) | static inline typename Traits::value_type process(const uint16_t* data...
type utf32_decoder (line 1768) | struct utf32_decoder
method process (line 1772) | static inline typename Traits::value_type process(const uint32_t* data...
type latin1_decoder (line 1798) | struct latin1_decoder
method process (line 1802) | static inline typename Traits::value_type process(const uint8_t* data,...
type wchar_selector (line 1815) | struct wchar_selector
type wchar_selector<2> (line 1817) | struct wchar_selector<2>
type wchar_selector<4> (line 1825) | struct wchar_selector<4>
type wchar_decoder (line 1836) | struct wchar_decoder
method process (line 1840) | static inline typename Traits::value_type process(const wchar_t* data,...
function PUGI_IMPL_FN (line 1849) | PUGI_IMPL_FN void convert_wchar_endian_swap(wchar_t* result, const wchar...
type chartypex_t (line 1891) | enum chartypex_t
function PUGI_IMPL_FN (line 1931) | PUGI_IMPL_FN bool is_little_endian()
function PUGI_IMPL_FN (line 1938) | PUGI_IMPL_FN xml_encoding get_wchar_encoding()
function PUGI_IMPL_FN (line 1948) | PUGI_IMPL_FN bool parse_declaration_encoding(const uint8_t* data, size_t...
function PUGI_IMPL_FN (line 2002) | PUGI_IMPL_FN xml_encoding guess_buffer_encoding(const uint8_t* data, siz...
function PUGI_IMPL_FN (line 2050) | PUGI_IMPL_FN xml_encoding get_buffer_encoding(xml_encoding encoding, con...
function PUGI_IMPL_FN (line 2070) | PUGI_IMPL_FN bool get_mutable_buffer(char_t*& out_buffer, size_t& out_le...
function PUGI_IMPL_FN (line 2099) | PUGI_IMPL_FN bool need_endian_swap_utf(xml_encoding le, xml_encoding re)
function PUGI_IMPL_FN (line 2105) | PUGI_IMPL_FN bool convert_buffer_endian_swap(char_t*& out_buffer, size_t...
function PUGI_IMPL_FN (line 2134) | PUGI_IMPL_FN bool convert_buffer_generic(char_t*& out_buffer, size_t& ou...
function PUGI_IMPL_FN (line 2159) | PUGI_IMPL_FN bool convert_buffer(char_t*& out_buffer, size_t& out_length...
function PUGI_IMPL_FN (line 2204) | PUGI_IMPL_FN bool convert_buffer_generic(char_t*& out_buffer, size_t& ou...
function PUGI_IMPL_FN (line 2229) | PUGI_IMPL_FN size_t get_latin1_7bit_prefix_length(const uint8_t* data, s...
function PUGI_IMPL_FN (line 2238) | PUGI_IMPL_FN bool convert_buffer_latin1(char_t*& out_buffer, size_t& out...
function PUGI_IMPL_FN (line 2275) | PUGI_IMPL_FN bool convert_buffer(char_t*& out_buffer, size_t& out_length...
function PUGI_IMPL_FN (line 2310) | PUGI_IMPL_FN size_t as_utf8_begin(const wchar_t* str, size_t length)
function PUGI_IMPL_FN (line 2316) | PUGI_IMPL_FN void as_utf8_end(char* buffer, size_t size, const wchar_t* ...
function PUGI_IMPL_FN (line 2328) | PUGI_IMPL_FN std::string as_utf8_impl(const wchar_t* str, size_t length)
function PUGI_IMPL_FN (line 2343) | PUGI_IMPL_FN std::basic_string<wchar_t> as_wide_impl(const char* str, si...
function strcpy_insitu_allow (line 2369) | inline bool strcpy_insitu_allow(size_t length, const Header& header, uin...
function PUGI_IMPL_FN (line 2386) | PUGI_IMPL_FN bool strcpy_insitu(String& dest, Header& header, uintptr_t ...
type gap (line 2436) | struct gap
method gap (line 2441) | gap(): end(0), size(0)
method push (line 2447) | void push(char_t*& s, size_t count)
method char_t (line 2464) | char_t* flush(char_t* s)
function PUGI_IMPL_FN (line 2478) | PUGI_IMPL_FN char_t* strconv_escape(char_t* s, gap& g)
function PUGI_IMPL_FN (line 2631) | PUGI_IMPL_FN char_t* strconv_comment(char_t* s, char_t endch)
function PUGI_IMPL_FN (line 2659) | PUGI_IMPL_FN char_t* strconv_cdata(char_t* s, char_t endch)
type strconv_pcdata_impl (line 2689) | struct strconv_pcdata_impl
method char_t (line 2691) | static char_t* parse(char_t* s)
function PUGI_IMPL_FN (line 2740) | PUGI_IMPL_FN strconv_pcdata_t get_strconv_pcdata(unsigned int optmask)
type strconv_attribute_impl (line 2760) | struct strconv_attribute_impl
method char_t (line 2762) | static char_t* parse_wnorm(char_t* s, char_t end_quote)
method char_t (line 2814) | static char_t* parse_wconv(char_t* s, char_t end_quote)
method char_t (line 2850) | static char_t* parse_eol(char_t* s, char_t end_quote)
method char_t (line 2882) | static char_t* parse_simple(char_t* s, char_t end_quote)
function PUGI_IMPL_FN (line 2909) | PUGI_IMPL_FN strconv_attribute_t get_strconv_attribute(unsigned int optm...
function xml_parse_result (line 2935) | inline xml_parse_result make_parse_result(xml_parse_status status, ptrdi...
type xml_parser (line 2944) | struct xml_parser
method xml_parser (line 2950) | xml_parser(xml_allocator* alloc_): alloc(alloc_), error_offset(0), err...
method char_t (line 2961) | char_t* parse_doctype_primitive(char_t* s)
method char_t (line 2994) | char_t* parse_doctype_ignore(char_t* s)
method char_t (line 3025) | char_t* parse_doctype_group(char_t* s, char_t endch)
method char_t (line 3071) | char_t* parse_exclamation(char_t* s, xml_node_struct* cursor, unsigned...
method char_t (line 3180) | char_t* parse_question(char_t* s, xml_node_struct*& ref_cursor, unsign...
method char_t (line 3274) | char_t* parse_tree(char_t* s, xml_node_struct* root, unsigned int optm...
method char_t (line 3531) | static char_t* parse_skip_bom(char_t* s)
method char_t (line 3537) | static char_t* parse_skip_bom(char_t* s)
method has_element_node_siblings (line 3543) | static bool has_element_node_siblings(xml_node_struct* node)
method xml_parse_result (line 3555) | static xml_parse_result parse(char_t* buffer, size_t length, xml_docum...
function PUGI_IMPL_FN (line 3604) | PUGI_IMPL_FN xml_encoding get_write_native_encoding()
function PUGI_IMPL_FN (line 3613) | PUGI_IMPL_FN xml_encoding get_write_encoding(xml_encoding encoding)
function PUGI_IMPL_FN (line 3631) | PUGI_IMPL_FN size_t convert_buffer_output_generic(typename T::value_type...
function PUGI_IMPL_FN (line 3640) | PUGI_IMPL_FN size_t convert_buffer_output_generic(typename T::value_type...
function PUGI_IMPL_FN (line 3656) | PUGI_IMPL_FN size_t get_valid_length(const char_t* data, size_t length)
function PUGI_IMPL_FN (line 3664) | PUGI_IMPL_FN size_t convert_buffer_output(char_t* r_char, uint8_t* r_u8,...
function PUGI_IMPL_FN (line 3702) | PUGI_IMPL_FN size_t get_valid_length(const char_t* data, size_t length)
function PUGI_IMPL_FN (line 3718) | PUGI_IMPL_FN size_t convert_buffer_output(char_t* /* r_char */, uint8_t*...
class xml_buffered_writer (line 3742) | class xml_buffered_writer
method xml_buffered_writer (line 3748) | xml_buffered_writer(xml_writer& writer_, xml_encoding user_encoding): ...
method flush (line 3753) | size_t flush()
method flush (line 3760) | void flush(const char_t* data, size_t size)
method write_direct (line 3778) | void write_direct(const char_t* data, size_t length)
method write_buffer (line 3817) | void write_buffer(const char_t* data, size_t length)
method write_string (line 3832) | void write_string(const char_t* data)
method write (line 3857) | void write(char_t d0)
method write (line 3866) | void write(char_t d0, char_t d1)
method write (line 3876) | void write(char_t d0, char_t d1, char_t d2)
method write (line 3887) | void write(char_t d0, char_t d1, char_t d2, char_t d3)
method write (line 3899) | void write(char_t d0, char_t d1, char_t d2, char_t d3, char_t d4)
method write (line 3912) | void write(char_t d0, char_t d1, char_t d2, char_t d3, char_t d4, char...
function PUGI_IMPL_FN (line 3956) | PUGI_IMPL_FN void text_output_escaped(xml_buffered_writer& writer, const...
function PUGI_IMPL_FN (line 4008) | PUGI_IMPL_FN void text_output(xml_buffered_writer& writer, const char_t*...
function PUGI_IMPL_FN (line 4016) | PUGI_IMPL_FN void text_output_cdata(xml_buffered_writer& writer, const c...
function PUGI_IMPL_FN (line 4038) | PUGI_IMPL_FN void text_output_indent(xml_buffered_writer& writer, const ...
function PUGI_IMPL_FN (line 4078) | PUGI_IMPL_FN void node_output_comment(xml_buffered_writer& writer, const...
function PUGI_IMPL_FN (line 4103) | PUGI_IMPL_FN void node_output_pi_value(xml_buffered_writer& writer, cons...
function PUGI_IMPL_FN (line 4124) | PUGI_IMPL_FN void node_output_attributes(xml_buffered_writer& writer, xm...
function PUGI_IMPL_FN (line 4152) | PUGI_IMPL_FN bool node_output_start(xml_buffered_writer& writer, xml_nod...
function PUGI_IMPL_FN (line 4214) | PUGI_IMPL_FN void node_output_end(xml_buffered_writer& writer, xml_node_...
function PUGI_IMPL_FN (line 4224) | PUGI_IMPL_FN void node_output_simple(xml_buffered_writer& writer, xml_no...
type indent_flags_t (line 4280) | enum indent_flags_t
function PUGI_IMPL_FN (line 4286) | PUGI_IMPL_FN void node_output(xml_buffered_writer& writer, xml_node_stru...
function PUGI_IMPL_FN (line 4379) | PUGI_IMPL_FN bool has_declaration(xml_node_struct* node)
function PUGI_IMPL_FN (line 4392) | PUGI_IMPL_FN bool is_attribute_of(xml_attribute_struct* attr, xml_node_s...
function PUGI_IMPL_FN (line 4401) | PUGI_IMPL_FN bool allow_insert_attribute(xml_node_type parent)
function PUGI_IMPL_FN (line 4406) | PUGI_IMPL_FN bool allow_insert_child(xml_node_type parent, xml_node_type...
function PUGI_IMPL_FN (line 4415) | PUGI_IMPL_FN bool allow_move(xml_node parent, xml_node child)
function PUGI_IMPL_FN (line 4440) | PUGI_IMPL_FN void node_copy_string(String& dest, Header& header, uintptr...
function PUGI_IMPL_FN (line 4459) | PUGI_IMPL_FN void node_copy_contents(xml_node_struct* dn, xml_node_struc...
function PUGI_IMPL_FN (line 4476) | PUGI_IMPL_FN void node_copy_tree(xml_node_struct* dn, xml_node_struct* sn)
function PUGI_IMPL_FN (line 4530) | PUGI_IMPL_FN void node_copy_attribute(xml_attribute_struct* da, xml_attr...
function is_text_node (line 4539) | inline bool is_text_node(xml_node_struct* node)
function PUGI_IMPL_FN (line 4547) | PUGI_IMPL_FN PUGI_IMPL_UNSIGNED_OVERFLOW U string_to_integer(const char_...
function PUGI_IMPL_FN (line 4629) | PUGI_IMPL_FN int get_value_int(const char_t* value)
function get_value_uint (line 4634) | PUGI_IMPL_FN unsigned int get_value_uint(const char_t* value)
function PUGI_IMPL_FN (line 4639) | PUGI_IMPL_FN double get_value_double(const char_t* value)
function PUGI_IMPL_FN (line 4648) | PUGI_IMPL_FN float get_value_float(const char_t* value)
function PUGI_IMPL_FN (line 4657) | PUGI_IMPL_FN bool get_value_bool(const char_t* value)
function get_value_llong (line 4667) | PUGI_IMPL_FN long long get_value_llong(const char_t* value)
function get_value_ullong (line 4672) | PUGI_IMPL_FN unsigned long long get_value_ullong(const char_t* value)
function PUGI_IMPL_FN (line 4678) | PUGI_IMPL_FN PUGI_IMPL_UNSIGNED_OVERFLOW char_t* integer_to_string(char_...
function PUGI_IMPL_FN (line 4700) | PUGI_IMPL_FN bool set_value_ascii(String& dest, Header& header, uintptr_...
function PUGI_IMPL_FN (line 4716) | PUGI_IMPL_FN bool set_value_integer(String& dest, Header& header, uintpt...
function PUGI_IMPL_FN (line 4726) | PUGI_IMPL_FN bool set_value_convert(String& dest, Header& header, uintpt...
function PUGI_IMPL_FN (line 4735) | PUGI_IMPL_FN bool set_value_convert(String& dest, Header& header, uintpt...
function PUGI_IMPL_FN (line 4744) | PUGI_IMPL_FN bool set_value_bool(String& dest, Header& header, uintptr_t...
function PUGI_IMPL_FN (line 4749) | PUGI_IMPL_FN xml_parse_result load_buffer_impl(xml_document_struct* doc,...
function PUGI_IMPL_FN (line 4789) | PUGI_IMPL_FN xml_parse_status get_file_size(FILE* file, size_t& out_result)
function PUGI_IMPL_FN (line 4839) | PUGI_IMPL_FN size_t zero_terminate_buffer(void* buffer, size_t size, xml...
function PUGI_IMPL_FN (line 4863) | PUGI_IMPL_FN xml_parse_result load_file_impl(xml_document_struct* doc, F...
function PUGI_IMPL_FN (line 4892) | PUGI_IMPL_FN void close_file(FILE* file)
type xml_stream_chunk (line 4898) | struct xml_stream_chunk
method xml_stream_chunk (line 4900) | static xml_stream_chunk* create()
method destroy (line 4908) | static void destroy(xml_stream_chunk* chunk)
method xml_stream_chunk (line 4921) | xml_stream_chunk(): next(0), size(0)
function PUGI_IMPL_FN (line 4931) | PUGI_IMPL_FN xml_parse_status load_stream_data_noseek(std::basic_istream...
function PUGI_IMPL_FN (line 4985) | PUGI_IMPL_FN xml_parse_status load_stream_data_seek(std::basic_istream<T...
function PUGI_IMPL_FN (line 5021) | PUGI_IMPL_FN xml_parse_result load_stream_impl(xml_document_struct* doc,...
function PUGI_IMPL_FN (line 5048) | PUGI_IMPL_FN FILE* open_file_wide(const wchar_t* path, const wchar_t* mode)
function PUGI_IMPL_FN (line 5058) | PUGI_IMPL_FN char* convert_path_heap(const wchar_t* str)
function PUGI_IMPL_FN (line 5079) | PUGI_IMPL_FN FILE* open_file_wide(const wchar_t* path, const wchar_t* mode)
function PUGI_IMPL_FN (line 5099) | PUGI_IMPL_FN FILE* open_file(const char* path, const char* mode)
function PUGI_IMPL_FN (line 5109) | PUGI_IMPL_FN bool save_file_impl(const xml_document& doc, FILE* file, co...
type name_null_sentry (line 5119) | struct name_null_sentry
method name_null_sentry (line 5124) | name_null_sentry(xml_node_struct* node_): node(node_), name(node_->name)
function PUGI_IMPL_NS_END (line 5134) | PUGI_IMPL_NS_END
function PUGI_IMPL_FN (line 7140) | PUGI_IMPL_FN xml_document::~xml_document()
function PUGI_IMPL_FN (line 7164) | PUGI_IMPL_FN void xml_document::reset()
function PUGI_IMPL_FN (line 7170) | PUGI_IMPL_FN void xml_document::reset(const xml_document& proto)
function PUGI_IMPL_FN (line 7177) | PUGI_IMPL_FN void xml_document::_create()
function PUGI_IMPL_FN (line 7220) | PUGI_IMPL_FN void xml_document::_destroy()
function PUGI_IMPL_FN (line 7260) | PUGI_IMPL_FN void xml_document::_move(xml_document& rhs) PUGIXML_NOEXCEP...
function PUGI_IMPL_FN (line 7371) | PUGI_IMPL_FN xml_parse_result xml_document::load(std::basic_istream<char...
function PUGI_IMPL_FN (line 7378) | PUGI_IMPL_FN xml_parse_result xml_document::load(std::basic_istream<wcha...
function PUGI_IMPL_FN (line 7386) | PUGI_IMPL_FN xml_parse_result xml_document::load_string(const char_t* co...
function PUGI_IMPL_FN (line 7398) | PUGI_IMPL_FN xml_parse_result xml_document::load(const char_t* contents,...
function PUGI_IMPL_FN (line 7403) | PUGI_IMPL_FN xml_parse_result xml_document::load_file(const char* path_,...
function PUGI_IMPL_FN (line 7413) | PUGI_IMPL_FN xml_parse_result xml_document::load_file(const wchar_t* pat...
function PUGI_IMPL_FN (line 7423) | PUGI_IMPL_FN xml_parse_result xml_document::load_buffer(const void* cont...
function PUGI_IMPL_FN (line 7430) | PUGI_IMPL_FN xml_parse_result xml_document::load_buffer_inplace(void* co...
function PUGI_IMPL_FN (line 7437) | PUGI_IMPL_FN xml_parse_result xml_document::load_buffer_inplace_own(void...
function PUGI_IMPL_FN (line 7444) | PUGI_IMPL_FN void xml_document::save(xml_writer& writer, const char_t* i...
function PUGI_IMPL_FN (line 7473) | PUGI_IMPL_FN void xml_document::save(std::basic_ostream<char, std::char_...
function PUGI_IMPL_FN (line 7480) | PUGI_IMPL_FN void xml_document::save(std::basic_ostream<wchar_t, std::ch...
function PUGI_IMPL_FN (line 7488) | PUGI_IMPL_FN bool xml_document::save_file(const char* path_, const char_...
function PUGI_IMPL_FN (line 7496) | PUGI_IMPL_FN bool xml_document::save_file(const wchar_t* path_, const ch...
function PUGI_IMPL_FN (line 7504) | PUGI_IMPL_FN xml_node xml_document::document_element() const
function PUGI_IMPL_FN (line 7516) | PUGI_IMPL_FN std::string PUGIXML_FUNCTION as_utf8(const wchar_t* str)
function PUGI_IMPL_FN (line 7523) | PUGI_IMPL_FN std::string PUGIXML_FUNCTION as_utf8(const std::basic_strin...
function PUGI_IMPL_FN (line 7528) | PUGI_IMPL_FN std::basic_string<wchar_t> PUGIXML_FUNCTION as_wide(const c...
function PUGI_IMPL_FN (line 7535) | PUGI_IMPL_FN std::basic_string<wchar_t> PUGIXML_FUNCTION as_wide(const s...
function PUGI_IMPL_FN (line 7541) | PUGI_IMPL_FN void PUGIXML_FUNCTION set_memory_management_functions(alloc...
function PUGI_IMPL_FN (line 7547) | PUGI_IMPL_FN allocation_function PUGIXML_FUNCTION get_memory_allocation_...
function PUGI_IMPL_FN (line 7552) | PUGI_IMPL_FN deallocation_function PUGIXML_FUNCTION get_memory_deallocat...
type std (line 7559) | namespace std
function PUGI_IMPL_FN (line 7562) | PUGI_IMPL_FN std::bidirectional_iterator_tag _Iter_cat(const pugi::xml...
function PUGI_IMPL_FN (line 7567) | PUGI_IMPL_FN std::bidirectional_iterator_tag _Iter_cat(const pugi::xml...
function PUGI_IMPL_FN (line 7572) | PUGI_IMPL_FN std::bidirectional_iterator_tag _Iter_cat(const pugi::xml...
function PUGI_IMPL_FN (line 7583) | PUGI_IMPL_FN std::bidirectional_iterator_tag __iterator_category(const...
function PUGI_IMPL_FN (line 7588) | PUGI_IMPL_FN std::bidirectional_iterator_tag __iterator_category(const...
function PUGI_IMPL_FN (line 7593) | PUGI_IMPL_FN std::bidirectional_iterator_tag __iterator_category(const...
type std (line 7580) | namespace std
function PUGI_IMPL_FN (line 7562) | PUGI_IMPL_FN std::bidirectional_iterator_tag _Iter_cat(const pugi::xml...
function PUGI_IMPL_FN (line 7567) | PUGI_IMPL_FN std::bidirectional_iterator_tag _Iter_cat(const pugi::xml...
function PUGI_IMPL_FN (line 7572) | PUGI_IMPL_FN std::bidirectional_iterator_tag _Iter_cat(const pugi::xml...
function PUGI_IMPL_FN (line 7583) | PUGI_IMPL_FN std::bidirectional_iterator_tag __iterator_category(const...
function PUGI_IMPL_FN (line 7588) | PUGI_IMPL_FN std::bidirectional_iterator_tag __iterator_category(const...
function PUGI_IMPL_FN (line 7593) | PUGI_IMPL_FN std::bidirectional_iterator_tag __iterator_category(const...
function PUGI_IMPL_NS_BEGIN (line 7602) | PUGI_IMPL_NS_BEGIN
type not_equal_to (line 7611) | struct not_equal_to
type less (line 7619) | struct less
type less_equal (line 7627) | struct less_equal
function swap (line 7635) | inline void swap(T& lhs, T& rhs)
function PUGI_IMPL_FN (line 7642) | PUGI_IMPL_FN I min_element(I begin, I end, const Pred& pred)
function PUGI_IMPL_FN (line 7653) | PUGI_IMPL_FN void reverse(I begin, I end)
function PUGI_IMPL_FN (line 7659) | PUGI_IMPL_FN I unique(I begin, I end)
function PUGI_IMPL_FN (line 7684) | PUGI_IMPL_FN void insertion_sort(T* begin, T* end, const Pred& pred)
function I (line 7706) | inline I median3(I first, I middle, I last, const Pred& pred)
function PUGI_IMPL_FN (line 7718) | PUGI_IMPL_FN void partition3(T* begin, T* end, T pivot, const Pred& pred...
function PUGI_IMPL_FN (line 7745) | PUGI_IMPL_FN void sort(I begin, I end, const Pred& pred)
function PUGI_IMPL_FN (line 7775) | PUGI_IMPL_FN bool hash_insert(const void** table, size_t size, const voi...
type xpath_memory_block (line 7823) | struct xpath_memory_block
type xpath_allocator (line 7835) | struct xpath_allocator
method xpath_allocator (line 7841) | xpath_allocator(xpath_memory_block* root, bool* error = 0): _root(root...
method revert (line 7929) | void revert(const xpath_allocator& state)
method release (line 7948) | void release()
type xpath_allocator_capture (line 7964) | struct xpath_allocator_capture
method xpath_allocator_capture (line 7966) | xpath_allocator_capture(xpath_allocator* alloc): _target(alloc), _stat...
type xpath_stack (line 7979) | struct xpath_stack
type xpath_stack_data (line 7985) | struct xpath_stack_data
method xpath_stack_data (line 7993) | xpath_stack_data(): result(blocks + 0, &oom), temp(blocks + 1, &oom), ...
function PUGI_IMPL_NS_END (line 8008) | PUGI_IMPL_NS_END
function xpath_string (line 8039) | static xpath_string from_heap_preallocated(const char_t* begin, const ch...
function xpath_string (line 8046) | static xpath_string from_heap(const char_t* begin, const char_t* end, xp...
function xpath_string (line 8059) | xpath_string(): _buffer(PUGIXML_TEXT("")), _uses_heap(false), _length_he...
function append (line 8063) | void append(const xpath_string& o, xpath_allocator* alloc)
function char_t (line 8098) | const char_t* c_str() const
function length (line 8103) | size_t length() const
function char_t (line 8108) | char_t* data(xpath_allocator* alloc)
function empty (line 8126) | bool empty() const
function uses_heap (line 8141) | bool uses_heap() const
function PUGI_IMPL_NS_END (line 8146) | PUGI_IMPL_NS_END
function PUGI_IMPL_FN (line 8160) | PUGI_IMPL_FN const char_t* find_char(const char_t* s, char_t c)
function PUGI_IMPL_FN (line 8169) | PUGI_IMPL_FN const char_t* find_substring(const char_t* s, const char_t* p)
function PUGI_IMPL_FN (line 8180) | PUGI_IMPL_FN char_t tolower_ascii(char_t ch)
function PUGI_IMPL_FN (line 8185) | PUGI_IMPL_FN xpath_string string_value(const xpath_node& na, xpath_alloc...
function PUGI_IMPL_FN (line 8239) | PUGI_IMPL_FN bool node_is_before_sibling(xml_node_struct* ln, xml_node_s...
function PUGI_IMPL_FN (line 8263) | PUGI_IMPL_FN bool node_is_before(xml_node_struct* ln, xml_node_struct* rn)
function PUGI_IMPL_FN (line 8306) | PUGI_IMPL_FN bool node_is_ancestor(xml_node_struct* parent, xml_node_str...
function PUGI_IMPL_FN (line 8313) | PUGI_IMPL_FN const void* document_buffer_order(const xpath_node& xnode)
type document_order_comparator (line 8344) | struct document_order_comparator
function PUGI_IMPL_FN (line 8398) | PUGI_IMPL_FN double gen_nan()
function PUGI_IMPL_FN (line 8413) | PUGI_IMPL_FN bool is_nan(double value)
function PUGI_IMPL_FN (line 8426) | PUGI_IMPL_FN const char_t* convert_number_to_string_special(double value)
function PUGI_IMPL_FN (line 8458) | PUGI_IMPL_FN bool convert_number_to_boolean(double value)
function PUGI_IMPL_FN (line 8463) | PUGI_IMPL_FN void truncate_zeros(char* begin, char* end)
function PUGI_IMPL_FN (line 8472) | PUGI_IMPL_FN void convert_number_to_mantissa_exponent(double value, char...
function PUGI_IMPL_FN (line 8486) | PUGI_IMPL_FN void convert_number_to_mantissa_exponent(double value, char...
function PUGI_IMPL_FN (line 8515) | PUGI_IMPL_FN xpath_string convert_number_to_string(double value, xpath_a...
function PUGI_IMPL_FN (line 8582) | PUGI_IMPL_FN bool check_string_to_number_format(const char_t* string)
function PUGI_IMPL_FN (line 8612) | PUGI_IMPL_FN double convert_string_to_number(const char_t* string)
function PUGI_IMPL_FN (line 8625) | PUGI_IMPL_FN bool convert_string_to_number_scratch(char_t (&buffer)[32],...
function PUGI_IMPL_FN (line 8649) | PUGI_IMPL_FN double round_nearest(double value)
function PUGI_IMPL_FN (line 8654) | PUGI_IMPL_FN double round_nearest_nzero(double value)
function PUGI_IMPL_FN (line 8661) | PUGI_IMPL_FN const char_t* qualified_name(const xpath_node& node)
function PUGI_IMPL_FN (line 8666) | PUGI_IMPL_FN const char_t* local_name(const xpath_node& node)
type namespace_uri_predicate (line 8674) | struct namespace_uri_predicate
method namespace_uri_predicate (line 8679) | namespace_uri_predicate(const char_t* name)
function PUGI_IMPL_FN (line 8697) | PUGI_IMPL_FN const char_t* namespace_uri(xml_node node)
function PUGI_IMPL_FN (line 8715) | PUGI_IMPL_FN const char_t* namespace_uri(xml_attribute attr, xml_node pa...
function PUGI_IMPL_FN (line 8736) | PUGI_IMPL_FN const char_t* namespace_uri(const xpath_node& node)
function PUGI_IMPL_FN (line 8741) | PUGI_IMPL_FN char_t* normalize_space(char_t* buffer)
function PUGI_IMPL_FN (line 8769) | PUGI_IMPL_FN char_t* translate(char_t* buffer, const char_t* from, const...
function PUGI_IMPL_FN (line 8823) | PUGI_IMPL_FN char_t* translate_table(char_t* buffer, const unsigned char...
function is_xpath_attribute (line 8853) | inline bool is_xpath_attribute(const char_t* name)
type xpath_variable_boolean (line 8858) | struct xpath_variable_boolean: xpath_variable
method xpath_variable_boolean (line 8860) | xpath_variable_boolean(): xpath_variable(xpath_type_boolean), value(fa...
type xpath_variable_number (line 8868) | struct xpath_variable_number: xpath_variable
method xpath_variable_number (line 8870) | xpath_variable_number(): xpath_variable(xpath_type_number), value(0)
type xpath_variable_string (line 8878) | struct xpath_variable_string: xpath_variable
method xpath_variable_string (line 8880) | xpath_variable_string(): xpath_variable(xpath_type_string), value(0)
type xpath_variable_node_set (line 8893) | struct xpath_variable_node_set: xpath_variable
method xpath_variable_node_set (line 8895) | xpath_variable_node_set(): xpath_variable(xpath_type_node_set)
function PUGI_IMPL_FN (line 8905) | PUGI_IMPL_FN PUGI_IMPL_UNSIGNED_OVERFLOW unsigned int hash_string(const ...
function PUGI_IMPL_FN (line 8924) | PUGI_IMPL_FN T* new_xpath_variable(const char_t* name)
function PUGI_IMPL_FN (line 8940) | PUGI_IMPL_FN xpath_variable* new_xpath_variable(xpath_value_type type, c...
function PUGI_IMPL_FN (line 8961) | PUGI_IMPL_FN void delete_xpath_variable(T* var)
function PUGI_IMPL_FN (line 8967) | PUGI_IMPL_FN void delete_xpath_variable(xpath_value_type type, xpath_var...
function PUGI_IMPL_FN (line 8992) | PUGI_IMPL_FN bool copy_xpath_variable(xpath_variable* lhs, const xpath_v...
function PUGI_IMPL_FN (line 9014) | PUGI_IMPL_FN bool get_variable_scratch(char_t (&buffer)[32], xpath_varia...
function PUGI_IMPL_NS_END (line 9037) | PUGI_IMPL_NS_END
function PUGI_IMPL_FN (line 9057) | PUGI_IMPL_FN xpath_node_set::type_t xpath_sort(xpath_node* begin, xpath_...
function PUGI_IMPL_FN (line 9080) | PUGI_IMPL_FN xpath_node xpath_first(const xpath_node* begin, const xpath...
class xpath_node_set_raw (line 9101) | class xpath_node_set_raw
method xpath_node_set_raw (line 9110) | xpath_node_set_raw(): _type(xpath_node_set::type_unsorted), _begin(0),...
method xpath_node (line 9114) | xpath_node* begin() const
method xpath_node (line 9119) | xpath_node* end() const
method empty (line 9124) | bool empty() const
method size (line 9129) | size_t size() const
method xpath_node (line 9134) | xpath_node first() const
method push_back (line 9141) | void push_back(const xpath_node& node, xpath_allocator* alloc)
method append (line 9149) | void append(const xpath_node* begin_, const xpath_node* end_, xpath_al...
method sort_do (line 9173) | void sort_do()
method truncate (line 9178) | void truncate(xpath_node* pos)
method remove_duplicates (line 9185) | void remove_duplicates(xpath_allocator* alloc)
method type (line 9223) | xpath_node_set::type_t type() const
method set_type (line 9228) | void set_type(xpath_node_set::type_t value)
function PUGI_IMPL_FN_NO_INLINE (line 9234) | PUGI_IMPL_FN_NO_INLINE void xpath_node_set_raw::push_back_grow(const xpa...
function PUGI_IMPL_NS_END (line 9253) | PUGI_IMPL_NS_END
type lexeme_t (line 9266) | enum lexeme_t
type xpath_lexer_string (line 9297) | struct xpath_lexer_string
method xpath_lexer_string (line 9302) | xpath_lexer_string(): begin(0), end(0)
class xpath_lexer (line 9314) | class xpath_lexer
method xpath_lexer (line 9323) | explicit xpath_lexer(const char_t* query): _cur(query)
method char_t (line 9328) | const char_t* state() const
method next (line 9333) | void next()
method lexeme_t (line 9602) | lexeme_t current() const
method char_t (line 9607) | const char_t* current_pos() const
method xpath_lexer_string (line 9612) | const xpath_lexer_string& contents() const
type ast_type_t (line 9620) | enum ast_type_t
type axis_t (line 9685) | enum axis_t
type nodetest_t (line 9702) | enum nodetest_t
type predicate_t (line 9715) | enum predicate_t
type nodeset_eval_t (line 9723) | enum nodeset_eval_t
type axis_to_type (line 9730) | struct axis_to_type
class xpath_ast_node (line 9737) | class xpath_ast_node
method compare_eq (line 9772) | static bool compare_eq(xpath_ast_node* lhs, xpath_ast_node* rhs, const...
method eval_once (line 9860) | static bool eval_once(xpath_node_set::type_t type, nodeset_eval_t eval)
method compare_rel (line 9865) | static bool compare_rel(xpath_ast_node* lhs, xpath_ast_node* rhs, cons...
method apply_predicate_boolean (line 9936) | static void apply_predicate_boolean(xpath_node_set_raw& ns, size_t fir...
method apply_predicate_number (line 9962) | static void apply_predicate_number(xpath_node_set_raw& ns, size_t firs...
method apply_predicate_number_const (line 9988) | static void apply_predicate_number_const(xpath_node_set_raw& ns, size_...
method apply_predicate (line 10017) | void apply_predicate(xpath_node_set_raw& ns, size_t first, const xpath...
method apply_predicates (line 10031) | void apply_predicates(xpath_node_set_raw& ns, size_t first, const xpat...
method step_push (line 10041) | bool step_push(xpath_node_set_raw& ns, xml_attribute_struct* a, xml_no...
method step_push (line 10081) | bool step_push(xpath_node_set_raw& ns, xml_node_struct* n, xpath_alloc...
method step_fill (line 10156) | void step_fill(xpath_node_set_raw& ns, xml_node_struct* n, xpath_alloc...
method step_fill (line 10349) | void step_fill(xpath_node_set_raw& ns, xml_attribute_struct* a, xml_no...
method step_fill (line 10430) | void step_fill(xpath_node_set_raw& ns, const xpath_node& xn, xpath_all...
method xpath_node_set_raw (line 10441) | xpath_node_set_raw step_do(const xpath_context& c, const xpath_stack& ...
method xpath_ast_node (line 10489) | xpath_ast_node(ast_type_t type, xpath_value_type rettype_, const char_...
method xpath_ast_node (line 10496) | xpath_ast_node(ast_type_t type, xpath_value_type rettype_, double value):
method xpath_ast_node (line 10503) | xpath_ast_node(ast_type_t type, xpath_value_type rettype_, xpath_varia...
method xpath_ast_node (line 10510) | xpath_ast_node(ast_type_t type, xpath_value_type rettype_, xpath_ast_n...
method xpath_ast_node (line 10515) | xpath_ast_node(ast_type_t type, xpath_ast_node* left, axis_t axis, nod...
method xpath_ast_node (line 10522) | xpath_ast_node(ast_type_t type, xpath_ast_node* left, xpath_ast_node* ...
method set_next (line 10528) | void set_next(xpath_ast_node* value)
method set_right (line 10533) | void set_right(xpath_ast_node* value)
method eval_boolean (line 10538) | bool eval_boolean(const xpath_context& c, const xpath_stack& stack)
method eval_number (line 10678) | double eval_number(const xpath_context& c, const xpath_stack& stack)
method xpath_string (line 10816) | xpath_string eval_string_concat(const xpath_context& c, const xpath_st...
method xpath_string (line 10858) | xpath_string eval_string(const xpath_context& c, const xpath_stack& st...
method xpath_node_set_raw (line 11101) | xpath_node_set_raw eval_node_set(const xpath_context& c, const xpath_s...
method optimize (line 11233) | void optimize(xpath_allocator* alloc)
method optimize_self (line 11248) | void optimize_self(xpath_allocator* alloc)
method is_posinv_expr (line 11313) | bool is_posinv_expr() const
method is_posinv_step (line 11344) | bool is_posinv_step() const
method xpath_value_type (line 11359) | xpath_value_type rettype() const
type xpath_parser (line 11373) | struct xpath_parser
method xpath_ast_node (line 11387) | xpath_ast_node* error(const char* message)
method xpath_ast_node (line 11395) | xpath_ast_node* error_oom()
method xpath_ast_node (line 11403) | xpath_ast_node* error_rec()
method xpath_ast_node (line 11413) | xpath_ast_node* alloc_node(ast_type_t type, xpath_value_type rettype, ...
method xpath_ast_node (line 11419) | xpath_ast_node* alloc_node(ast_type_t type, xpath_value_type rettype, ...
method xpath_ast_node (line 11425) | xpath_ast_node* alloc_node(ast_type_t type, xpath_value_type rettype, ...
method xpath_ast_node (line 11431) | xpath_ast_node* alloc_node(ast_type_t type, xpath_value_type rettype, ...
method xpath_ast_node (line 11437) | xpath_ast_node* alloc_node(ast_type_t type, xpath_ast_node* left, axis...
method xpath_ast_node (line 11443) | xpath_ast_node* alloc_node(ast_type_t type, xpath_ast_node* left, xpat...
method char_t (line 11449) | const char_t* alloc_string(const xpath_lexer_string& value)
method xpath_ast_node (line 11465) | xpath_ast_node* parse_function(const xpath_lexer_string& name, size_t ...
method axis_t (line 11585) | axis_t parse_axis_name(const xpath_lexer_string& name, bool& specified)
method nodetest_t (line 11653) | nodetest_t parse_node_test_type(const xpath_lexer_string& name)
method xpath_ast_node (line 11689) | xpath_ast_node* parse_primary_expression()
method xpath_ast_node (line 11802) | xpath_ast_node* parse_filter_expression()
method xpath_ast_node (line 11841) | xpath_ast_node* parse_step(xpath_ast_node* set)
method xpath_ast_node (line 12017) | xpath_ast_node* parse_relative_location_path(xpath_ast_node* set)
method xpath_ast_node (line 12051) | xpath_ast_node* parse_location_path()
method xpath_ast_node (line 12091) | xpath_ast_node* parse_path_or_unary_expression()
type binary_op_t (line 12157) | struct binary_op_t
method binary_op_t (line 12163) | binary_op_t(): asttype(ast_unknown), rettype(xpath_type_none), prece...
method binary_op_t (line 12167) | binary_op_t(ast_type_t asttype_, xpath_value_type rettype_, int prec...
method binary_op_t (line 12171) | static binary_op_t parse(xpath_lexer& lexer)
method xpath_ast_node (line 12223) | xpath_ast_node* parse_expression_rec(xpath_ast_node* lhs, int limit)
method xpath_ast_node (line 12277) | xpath_ast_node* parse_expression(int limit = 0)
method xpath_parser (line 12294) | xpath_parser(const char_t* query, xpath_variable_set* variables, xpath...
method xpath_ast_node (line 12298) | xpath_ast_node* parse()
method xpath_ast_node (line 12312) | static xpath_ast_node* parse(const char_t* query, xpath_variable_set* ...
type xpath_query_impl (line 12320) | struct xpath_query_impl
method xpath_query_impl (line 12322) | static xpath_query_impl* create()
method destroy (line 12330) | static void destroy(xpath_query_impl* impl)
method xpath_query_impl (line 12339) | xpath_query_impl(): root(0), alloc(&block, &oom), oom(false)
function PUGI_IMPL_FN (line 12351) | PUGI_IMPL_FN impl::xpath_ast_node* evaluate_node_set_prepare(xpath_query...
function PUGI_IMPL_NS_END (line 12369) | PUGI_IMPL_NS_END
function PUGI_IMPL_FN (line 12507) | PUGI_IMPL_FN xpath_node_set::~xpath_node_set()
function PUGI_IMPL_FN (line 12518) | PUGI_IMPL_FN xpath_node_set& xpath_node_set::operator=(const xpath_node_...
function PUGI_IMPL_FN (line 12546) | PUGI_IMPL_FN xpath_node_set::type_t xpath_node_set::type() const
function PUGI_IMPL_FN (line 12551) | PUGI_IMPL_FN size_t xpath_node_set::size() const
function PUGI_IMPL_FN (line 12556) | PUGI_IMPL_FN bool xpath_node_set::empty() const
function PUGI_IMPL_FN (line 12561) | PUGI_IMPL_FN const xpath_node& xpath_node_set::operator[](size_t index) ...
function PUGI_IMPL_FN (line 12567) | PUGI_IMPL_FN xpath_node_set::const_iterator xpath_node_set::begin() const
function PUGI_IMPL_FN (line 12572) | PUGI_IMPL_FN xpath_node_set::const_iterator xpath_node_set::end() const
function PUGI_IMPL_FN (line 12577) | PUGI_IMPL_FN void xpath_node_set::sort(bool reverse)
function PUGI_IMPL_FN (line 12582) | PUGI_IMPL_FN xpath_node xpath_node_set::first() const
function PUGI_IMPL_FN (line 12591) | PUGI_IMPL_FN xpath_parse_result::operator bool() const
function PUGI_IMPL_FN (line 12596) | PUGI_IMPL_FN const char* xpath_parse_result::description() const
function PUGI_IMPL_FN (line 12605) | PUGI_IMPL_FN const char_t* xpath_variable::name() const
function PUGI_IMPL_FN (line 12627) | PUGI_IMPL_FN xpath_value_type xpath_variable::type() const
function PUGI_IMPL_FN (line 12632) | PUGI_IMPL_FN bool xpath_variable::get_boolean() const
function PUGI_IMPL_FN (line 12637) | PUGI_IMPL_FN double xpath_variable::get_number() const
function PUGI_IMPL_FN (line 12642) | PUGI_IMPL_FN const char_t* xpath_variable::get_string() const
function PUGI_IMPL_FN (line 12648) | PUGI_IMPL_FN const xpath_node_set& xpath_variable::get_node_set() const
function PUGI_IMPL_FN (line 12653) | PUGI_IMPL_FN bool xpath_variable::set(bool value)
function PUGI_IMPL_FN (line 12661) | PUGI_IMPL_FN bool xpath_variable::set(double value)
function PUGI_IMPL_FN (line 12669) | PUGI_IMPL_FN bool xpath_variable::set(const char_t* value)
function PUGI_IMPL_FN (line 12690) | PUGI_IMPL_FN bool xpath_variable::set(const xpath_node_set& value)
function PUGI_IMPL_FN (line 12698) | PUGI_IMPL_FN xpath_variable_set::xpath_variable_set()
function PUGI_IMPL_FN (line 12704) | PUGI_IMPL_FN xpath_variable_set::~xpath_variable_set()
function PUGI_IMPL_FN (line 12710) | PUGI_IMPL_FN xpath_variable_set::xpath_variable_set(const xpath_variable...
function PUGI_IMPL_FN (line 12718) | PUGI_IMPL_FN xpath_variable_set& xpath_variable_set::operator=(const xpa...
function PUGI_IMPL_FN (line 12728) | PUGI_IMPL_FN xpath_variable_set::xpath_variable_set(xpath_variable_set&&...
function PUGI_IMPL_FN (line 12825) | PUGI_IMPL_FN xpath_variable* xpath_variable_set::add(const char_t* name,...
function PUGI_IMPL_FN (line 12848) | PUGI_IMPL_FN bool xpath_variable_set::set(const char_t* name, bool value)
function PUGI_IMPL_FN (line 12854) | PUGI_IMPL_FN bool xpath_variable_set::set(const char_t* name, double value)
function PUGI_IMPL_FN (line 12860) | PUGI_IMPL_FN bool xpath_variable_set::set(const char_t* name, const char...
function PUGI_IMPL_FN (line 12866) | PUGI_IMPL_FN bool xpath_variable_set::set(const char_t* name, const xpat...
function PUGI_IMPL_FN (line 12872) | PUGI_IMPL_FN xpath_variable* xpath_variable_set::get(const char_t* name)
function PUGI_IMPL_FN (line 12877) | PUGI_IMPL_FN const xpath_variable* xpath_variable_set::get(const char_t*...
function PUGI_IMPL_FN (line 12924) | PUGI_IMPL_FN xpath_query::~xpath_query()
function PUGI_IMPL_FN (line 12931) | PUGI_IMPL_FN xpath_query::xpath_query(xpath_query&& rhs) PUGIXML_NOEXCEPT
function PUGI_IMPL_FN (line 12955) | PUGI_IMPL_FN xpath_value_type xpath_query::return_type() const
function PUGI_IMPL_FN (line 12962) | PUGI_IMPL_FN bool xpath_query::evaluate_boolean(const xpath_node& n) const
function PUGI_IMPL_FN (line 12983) | PUGI_IMPL_FN double xpath_query::evaluate_number(const xpath_node& n) const
function PUGI_IMPL_FN (line 13005) | PUGI_IMPL_FN string_t xpath_query::evaluate_string(const xpath_node& n) ...
function PUGI_IMPL_FN (line 13027) | PUGI_IMPL_FN size_t xpath_query::evaluate_string(char_t* buffer, size_t ...
function PUGI_IMPL_FN (line 13057) | PUGI_IMPL_FN xpath_node_set xpath_query::evaluate_node_set(const xpath_n...
function PUGI_IMPL_FN (line 13079) | PUGI_IMPL_FN xpath_node xpath_query::evaluate_node(const xpath_node& n) ...
function PUGI_IMPL_FN (line 13101) | PUGI_IMPL_FN const xpath_parse_result& xpath_query::result() const
function PUGI_IMPL_FN (line 13106) | PUGI_IMPL_FN static void unspecified_bool_xpath_query(xpath_query***)
function PUGI_IMPL_FN (line 13110) | PUGI_IMPL_FN xpath_query::operator xpath_query::unspecified_bool_type() ...
function PUGI_IMPL_FN (line 13115) | PUGI_IMPL_FN bool xpath_query::operator!() const
function PUGI_IMPL_FN (line 13120) | PUGI_IMPL_FN xpath_node xml_node::select_node(const char_t* query, xpath...
function PUGI_IMPL_FN (line 13126) | PUGI_IMPL_FN xpath_node xml_node::select_node(const xpath_query& query) ...
function PUGI_IMPL_FN (line 13131) | PUGI_IMPL_FN xpath_node_set xml_node::select_nodes(const char_t* query, ...
function PUGI_IMPL_FN (line 13137) | PUGI_IMPL_FN xpath_node_set xml_node::select_nodes(const xpath_query& qu...
function PUGI_IMPL_FN (line 13142) | PUGI_IMPL_FN xpath_node xml_node::select_single_node(const char_t* query...
function PUGI_IMPL_FN (line 13148) | PUGI_IMPL_FN xpath_node xml_node::select_single_node(const xpath_query& ...
FILE: libs/pugixml/pugixml.hpp
type pugi (line 134) | namespace pugi
type xml_node_type (line 149) | enum xml_node_type
type xml_encoding (line 231) | enum xml_encoding
type xml_attribute_struct (line 285) | struct xml_attribute_struct
type xml_node_struct (line 286) | struct xml_node_struct
class xml_node_iterator (line 288) | class xml_node_iterator
class xml_attribute_iterator (line 289) | class xml_attribute_iterator
class xml_named_node_iterator (line 290) | class xml_named_node_iterator
class xml_tree_walker (line 292) | class xml_tree_walker
type xml_parse_result (line 294) | struct xml_parse_result
class xml_node (line 296) | class xml_node
class xml_text (line 298) | class xml_text
class xpath_node (line 301) | class xpath_node
class xpath_node_set (line 302) | class xpath_node_set
class xpath_query (line 303) | class xpath_query
class xpath_variable_set (line 304) | class xpath_variable_set
class xml_object_range (line 308) | class xml_object_range
method xml_object_range (line 314) | xml_object_range(It b, It e): _begin(b), _end(e)
method It (line 318) | It begin() const { return _begin; }
method It (line 319) | It end() const { return _end; }
method empty (line 321) | bool empty() const { return _begin == _end; }
function xml_writer (line 328) | class PUGIXML_CLASS xml_writer
function xml_writer_file (line 338) | class PUGIXML_CLASS xml_writer_file: public xml_writer
function xml_writer_stream (line 352) | class PUGIXML_CLASS xml_writer_stream: public xml_writer
function xml_attribute (line 368) | class PUGIXML_CLASS xml_attribute
function xml_node (line 478) | class PUGIXML_CLASS xml_node
function xml_text (line 744) | class PUGIXML_CLASS xml_text
function xml_node_iterator (line 836) | class PUGIXML_CLASS xml_node_iterator
function xml_attribute_iterator (line 878) | class PUGIXML_CLASS xml_attribute_iterator
function xml_named_node_iterator (line 920) | class PUGIXML_CLASS xml_named_node_iterator
function xml_tree_walker (line 964) | class PUGIXML_CLASS xml_tree_walker
type xml_parse_status (line 990) | enum xml_parse_status
function xml_parse_result (line 1017) | struct PUGIXML_CLASS xml_parse_result
function xml_document (line 1039) | class PUGIXML_CLASS xml_document: public xml_node
type xpath_value_type (line 1119) | enum xpath_value_type
function xpath_parse_result (line 1129) | struct PUGIXML_CLASS xpath_parse_result
function xpath_variable (line 1148) | class PUGIXML_CLASS xpath_variable
function xpath_variable_set (line 1183) | class PUGIXML_CLASS xpath_variable_set
function xpath_query (line 1226) | class PUGIXML_CLASS xpath_query
class PUGIXML_CLASS (line 1307) | class PUGIXML_CLASS
function xpath_node (line 1328) | class PUGIXML_CLASS xpath_node
function xpath_node_set (line 1369) | class PUGIXML_CLASS xpath_node_set
type pugi (line 146) | namespace pugi
type xml_node_type (line 149) | enum xml_node_type
type xml_encoding (line 231) | enum xml_encoding
type xml_attribute_struct (line 285) | struct xml_attribute_struct
type xml_node_struct (line 286) | struct xml_node_struct
class xml_node_iterator (line 288) | class xml_node_iterator
class xml_attribute_iterator (line 289) | class xml_attribute_iterator
class xml_named_node_iterator (line 290) | class xml_named_node_iterator
class xml_tree_walker (line 292) | class xml_tree_walker
type xml_parse_result (line 294) | struct xml_parse_result
class xml_node (line 296) | class xml_node
class xml_text (line 298) | class xml_text
class xpath_node (line 301) | class xpath_node
class xpath_node_set (line 302) | class xpath_node_set
class xpath_query (line 303) | class xpath_query
class xpath_variable_set (line 304) | class xpath_variable_set
class xml_object_range (line 308) | class xml_object_range
method xml_object_range (line 314) | xml_object_range(It b, It e): _begin(b), _end(e)
method It (line 318) | It begin() const { return _begin; }
method It (line 319) | It end() const { return _end; }
method empty (line 321) | bool empty() const { return _begin == _end; }
function xml_writer (line 328) | class PUGIXML_CLASS xml_writer
function xml_writer_file (line 338) | class PUGIXML_CLASS xml_writer_file: public xml_writer
function xml_writer_stream (line 352) | class PUGIXML_CLASS xml_writer_stream: public xml_writer
function xml_attribute (line 368) | class PUGIXML_CLASS xml_attribute
function xml_node (line 478) | class PUGIXML_CLASS xml_node
function xml_text (line 744) | class PUGIXML_CLASS xml_text
function xml_node_iterator (line 836) | class PUGIXML_CLASS xml_node_iterator
function xml_attribute_iterator (line 878) | class PUGIXML_CLASS xml_attribute_iterator
function xml_named_node_iterator (line 920) | class PUGIXML_CLASS xml_named_node_iterator
function xml_tree_walker (line 964) | class PUGIXML_CLASS xml_tree_walker
type xml_parse_status (line 990) | enum xml_parse_status
function xml_parse_result (line 1017) | struct PUGIXML_CLASS xml_parse_result
function xml_document (line 1039) | class PUGIXML_CLASS xml_document: public xml_node
type xpath_value_type (line 1119) | enum xpath_value_type
function xpath_parse_result (line 1129) | struct PUGIXML_CLASS xpath_parse_result
function xpath_variable (line 1148) | class PUGIXML_CLASS xpath_variable
function xpath_variable_set (line 1183) | class PUGIXML_CLASS xpath_variable_set
function xpath_query (line 1226) | class PUGIXML_CLASS xpath_query
class PUGIXML_CLASS (line 1307) | class PUGIXML_CLASS
function xpath_node (line 1328) | class PUGIXML_CLASS xpath_node
function xpath_node_set (line 1369) | class PUGIXML_CLASS xpath_node_set
type std (line 1465) | namespace std
type std (line 1475) | namespace std
FILE: libs/pybind/pybind11/attr.h
function is_method (line 17) | PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
type is_operator (line 29) | struct is_operator {}
type is_final (line 32) | struct is_final {}
function is_new_style_constructor (line 35) | struct scope {
function init (line 378) | static void init(const T &, function_record *) {}
function init (line 379) | static void init(const T &, type_record *) {}
function precall (line 380) | static void precall(function_call &) {}
function postcall (line 381) | static void postcall(function_call &, handle) {}
function name (line 386) | struct process_attribute<name> : process_attribute_default<name> {
function doc (line 392) | struct process_attribute<doc> : process_attribute_default<doc> {
type process_attribute (line 398) | struct process_attribute
function init (line 399) | static void init(const char *d, function_record *r) { r->doc = const_cas...
function init (line 400) | static void init(const char *d, type_record *r) { r->doc = const_cast<ch...
type process_attribute (line 403) | struct process_attribute
function return_value_policy (line 407) | struct process_attribute<return_value_policy> : process_attribute_defaul...
function sibling (line 414) | struct process_attribute<sibling> : process_attribute_default<sibling> {
function is_method (line 420) | struct process_attribute<is_method> : process_attribute_default<is_metho...
function scope (line 429) | struct process_attribute<scope> : process_attribute_default<scope> {
function is_operator (line 435) | struct process_attribute<is_operator> : process_attribute_default<is_ope...
function is_new_style_constructor (line 440) | struct process_attribute<is_new_style_constructor>
function check_kw_only_arg (line 447) | inline void check_kw_only_arg(const arg &a, function_record *r) {
function append_self_arg_if_needed (line 454) | inline void append_self_arg_if_needed(function_record *r) {
function arg (line 462) | struct process_attribute<arg> : process_attribute_default<arg> {
function arg_v (line 473) | struct process_attribute<arg_v> : process_attribute_default<arg_v> {
function kw_only (line 513) | struct process_attribute<kw_only> : process_attribute_default<kw_only> {
function pos_only (line 526) | struct process_attribute<pos_only> : process_attribute_default<pos_only> {
function init (line 542) | static void init(const handle &h, type_record *r) { r->bases.append(h); }
function init (line 548) | static void init(const base<T> &, type_record *r) { r->add_base(typeid(T...
function multiple_inheritance (line 553) | struct process_attribute<multiple_inheritance> : process_attribute_defau...
function dynamic_attr (line 560) | struct process_attribute<dynamic_attr> : process_attribute_default<dynam...
function custom_type_setup (line 565) | struct process_attribute<custom_type_setup> {
function is_final (line 572) | struct process_attribute<is_final> : process_attribute_default<is_final> {
function buffer_protocol (line 577) | struct process_attribute<buffer_protocol> : process_attribute_default<bu...
function metaclass (line 582) | struct process_attribute<metaclass> : process_attribute_default<metaclas...
function module_local (line 587) | struct process_attribute<module_local> : process_attribute_default<modul...
function prepend (line 593) | struct process_attribute<prepend> : process_attribute_default<prepend> {
function arithmetic (line 599) | struct process_attribute<arithmetic> : process_attribute_default<arithme...
function init (line 629) | static void init(const Args &...args, function_record *r) {
function init (line 636) | static void init(const Args &...args, type_record *r) {
function precall (line 643) | static void precall(function_call &call) {
function postcall (line 649) | static void postcall(function_call &call, handle fn_ret) {
FILE: libs/pybind/pybind11/buffer_info.h
function PYBIND11_NAMESPACE_BEGIN (line 14) | PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
function std (line 31) | inline std::vector<ssize_t> f_strides(const std::vector<ssize_t> &shape,...
function buffer_info (line 40) | PYBIND11_NAMESPACE_END(detail)
function Py_buffer (line 150) | Py_buffer *view() const { return m_view; }
type private_ctr_tag (line 154) | struct private_ctr_tag {}
function compare (line 182) | static bool compare(const buffer_info &b) {
FILE: libs/pybind/pybind11/cast.h
function PYBIND11_NAMESPACE_BEGIN (line 31) | PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
function handle (line 68) | static handle
function index_check (line 136) | auto index_check = [](PyObject *o) { return PyIndex_Check(o); }
function index_check (line 140) | auto index_check = [](PyObject *o) { return hasattr(o, "__index__"); }
function handle (line 250) | static handle cast(T, return_value_policy /* policy */, handle /* parent...
function load (line 264) | bool load(handle h, bool) {
function handle (line 290) | static handle cast(const void *ptr, return_value_policy /* policy */, ha...
function else (line 333) | else if (hasattr(src, PYBIND11_BOOL_ATTR)) {
function handle (line 353) | static handle cast(bool src, return_value_policy /* policy */, handle /*...
function load (line 381) | bool load(handle src, bool) {
function handle (line 455) | static handle
function handle (line 549) | static handle cast(const CharT *src, return_value_policy policy, handle ...
function handle (line 556) | static handle cast(CharT src, return_value_policy policy, handle parent) {
function handle (line 658) | handle cast(T *src, return_value_policy policy, handle parent) {
function load (line 760) | bool load(handle src, bool convert) {
function handle (line 836) | static handle cast(holder_type &&src, return_value_policy, handle) {
function handle (line 948) | static handle cast(const handle &src, return_value_policy /* policy */, ...
function return_value_policy (line 1009) | static return_value_policy policy(return_value_policy p) { return p; }
function return_value_policy (line 1016) | static return_value_policy policy(return_value_policy p) {
function cast (line 1144) | inline void object::cast() && {
type override_unused (line 1158) | struct override_unused {}
type arg (line 1238) | struct arg {
type kw_only (line 1321) | struct kw_only {}
type pos_only (line 1326) | struct pos_only {}
type function_call (line 1355) | struct function_call {
function load_args (line 1404) | bool load_args(function_call &call) { return load_impl_sequence(call, in...
function tuple (line 1459) | tuple args() && { return std::move(m_args); }
function object (line 1462) | object call(PyObject *ptr) const {
function tuple (line 1492) | tuple args() && { return std::move(m_args); }
function dict (line 1493) | dict kwargs() && { return std::move(m_kwargs); }
function object (line 1496) | object call(PyObject *ptr) const {
function process (line 1520) | void process(list &args_list, detail::args_proxy ap) {
function process (line 1526) | void process(list & /*args_list*/, arg_v a) {
function process (line 1551) | void process(list & /*args_list*/, detail::kwargs_proxy kp) {
FILE: libs/pybind/pybind11/chrono.h
function PYBIND11_NAMESPACE_BEGIN (line 32) | PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
function handle (line 85) | static handle cast(const type &src, return_value_policy /* policy */, ha...
function std (line 113) | inline std::tm *localtime_thread_safe(const std::time_t *time, std::tm *...
function load (line 134) | bool load(handle src, bool) {
function handle (line 184) | static handle cast(const std::chrono::time_point<std::chrono::system_clo...
FILE: libs/pybind/pybind11/complex.h
function std (line 27) | static std::string format() { return std::string(value); }
function handle (line 66) | static handle
FILE: libs/pybind/pybind11/detail/class.h
function std (line 28) | inline std::string get_fully_qualified_tp_name(PyTypeObject *type) {
function PyTypeObject (line 40) | inline PyTypeObject *type_incref(PyTypeObject *type) {
function PyObject (line 48) | inline PyObject *pybind11_static_get(PyObject *self, PyObject * /*ob*/, ...
function pybind11_static_set (line 53) | inline int pybind11_static_set(PyObject *self, PyObject *obj, PyObject *...
function PyTypeObject (line 61) | inline PyTypeObject *make_static_property_type() {
function PyTypeObject (line 101) | inline PyTypeObject *make_static_property_type() {
function pybind11_meta_setattro (line 127) | inline int pybind11_meta_setattro(PyObject *obj, PyObject *name, PyObjec...
function PyObject (line 165) | inline PyObject *pybind11_meta_getattro(PyObject *obj, PyObject *name) {
function PyObject (line 176) | inline PyObject *pybind11_meta_call(PyObject *type, PyObject *args, PyOb...
function PyTypeObject (line 243) | inline PyTypeObject *make_default_metaclass() {
function PyObject (line 362) | inline PyObject *pybind11_object_new(PyTypeObject *type, PyObject *, PyO...
function pybind11_object_init (line 369) | inline int pybind11_object_init(PyObject *self, PyObject *, PyObject *) {
function add_patient (line 376) | inline void add_patient(PyObject *nurse, PyObject *patient) {
function clear_patients (line 384) | inline void clear_patients(PyObject *self) {
function clear_instance (line 402) | inline void clear_instance(PyObject *self) {
function pybind11_object_dealloc (line 441) | inline void pybind11_object_dealloc(PyObject *self) {
function PyObject (line 465) | inline PyObject *make_object_base_type(PyTypeObject *metaclass) {
function PyObject (line 508) | inline PyObject *pybind11_get_dict(PyObject *self, void *) {
function pybind11_set_dict (line 518) | inline int pybind11_set_dict(PyObject *self, PyObject *new_dict, void *) {
function pybind11_traverse (line 533) | inline int pybind11_traverse(PyObject *self, visitproc visit, void *arg) {
function pybind11_clear (line 540) | inline int pybind11_clear(PyObject *self) {
function enable_dynamic_attributes (line 547) | inline void enable_dynamic_attributes(PyHeapTypeObject *heap_type) {
function pybind11_getbuffer (line 562) | inline int pybind11_getbuffer(PyObject *obj, Py_buffer *view, int flags) {
function pybind11_releasebuffer (line 609) | inline void pybind11_releasebuffer(PyObject *, Py_buffer *view) {
function enable_buffer_protocol (line 614) | inline void enable_buffer_protocol(PyHeapTypeObject *heap_type) {
function PyObject (line 626) | inline PyObject *make_new_python_type(const type_record &rec) {
FILE: libs/pybind/pybind11/detail/common.h
type _Py_atomic_address (line 335) | struct _Py_atomic_address {
function return_value_policy (line 470) | enum class return_value_policy : uint8_t {
function size_in_ptrs (line 528) | inline static constexpr size_t size_in_ptrs(size_t s) {
function instance_simple_holder_in_ptrs (line 538) | constexpr size_t instance_simple_holder_in_ptrs() {
type type_info (line 545) | struct type_info
type value_and_holder (line 546) | struct value_and_holder
type nonsimple_values_and_holders (line 548) | struct nonsimple_values_and_holders {
type instance (line 554) | struct instance {
type select_indices_impl (line 669) | struct select_indices_impl
type void_type (line 773) | struct void_type {}
function constexpr_sum (line 782) | size_t constexpr_sum(Ts... ns) {
function constexpr_sum (line 786) | constexpr size_t constexpr_sum() { return 0; }
function constexpr_sum (line 788) | size_t constexpr_sum(T n, Ts... ns) {
function first (line 793) | PYBIND11_NAMESPACE_BEGIN(constexpr_impl)
function last (line 801) | constexpr int last(int /*i*/, int result) { return result; }
function pybind11_fail (line 992) | void pybind11_fail(const char *reason) {
function PYBIND11_NOINLINE (line 995) | [[noreturn]] PYBIND11_NOINLINE void pybind11_fail(const std::string &rea...
function std (line 1032) | static std::string format() { return std::string(1, c); }
function error_scope (line 1044) | struct error_scope {
type nodelete (line 1051) | struct nodelete {
function const_ (line 1095) | static constexpr auto const_ = std::true_type{}
function operator (line 1141) | operator std::vector<T> &&() && { return std::move(v); }
function silence_msvc_c4127 (line 1201) | constexpr inline bool silence_msvc_c4127(bool cond) { return cond; }
FILE: libs/pybind/pybind11/detail/descr.h
function descr (line 63) | constexpr descr<0> const_name(char const (&)[1]) { return {}; }
FILE: libs/pybind/pybind11/detail/init.h
function PYBIND11_NAMESPACE_BEGIN (line 14) | PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
function no_nullptr (line 34) | PYBIND11_NAMESPACE_BEGIN(initimpl)
FILE: libs/pybind/pybind11/detail/internals.h
function tls_replace_value (line 89) | inline void tls_replace_value(PYBIND11_TLS_KEY_REF key, void *value) {
function same_type (line 110) | inline bool same_type(const std::type_info &lhs, const std::type_info &r...
function same_type (line 114) | inline bool same_type(const std::type_info &lhs, const std::type_info &r...
type type_hash (line 118) | struct type_hash {
type type_equal_to (line 129) | struct type_equal_to {
type override_hash (line 139) | struct override_hash {
type internals (line 150) | struct internals {
type type_info (line 196) | struct type_info {
function internals (line 292) | inline internals **&get_internals_pp() {
function raise_err (line 329) | inline bool raise_err(PyObject *exc_type, const char *msg) {
function translate_exception (line 340) | inline void translate_exception(std::exception_ptr p) {
function translate_local_exception (line 400) | inline void translate_local_exception(std::exception_ptr p) {
function PYBIND11_NOINLINE (line 416) | PYBIND11_NOINLINE internals &get_internals() {
function local_internals (line 524) | inline local_internals &get_local_internals() {
function PYBIND11_NOINLINE (line 552) | PYBIND11_NOINLINE void *set_shared_data(const std::string &name, void *d...
FILE: libs/pybind/pybind11/detail/type_caster_base.h
function PYBIND11_NAMESPACE_BEGIN (line 29) | PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
function PYBIND11_NOINLINE (line 81) | PYBIND11_NOINLINE static void add_patient(handle h) {
function PYBIND11_NOINLINE (line 106) | PYBIND11_NOINLINE void all_type_info_populate(PyTypeObject *t, std::vect...
function explicit (line 269) | explicit value_and_holder(size_t index) : index{index}
type values_and_holders (line 315) | struct values_and_holders {
function PYBIND11_NOINLINE (line 470) | PYBIND11_NOINLINE bool isinstance_generic(handle obj, const std::type_in...
function PYBIND11_NOINLINE (line 478) | PYBIND11_NOINLINE std::string error_string() {
function PYBIND11_NOINLINE (line 542) | PYBIND11_NOINLINE handle get_object_handle(const void *ptr, const detail...
FILE: libs/pybind/pybind11/detail/typeid.h
function PYBIND11_NAMESPACE_BEGIN (line 21) | PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
function type_id (line 49) | PYBIND11_NAMESPACE_END(detail)
FILE: libs/pybind/pybind11/eigen.h
function EigenDStride (line 89) | EigenDStride stride{0, 0}; // Only valid if negativestrides is false!
type eigen_extract_stride (line 128) | struct eigen_extract_stride
type eigen_extract_stride (line 132) | struct eigen_extract_stride
function EigenConformable (line 169) | static EigenConformable<row_major> conformable(const array &a) {
function capsule (line 280) | capsule base(src, [](void *o) { delete static_cast<Type *>(o); }
function load (line 291) | bool load(handle src, bool convert) {
function handle (line 336) | handle cast_impl(CType *src, return_value_policy policy, handle parent) {
function handle (line 361) | static handle cast(const Type &&src, return_value_policy /* policy */, h...
function handle (line 365) | static handle cast(Type &src, return_value_policy policy, handle parent) {
function handle (line 373) | static handle cast(const Type &src, return_value_policy policy, handle p...
function handle (line 381) | static handle cast(Type *src, return_value_policy policy, handle parent) {
function handle (line 385) | static handle cast(const Type *src, return_value_policy policy, handle p...
function operator (line 392) | operator Type *() { return &value; }
function operator (line 538) | operator Type *() { return ref.get(); }
function handle (line 616) | static handle cast(const Type *src, return_value_policy policy, handle p...
function load (line 638) | bool load(handle src, bool) {
function handle (line 677) | static handle cast(const Type &src, return_value_policy /* policy */, ha...
FILE: libs/pybind/pybind11/embed.h
function PYBIND11_NAMESPACE_BEGIN (line 65) | PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
type wide_char_arg_deleter (line 87) | struct wide_char_arg_deleter {
function wchar_t (line 98) | inline wchar_t *widen_chars(const char *safe_arg) {
function finalize_interpreter (line 238) | inline void finalize_interpreter() {
function class (line 278) | class scoped_interpreter {
FILE: libs/pybind/pybind11/eval.h
function PYBIND11_NAMESPACE_BEGIN (line 18) | PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
function exec (line 88) | inline void exec(const str &expr, object global = globals(), object loca...
FILE: libs/pybind/pybind11/functional.h
function PYBIND11_NAMESPACE_BEGIN (line 16) | PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
FILE: libs/pybind/pybind11/gil.h
function PYBIND11_NAMESPACE_BEGIN (line 15) | PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
function inc_ref (line 83) | void inc_ref() { ++tstate->gilstate_counter; }
function PYBIND11_NOINLINE (line 85) | PYBIND11_NOINLINE void dec_ref() {
function PYBIND11_NOINLINE (line 115) | PYBIND11_NOINLINE void disarm() { active = false; }
function PYBIND11_NOINLINE (line 117) | PYBIND11_NOINLINE ~gil_scoped_acquire() {
function class (line 130) | class gil_scoped_release {
function PYBIND11_NOINLINE (line 152) | PYBIND11_NOINLINE void disarm() { active = false; }
function class (line 176) | class gil_scoped_acquire {
function class (line 185) | class gil_scoped_release {
function class (line 194) | class gil_scoped_acquire {
function class (line 197) | class gil_scoped_release {
FILE: libs/pybind/pybind11/iostream.h
function PYBIND11_NAMESPACE_BEGIN (line 34) | PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
function utf8_remainder (line 58) | size_t utf8_remainder() const {
function is_leading (line 62) | auto is_leading = [](char c) { return (static_cast<unsigned char>(c) & 0...
function is_leading_2b (line 63) | auto is_leading_2b = [](char c) { return static_cast<unsigned char>(c) <...
function is_leading_3b (line 64) | auto is_leading_3b = [](char c) { return static_cast<unsigned char>(c) <...
function _sync (line 94) | int _sync() {
function sync (line 117) | int sync() override { return _sync(); }
function class (line 192) | class scoped_estream_redirect : public scoped_ostream_redirect {
function OstreamRedirect (line 200) | PYBIND11_NAMESPACE_BEGIN(detail)
function exit (line 222) | void exit() {
FILE: libs/pybind/pybind11/numpy.h
function array (line 41) | PYBIND11_NAMESPACE_BEGIN(detail)
type PyArrayDescr_Proxy (line 51) | struct PyArrayDescr_Proxy {
type PyArray_Proxy (line 66) | struct PyArray_Proxy {
type PyVoidScalarObject_Proxy (line 77) | struct PyVoidScalarObject_Proxy {
type numpy_type_info (line 84) | struct numpy_type_info {
function if (line 89) | struct numpy_internals {
function numpy_internals (line 113) | inline numpy_internals &get_numpy_internals() {
function PyArray_Check_ (line 138) | struct npy_api {
function PyArrayDescr_Check_ (line 200) | bool PyArrayDescr_Check_(PyObject *obj) const {
type functions (line 241) | enum functions {
function npy_api (line 263) | static npy_api lookup() {
function PyArray_Proxy (line 301) | inline PyArray_Proxy *array_proxy(void *ptr) { return reinterpret_cast<P...
function PyArray_Proxy (line 303) | inline const PyArray_Proxy *array_proxy(const void *ptr) {
function PyArrayDescr_Proxy (line 307) | inline PyArrayDescr_Proxy *array_descriptor_proxy(PyObject *ptr) {
function PyArrayDescr_Proxy (line 311) | inline const PyArrayDescr_Proxy *array_descriptor_proxy(const PyObject *...
function check_flags (line 315) | inline bool check_flags(const void *ptr, int flag) {
function append_extents (line 334) | static void append_extents(list & /* shape */) {}
function append_extents (line 349) | static void append_extents(list &shape) {
function itemsize (line 469) | constexpr static ssize_t itemsize() { return sizeof(T); }
function shape (line 472) | ssize_t shape(ssize_t dim) const { return shape_[(size_t) dim]; }
function explicit (line 546) | explicit dtype(const buffer_info &info) {
function explicit (line 554) | explicit dtype(const std::string &format) {
function explicit (line 558) | explicit dtype(const char *format) : dtype(std::string(format)) {}
function dtype (line 570) | static dtype from_args(object args) {
function dtype (line 580) | dtype of() {
function itemsize (line 585) | ssize_t itemsize() const { return detail::array_descriptor_proxy(m_ptr)-...
function explicit (line 748) | explicit array(const buffer_info &info, handle base = handle())
function size (line 757) | ssize_t size() const {
function ndim (line 770) | ssize_t ndim() const { return detail::array_proxy(m_ptr)->nd; }
function strides (line 790) | ssize_t strides(ssize_t dim) const {
function flags (line 798) | int flags() const { return detail::array_proxy(m_ptr)->flags; }
function array (line 880) | array squeeze() {
function array (line 905) | array reshape(ShapeContainer new_shape) {
function array (line 921) | array view(const std::string &dtype) {
type detail (line 943) | struct detail
function fail_dim_check (line 945) | void fail_dim_check(ssize_t dim, const std::string &msg) const {
function check_dimensions_impl (line 967) | void check_dimensions_impl(ssize_t, const ssize_t *) const {}
type private_ctor (line 993) | struct private_ctor {}
function explicit (line 1028) | explicit array_t(const buffer_info &info, handle base = handle()) : arra...
function array_t (line 1109) | static array_t ensure(handle h) {
function check_ (line 1117) | static bool check_(handle h) {
function std (line 1144) | static std::string format() {
function string (line 1151) | string format() { return std::to_string(N) + "s"; }
function string (line 1155) | string format() { return std::to_string(N) + "s"; }
function std (line 1160) | static std::string format() {
function std (line 1168) | static std::string format() {
function load (line 1180) | bool load(handle src, bool convert) {
function handle (line 1188) | static handle cast(const handle &src, return_value_policy /* policy */, ...
function compare (line 1196) | static bool compare(const buffer_info &b) {
function pybind11 (line 1259) | static pybind11::dtype dtype() {
function pybind11 (line 1292) | static pybind11::dtype dtype() {
function pybind11 (line 1306) | static pybind11::dtype dtype() { return base_descr::dtype(); }
type field_descriptor (line 1309) | struct field_descriptor {
function pybind11 (line 1397) | static pybind11::dtype dtype() { return reinterpret_borrow<pybind11::dty...
function std (line 1399) | static std::string format() {
function register_dtype (line 1404) | static void register_dtype(any_container<field_descriptor> fields) {
function direct_converter (line 1417) | static bool direct_converter(PyObject *obj, void *&value) {
function class (line 1510) | class common_iterator {
function init_common_iterator (line 1576) | void init_common_iterator(const buffer_info &buffer,
function increment_common_iterator (line 1602) | void increment_common_iterator(size_t dim) {
function broadcast_trivial (line 1613) | enum class broadcast_trivial { non_trivial, c_trivial, f_trivial };
function Type (line 1730) | static Type create(broadcast_trivial trivial, const std::vector<ssize_t>...
function Return (line 1737) | static Return *mutable_data(Type &array) { return array.mutable_data(); }
function Return (line 1739) | static Return call(Func &f, Args &...args) { return f(args...); }
function call (line 1741) | static void call(Return *out, size_t i, Func &f, Args &...args) { out[i]...
function Type (line 1749) | static Type create(broadcast_trivial, const std::vector<ssize_t> &) { re...
function detail (line 1753) | static detail::void_type call(Func &f, Args &...args) {
function call (line 1758) | static void call(void *, size_t, Func &f, Args &...args) { f(args...); }
function object (line 1784) | object operator()(typename vectorize_arg<Args>::type... args) {
FILE: libs/pybind/pybind11/operators.h
function PYBIND11_NAMESPACE_BEGIN (line 14) | PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
type op_impl (line 82) | struct op_impl {}
FILE: libs/pybind/pybind11/options.h
function options (line 14) | PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
function show_user_defined_docstrings (line 52) | static bool show_user_defined_docstrings() {
function show_function_signatures (line 56) | static bool show_function_signatures() { return global_state().show_func...
type state (line 62) | struct state {
function state (line 68) | static state &global_state() {
FILE: libs/pybind/pybind11/pybind11.h
function PYBIND11_NAMESPACE_BEGIN (line 50) | PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
type InitializingFunctionRecordDeleter (line 152) | struct InitializingFunctionRecordDeleter {
function PYBIND11_NOINLINE (line 161) | PYBIND11_NOINLINE unique_function_record make_function_record() {
type capture (line 169) | struct capture {
function class (line 313) | class strdup_guard {
function release (line 325) | void release() { strings.clear(); }
function initialize_generic (line 332) | void initialize_generic(unique_function_record &&unique_rec,
function capsule (line 503) | capsule rec_capsule(unique_rec.release(),
function loader_life_support (line 933) | loader_life_support guard{}
function append_note_if_missing_header_is_suspected (line 1019) | auto append_note_if_missing_header_is_suspected = [](std::string &msg) {
function module_ (line 1200) | static module_ import(const char *name) {
function reload (line 1209) | void reload() {
type module_def (line 1237) | struct module_def {}
function module_ (line 1246) | static module_ create_extension_module(const char *name, const char *doc...
function dict (line 1288) | inline dict globals() {
function object (line 1297) | object make_simple_namespace(Args &&...args_) {
function mark_parents_nonsimple (line 1368) | void mark_parents_nonsimple(PyTypeObject *value) {
function add_base (line 1567) | void add_base(detail::type_record &rec) {
function add_base (line 1574) | void add_base(detail::type_record &) {}
type capture (line 1640) | struct capture {
function cpp_function (line 1675) | cpp_function fget([pm](const type &c) -> const D & { return c.*pm; }
function cpp_function (line 1685) | cpp_function fget([pm](const type &c) -> const D & { return c.*pm; }
function cpp_function (line 1692) | cpp_function fget([pm](const object &) -> const D & { return *pm; }
function cpp_function (line 1700) | cpp_function fget([pm](const object &) -> const D & { return *pm; }
function init_holder (line 1811) | void init_holder(detail::instance *inst,
function init_holder_from_existing (line 1829) | static void init_holder_from_existing(const detail::value_and_holder &v_h,
function init_holder_from_existing (line 1836) | static void init_holder_from_existing(const detail::value_and_holder &v_h,
function init_holder (line 1845) | static void init_holder(detail::instance *inst,
function init_instance (line 1862) | static void init_instance(detail::instance *inst, const void *holder_ptr) {
function dealloc (line 1872) | static void dealloc(detail::value_and_holder &v_h) {
function detail (line 1890) | static detail::function_record *get_function_record(handle h) {
function enum_name (line 1931) | PYBIND11_NAMESPACE_BEGIN(detail)
function PYBIND11_NOINLINE (line 2097) | PYBIND11_NOINLINE void export_values() {
type equivalent_integer (line 2111) | struct equivalent_integer
type equivalent_integer (line 2115) | struct equivalent_integer
type equivalent_integer (line 2119) | struct equivalent_integer
type equivalent_integer (line 2123) | struct equivalent_integer
type equivalent_integer (line 2127) | struct equivalent_integer
type equivalent_integer (line 2131) | struct equivalent_integer
type equivalent_integer (line 2135) | struct equivalent_integer
type equivalent_integer (line 2139) | struct equivalent_integer
function keep_alive_impl (line 2208) | void keep_alive_impl(handle nurse, handle patient) {
function PYBIND11_NOINLINE (line 2238) | PYBIND11_NOINLINE void
function std (line 2256) | inline std::pair<decltype(internals::registered_types_py)::iterator, bool>
function result_type (line 2312) | result_type operator()(Iterator &it) const { return *it; }
function result_type (line 2334) | result_type operator()(Iterator &it) const { return (*it).first; }
function result_type (line 2347) | result_type operator()(Iterator &it) const { return (*it).second; }
function set_flag (line 2463) | struct set_flag {
function register_exception_translator (line 2493) | inline void register_exception_translator(ExceptionTranslator &&translat...
function register_local_exception_translator (line 2504) | inline void register_local_exception_translator(ExceptionTranslator &&tr...
function get_exception_object (line 2536) | PYBIND11_NAMESPACE_BEGIN(detail)
function register_exception (line 2571) | PYBIND11_NAMESPACE_END(detail)
function print (line 2600) | void print(const tuple &args, const dict &kwargs) {
function get_type_override (line 2649) | PYBIND11_NAMESPACE_BEGIN(detail)
function get_override (line 2739) | PYBIND11_NAMESPACE_END(detail)
function function (line 2845) | inline function
FILE: libs/pybind/pybind11/pytypes.h
type arg (line 34) | struct arg
type arg_v (line 35) | struct arg_v
type obj_attr (line 45) | struct obj_attr
type str_attr (line 46) | struct str_attr
type generic_item (line 47) | struct generic_item
type sequence_item (line 48) | struct sequence_item
type list_item (line 49) | struct list_item
type tuple_item (line 50) | struct tuple_item
function class (line 60) | class pyobject_tag {}
function handle (line 221) | const handle &dec_ref() const & {
function class (line 259) | class object : public handle {
function restore (line 395) | void restore() {
function discard_as_unraisable (line 405) | void discard_as_unraisable(object err_context) {
function discard_as_unraisable (line 411) | void discard_as_unraisable(const char *err_context) {
function clear (line 417) | void clear() {}
function matches (line 422) | bool matches(handle exc) const {
function raise_from (line 441) | inline void raise_from(PyObject *type, const char *message) {
function raise_from (line 471) | inline void raise_from(error_already_set &err, PyObject *type, const cha...
function isinstance (line 501) | inline bool isinstance<object>(handle obj) {
function isinstance (line 507) | inline bool isinstance(handle obj, handle type) {
function hasattr (line 517) | inline bool hasattr(handle obj, handle name) {
function hasattr (line 521) | inline bool hasattr(handle obj, const char *name) {
function delattr (line 525) | inline void delattr(handle obj, handle name) {
function delattr (line 531) | inline void delattr(handle obj, const char *name) {
function object (line 537) | inline object getattr(handle obj, handle name) {
function object (line 545) | inline object getattr(handle obj, const char *name) {
function object (line 553) | inline object getattr(handle obj, handle name, handle default_) {
function object (line 561) | inline object getattr(handle obj, const char *name, handle default_) {
function setattr (line 569) | inline void setattr(handle obj, handle name, handle value) {
function setattr (line 575) | inline void setattr(handle obj, const char *name, handle value) {
function hash (line 581) | inline ssize_t hash(handle obj) {
function get_function (line 591) | PYBIND11_NAMESPACE_BEGIN(detail)
function PyObject (line 610) | inline PyObject *dict_getitemstring(PyObject *v, const char *key) {
function PyObject (line 629) | inline PyObject *dict_getitem(PyObject *v, PyObject *key) {
function handle (line 652) | inline handle object_or_cast(PyObject *ptr) { return ptr; }
function object (line 725) | static object get(handle obj, handle key) { return getattr(obj, key); }
function set (line 726) | static void set(handle obj, handle key, handle val) { setattr(obj, key, ...
function set (line 729) | struct str_attr {
type generic_item (line 735) | struct generic_item {
function set (line 746) | static void set(handle obj, handle key, handle val) {
type sequence_item (line 753) | struct sequence_item {
type list_item (line 774) | struct list_item {
type tuple_item (line 795) | struct tuple_item {
function reference (line 835) | reference operator[](difference_type n) const { return *(*this + n); }
function pointer (line 836) | pointer operator->() const { return **this; }
function arrow_proxy (line 884) | PYBIND11_NAMESPACE_BEGIN(iterator_policies)
function class (line 896) | class sequence_fast_readonly {
function increment (line 907) | void increment() { ++ptr; }
function decrement (line 908) | void decrement() { --ptr; }
function advance (line 909) | void advance(ssize_t n) { ptr += n; }
function equal (line 910) | bool equal(const sequence_fast_readonly &b) const { return ptr == b.ptr; }
function distance_to (line 911) | ssize_t distance_to(const sequence_fast_readonly &b) const { return ptr ...
function class (line 918) | class sequence_slow_readwrite {
function increment (line 928) | void increment() { ++index; }
function decrement (line 929) | void decrement() { --index; }
function advance (line 930) | void advance(ssize_t n) { index += n; }
function equal (line 931) | bool equal(const sequence_slow_readwrite &b) const { return index == b.i...
function distance_to (line 932) | ssize_t distance_to(const sequence_slow_readwrite &b) const { return ind...
function class (line 940) | class dict_readonly {
function increment (line 952) | void increment() {
function equal (line 957) | bool equal(const dict_readonly &b) const { return pos == b.pos; }
function PyIterable_Check (line 977) | inline bool PyIterable_Check(PyObject *obj) {
function PyNone_Check (line 987) | inline bool PyNone_Check(PyObject *o) { return o == Py_None; }
function PyEllipsis_Check (line 988) | inline bool PyEllipsis_Check(PyObject *o) { return o == Py_Ellipsis; }
function PyUnicode_Check_Permissive (line 991) | inline bool PyUnicode_Check_Permissive(PyObject *o) {
function PyStaticMethod_Check (line 999) | inline bool PyStaticMethod_Check(PyObject *o) { return o->ob_type == &Py...
function class (line 1001) | class kwargs_proxy : public handle {
function class (line 1006) | class args_proxy : public handle {
function Parent (line 1053) | Name(const object &o) ...
function Parent (line 1077) | Name(const object &o) : Parent(o) { ...
function class (line 1102) | class iterator : public object {
function reference (line 1124) | reference operator*() const {
function pointer (line 1132) | pointer operator->() const {
function iterator (line 1150) | static iterator sentinel() { return {}; }
function class (line 1167) | class type : public object {
function class (line 1193) | class iterable : public object {
function namespace (line 1288) | inline namespace literals {
function operator (line 1343) | operator std::string_view() const {
function bytes (line 1357) | inline bytes::bytes(const pybind11::str &s) {
function str (line 1377) | inline str::str(const bytes &b) {
function class (line 1392) | class bytearray : public object {
function class (line 1422) | class none : public object {
function class (line 1428) | class ellipsis : public object {
function class (line 1434) | class bool_ : public object {
function as_unsigned (line 1455) | PYBIND11_NAMESPACE_BEGIN(detail)
function class (line 1510) | class float_ : public object {
function class (line 1532) | class weakref : public object {
function class (line 1546) | class slice : public object {
function compute (line 1574) | bool compute(
function object (line 1583) | object index_to_object(T index) {
function class (line 1588) | class capsule : public object {
function explicit (line 1628) | explicit capsule(void (*destructor)()) {
function set_pointer (line 1657) | void set_pointer(const void *value) {
function class (line 1667) | class tuple : public object {
function args_are_all_keyword_or_ds (line 1690) | bool args_are_all_keyword_or_ds() {
function class (line 1694) | class dict : public object {
function clear (line 1713) | void clear() /* py-non-const */ { PyDict_Clear(ptr()); }
function class (line 1729) | class sequence : public object {
function class (line 1746) | class list : public object {
function class (line 1776) | class args : public tuple {
function class (line 1817) | class staticmethod : public object {
function class (line 1840) | class memoryview : public object {
function memoryview (line 1919) | memoryview from_buffer(const T *ptr,
function memoryview (line 1949) | static memoryview from_memory(const void *mem, ssize_t size) {
function memoryview (line 1954) | static memoryview from_memory(std::string_view mem) {
function memoryview (line 1963) | inline memoryview memoryview::from_buffer(void *ptr,
function len (line 2002) | inline size_t len(handle h) {
function len_hint (line 2012) | inline size_t len_hint(handle h) {
function str (line 2027) | inline str repr(handle h) {
function iterator (line 2042) | inline iterator iter(handle obj) {
FILE: libs/pybind/pybind11/stl.h
function PYBIND11_NAMESPACE_BEGIN (line 35) | PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
function reserve_maybe (line 169) | void reserve_maybe(const sequence &, void *) {}
function load (line 301) | bool load(handle src, bool convert) {
type type_caster (line 334) | struct type_caster
type variant_caster_visitor (line 339) | struct variant_caster_visitor {
FILE: libs/pybind/pybind11/stl/filesystem.h
function PyObject (line 45) | static PyObject *unicode_from_fs_native(const std::wstring &w) {
function load (line 59) | bool load(handle handle, bool) {
type type_caster (line 99) | struct type_caster
FILE: libs/pybind/pybind11/stl_bind.h
function PYBIND11_NAMESPACE_BEGIN (line 18) | PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
FILE: libs/registry/CachedKey.h
function namespace (line 5) | namespace registry
FILE: libs/registry/Widgets.h
function namespace (line 13) | namespace registry
FILE: libs/registry/adaptors.h
function namespace (line 8) | namespace registry
FILE: libs/registry/buffer.h
function namespace (line 9) | namespace registry
FILE: libs/registry/registry.h
function namespace (line 10) | namespace registry
FILE: libs/render.h
type RenderIndex (line 42) | typedef unsigned int RenderIndex;
type std (line 46) | typedef std::vector<RenderIndex> IndexBuffer;
type std (line 53) | typedef std::vector<Vertex> Vertices;
function else (line 56) | struct bnode {
type typename (line 106) | typedef typename Vertices::const_iterator iterator;
function Vertex (line 118) | const Vertex* data() const {
function Vertex (line 124) | const Vertex& operator[](std::size_t index) const {
function clear (line 128) | void clear() {
function reserve (line 135) | void reserve(std::size_t max_vertices) {
function RenderIndex (line 140) | RenderIndex insert(const Vertex& vertex) {
type Vertex3 (line 164) | typedef Vertex3 Normal3;
function double_quantise (line 167) | inline double double_quantise(double component, double precision)
function Vertex3 (line 173) | inline Vertex3 vertex3f_quantised(const Vertex3& vertex, double precision)
function VertexCb (line 181) | inline VertexCb pointvertex_quantised(const VertexCb& v) {
function pointvertex_gl_array (line 186) | inline void pointvertex_gl_array(const VertexCb* array)
function class (line 193) | class RenderablePointVector
function setColour (line 220) | void setColour(const Colour4b& colour)
function VertexCb (line 228) | const VertexCb& operator[](std::size_t i) const
function clear (line 256) | void clear() {
function resize (line 260) | void resize(std::size_t size) {
function reserve (line 264) | void reserve(std::size_t size) {
function push_back (line 268) | void push_back(const VertexCb& point) {
function Vertex3 (line 283) | struct RemappingTraits<Vertex3>
function VertexCb (line 290) | struct RemappingTraits<VertexCb>
function MeshVertex (line 297) | struct RemappingTraits<MeshVertex>
function RenderVertex (line 304) | struct RemappingTraits<render::RenderVertex>
function class (line 310) | class RemapXYZ
function class (line 322) | class RemapYZX
function class (line 334) | class RemapZXY
FILE: libs/render/CamRenderer.h
function namespace (line 7) | namespace render
FILE: libs/render/CameraView.h
function namespace (line 14) | namespace camera
FILE: libs/render/Colour4.h
function class (line 14) | class Colour4: public Vector4f
function Colour4 (line 66) | static const Colour4& WHITE()
FILE: libs/render/Colour4b.h
type Colour4b (line 4) | struct Colour4b
FILE: libs/render/CompactWindingVertexBuffer.h
function namespace (line 6) | namespace render
function explicit (line 93) | explicit CompactWindingVertexBuffer(std::size_t size) :
function Slot (line 133) | Slot pushWinding(const std::vector<VertexT>& winding)
function replaceWinding (line 148) | void replaceWinding(Slot slot, const std::vector<VertexT>& winding)
function removeWinding (line 161) | void removeWinding(Slot slot)
function removeWindings (line 178) | void removeWindings(const std::vector<Slot>& slotsToRemove)
FILE: libs/render/ContinuousBuffer.h
function namespace (line 10) | namespace render
FILE: libs/render/GeometryStore.h
type class (line 21) | enum class
function syncToBufferObjects (line 30) | struct FrameBuffer
function recordVertexTransaction (line 56) | void recordVertexTransaction(Slot slot, std::size_t offset, std::size_t ...
function recordIndexTransaction (line 64) | void recordIndexTransaction(Slot slot, std::size_t offset, std::size_t n...
function syncToBufferObjects (line 127) | void syncToBufferObjects() override
function onFrameFinished (line 134) | void onFrameFinished()
function Slot (line 140) | Slot allocateSlot(std::size_t numVertices, std::size_t numIndices) override
function Slot (line 153) | Slot allocateIndexSlot(Slot slotContainingVertexData, std::size_t numInd...
function updateData (line 171) | void updateData(Slot slot, const std::vector<RenderVertex>& vertices,
function updateSubData (line 193) | void updateSubData(Slot slot, std::size_t vertexOffset, const std::vecto...
function resizeData (line 215) | void resizeData(Slot slot, std::size_t vertexSize, std::size_t indexSize...
function deallocateSlot (line 237) | void deallocateSlot(Slot slot) override
function BufferAddresses (line 251) | BufferAddresses getBufferAddresses(Slot slot) const override
FILE: libs/render/IndexedVertexBuffer.h
function namespace (line 9) | namespace render
FILE: libs/render/MeshVertex.h
function class (line 14) | class MeshVertex
function namespace (line 76) | namespace render
function MeshTriangle_calcTangents (line 137) | inline void MeshTriangle_calcTangents(const MeshVertex& a,
function MeshTriangle_sumTangents (line 194) | inline void MeshTriangle_sumTangents(MeshVertex& a, MeshVertex& b, MeshV...
FILE: libs/render/NopRenderView.h
function namespace (line 8) | namespace render
FILE: libs/render/NopVolumeTest.h
function namespace (line 6) | namespace render
FILE: libs/render/Rectangle.h
function namespace (line 3) | namespace render
FILE: libs/render/RenderVertex.h
function namespace (line 7) | namespace render
FILE: libs/render/RenderableBoundingBoxes.h
function queueUpdate (line 27) | void queueUpdate()
FILE: libs/render/RenderableBox.h
function namespace (line 7) | namespace render
FILE: libs/render/RenderableCollectionWalker.h
function namespace (line 7) | namespace render
FILE: libs/render/RenderableCollectorBase.h
function namespace (line 8) | namespace render
FILE: libs/render/RenderableColouredBoundingBoxes.h
function namespace (line 5) | namespace render
FILE: libs/render/RenderableGeometry.h
function namespace (line 8) | namespace render
FILE: libs/render/RenderablePivot.h
function queueUpdate (line 25) | void queueUpdate()
function Vector4 (line 37) | static const Vector4 ColourX{ 255, 0, 0, 255 };
FILE: libs/render/RenderableSpacePartition.h
function namespace (line 11) | namespace render
FILE: libs/render/RenderableSurface.h
function namespace (line 8) | namespace render
FILE: libs/render/RenderableTextBase.h
function namespace (line 5) | namespace render
FILE: libs/render/RenderableVertexArray.h
function namespace (line 6) | namespace render
function GetGeometryType (line 31) | struct PointIndexer
function setColour (line 66) | void setColour(const Vector4& colour)
function updateGeometry (line 78) | void updateGeometry() override
FILE: libs/render/SceneRenderWalker.h
function namespace (line 6) | namespace render
FILE: libs/render/StaticRenderableText.h
function namespace (line 5) | namespace render
FILE: libs/render/TexCoord2f.h
function class (line 6) | class TexCoord2f :
function t (line 36) | double& t() {
function operator (line 43) | bool operator< (const TexCoord2f& other) const {
function namespace (line 54) | namespace math
FILE: libs/render/TextureToolView.h
function namespace (line 7) | namespace render
FILE: libs/render/VBO.h
function namespace (line 9) | namespace render
function deleteVBO (line 55) | inline void deleteVBO(GLuint& id)
FILE: libs/render/Vertex3f.h
function namespace (line 10) | namespace render
FILE: libs/render/VertexBuffer.h
function namespace (line 8) | namespace render
FILE: libs/render/VertexCb.h
function class (line 7) | class VertexCb
FILE: libs/render/VertexHashing.h
function namespace (line 28) | namespace render
function Vector3 (line 41) | struct std::hash<Vector3>
function Vector3f (line 56) | struct std::hash<Vector3f>
function MeshVertex (line 70) | struct std::hash<MeshVertex>
function MeshVertex (line 82) | struct std::equal_to<MeshVertex>
function RenderVertex (line 97) | struct std::hash<render::RenderVertex>
function RenderVertex (line 109) | struct std::equal_to<render::RenderVertex>
FILE: libs/render/VertexNCb.h
type VertexNCb (line 7) | struct VertexNCb
FILE: libs/render/VertexNT.h
type VertexNT (line 6) | struct VertexNT
FILE: libs/render/VertexTraits.h
function namespace (line 3) | namespace render
FILE: libs/render/View.h
function namespace (line 21) | namespace render
function resetCullStats (line 199) | void resetCullStats()
FILE: libs/render/WindingRenderer.h
function namespace (line 10) | namespace render
function Slot (line 763) | Slot allocateSlotMapping()
function BucketIndex (line 780) | inline static BucketIndex GetBucketIndexForWindingSize(std::size_t windi...
FILE: libs/scene/AABBAccumulateWalker.h
function namespace (line 6)
Copy disabled (too large)
Download .json
Condensed preview — 2658 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (29,753K chars).
[
{
"path": ".editorconfig",
"chars": 147,
"preview": "# To learn more about .editorconfig see https://aka.ms/editorconfigdocs\n\n# All files\n[*]\nindent_style = space\n\n# Xml fil"
},
{
"path": ".gitattributes",
"chars": 563,
"preview": "# Auto detect text files and perform LF normalization\n* text=auto\n.gitattributes export-ignore\n.github export-ignore\n.gi"
},
{
"path": ".github/workflows/build.yml",
"chars": 4674,
"preview": "name: Build\n\non: [push]\n\njobs:\n Windows-Build:\n runs-on: windows-latest\n\n env:\n # Path to the solution file "
},
{
"path": ".gitignore",
"chars": 1104,
"preview": "# Linux build files\nMakefile\nCMakeFiles\nCMakeCache.txt\ncmake_install.cmake\n/config.h\n/install_manifest.txt\n/radiant/dark"
},
{
"path": ".gitlab-ci.yml",
"chars": 344,
"preview": "image: asciidoctor/docker-asciidoctor\n\npages:\n stage: deploy\n script:\n - mkdir .public\n - asciidoctor -a stylesheet="
},
{
"path": "AUTHORS",
"chars": 1686,
"preview": " OrbWeaver\n greebo\n STiFU\n mohij\n angua\n Crispy\n Gildoran\n Jesps (Bulge patch algorithm)\n\nGtkRadiant CONTRIBUTOR"
},
{
"path": "CMakeLists.txt",
"chars": 4821,
"preview": "cmake_minimum_required(VERSION 3.12)\n\n# Project name and version\nproject(darkradiant VERSION 3.9.2)\n\n# C++ standard\nset("
},
{
"path": "DarkRadiant.sln",
"chars": 16486,
"preview": "Microsoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 17\nVisualStudioVersion = 17.9.34728."
},
{
"path": "Doxyfile",
"chars": 53593,
"preview": "# Doxyfile 1.5.3\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org) "
},
{
"path": "GPL",
"chars": 18011,
"preview": "\t\t GNU GENERAL PUBLIC LICENSE\n\t\t Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc."
},
{
"path": "LICENSE",
"chars": 2405,
"preview": "DarkRadiant License (last update: 2024-03-08)\n--------------------------------------------------------------------------"
},
{
"path": "NEWS",
"chars": 0,
"preview": ""
},
{
"path": "PKGBUILD",
"chars": 517,
"preview": "# Maintainer: codereader <greebo[AT]angua[DOT]at>\npkgname=darkradiant\npkgver=3.8.0\npkgrel=1\npkgdesc=\"Level Editor for Do"
},
{
"path": "README.md",
"chars": 6837,
"preview": "<img align=\"right\" src=\"https://github.com/codereader/DarkRadiant/blob/master/install/bitmaps/repository_logo.png?raw=tr"
},
{
"path": "config.h.in",
"chars": 786,
"preview": "\n/* Core module file, e.g. \"libradiantcore\" */\n#cmakedefine CORE_MODULE_LIBRARY \"@CORE_MODULE_LIBRARY@\"\n\n/* Project vers"
},
{
"path": "darkradiant.spec",
"chars": 1613,
"preview": "Name:\t\tdarkradiant\nVersion:\t0.9.12\nRelease:\t2%{?dist}\nSummary:\tLevel editor for Doom 3 and The Dark Mod\nGroup:\t\tApplicat"
},
{
"path": "debian/README",
"chars": 164,
"preview": "The Debian Package darkradiant\n----------------------------\n\nComments regarding the Package\n\n -- orbweaver <orbweaver3d@"
},
{
"path": "debian/changelog",
"chars": 13023,
"preview": "darkradiant (3.9.2~jammy1) jammy; urgency=medium\n\n * Fix incorrect preview rendering of vertex blends between pairs of "
},
{
"path": "debian/compat",
"chars": 3,
"preview": "10\n"
},
{
"path": "debian/control",
"chars": 1476,
"preview": "Source: darkradiant\nSection: editors\nPriority: optional\nMaintainer: Matthew Mott <orbweaver3d@gmail.com>\nBuild-Depends: "
},
{
"path": "debian/copyright",
"chars": 1963,
"preview": "Copyright Notice:\n\n© 2006 - 2010 OrbWeaver <orbweaver3d@gmail.com>, greebo & other DarkRadiant\nauthors listed below.\n© 2"
},
{
"path": "debian/darkradiant-i18n.install",
"chars": 17,
"preview": "usr/share/locale\n"
},
{
"path": "debian/darkradiant-plugin-git.install",
"chars": 38,
"preview": "usr/lib/*/darkradiant/plugins/libvcs*\n"
},
{
"path": "debian/darkradiant-plugins-darkmod.install",
"chars": 38,
"preview": "usr/lib/*/darkradiant/plugins/libdm_*\n"
},
{
"path": "debian/darkradiant.install",
"chars": 200,
"preview": "usr/bin\nusr/lib/*/darkradiant/lib*\nusr/lib/*/darkradiant/modules\nusr/share/darkradiant/scripts\nusr/share/darkradiant\nusr"
},
{
"path": "debian/darkradiant.manpages",
"chars": 18,
"preview": "man/darkradiant.1\n"
},
{
"path": "debian/dirs",
"chars": 26,
"preview": "usr/bin\nusr/lib\nusr/share\n"
},
{
"path": "debian/docs",
"chars": 10,
"preview": "README.md\n"
},
{
"path": "debian/rules",
"chars": 199,
"preview": "#!/usr/bin/make -f\n%:\n\tdh $@\n\noverride_dh_auto_configure:\n\tdh_auto_configure -- -DENABLE_RELOCATION:BOOL=OFF\n\noverride_d"
},
{
"path": "debian/source/format",
"chars": 13,
"preview": "3.0 (native)\n"
},
{
"path": "doc/CMakeLists.txt",
"chars": 756,
"preview": "set(DR_STAGING_DOCDIR \"${DR_STAGING_ROOT}/share/doc/darkradiant\")\nadd_custom_command(\n OUTPUT manual.html\n COMMAND"
},
{
"path": "doc/manual.adoc",
"chars": 104838,
"preview": "= DarkRadiant User Guide\n:toc: left\n:toclevels: 3\n:imagesdir: img\n:icons:\n:iconsdir: img\n\n== Introduction\n\nDarkRadiant i"
},
{
"path": "doc/manual.css",
"chars": 29507,
"preview": "/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */\n@import \"https://fonts.googleapis.com/css?fa"
},
{
"path": "doc/manual.html",
"chars": 200714,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<me"
},
{
"path": "include/Bounded.h",
"chars": 359,
"preview": "#ifndef BOUNDED_H_\n#define BOUNDED_H_\n\n#include <memory>\n\n/* FOWARD DECLS */\nclass AABB;\n\n/// Interface for bounded obje"
},
{
"path": "include/GLProgramAttributes.h",
"chars": 333,
"preview": "#pragma once\n\nnamespace render\n{\n\n/**\n * Enumeration for vertex attributes to be bound to a GLProgram, to avoid using\n *"
},
{
"path": "include/Rotatable.h",
"chars": 260,
"preview": "#pragma once\n\n#include \"math/Quaternion.h\"\n\n/// Interface for an object which can be rotated\nclass Rotatable\n{\npublic:\n "
},
{
"path": "include/Scalable.h",
"chars": 244,
"preview": "#pragma once\n\n#include \"math/Vector3.h\"\n\n/// Interface for an object which can be scaled\nclass Scalable\n{\npublic:\n vi"
},
{
"path": "include/StringSerialisable.h",
"chars": 588,
"preview": "#pragma once\n\n#include <string>\n#include <memory>\n\n/**\n * \\brief\n * Interface for an object which can serialise itself t"
},
{
"path": "include/Texture.h",
"chars": 1290,
"preview": "#pragma once\n\n#include <string>\n#include <memory>\n#include <GL/glew.h>\n\n/**\n * \\brief\n * Basic interface for all GL text"
},
{
"path": "include/Translatable.h",
"chars": 269,
"preview": "#pragma once\n\n#include \"math/Vector3.h\"\n\n/// Interface for an object which can be translated\nclass Translatable\n{\npublic"
},
{
"path": "include/VolumeIntersectionValue.h",
"chars": 195,
"preview": "#pragma once\n\n/**\n * \\brief\n * Enumeration of possible intersection results between two volumes.\n */\nenum VolumeIntersec"
},
{
"path": "include/editable.h",
"chars": 1004,
"preview": "#pragma once\n\nclass AABB;\n\n#include \"inode.h\"\n\nclass Snappable\n{\npublic:\n virtual ~Snappable() {}\n\tvirtual void snapt"
},
{
"path": "include/i18n.h",
"chars": 1977,
"preview": "#pragma once\n\n#include <string>\n#include \"imodule.h\"\n#include \"iradiant.h\"\n\nnamespace language\n{\n\nclass ILocalisationPro"
},
{
"path": "include/iaasfile.h",
"chars": 5028,
"preview": "#pragma once\n\n#include <memory>\n#include \"imodule.h\"\n#include <list>\n\n#include \"math/Plane3.h\"\n#include \"math/Vector3.h\""
},
{
"path": "include/iarchive.h",
"chars": 4157,
"preview": "#pragma once\n\n/**\n * \\file iarchive.h\n * Types relating to the use of ZIP archives (PK4 files) and their contents.\n * \\i"
},
{
"path": "include/iarray.h",
"chars": 319,
"preview": "#pragma once\n\nnamespace ui\n{\n\nenum class ArrayArrangement\n{\n Line = 0,\n Circle = 1,\n Spline = 2\n};\n\nenum class "
},
{
"path": "include/iautosaver.h",
"chars": 1785,
"preview": "#pragma once\n\n#include \"imodule.h\"\n\nnamespace map\n{\n\n/**\n * Public interface to to automatic map save algorithms.\n * \n *"
},
{
"path": "include/ibrush.h",
"chars": 11395,
"preview": "#pragma once\n\n#include \"inode.h\"\n#include \"imodule.h\"\n\n#include \"math/Vector2.h\"\n#include \"math/Vector3.h\"\n#include \"mat"
},
{
"path": "include/icameraview.h",
"chars": 3521,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"iinteractiveview.h\"\n#include \"irenderview.h\"\n\ntemplate<typename Element>cla"
},
{
"path": "include/iclipboard.h",
"chars": 1042,
"preview": "#pragma once\n\n#include <string>\n#include \"imodule.h\"\n\nnamespace radiant\n{\n\n/**\n * Interface to DarkRadiant's clipboard w"
},
{
"path": "include/iclipper.h",
"chars": 2315,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"iorthoview.h\"\n#include \"math/Vector3.h\"\n#include \"math/Plane3.h\"\n\n// The po"
},
{
"path": "include/icolourscheme.h",
"chars": 3110,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include <functional>\n#include \"math/Vector3.h\"\n\nnamespace colours\n{\n\n/**\n * Registry"
},
{
"path": "include/icommandsystem.h",
"chars": 11417,
"preview": "#pragma once\n\n#include <memory>\n#include <functional>\n#include \"math/Vector2.h\"\n#include \"math/Vector3.h\"\n\n#include \"imo"
},
{
"path": "include/icomparablenode.h",
"chars": 728,
"preview": "#pragma once\n\n#include <string>\n\nnamespace scene\n{\n\n/**\n * Prototype of a comparable scene node, providing hash informat"
},
{
"path": "include/icounter.h",
"chars": 995,
"preview": "#pragma once\n\n#include <cstddef>\n#include \"imodule.h\"\n\nclass ICounter\n{\npublic:\n /** Destructor */\n\tvirtual ~ICounter"
},
{
"path": "include/icurve.h",
"chars": 1078,
"preview": "#ifndef ICURVE_H_\n#define ICURVE_H_\n\n#include \"inode.h\"\n\nclass CurveNode\n{\npublic:\n /** destructor\n\t */\n\tvirtual ~Cur"
},
{
"path": "include/idatastream.h",
"chars": 2454,
"preview": "/*\nCopyright (C) 2001-2006, William Joseph.\nAll Rights Reserved.\n\nThis file is part of GtkRadiant.\n\nGtkRadiant is free s"
},
{
"path": "include/ideclmanager.h",
"chars": 9954,
"preview": "#pragma once\n\n#include <sigc++/signal.h>\n#include \"imodule.h\"\n#include \"ifilesystem.h\"\n#include \"igameresource.h\"\n#inclu"
},
{
"path": "include/idecltypes.h",
"chars": 1102,
"preview": "#pragma once\n\n#include <stdexcept>\n#include <string>\n\n// Some X11 headers are defining this\n#ifdef None\n#undef None\n#end"
},
{
"path": "include/ieclass.h",
"chars": 3775,
"preview": "/**\n * \\defgroup eclass Entity class manager\n * \\file ieclass.h\n * \\brief Entity Class definition loader API.\n * \\ingrou"
},
{
"path": "include/ieclasscolours.h",
"chars": 2224,
"preview": "#pragma once\n\n#include <functional>\n#include <sigc++/signal.h>\n#include \"imodule.h\"\n#include \"scene/EntityClass.h\"\n#incl"
},
{
"path": "include/ieditstopwatch.h",
"chars": 1630,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include <sigc++/signal.h>\n\nnamespace map\n{\n\n/**\n* Stopwatch to measure the time spen"
},
{
"path": "include/ientity.h",
"chars": 7530,
"preview": "#pragma once\n\n#include \"inode.h\"\n#include \"imodule.h\"\n#include \"irender.h\"\n#include <functional>\n\n#include \"scene/scene_"
},
{
"path": "include/ifavourites.h",
"chars": 2028,
"preview": "#pragma once\n\n#include <set>\n#include <sigc++/signal.h>\n#include \"imodule.h\"\n\nnamespace game\n{\n\n/**\n * Favourite Managem"
},
{
"path": "include/ifilesystem.h",
"chars": 8307,
"preview": "#pragma once\n\n/**\n * \\defgroup vfs Virtual filesystem\n * \\file ifilesystem.h\n * Interface types for the VFS module.\n */\n"
},
{
"path": "include/ifiletypes.h",
"chars": 3084,
"preview": "#pragma once\n\n#include <list>\n#include <string>\n#include \"imodule.h\"\n\n/**\n * Simple structure to store a file pattern (e"
},
{
"path": "include/ifilter.h",
"chars": 6163,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"inode.h\"\n#include \"scene/filters/SceneFilter.h\"\n\n#include <cassert>\n\n#inclu"
},
{
"path": "include/ifonts.h",
"chars": 3497,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"irenderable.h\"\n\n#include <iostream>\n\nclass Material;\ntypedef std::shared_pt"
},
{
"path": "include/ifx.h",
"chars": 5218,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"ideclmanager.h\"\n#include \"math/Vector3.h\"\n\nnamespace fx\n{\n\nclass IFxAction\n"
},
{
"path": "include/igame.h",
"chars": 4878,
"preview": "#pragma once\n\n#include \"xmlutil/Node.h\"\n#include \"imodule.h\"\n#include <list>\n#include <string>\n\n// String identifier for"
},
{
"path": "include/igameresource.h",
"chars": 638,
"preview": "#pragma once\n\n#include <string>\n\nnamespace game\n{\n\n/**\n * Interface for objects representing resources which were define"
},
{
"path": "include/igeometryrenderer.h",
"chars": 2948,
"preview": "#pragma once\n\n#include <vector>\n#include <limits>\n#include <cstdint>\n#include \"igeometrystore.h\"\n#include \"render/Render"
},
{
"path": "include/igeometrystore.h",
"chars": 7545,
"preview": "#pragma once\n\n#include <cstdint>\n#include <vector>\n#include \"math/AABB.h\"\n#include \"render/RenderVertex.h\"\n\nnamespace re"
},
{
"path": "include/igl.h",
"chars": 2612,
"preview": "#pragma once\n\n#include <string>\n#include <sigc++/signal.h>\n#include <GL/glew.h>\n\n#include \"imodule.h\"\n\nnamespace gl\n{\n\n/"
},
{
"path": "include/iglprogram.h",
"chars": 719,
"preview": "#pragma once\n\nclass Matrix4;\n\n/// Representation of a GL vertex/fragment program.\nclass GLProgram\n{\npublic:\n /// Dest"
},
{
"path": "include/igrid.h",
"chars": 2299,
"preview": "#pragma once\n\n/* greebo: The interface of the grid system\n *\n * Use these methods to set/get the grid size of the xyview"
},
{
"path": "include/igroupnode.h",
"chars": 858,
"preview": "#pragma once\n\n#include \"inode.h\"\n\nnamespace scene\n{\n\n/** greebo: This is used to identify group entities right before\n *"
},
{
"path": "include/igui.h",
"chars": 10348,
"preview": "#pragma once\n\n#include <vector>\n#include <string>\n#include <memory>\n#include <map>\n\n#include <sigc++/signal.h>\n#include "
},
{
"path": "include/iimage.h",
"chars": 3906,
"preview": "#pragma once\n\n#include \"igl.h\"\n#include \"imodule.h\"\n\ntypedef unsigned char byte;\n\nclass Texture;\ntypedef std::shared_ptr"
},
{
"path": "include/iinteractiveview.h",
"chars": 1070,
"preview": "#pragma once\n\n#include \"iselectiontest.h\"\n#include \"ivolumetest.h\"\n#include \"math/Vector2.h\"\n\n/**\n * Base class of the i"
},
{
"path": "include/ikeyvaluestore.h",
"chars": 1455,
"preview": "#pragma once\n\n#include <string>\n#include <functional>\n\n/**\n * Interface for an object supporting storage of string-value"
},
{
"path": "include/ilayer.h",
"chars": 7547,
"preview": "#pragma once\n\n#include <set>\n#include <string>\n#include <functional>\n#include \"imodule.h\"\n#include <sigc++/signal.h>\n\nna"
},
{
"path": "include/ilightnode.h",
"chars": 713,
"preview": "#pragma once\n\n#include <memory>\n#include \"inode.h\"\n#include \"math/AABB.h\"\n\n/**\n * LightNodes derive from this class.\n * "
},
{
"path": "include/ilogwriter.h",
"chars": 2093,
"preview": "#pragma once\n\n#include <string>\n#include <mutex>\n\nnamespace applog\n{\n\nenum class LogLevel\n{\n\tVerbose = 0,\n\tStandard,\n\tWa"
},
{
"path": "include/imanipulator.h",
"chars": 4304,
"preview": "#pragma once\n\n#include <memory>\n#include <string>\n#include \"imodule.h\"\n#include \"irenderview.h\"\n\ntemplate<typename Eleme"
},
{
"path": "include/imap.h",
"chars": 8612,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"inode.h\"\n#include \"imapexporter.h\"\n#include \"imapformat.h\"\n#include \"imapme"
},
{
"path": "include/imapexporter.h",
"chars": 864,
"preview": "#pragma once\n\n#include <memory>\n#include \"inode.h\"\n#include \"imapformat.h\"\n\nnamespace map\n{\n\n/**\n * Exporter class used "
},
{
"path": "include/imapfilechangetracker.h",
"chars": 1156,
"preview": "#pragma once\n\n#include \"inode.h\"\n#include <sigc++/signal.h>\n\n/**\n * The file change tracker monitors the changes made to"
},
{
"path": "include/imapformat.h",
"chars": 9630,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"scene/scene_fwd.h\"\n\nnamespace scene\n{\nclass NodeVisitor;\nclass INode;\ntyped"
},
{
"path": "include/imapinfofile.h",
"chars": 5295,
"preview": "#pragma once\n\n#include <string>\n#include <map>\n#include \"imodule.h\"\n#include \"imap.h\"\n#include <functional>\n\nnamespace p"
},
{
"path": "include/imapmerge.h",
"chars": 6253,
"preview": "#pragma once\n\n#include <memory>\n#include <functional>\n#include <sigc++/signal.h>\n#include \"inode.h\"\n\nnamespace scene\n{\n\n"
},
{
"path": "include/imapresource.h",
"chars": 4149,
"preview": "#pragma once\n\n#include \"inode.h\"\n#include \"imodule.h\"\n#include \"itextstream.h\"\n#include \"imap.h\"\n\n#include <sigc++/signa"
},
{
"path": "include/imd5anim.h",
"chars": 2326,
"preview": "#pragma once\n\n#include \"imodule.h\"\n\n#include <vector>\n#include \"math/Vector3.h\"\n#include \"math/Quaternion.h\"\n\nnamespace "
},
{
"path": "include/imd5model.h",
"chars": 653,
"preview": "#pragma once\n\n#include <memory>\n#include \"imd5anim.h\"\n\nnamespace md5\n{\n\n/**\n * Interface for a MD5 model object. This ca"
},
{
"path": "include/imessagebus.h",
"chars": 3404,
"preview": "#pragma once\n\n#include <string>\n#include <functional>\n\nnamespace radiant\n{\n\nclass IMessage\n{\nprivate:\n bool _handled;"
},
{
"path": "include/imodel.h",
"chars": 8015,
"preview": "#pragma once\n\n#include \"Bounded.h\"\n#include \"irender.h\"\n#include \"inode.h\"\n#include \"modelskin.h\"\n#include \"imodule.h\"\n#"
},
{
"path": "include/imodelcache.h",
"chars": 2058,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"imodel.h\"\n#include \"inode.h\"\n#include <sigc++/signal.h>\n\nnamespace model \n{"
},
{
"path": "include/imodelsurface.h",
"chars": 1897,
"preview": "#pragma once\n\n// Math/Vertex classes\n#include \"render/MeshVertex.h\"\n\nclass AABB;\n\nnamespace model\n{\n\n// A Polygon (Trian"
},
{
"path": "include/imodule.h",
"chars": 18173,
"preview": "#pragma once\n\n#include <memory>\n#include <functional>\n#include <cassert>\n#include <sigc++/trackable.h>\n#include <sigc++/"
},
{
"path": "include/imousetool.h",
"chars": 5106,
"preview": "#pragma once\n\n#include <string>\n#include <memory>\n#include <list>\n#include \"imousetoolevent.h\"\n\nclass RenderSystem;\nclas"
},
{
"path": "include/imousetoolevent.h",
"chars": 1890,
"preview": "#pragma once\n\n#include \"icameraview.h\"\n#include \"iorthoview.h\"\n#include \"math/Vector2.h\"\n\nnamespace ui\n{\n\n// Base class "
},
{
"path": "include/imousetoolmanager.h",
"chars": 4219,
"preview": "#pragma once\n\n#include \"imousetool.h\"\n#include \"imodule.h\"\n#include <list>\n#include <functional>\n#include <memory>\n\nname"
},
{
"path": "include/imru.h",
"chars": 1111,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include <sigc++/signal.h>\n\nnamespace map\n{\n\nconst char* const LOAD_MRU_MAP_CMD = \"Lo"
},
{
"path": "include/inameobserver.h",
"chars": 640,
"preview": "#ifndef _NAME_OBSERVER_H_\n#define _NAME_OBSERVER_H_\n\n#include <string>\n#include <memory>\n\n/**\n * greebo: A NameObserver "
},
{
"path": "include/inamespace.h",
"chars": 5824,
"preview": "#pragma once\n\n#include <set>\n#include \"inode.h\"\n#include \"imodule.h\"\n\n// Forward declaration (is declared in inameobserv"
},
{
"path": "include/inode.h",
"chars": 8629,
"preview": "#pragma once\n\n#include \"Bounded.h\"\n#include \"ilayer.h\"\n#include \"irenderable.h\"\n\n#include <string>\n#include <memory>\n\ncl"
},
{
"path": "include/iobjectrenderer.h",
"chars": 1892,
"preview": "#pragma once\n\n#include <set>\n#include <vector>\n#include \"igl.h\"\n#include \"igeometrystore.h\"\n\nnamespace render\n{\n\nclass I"
},
{
"path": "include/iorthoview.h",
"chars": 3487,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"iinteractiveview.h\"\n\ntemplate<typename Element>\nclass BasicVector3;\ntypedef"
},
{
"path": "include/iparticlenode.h",
"chars": 655,
"preview": "#pragma once\n\n#include \"inode.h\"\n#include <memory>\n\nnamespace particles\n{\n\nclass IRenderableParticle;\ntypedef std::share"
},
{
"path": "include/iparticles.h",
"chars": 6974,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"irenderable.h\"\n#include \"ideclmanager.h\"\n\n#include <functional>\n#include <s"
},
{
"path": "include/iparticlestage.h",
"chars": 9675,
"preview": "#pragma once\n\n#include <string>\n#include <memory>\n\ntemplate<typename Element> class BasicVector3;\ntypedef BasicVector3<d"
},
{
"path": "include/ipatch.h",
"chars": 9523,
"preview": "#pragma once\n\n#include \"imodule.h\"\n\n#include <stdexcept>\n#include \"inode.h\"\n#include \"math/Vector2.h\"\n#include \"math/Vec"
},
{
"path": "include/ipath.h",
"chars": 1962,
"preview": "#ifndef IPATH_H_\n#define IPATH_H_\n\n#include \"inode.h\"\n#include <vector>\n\nnamespace scene {\n\n/** greebo: This is the base"
},
{
"path": "include/ipreferencesystem.h",
"chars": 6340,
"preview": "#pragma once\n\n#include <list>\n#include \"imodule.h\"\n#include \"i18n.h\"\n\n// A list containing possible values for a combo b"
},
{
"path": "include/iradiant.h",
"chars": 1998,
"preview": "#pragma once\n\n#include \"imodule.h\"\n\n#include <sigc++/signal.h>\n#include <functional>\n\nconst char* const MODULE_RADIANT_C"
},
{
"path": "include/iregion.h",
"chars": 658,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"math/AABB.h\"\n\nnamespace map\n{\n\nclass IRegionManager :\n\tpublic RegisterableM"
},
{
"path": "include/iregistry.h",
"chars": 3388,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"xmlutil/Node.h\"\n\n#include <sigc++/slot.h>\n#include <sigc++/signal.h>\n\n/**\n "
},
{
"path": "include/irender.h",
"chars": 23118,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"irenderview.h\"\n#include \"iwindingrenderer.h\"\n#include \"igeometryrenderer.h\""
},
{
"path": "include/irenderable.h",
"chars": 4061,
"preview": "#pragma once\n\n#include <memory>\n\nclass MeshVertex;\nclass Shader;\ntypedef std::shared_ptr<Shader> ShaderPtr;\n\nclass Rende"
},
{
"path": "include/irenderableobject.h",
"chars": 1118,
"preview": "#pragma once\n\n#include <memory>\n#include <sigc++/signal.h>\n#include \"igeometrystore.h\"\n#include \"math/AABB.h\"\n#include \""
},
{
"path": "include/irendersystemfactory.h",
"chars": 896,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"irender.h\"\n\nclass RenderSystem;\ntypedef std::shared_ptr<RenderSystem> Rende"
},
{
"path": "include/irenderview.h",
"chars": 589,
"preview": "#pragma once\n\n#include \"ivolumetest.h\"\n#include <cstddef>\n#include <string>\n\nclass Frustum;\n\nnamespace render\n{\n\n// Inte"
},
{
"path": "include/iscatter.h",
"chars": 361,
"preview": "#pragma once\n\nnamespace ui\n{\n\nenum class ScatterDensityMethod\n{\n Density = 0,\n Amount = 1\n};\n\nenum class ScatterDi"
},
{
"path": "include/iscenegraph.h",
"chars": 4418,
"preview": "#pragma once\n\n#include <cstddef>\n#include \"imodule.h\"\n#include \"inode.h\"\n#include \"ipath.h\"\n#include \"imap.h\"\n#include <"
},
{
"path": "include/iscenegraphfactory.h",
"chars": 908,
"preview": "#pragma once\n\n#include \"iscenegraph.h\"\n\nnamespace scene\n{\n\n/**\n * greebo: The scenegraph factory can be used to generate"
},
{
"path": "include/iscript.h",
"chars": 2311,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include <sigc++/signal.h>\n\nnamespace script\n{\n\nstruct ExecutionResult\n{\n\t// The outp"
},
{
"path": "include/iscriptinterface.h",
"chars": 590,
"preview": "#pragma once\n\n#include <memory>\n#include <vector>\n#include <utility>\n#include <pybind11/pybind11.h>\nnamespace py = pybin"
},
{
"path": "include/iselectable.h",
"chars": 984,
"preview": "#pragma once\n\n#include <memory>\n#include \"inode.h\"\n\n/**\n * greebo: A Selectable is everything that can be highlighted\n *"
},
{
"path": "include/iselection.h",
"chars": 8904,
"preview": "#pragma once\n\n#include <cstddef>\n#include \"imodule.h\"\n#include <memory>\n#include <sigc++/signal.h>\n#include \"imanipulato"
},
{
"path": "include/iselectiongroup.h",
"chars": 4623,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"iselectable.h\"\n#include <sigc++/signal.h>\n\n// GroupSelectables are regular "
},
{
"path": "include/iselectionset.h",
"chars": 2852,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"inode.h\"\n#include <set>\n\n#include <sigc++/signal.h>\n\nnamespace selection\n{\n"
},
{
"path": "include/iselectiontest.h",
"chars": 11016,
"preview": "#pragma once\n\n#include <cstddef>\n\n#include \"math/FloatTools.h\"\n#include \"inode.h\"\n#include \"iselection.h\"\n#include <memo"
},
{
"path": "include/ishaderclipboard.h",
"chars": 2373,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"iselectiontest.h\"\n\nnamespace selection\n{\n\nenum class PasteMode\n{\n\t// Shader"
},
{
"path": "include/ishaderexpression.h",
"chars": 4001,
"preview": "#pragma once\n\n#include <memory>\n#include \"iimage.h\"\n\nclass IRenderEntity;\n\nnamespace shaders\n{\n\n// Material registers, u"
},
{
"path": "include/ishaderlayer.h",
"chars": 15519,
"preview": "#pragma once\n\n#include \"Texture.h\"\n#include \"ishaderexpression.h\"\n\n#include <memory>\n#include <vector>\n#include <string>"
},
{
"path": "include/ishaders.h",
"chars": 23955,
"preview": "#pragma once\n\n#include \"iimage.h\"\n#include \"ideclmanager.h\"\n#include \"imodule.h\"\n#include \"ifilesystem.h\"\n#include <sigc"
},
{
"path": "include/isound.h",
"chars": 3684,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"ideclmanager.h\"\n#include \"igameresource.h\"\n\n#include <vector>\n#include <fun"
},
{
"path": "include/ispacepartition.h",
"chars": 3203,
"preview": "#ifndef _ISPACE_PARTITION_H_\n#define _ISPACE_PARTITION_H_\n\n#include <list>\n#include <vector>\n#include \"imodule.h\"\n\n// Fo"
},
{
"path": "include/ispeakernode.h",
"chars": 581,
"preview": "#pragma once\n\n#include <memory>\n#include \"inode.h\"\n#include \"math/AABB.h\"\n\n/**\n * Speaker entity node interface, allowin"
},
{
"path": "include/isurfacerenderer.h",
"chars": 2197,
"preview": "#pragma once\n\n#include \"irenderableobject.h\"\n#include \"igeometrystore.h\"\n\n#include <vector>\n#include <limits>\n#include <"
},
{
"path": "include/itexdef.h",
"chars": 317,
"preview": "#pragma once\n\nnamespace brush\n{\n\n/**\n * greebo: The texture definition structure containing the scale,\n * rotation and s"
},
{
"path": "include/itextstream.h",
"chars": 6523,
"preview": "#pragma once\n\n/// \\file\n/// \\brief Text-stream interfaces.\n\n#include <cstddef>\n#include <stdio.h>\n#include <streambuf>\n#"
},
{
"path": "include/itexturetoolcolours.h",
"chars": 1028,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"render/Colour4.h\"\n\nnamespace textool\n{\n\nenum class ColourScheme\n{\n Light"
},
{
"path": "include/itexturetoolmodel.h",
"chars": 9008,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"inode.h\"\n#include \"Bounded.h\"\n#include \"iselection.h\"\n#include \"iselectiont"
},
{
"path": "include/itraceable.h",
"chars": 743,
"preview": "#pragma once\n\ntemplate<typename Element> class BasicVector3;\ntypedef BasicVector3<double> Vector3;\nclass Ray;\n\n#include "
},
{
"path": "include/itransformable.h",
"chars": 1895,
"preview": "#pragma once\n\n#include <memory>\n\nenum TransformModifierType\n{\n\tTRANSFORM_PRIMITIVE,\n\tTRANSFORM_COMPONENT,\n};\n\n// Forward"
},
{
"path": "include/itransformnode.h",
"chars": 666,
"preview": "#pragma once\n\n#include \"inode.h\"\n\nclass Matrix4;\n\n/// A node which can transform the coordinate space of its children\ncl"
},
{
"path": "include/iundo.h",
"chars": 4096,
"preview": "#pragma once\n\n/// \\file\n/// \\brief The undo-system interface. Uses the 'memento' pattern.\n\n#include \"imodule.h\"\n#include"
},
{
"path": "include/iversioncontrol.h",
"chars": 1865,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"iarchive.h\"\n\nnamespace vcs\n{\n\n/**\n * Common interface of a version control "
},
{
"path": "include/ivolumetest.h",
"chars": 2201,
"preview": "/*\nCopyright (C) 2001-2006, William Joseph.\nAll Rights Reserved.\n\nThis file is part of GtkRadiant.\n\nGtkRadiant is free s"
},
{
"path": "include/iwindingrenderer.h",
"chars": 1967,
"preview": "#pragma once\n\n#include <vector>\n#include <limits>\n#include <cstdint>\n#include \"render/RenderVertex.h\"\n\nclass IRenderEnti"
},
{
"path": "include/modelskin.h",
"chars": 5182,
"preview": "#pragma once\n\n#include <vector>\n#include <set>\n#include \"imodule.h\"\n#include <sigc++/signal.h>\n#include \"ideclmanager.h\""
},
{
"path": "include/precompiled_interfaces.h",
"chars": 2076,
"preview": "/** \n * greebo: Precompiled header module. This is included by the respective precompiled.h\n * files throughout the proj"
},
{
"path": "include/precompiled_main.h",
"chars": 826,
"preview": "/** \n * greebo: The main precompiled header file, as included by the different \n * projects and modules. By setting the "
},
{
"path": "include/precompiled_math.h",
"chars": 385,
"preview": "/** \n * greebo: Precompiled header module. This is included by the respective precompiled.h\n * files throughout the proj"
},
{
"path": "include/precompiled_render_interfaces.h",
"chars": 338,
"preview": "/** \n * greebo: Precompiled header module. This is included by the respective precompiled.h\n * files throughout the proj"
},
{
"path": "include/precompiled_ui_interfaces.h",
"chars": 356,
"preview": "/** \n * greebo: Precompiled header module. This is included by the respective precompiled.h\n * files throughout the proj"
},
{
"path": "include/ui/ianimationchooser.h",
"chars": 785,
"preview": "#pragma once\n\n#include <string>\n\nnamespace ui\n{\n\nclass IAnimationChooser\n{\npublic:\n\tvirtual ~IAnimationChooser() {}\n\n\tst"
},
{
"path": "include/ui/ideclpreview.h",
"chars": 632,
"preview": "#pragma once\n\n#include <string>\n\nclass wxWindow;\n\nnamespace ui\n{\n\n/**\n * Interface of a declaration preview widget.\n * W"
},
{
"path": "include/ui/idialogmanager.h",
"chars": 5824,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include <memory>\n\nclass wxWindow;\n\nnamespace ui\n{\n\nclass IDialog\n{\npublic:\n\tvirtual "
},
{
"path": "include/ui/ientityinspector.h",
"chars": 4579,
"preview": "#pragma once\n\n#include \"imodule.h\"\n\nclass Entity;\nclass wxPanel;\nclass wxWindow;\nclass IEntitySelection; // defined in i"
},
{
"path": "include/ui/ieventmanager.h",
"chars": 7212,
"preview": "#pragma once\n\n#include <string>\n#include <memory>\n#include <functional>\n\n#include \"imodule.h\"\n\nclass wxWindow;\nclass wxM"
},
{
"path": "include/ui/ifilechooser.h",
"chars": 1685,
"preview": "#pragma once\n\n#include <memory>\n#include <string>\n\nclass wxWindow;\n\nnamespace ui\n{\n\n/**\n * The FileChooser class can be "
},
{
"path": "include/ui/imainframe.h",
"chars": 5740,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include <sigc++/signal.h>\n\nconstexpr const char* const MODULE_MAINFRAME(\"MainFrame\")"
},
{
"path": "include/ui/imenu.h",
"chars": 2805,
"preview": "#pragma once\n\n#include <memory>\n\n#include <functional>\n#include <memory>\n\nclass wxMenuItem;\n\nnamespace ui\n{\n\n/**\n * An a"
},
{
"path": "include/ui/imenumanager.h",
"chars": 3225,
"preview": "#pragma once\n\n#include \"imodule.h\"\n\nclass wxMenuBar;\n\nnamespace ui\n{\n\nnamespace menu\n{\n\n/** \n * greebo: The possible men"
},
{
"path": "include/ui/iorthocontextmenu.h",
"chars": 1243,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"ui/imenu.h\"\n\nnamespace ui\n{\n\nclass IOrthoContextMenu :\n\tpublic Registerable"
},
{
"path": "include/ui/iresourcechooser.h",
"chars": 900,
"preview": "#pragma once\n\n#include <string>\n#include <memory>\n\nclass wxWindow;\n\nnamespace ui\n{\n\n/**\n * A Resource Chooser is a dialo"
},
{
"path": "include/ui/istatusbarmanager.h",
"chars": 3054,
"preview": "#pragma once\n\n#include \"imodule.h\"\n\nclass wxWindow;\n\nnamespace ui\n{\n\nnamespace statusbar\n{\n\n// Use these positions to pl"
},
{
"path": "include/ui/itoolbarmanager.h",
"chars": 1761,
"preview": "#pragma once\n\n#include \"imodule.h\"\nclass wxToolBar;\nclass wxWindow;\n\nnamespace ui\n{\n\n/**\n * \\brief\n * Manager object whi"
},
{
"path": "include/ui/iusercontrol.h",
"chars": 3846,
"preview": "#pragma once\n\n#include <memory>\n#include <string>\n\nclass wxWindow;\n\nnamespace ui\n{\n\n/**\n * @brief An object which can cr"
},
{
"path": "include/ui/iuserinterface.h",
"chars": 2093,
"preview": "#pragma once\n\n#include \"imodule.h\"\n#include \"iusercontrol.h\"\n\nnamespace ui\n{\n\n/**\n * @brief Module responsible for creat"
},
{
"path": "include/ui/iwindowstate.h",
"chars": 563,
"preview": "#pragma once\n\n#include <string>\n\nnamespace ui\n{\n/**\n * Interface of an object that supports saving and loading its state"
},
{
"path": "include/ui/iwxgl.h",
"chars": 876,
"preview": "#pragma once\n\n#include \"imodule.h\"\n\nnamespace wxutil { class GLWidget; }\n\nnamespace ui\n{\n\n// Application wide manager fo"
},
{
"path": "include/version.h",
"chars": 826,
"preview": "#pragma once\n\n#ifdef HAVE_CONFIG_H\n#include <config.h>\n#define RADIANT_VERSION PACKAGE_VERSION\n#else\n#define RADIANT_VER"
},
{
"path": "install/bitmaps/.gitignore",
"chars": 127,
"preview": "# These files are already copied from the game connection plugin folder, ignore in Windows\n/CameraSync.png\n/CameraSyncBa"
},
{
"path": "install/colours.xml",
"chars": 10232,
"preview": "<?xml version=\"1.0\"?>\n<colourschemes>\n\t<colourscheme name=\"DarkRadiant Default\" readonly=\"1\" active=\"1\" version=\"1.0\">\n "
},
{
"path": "install/commandsystem.xml",
"chars": 6585,
"preview": "<?xml version=\"1.0\"?>\n<commandsystem>\n\t<!-- These are the default statements used by vanilla DarkRadiant, don't remove t"
},
{
"path": "install/darkradiant.desktop.in",
"chars": 531,
"preview": "[Desktop Entry]\nVersion=1.0\nName=DarkRadiant\nGenericName=Level editor\nKeywords=doom;doom3;idtech;level;map;the dark mod;"
},
{
"path": "install/debug.xml",
"chars": 2732,
"preview": "<debug>\n\t<mapdoom3>\n\t\t<!-- <discardEntityClass value=\"func_static\" /> -->\n\t\t<!-- <entityRange start=\"0\" end=\"100\" /> -->"
},
{
"path": "install/games/darkmod.game",
"chars": 15817,
"preview": "<?xml version=\"1.0\"?>\n<game\n type=\"doom3\"\n index=\"10\"\n name=\"The Dark Mod 2.0 (Standalone)\"\n enginepath_win32=\"C:/ga"
},
{
"path": "install/games/doom3-demo.game",
"chars": 13535,
"preview": "<?xml version=\"1.0\"?>\n<game\n index=\"16\"\n name=\"Doom 3 Demo\"\n enginepath_win32=\"C:/games/doom3/\"\n enginepath_linux=\"/"
},
{
"path": "install/games/doom3.game",
"chars": 14360,
"preview": "<?xml version=\"1.0\"?>\n<game\n type=\"doom3\"\n index=\"15\"\n name=\"Doom 3\"\n enginepath_win32=\"C:/games/doom3/\"\n enginepat"
},
{
"path": "install/games/prey.game",
"chars": 9814,
"preview": "<?xml version=\"1.0\"?>\n<game\n type=\"quake4\"\n index=\"20\"\n name=\"Prey\"\n enginepath_win32=\"C:/games/prey/\"\n enginepath_"
},
{
"path": "install/games/quake3.game",
"chars": 9859,
"preview": "<?xml version=\"1.0\"?>\n<game\n type=\"quake3\"\n index=\"20\"\n name=\"Quake 3\"\n enginepath_win32=\"C:/games/quake3/\"\n engine"
},
{
"path": "install/games/quake4.game",
"chars": 9777,
"preview": "<?xml version=\"1.0\"?>\n<game\n type=\"quake4\"\n index=\"25\"\n name=\"Quake 4\"\n enginepath_win32=\"C:/games/quake4/\"\n engine"
},
{
"path": "install/games/xreal.game",
"chars": 14013,
"preview": "<?xml version=\"1.0\"?>\n<game\n type=\"doom3\"\n index=\"30\"\n name=\"XreaL\"\n enginepath_win32=\"C:/games/XreaL/\"\n enginepath"
},
{
"path": "install/gl/blend_light_fp.glsl",
"chars": 862,
"preview": "#version 130\n\nuniform sampler2D u_LightProjectionTexture; // light projection texture\nuniform sampler2D u_LightFallOffTe"
},
{
"path": "install/gl/blend_light_vp.glsl",
"chars": 727,
"preview": "#version 130\n\nin vec4 attr_Position; // bound to attribute 0 in source, in object space\n\nuniform mat4 u_ModelViewProjec"
},
{
"path": "install/gl/cubemap_fp.glsl",
"chars": 504,
"preview": "#version 130\n\n// Sampler bound to texture unit 0\nuniform samplerCube u_cubemap;\n\n// The view origin as set by the C++ co"
},
{
"path": "install/gl/cubemap_vp.glsl",
"chars": 611,
"preview": "\n// The view origin as set by the C++ code\nuniform vec3 u_view_origin;\n\n// The texture coordinate for this vertex, wi"
},
{
"path": "install/gl/interaction_fp.glsl",
"chars": 7699,
"preview": "#version 130\n\nuniform sampler2D\tu_Diffusemap;\nuniform sampler2D\tu_Bumpmap;\nuniform sampler2D\tu_Specularmap;\nuniform samp"
},
{
"path": "install/gl/interaction_vp.glsl",
"chars": 2984,
"preview": "#version 140\n\nin vec4 attr_Position; // bound to attribute 0 in source, in object space\nin vec4 attr_TexCoord; // boun"
},
{
"path": "install/gl/regular_stage_fp.glsl",
"chars": 338,
"preview": "#version 130\n\n// Sampler bound to texture unit 0\nuniform sampler2D u_Map;\n\nvarying vec2 var_TexDiffuse; // texture coord"
},
{
"path": "install/gl/regular_stage_vp.glsl",
"chars": 1374,
"preview": "#version 130\n\nin vec4 attr_Position; // bound to attribute 0 in source, in object space\nin vec4 attr_TexCoord; // boun"
},
{
"path": "install/gl/shadowmap_fp.glsl",
"chars": 325,
"preview": "#version 140\n\nuniform sampler2D u_Diffuse;\nuniform float u_AlphaTest;\n\n// The final diffuse texture coordinate a"
},
{
"path": "install/gl/shadowmap_vp.glsl",
"chars": 2647,
"preview": "#version 140\n\nin vec4 attr_Position; // bound to attribute 0 in source, in object space\nin vec4 attr_TexCoord; // bound "
},
{
"path": "install/gl/zfill_alpha_fp.glsl",
"chars": 550,
"preview": "#version 120\n\nuniform sampler2D u_Diffuse;\nuniform float u_AlphaTest;\nuniform mat4 u_ObjectTransform;\n\n//"
},
{
"path": "install/gl/zfill_alpha_vp.glsl",
"chars": 934,
"preview": "#version 140\n\nin vec4 attr_Position; // bound to attribute 0 in source, in object space\nin vec4 attr_TexCoord; // bound "
}
]
// ... and 2458 more files (download for full content)
About this extraction
This page contains the full source code of the codereader/DarkRadiant GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2658 files (26.7 MB), approximately 7.1M tokens, and a symbol index with 9187 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.