From 887e5221b6b6dba109b31c5d68b52d2913b2c54e Mon Sep 17 00:00:00 2001 From: Relintai Date: Tue, 28 Jul 2020 14:04:39 +0200 Subject: [PATCH] Proper Readme.md. --- README.md | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 95 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b5bad00..c1ec166 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,96 @@ -# Props +# Props Module + +This is a c++ engine module for the Godot Engine. + +It gives you props, and editor utilities to convert scenes to props. + +It supports both godot 3.2 and 4.0 (master). Note that since 4.0 is still in very early stages I only +check whether it works from time to time. + +# Pre-built binaries + +You can grab a pre-built editor binary from the releases tab in the [Broken Seals](https://github.com/Relintai/broken_seals/releases) +repo, should you want to. It contains all my modules. + +# Optional Dependencies + +[Mesh Data Resource](https://github.com/Relintai/mesh_data_resource): Support for merged meshes, even in gles2. +[Texture Packer](https://github.com/Relintai/texture_packer): Prop Instance will use this to merge textures. +[Thread Pool](https://github.com/Relintai/thread_pool): Prop Instance will use this for multithreaded generation. + +# PropData + +Props are basicly 3D scenes in a simple format, so other things can easily process them without instancing. + +For example if you create a building from MeshDataInstances, and then convert that scene to a prop, Voxelman +can spawn it, merge it's meshes, and create lods without any scene instancing. + +PropData is the main class you'll use, it's main purpose it to store a list of PropDataEntries. + +# PropDataEntries + +These are the classes that actually store data. + +They contain 4 methods for scene->prop conversion, namely: + +``` +//Whether or not this PropDataEntry can process the given Node. +virtual bool _processor_handles(Node *node); + +//Save the given Node into the given prop_data any way you like, at tranform. +virtual void _processor_process(Ref prop_data, Node *node, const Transform &transform); + +//Turn PropDataEntry back into a Node +virtual Node *_processor_get_node_for(const Transform &transform); + +//Whether the system should skip evaluating the children of a processes Node or not. See PropDataScene, or PropDataProp. +virtual bool _processor_evaluate_children(); +``` + +# PropInstances + +PropInstances are not yet finished. + +They will be able to merge meshes, texture etc from a Prop, and also generate lods for it. + +Essenrtially they will be a more advanced MeshInstance. + +Voxelman implements all of this, just haven't finished porting it yet. + +# PropUtils Singleton + +The PropUtils singleton helps with scene->prop conversion. + +You can register new PropDataEntries as processors, should you need to. + +# Scene conversion + +You can either click the new "To Prop" button on the menubar of the 3D scene for a quick conversion, +or look into Project->Tools. + +# Building + +1. Get the source code for the engine. + +If you want Godot 3.2: +```git clone -b 3.2 https://github.com/godotengine/godot.git godot``` + +If you want Godot 4.0: +```git clone https://github.com/godotengine/godot.git godot``` + + +2. Go into Godot's modules directory. + +``` +cd ./godot/modules/ +``` + +3. Clone this repository + +``` +git clone https://github.com/Relintai/texture_packer texture_packer +``` + +4. Build Godot. [Tutorial](https://docs.godotengine.org/en/latest/development/compiling/index.html) + -A prop module for godot. \ No newline at end of file