Commit Graph

309 Commits

Author SHA1 Message Date
18ad178b1e Moved the create_meshers call from BUILD_PHASE_SETUP to _build. This causes it to run on the main thread. This is the first time I got a crash related to this, also the engine docs suggests that only scenetree manipulation is unsafe from threads, so this might have been caused by something else. 2020-07-18 13:12:29 +02:00
dee38b1588 Fix light's position, as it expects it's coordinates in voxel world data space. Will probably change this eventually. 2020-07-07 18:01:21 +02:00
5ee5b12a4e Update _bake_light in VoxelChunkDefault to use the new apis. 2020-07-07 17:35:44 +02:00
eac68265c1 Fix transforms in add_prop. 2020-07-07 17:02:30 +02:00
b8aaaf499b Implemented add_prop in VoxelWorld. (Some of the transform calculations still need to be fixed.) 2020-07-07 02:22:45 +02:00
6f7c4fbc8a Removed VoxelChunkPropData, the api of VoxelWorld, and VoxelChunk now uses PropDatas directly. 2020-07-07 01:06:46 +02:00
1355c301e8 Update draw_debug_mdr_colliders's logic to use the new api. Also fix error spam when a mesh data doens't have a collider. 2020-06-30 20:28:37 +02:00
3190217284 Moved simple collider storage from VoxelChunkDefault to VoxelChunk and separated it from the mesh data resource api. 2020-06-30 18:55:50 +02:00
138614f743 Update MeshDataResource offsets, as now they are Transforms. 2020-06-30 15:24:11 +02:00
a4b5400a4e Fix debug collider offsets. 2020-06-30 15:10:48 +02:00
7777056af3 Fix collider transform. 2020-06-30 11:59:22 +02:00
bb2f13b075 Small improvements. Also added commented out code for debugging the terrarin meshes (They will need to be converted be lines). 2020-06-29 23:44:54 +02:00
b54a1021d4 Moved away from using ImmediateGeometry for debug meshes. Also implemented debugging mdr colliders. 2020-06-29 23:08:52 +02:00
2e69796d08 Implement collider transforms. 2020-06-28 21:55:00 +02:00
9e2d71169b Add prop uv rect query into the library, and make add_mesh_data_resource use it. 2020-06-28 21:31:26 +02:00
1996f60f0f Fix indexing. 2020-06-28 21:30:26 +02:00
21d135fb0b Now chunk can only have one prop mesher. 2020-06-28 20:04:40 +02:00
70d9cdf6db Removed unused member. 2020-06-28 19:16:11 +02:00
0138c02bf8 Implemented meshing chunk's mesh data resources. 2020-06-28 19:02:49 +02:00
cb6d8f5156 Added mesh data resources to VoxelChunk. 2020-06-28 16:57:53 +02:00
be4876c2f1 Fix compile if the props module isn't present. 2020-06-27 18:25:23 +02:00
a991de9d2e Moved PropData to the props modue. 2020-06-27 17:04:40 +02:00
78be4a6666 A bit more work on props. 2020-06-23 19:32:37 +02:00
7aa0edf98e Work on updating the prop meshing implementation (does not work yet). 2020-06-23 14:30:49 +02:00
19a255c4dd Fix typo. 2020-06-23 01:13:04 +02:00
15659929b2 Added a few const qualifiers. 2020-06-23 01:05:41 +02:00
88ab910eb8 Brought back the old Prop implementation, and PropTool, because not only this implementation was already done, it will work better than spawning possibly thousands of nodes with the props module, but I also found a way to eventually make it more user friendly. 2020-06-22 21:49:58 +02:00
b88e430950 Remove unused import. 2020-06-20 22:07:50 +02:00
7219d7b2d4 Added a Cubic chunk and World. 2020-06-12 19:34:47 +02:00
7c95171944 Added a MarchingCubes World and Chunk. 2020-06-12 18:36:00 +02:00
7c93cc8f52 VoxelWorldDefault will not update lods automatically for now. 2020-05-23 21:59:58 +02:00
1d51be2f0b Moved 4.0 compatibility code into a new defines.h (like in ESS). 2020-05-23 10:34:47 +02:00
703acd1b56 Fix world to voxel calculations when the voxel scale is not 1. 2020-05-19 00:50:19 +02:00
edce32b190 Fix compile for 4.0. 2020-05-16 21:32:02 +02:00
19f3c1f8ff Fix compile for javascript. 2020-04-26 00:34:34 +02:00
af0c4d6586 add_chunk will error out now if a chunk is already owned by an another world. Also smaller improvements to set_chunks and the exit tree notification. 2020-04-22 15:57:00 +02:00
a2a9c1f714 Fix an in-editor scene-saving related crash. 2020-04-22 12:35:48 +02:00
9475986ee0 Added is_inside_tree() property to VoxelChunk. 2020-04-22 12:33:14 +02:00
b970c86264 Hide a few properties from the editor, and also from serialization. 2020-04-22 12:26:53 +02:00
49af0c9f30 Fix potential crash. 2020-04-22 12:23:49 +02:00
efd08f69bf Allow the level generator to be null, without failing. 2020-04-22 12:21:50 +02:00
a34ceedf6a Now merge_mesh_array and bake_mesh_array_uv will work properly even if the supplied arrays don't have all the expected channels. 2020-04-22 12:20:33 +02:00
a306f8cf91 Add queued generation the VoxelChunkDefault. 2020-04-22 12:16:31 +02:00
f00dd13c43 Fix typo. 2020-04-20 18:19:33 +02:00
5235641122 Only build liquid colliders inside the editor. 2020-04-20 17:41:37 +02:00
61c246c069 Disabled area generation for now. 2020-04-20 17:33:04 +02:00
9635ef064c A bit more work on areas. They don't work properly yet, they might need to have a closed mesh. 2020-04-20 17:30:22 +02:00
ed990caa32 Fix threaded ingame area generation. 2020-04-20 13:59:37 +02:00
70c884d273 Fix a few in-editor crashes. 2020-04-20 13:54:24 +02:00
5748179d66 The temp collider arrays are now properly cleared. 2020-04-20 13:40:27 +02:00
289c456428 Now VoxelChunkDefault can create area colliders aswell, liquids are created using these in the running game. (Only there because the editor needs raycasting.) Also fixed setting liquid visibility. 2020-04-20 01:01:24 +02:00
6e9a952a2a Implemented liquid meshing. 2020-04-20 00:31:46 +02:00
21ad01ca80 Removed separate liquid surfaces. They will be contained inside the normal voxel arrays. 2020-04-19 23:35:47 +02:00
4a2321b161 Some settings in world will now get distributed to chunks. is_build_threaded has been moved from coxel chunk default to voxel chunk. ALso fixed a few crashes. 2020-04-18 02:15:01 +02:00
23d9acb5d4 Ported the lod level updater code from broken seals. 2020-04-17 22:09:55 +02:00
2d5b9ed029 Removed build_deferred, and build_prioritized methods from the default chunk. 2020-04-17 20:24:50 +02:00
bee499d951 The library now has an initialized bool. Also the world editor will refresh rects in the library if needed. 2020-04-17 19:21:46 +02:00
c382dac3ff Added a new tool to the world editor, it adds a block to the location of the spatial editor's camera. 2020-04-17 18:36:14 +02:00
5c0ab27715 Added 3 more helper functions to voxel world. 2020-04-17 10:15:50 +02:00
9cdd107565 Added the surface lists into scroll containers. Also text is now aligned to the left on the buttons. 2020-04-17 02:39:23 +02:00
35863196d7 Now the world editor will use the channel reported by world's get_channel_index_info. Also it now has support for liquid channels (based on the currently selected tab). 2020-04-17 02:09:24 +02:00
f43e4a2cc4 Implemented add and remove tool mode selectors in world editor. Also added shortcuts (a, s). 2020-04-17 01:52:16 +02:00
7c0390de74 The air block is not required anymore. Also Implemented the sidebar for world editor. And fixed a naming error for a virtual method in the merger library. 2020-04-17 00:37:22 +02:00
76f9011c24 Added an overrideable fonction to VoxelWorld, so the editor plugin will be able to query the correct channel ids, for any particular world. returning -1 will mean not supported. 2020-04-16 21:59:30 +02:00
b21030ae89 More const qualifiers. 2020-04-16 17:54:32 +02:00
367c203cc6 Added lots of const qualifiers to world and chunk. 2020-04-16 17:10:04 +02:00
135b34c8a8 Moved the chunk position calculations from the world editor into VoxelWorld. 2020-04-16 14:44:22 +02:00
06d3b0ae32 Add property for voxel structures. 2020-04-16 14:07:10 +02:00
d985610574 Cleaned up VoxelStructure, and added an api for them into VoxelWorld. 2020-04-16 13:40:39 +02:00
dd0fa1d7ea Cleaned up the prop spawning api in chunk and world. 2020-04-15 13:06:45 +02:00
a63ae2183a Removed _THREAD_SAFE_CLASS_ from VoxelChunk as its not used aywhere right now. 2020-04-15 12:44:16 +02:00
7a3e4ecbe3 Cleaned up the light baking api. 2020-04-15 12:41:52 +02:00
c752086bdd A bit more work on the world editor. 2020-04-10 16:28:33 +02:00
fd24639e26 The world editor now won't use right click, as it makes navigation awful. 2020-04-10 16:13:04 +02:00
acf2d2d701 Fix 2 multithreading related crashes. 2020-04-10 15:50:53 +02:00
1f23f61b3a Ran clang format, as apparently I had it off. 2020-04-10 13:55:27 +02:00
01c57c30e6 Fix error when the data margins are 0. 2020-04-10 13:43:49 +02:00
17dfbb4cab Fix voxel index calculations in the world editor. 2020-04-10 13:40:07 +02:00
03f9041eb8 Added get_or_create_chunk to VoxelWorld. 2020-04-10 13:39:11 +02:00
a722f807fe Fix building for 3.2. 2020-04-09 15:45:51 +02:00
073e1aeb97 Fix build for 4.0. 2020-04-09 12:34:39 +02:00
9fe51572f4 Didi the same optimization to the transvoxel uv mesher. 2020-04-07 14:40:35 +02:00
f7842e1ab2 The blocky mesher is a lot faster now. 2020-04-07 14:23:20 +02:00
a4fc573f85 Optional module dependencies are actually optional now. 2020-04-06 22:47:03 +02:00
8b78f8e91d Library should update it's rects even in the editor now. 2020-04-06 20:10:57 +02:00
4a535207e0 Now chunks will generate the collider in the spawned thread. Also a few smaller tweaks. 2020-04-06 20:05:19 +02:00
f63a8910dc Fix coord calculation for the editor plugin. 2020-04-06 19:46:17 +02:00
c691c13277 Added a _chunk_added virtual method to voxel world. 2020-04-06 13:55:22 +02:00
b4c61ac674 Created a default version from world, and the mesher. Also added a BuildFlags enum to VoxelChunkDefault. Converted a few properties to use this. 2020-04-06 13:41:45 +02:00
d717c9886b Fix set_chunks, and enter_tree. 2020-04-06 00:51:25 +02:00
b046db78ed Removed leftover print. 2020-04-05 22:56:40 +02:00
25da88da19 Add the ability to get or set a channel compressed. 2020-04-05 22:07:52 +02:00
98707674a4 Initial implementation for the voxel world editor. 2020-04-05 21:02:51 +02:00
d36eff4ed3 Fix potential crash. 2020-04-05 02:08:08 +02:00
b7f3b59f54 Removed the mutex from build phase. 2020-04-05 01:47:14 +02:00
dfee0a7786 Added a blocky mesher, chunk, and world (The minecraft-style mesher). It's incomplete. Also ported the light baking step from Broken Seals, and fixed a few warnings. 2020-04-05 01:36:41 +02:00
2d2b7c8c3e Started reworking the way props are handled. Removed every old PropData related classes. Props are now just normal PackedScenes. Spawning conveniences/network synchronization will come later. 2020-04-04 17:22:07 +02:00
214323a9a0 Fix compile. 2020-04-03 09:32:34 +02:00
bf211fd430 Moved everything that is prop related to a new repository (props). It is required for this to compile for a short wile, while I rework things. 2020-04-03 09:25:07 +02:00
6cae9a0494 Set the property hint for voxel_world to 0. This fixes saving chunks as resoruces. 2020-04-02 21:38:19 +02:00
9da5d2e2d0 VoxelChunk now inherits from Resource instead of from Spatial. This is to make the scene cleaner (especially after I implement the world editor plugin). As a small bonus this should also make multithreading-related crashes harder to create, as manipulating the Scenetree from a thread by accident is now a lot harder. 2020-04-02 21:28:19 +02:00
599b3eb8ea Fixed 2 warnings. 2020-03-31 13:32:06 +02:00
f7fd0193ea Added an editable property to VoxelWorld, and made the world editor plugin make use of it. 2020-03-31 13:25:31 +02:00
dfafb23342 VoxelChunk now won't expose the channels for the editor. This functionality should be implemented per chunk implementation. Did not delete the code yet, just commented it out. 2020-03-31 12:42:22 +02:00
3969e0ba5f Fix a multithreading related crash. 2020-03-30 23:15:23 +02:00
f26fe74fc4 Ported the lod implementation from Broken Seals. 2020-03-30 19:46:39 +02:00
393ee1fb1b DefaultVoxelChunk now has a general interface for storing mesh/collider RIDs. 2020-03-30 18:32:39 +02:00
ee03e42a5a Fix assign. 2020-03-30 14:57:07 +02:00
4691e2aaef Ported merge_mesh_array and merge_mesh_array from Broken Seals. 2020-03-30 14:36:49 +02:00
4a3c9836ff Made the default visibility change event overrideable in VoxelChunkDefault. 2020-03-29 23:55:40 +02:00
541abb954d Now materials in Library are stored with vectors. This makes it possible to have different materials for every lod level for example. 2020-03-29 20:19:38 +02:00
ddfdb4489f Missed a binding. 2020-03-24 18:44:17 +01:00
87d387388c Apparently, calling emit signal and set_process_internal form a separate thread is not smart. 2020-03-24 18:42:01 +01:00
d0578c24d4 Separated VoxelStructure into 2 classes, and made it scriptable. 2020-03-19 13:08:58 +01:00
666695a220 Now VoxelChunkDefault will move it's meshes if it's transform changes, free them on EXIT_TREE, and sets their visibility. Also added a few missing break statements. 2020-03-15 19:33:10 +01:00
080e8f2437 Broke up VoxelChunk into VoxelChunk and VoxelChunkDefault. 2020-03-12 23:23:38 +01:00
29b77a3a6d Finished up the rework I started in the prevoius commit. 2020-03-06 21:09:13 +01:00
90cbfe02cc started reworking how chunk handles threaded builds. 2020-03-06 16:12:39 +01:00
8f71179c5e More work on Chunk's threading. 2020-03-06 15:39:55 +01:00
370e14f6c8 Removed the temp mesh array I just added from voxel chunk. 2020-03-06 14:27:04 +01:00
656f0ba9fa build_phase() and _build_phase() in Chunk now won't return/need to return a value, as get_build_phase_done() is equivalent. Also now chunk building is actually threaded, as it seems like I managed to remove thread creation in one of the refactor commits. Also fixed a few smaller issues/inconsistencies. 2020-03-06 14:22:04 +01:00
d08da0375a Better way of handling the previous improvement. It will actually work now properly aswell. 2020-03-04 20:49:00 +01:00
f9d13c611f Improved aborting chunk build. 2020-03-04 20:12:15 +01:00
59291a9417 Fix math in is_position_walkable. 2020-03-04 18:35:09 +01:00
fbd2903477 Added is_position_walkable query to World, also a few related things. 2020-03-04 15:21:32 +01:00
dec4fcd402 Added get_max_frame_chunk_build_steps to be able to limit the chunk build steps launched per frame. Also a few smaller improvements. 2020-03-04 14:59:34 +01:00
d431ca4daa Added index-based remove chunk function, also fixed remove_chunk, now it properly removes the given chunk from the chunk map. 2020-03-04 10:48:53 +01:00
e45e3875f8 Setup for a new VoxelWorldEditor. 2020-02-27 14:27:52 +01:00
d85187b6a8 Removed stray files. 2020-02-27 13:43:46 +01:00
36063410f9 Hide saved channels in the editor, and from scripts. 2020-02-26 12:22:46 +01:00
3e98b8e01c Added a few properties to chunk, so they can be saved into PackedScenes if needed. 2020-02-26 01:08:18 +01:00
5b32345181 Fleshed out VoxelStructure's api. 2020-02-23 22:09:45 +01:00
f25dac92ea Started reworking VoxelStructure's api. 2020-02-21 10:42:51 +01:00
6c39845387 Removed a few now unneeded methods from VoxelChunk, they got merged into _build_phase. Also added build_mesh_into to VoxelMesher, it's equivalent to the old build_mesh. 2020-02-20 13:44:38 +01:00
8b734eec11 Mesher's build_mesh function now has no argument, and returns an array. 2020-02-20 13:19:54 +01:00
509d45a662 build_phase() in VoxelChunk should be thread safe. 2020-02-16 16:18:41 +01:00
07afd06c2a Now chunks can properly use multiple meshers at the same time. 2020-02-14 19:02:31 +01:00
a457ed400c Added data margin start, and end property to VoxelWorld for easy access. Improved set_voxel, and get_voxel in VoxelChunk to accomodate for margins as originally intended (e.g. if start_margin is 1, indexes go from -1 to size + end margin). Fixed/updated indexing in VoxelMesherCubic. 2020-02-14 03:19:15 +01:00
3a8310c51f More improvements to chunk's threading logic. Also removed the build_phase_done function I added a few hours ago, and made build_phase return a bool (true if the phase is completed, false if not), essentially achieving the same effect. 2020-02-12 20:34:16 +01:00
8a2524dc57 Improved multithreading a lot, it doesn't seem to crash anymore. Also made chunk mesh generation faster by letting build phases run one after an another without launching new threads (using is_phase_threaded). 2020-02-12 14:16:31 +01:00
fd1ff4b4ff Better chunk building setup. And smaller fixes and tweaks. 2020-02-10 23:39:57 +01:00
db77530ec1 Updated the license for 2020, and added it to the top of my cpp files. 2020-01-31 19:52:37 +01:00
01bb492760 Merge branch 'meshers' 2020-01-13 00:40:10 +01:00
104a307d55 Now Chunk has a vector of meshers, this simplifies for example liquid meshing, and this allows combining multiple meshers. Also the number of build phases is settable. 2020-01-13 00:39:55 +01:00
c0c0fa403c Fix a typo in Chunk's bindings. 2020-01-12 21:58:23 +01:00
a67d0393ca Clang format. 2020-01-09 04:29:05 +01:00
8e02dcb9e8 Fix build. 2019-12-24 03:22:17 +01:00
ce4020962e Now the mesher will set the material for the generated meshes directly, also it sets the material as surface material instead of an override material. 2019-12-03 19:22:04 +01:00
edec04cfdc Chunk now supports threaded builds. Also small fixes. 2019-11-19 20:39:45 +01:00
a377c994e9 Fixes. 2019-11-19 19:14:46 +01:00