diff options
| author | heavydemon21 <nielsstunnebrink1@gmail.com> | 2024-11-20 14:33:20 +0100 | 
|---|---|---|
| committer | heavydemon21 <nielsstunnebrink1@gmail.com> | 2024-11-20 14:33:20 +0100 | 
| commit | 81664b46f5cb7c28d629ddafe4cbea7e717d62d2 (patch) | |
| tree | 9a14cb4e490e74f5af344bd77d41f57c39d0412d /src | |
| parent | d623b13dab63408cf5e99dbc453636f174bc6fe8 (diff) | |
| parent | d4dd3ceab2b95c26f3b07092a5c80f47eab18110 (diff) | |
Merge branch 'master' into niels/RenderingParticle
Diffstat (limited to 'src')
| -rw-r--r-- | src/doc/feature/script.dox | 62 | ||||
| -rw-r--r-- | src/doc/features.dox | 10 | ||||
| -rw-r--r-- | src/doc/index.dox | 10 | ||||
| -rw-r--r-- | src/doc/installing.dox | 9 | ||||
| -rw-r--r-- | src/doc/layout.xml | 252 | ||||
| -rw-r--r-- | src/doc/style.css | 4 | ||||
| -rw-r--r-- | src/makefile | 7 | 
7 files changed, 352 insertions, 2 deletions
diff --git a/src/doc/feature/script.dox b/src/doc/feature/script.dox new file mode 100644 index 0000000..d25a63b --- /dev/null +++ b/src/doc/feature/script.dox @@ -0,0 +1,62 @@ +// vim:ft=doxygen +namespace crepe { +/** + +\defgroup feature_script Scripting +\ingroup feature +\brief User-defined scripts for game objects + +Scripts can be used to implement game behavior, and allow arbitrary code to run +as part of the game loop. Scripts are implemented as derivative classes of +Script, which are added to game objects using the BehaviorScript \ref Component +"component". + +\todo This section is incomplete: +- Utility functions to get components/events/etc inside script +- How to listen for events +- Extensions of script (keylistener) + +\see Script +\see BehaviorScript +\see GameObject + +\par Example + +First, define a class that inherits from Script. This class acts as an +interface, and has two functions (\ref Script::init "\c init()" and \ref +Script::update "\c update()"), which may be implemented (they are empty by +default). From now on, this derivative class will be referred to as a *concrete +script*. + +```cpp +#include <crepe/api/Script.h> +#include <crepe/api/BehaviorScript.h> + +class MyScript : public crepe::Script { +	void init() { +		// called once +	} +	void update() { +		// called on fixed update +	} +}; +``` + +Concrete scripts can be instantiated and attached to \ref GameObject +"game objects" using the BehaviorScript \ref Component "component". + +```cpp +using namespace crepe; +GameObject obj = component_manager.new_object("name"); + +// create BehaviorScript instance +BehaviorScript & behavior_script = obj.add_component<BehaviorScript>(); +// attach (and instantiate) MyScript to behavior_script +behavior_script.set_script<MyScript>(); + +// the above can also be done in a single call for convenience: +obj.add_component<BehaviorScript>().set_script<MyScript>(); +``` + +*/ +} diff --git a/src/doc/features.dox b/src/doc/features.dox new file mode 100644 index 0000000..4786bed --- /dev/null +++ b/src/doc/features.dox @@ -0,0 +1,10 @@ +// vim:ft=doxygen +/** + +\defgroup feature Features +\brief Engine components + +This page lists engine features and contains usage instructions for each +feature. + +*/ diff --git a/src/doc/index.dox b/src/doc/index.dox new file mode 100644 index 0000000..5ec7889 --- /dev/null +++ b/src/doc/index.dox @@ -0,0 +1,10 @@ +// vim:ft=doxygen +/** + +\mainpage crêpe game engine + +Welcome to the documentation for the crêpe game engine. + +\see feature + +*/ diff --git a/src/doc/installing.dox b/src/doc/installing.dox new file mode 100644 index 0000000..48b27d7 --- /dev/null +++ b/src/doc/installing.dox @@ -0,0 +1,9 @@ +// vim:ft=doxygen +/** + +\defgroup install Installation +\brief Engine installation instructions + +\todo This entire page + +*/ diff --git a/src/doc/layout.xml b/src/doc/layout.xml new file mode 100644 index 0000000..2244fa7 --- /dev/null +++ b/src/doc/layout.xml @@ -0,0 +1,252 @@ +<?xml version="1.0" encoding="UTF-8"?> +<doxygenlayout version="1.0"> +	<navindex> +		<tab type="mainpage" visible="yes" title=""/> +		<tab type="pages" visible="no" title="" intro=""/> +		<tab type="topics" visible="yes" title="" intro=""/> +		<tab type="modules" visible="yes" title="" intro=""> +			<tab type="modulelist" visible="yes" title="" intro=""/> +			<tab type="modulemembers" visible="yes" title="" intro=""/> +		</tab> +		<tab type="namespaces" visible="no" title=""> +			<tab type="namespacelist" visible="yes" title="" intro=""/> +			<tab type="namespacemembers" visible="yes" title="" intro=""/> +		</tab> +		<tab type="concepts" visible="yes" title=""> +		</tab> +		<tab type="interfaces" visible="yes" title=""> +			<tab type="interfacelist" visible="yes" title="" intro=""/> +			<tab type="interfaceindex" visible="$ALPHABETICAL_INDEX" title=""/> +			<tab type="interfacehierarchy" visible="yes" title="" intro=""/> +		</tab> +		<tab type="classes" visible="yes" title=""> +			<tab type="classlist" visible="yes" title="" intro=""/> +			<tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/> +			<tab type="hierarchy" visible="yes" title="" intro=""/> +			<tab type="classmembers" visible="yes" title="" intro=""/> +		</tab> +		<tab type="structs" visible="yes" title=""> +			<tab type="structlist" visible="yes" title="" intro=""/> +			<tab type="structindex" visible="$ALPHABETICAL_INDEX" title=""/> +		</tab> +		<tab type="exceptions" visible="yes" title=""> +			<tab type="exceptionlist" visible="yes" title="" intro=""/> +			<tab type="exceptionindex" visible="$ALPHABETICAL_INDEX" title=""/> +			<tab type="exceptionhierarchy" visible="yes" title="" intro=""/> +		</tab> +		<tab type="files" visible="yes" title=""> +			<tab type="filelist" visible="yes" title="" intro=""/> +			<tab type="globals" visible="yes" title="" intro=""/> +		</tab> +		<tab type="examples" visible="yes" title="" intro=""/> +	</navindex> +	<class> +		<briefdescription visible="yes"/> +		<includes visible="$SHOW_HEADERFILE"/> +		<inheritancegraph visible="yes"/> +		<collaborationgraph visible="yes"/> +		<memberdecl> +			<nestedclasses visible="yes" title=""/> +			<publictypes title=""/> +			<services title=""/> +			<interfaces title=""/> +			<publicslots title=""/> +			<signals title=""/> +			<publicmethods title=""/> +			<publicstaticmethods title=""/> +			<publicattributes title=""/> +			<publicstaticattributes title=""/> +			<protectedtypes title=""/> +			<protectedslots title=""/> +			<protectedmethods title=""/> +			<protectedstaticmethods title=""/> +			<protectedattributes title=""/> +			<protectedstaticattributes title=""/> +			<packagetypes title=""/> +			<packagemethods title=""/> +			<packagestaticmethods title=""/> +			<packageattributes title=""/> +			<packagestaticattributes title=""/> +			<properties title=""/> +			<events title=""/> +			<privatetypes title=""/> +			<privateslots title=""/> +			<privatemethods title=""/> +			<privatestaticmethods title=""/> +			<privateattributes title=""/> +			<privatestaticattributes title=""/> +			<friends title=""/> +			<related title="" subtitle=""/> +			<membergroups visible="yes"/> +		</memberdecl> +		<detaileddescription title=""/> +		<memberdef> +			<inlineclasses title=""/> +			<typedefs title=""/> +			<enums title=""/> +			<services title=""/> +			<interfaces title=""/> +			<constructors title=""/> +			<functions title=""/> +			<related title=""/> +			<variables title=""/> +			<properties title=""/> +			<events title=""/> +		</memberdef> +		<allmemberslink visible="yes"/> +		<usedfiles visible="$SHOW_USED_FILES"/> +		<authorsection visible="yes"/> +	</class> +	<namespace> +		<briefdescription visible="yes"/> +		<memberdecl> +			<nestednamespaces visible="yes" title=""/> +			<constantgroups visible="yes" title=""/> +			<interfaces visible="yes" title=""/> +			<classes visible="yes" title=""/> +			<concepts visible="yes" title=""/> +			<structs visible="yes" title=""/> +			<exceptions visible="yes" title=""/> +			<typedefs title=""/> +			<sequences title=""/> +			<dictionaries title=""/> +			<enums title=""/> +			<functions title=""/> +			<variables title=""/> +			<properties title=""/> +			<membergroups visible="yes"/> +		</memberdecl> +		<detaileddescription title=""/> +		<memberdef> +			<inlineclasses title=""/> +			<typedefs title=""/> +			<sequences title=""/> +			<dictionaries title=""/> +			<enums title=""/> +			<functions title=""/> +			<variables title=""/> +			<properties title=""/> +		</memberdef> +		<authorsection visible="yes"/> +	</namespace> +	<concept> +		<briefdescription visible="yes"/> +		<includes visible="$SHOW_HEADERFILE"/> +		<definition visible="yes" title=""/> +		<detaileddescription title=""/> +		<authorsection visible="yes"/> +	</concept> +	<file> +		<briefdescription visible="yes"/> +		<includes visible="$SHOW_INCLUDE_FILES"/> +		<includegraph visible="yes"/> +		<includedbygraph visible="yes"/> +		<sourcelink visible="yes"/> +		<memberdecl> +			<interfaces visible="yes" title=""/> +			<classes visible="yes" title=""/> +			<structs visible="yes" title=""/> +			<exceptions visible="yes" title=""/> +			<namespaces visible="yes" title=""/> +			<concepts visible="yes" title=""/> +			<constantgroups visible="yes" title=""/> +			<defines title=""/> +			<typedefs title=""/> +			<sequences title=""/> +			<dictionaries title=""/> +			<enums title=""/> +			<functions title=""/> +			<variables title=""/> +			<properties title=""/> +			<membergroups visible="yes"/> +		</memberdecl> +		<detaileddescription title=""/> +		<memberdef> +			<inlineclasses title=""/> +			<defines title=""/> +			<typedefs title=""/> +			<sequences title=""/> +			<dictionaries title=""/> +			<enums title=""/> +			<functions title=""/> +			<variables title=""/> +			<properties title=""/> +		</memberdef> +		<authorsection/> +	</file> +	<group> +		<detaileddescription title=""/> +		<groupgraph visible="yes"/> +		<memberdecl> +			<nestedgroups visible="yes" title=""/> +			<modules visible="yes" title=""/> +			<dirs visible="yes" title=""/> +			<files visible="yes" title=""/> +			<namespaces visible="yes" title=""/> +			<concepts visible="yes" title=""/> +			<classes visible="yes" title=""/> +			<defines title=""/> +			<typedefs title=""/> +			<sequences title=""/> +			<dictionaries title=""/> +			<enums title=""/> +			<enumvalues title=""/> +			<functions title=""/> +			<variables title=""/> +			<signals title=""/> +			<publicslots title=""/> +			<protectedslots title=""/> +			<privateslots title=""/> +			<events title=""/> +			<properties title=""/> +			<friends title=""/> +			<membergroups visible="yes"/> +		</memberdecl> +		<memberdef> +			<pagedocs/> +			<inlineclasses title=""/> +			<defines title=""/> +			<typedefs title=""/> +			<sequences title=""/> +			<dictionaries title=""/> +			<enums title=""/> +			<enumvalues title=""/> +			<functions title=""/> +			<variables title=""/> +			<signals title=""/> +			<publicslots title=""/> +			<protectedslots title=""/> +			<privateslots title=""/> +			<events title=""/> +			<properties title=""/> +			<friends title=""/> +		</memberdef> +		<authorsection visible="yes"/> +	</group> +	<module> +		<briefdescription visible="yes"/> +		<exportedmodules visible="yes"/> +		<memberdecl> +			<concepts visible="yes" title=""/> +			<classes visible="yes" title=""/> +			<enums title=""/> +			<typedefs title=""/> +			<functions title=""/> +			<variables title=""/> +			<membergroups title=""/> +		</memberdecl> +		<detaileddescription title=""/> +		<memberdecl> +			<files visible="yes"/> +		</memberdecl> +	</module> +	<directory> +		<briefdescription visible="yes"/> +		<directorygraph visible="yes"/> +		<memberdecl> +			<dirs visible="yes"/> +			<files visible="yes"/> +		</memberdecl> +		<detaileddescription title=""/> +	</directory> +</doxygenlayout> diff --git a/src/doc/style.css b/src/doc/style.css new file mode 100644 index 0000000..08bc9f5 --- /dev/null +++ b/src/doc/style.css @@ -0,0 +1,4 @@ +#titlearea, +address { +	display: none; +} diff --git a/src/makefile b/src/makefile index 5f80204..a0e8f02 100644 --- a/src/makefile +++ b/src/makefile @@ -1,6 +1,9 @@  .PHONY: FORCE -FMT := $(shell git ls-files '*.c' '*.cpp' '*.h' '*.hpp')  format: FORCE -	clang-tidy -p build/compile_commands.json --fix-errors $(FMT) +	$(MAKE) -C .. $@ + +LINT := $(shell git ls-files '*.c' '*.cpp' '*.h' '*.hpp') +lint: FORCE +	clang-tidy -p build/compile_commands.json --fix-errors $(LINT)  |