mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2025-04-08 04:51:49 +02:00
Added mesh_data_resource_add() helper method to TerrainWorld.
This commit is contained in:
parent
f770c598ed
commit
74ddba1eb1
@ -33,6 +33,8 @@
|
||||
|
||||
#include "core/containers/hash_set.h"
|
||||
|
||||
#include "core/object/method_bind_ext.gen.inc"
|
||||
|
||||
#include "core/object/message_queue.h"
|
||||
#include "core/os/main_loop.h"
|
||||
#include "terrain_chunk.h"
|
||||
@ -59,6 +61,10 @@
|
||||
#include "scene/3d/camera.h"
|
||||
#endif
|
||||
|
||||
#ifdef MODULE_MESH_DATA_RESOURCE_ENABLED
|
||||
#include "modules/mesh_data_resource/mesh_data_resource.h"
|
||||
#endif
|
||||
|
||||
const String TerrainWorld::BINDING_STRING_CHANNEL_TYPE_INFO = "Type,Isolevel,Liquid,Liquid Level";
|
||||
|
||||
bool TerrainWorld::get_active() const {
|
||||
@ -734,6 +740,30 @@ void TerrainWorld::prop_add(Transform transform, const Ref<PropData> &prop, cons
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef MODULE_MESH_DATA_RESOURCE_ENABLED
|
||||
void TerrainWorld::mesh_data_resource_add(const Ref<MeshDataResource> &p_mesh, const Transform &p_transform, const Ref<Texture> &p_texture, const Color &p_color, const bool p_original, const String &p_name) {
|
||||
ERR_FAIL_COND(!p_mesh.is_valid());
|
||||
|
||||
Vector3 wp;
|
||||
wp = p_transform.xform(wp);
|
||||
Ref<TerrainChunk> chunk = get_or_create_chunk_at_world_position(wp);
|
||||
|
||||
chunk->mesh_data_resource_add(chunk->get_global_transform().affine_inverse() * p_transform, p_mesh, p_texture, p_color, false, p_original, p_name);
|
||||
chunk->build();
|
||||
}
|
||||
|
||||
void TerrainWorld::mesh_data_resource_add_material(const Ref<MeshDataResource> &p_mesh, const Transform &p_transform, const Ref<Texture> &p_texture, const Ref<Material> &p_material, const bool p_original, const String &p_name) {
|
||||
ERR_FAIL_COND(!p_mesh.is_valid());
|
||||
|
||||
Vector3 wp;
|
||||
wp = p_transform.xform(wp);
|
||||
Ref<TerrainChunk> chunk = get_or_create_chunk_at_world_position(wp);
|
||||
|
||||
chunk->mesh_data_resource_add_material(chunk->get_global_transform().affine_inverse() * p_transform, p_mesh, p_texture, p_material, false, p_original, p_name);
|
||||
chunk->build();
|
||||
}
|
||||
#endif
|
||||
|
||||
//Lights
|
||||
void TerrainWorld::light_add(const Ref<TerrainLight> &light) {
|
||||
if (!light.is_valid()) {
|
||||
@ -1625,6 +1655,11 @@ void TerrainWorld::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("prop_add", "transform", "prop", "apply_voxel_scale", "original", "name"), &TerrainWorld::prop_add, DEFVAL(true), DEFVAL(true), DEFVAL(String()));
|
||||
#endif
|
||||
|
||||
#ifdef MODULE_MESH_DATA_RESOURCE_ENABLED
|
||||
ClassDB::bind_method(D_METHOD("mesh_data_resource_add", "mesh", "transform", "texture", "color", "original", "name"), &TerrainWorld::mesh_data_resource_add, DEFVAL(Ref<Texture>()), DEFVAL(Color(1, 1, 1, 1)), DEFVAL(true), DEFVAL(String()));
|
||||
ClassDB::bind_method(D_METHOD("mesh_data_resource_add_material", "mesh", "transform", "texture", "material", "original", "name"), &TerrainWorld::mesh_data_resource_add_material, DEFVAL(Ref<Texture>()), DEFVAL(Color(1, 1, 1, 1)), DEFVAL(true), DEFVAL(String()));
|
||||
#endif
|
||||
|
||||
//Lights
|
||||
ClassDB::bind_method(D_METHOD("light_add", "chunk"), &TerrainWorld::light_add);
|
||||
ClassDB::bind_method(D_METHOD("light_remove", "chunk"), &TerrainWorld::light_remove);
|
||||
|
@ -54,6 +54,7 @@
|
||||
class TerrainStructure;
|
||||
class TerrainChunk;
|
||||
class PropData;
|
||||
class MeshDataResource;
|
||||
|
||||
class TerrainWorld : public Spatial {
|
||||
GDCLASS(TerrainWorld, Spatial);
|
||||
@ -181,6 +182,11 @@ public:
|
||||
void prop_add(Transform transform, const Ref<PropData> &prop, const bool apply_voxel_scale = true, const bool p_original = true, const String &p_name = String());
|
||||
#endif
|
||||
|
||||
#ifdef MODULE_MESH_DATA_RESOURCE_ENABLED
|
||||
void mesh_data_resource_add(const Ref<MeshDataResource> &p_mesh, const Transform &p_transform, const Ref<Texture> &p_texture = Ref<Texture>(), const Color &p_color = Color(1, 1, 1, 1), const bool p_original = true, const String &p_name = String());
|
||||
void mesh_data_resource_add_material(const Ref<MeshDataResource> &p_mesh, const Transform &p_transform, const Ref<Texture> &p_texture = Ref<Texture>(), const Ref<Material> &p_material = Ref<Material>(), const bool p_original = true, const String &p_name = String());
|
||||
#endif
|
||||
|
||||
//Lights
|
||||
void light_add(const Ref<TerrainLight> &light);
|
||||
void light_remove(const Ref<TerrainLight> &light);
|
||||
|
Loading…
Reference in New Issue
Block a user