added custom aabb to primitives

(cherry picked from commit 1ee40206d4)
This commit is contained in:
Bastiaan Olij 2018-04-28 18:46:00 +10:00 committed by Hein-Pieter van Braam
parent fd95935fef
commit 5e551a584e
2 changed files with 20 additions and 0 deletions

View File

@ -164,7 +164,11 @@ void PrimitiveMesh::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_mesh_arrays"), &PrimitiveMesh::get_mesh_arrays); ClassDB::bind_method(D_METHOD("get_mesh_arrays"), &PrimitiveMesh::get_mesh_arrays);
ClassDB::bind_method(D_METHOD("set_custom_aabb", "aabb"), &PrimitiveMesh::set_custom_aabb);
ClassDB::bind_method(D_METHOD("get_custom_aabb"), &PrimitiveMesh::get_custom_aabb);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "material", PROPERTY_HINT_RESOURCE_TYPE, "SpatialMaterial,ShaderMaterial"), "set_material", "get_material"); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "material", PROPERTY_HINT_RESOURCE_TYPE, "SpatialMaterial,ShaderMaterial"), "set_material", "get_material");
ADD_PROPERTY(PropertyInfo(Variant::AABB, "custom_aabb", PROPERTY_HINT_NONE, ""), "set_custom_aabb", "get_custom_aabb");
} }
void PrimitiveMesh::set_material(const Ref<Material> &p_material) { void PrimitiveMesh::set_material(const Ref<Material> &p_material) {
@ -185,6 +189,18 @@ Array PrimitiveMesh::get_mesh_arrays() const {
return surface_get_arrays(0); return surface_get_arrays(0);
} }
void PrimitiveMesh::set_custom_aabb(const AABB &p_custom) {
custom_aabb = p_custom;
VS::get_singleton()->mesh_set_custom_aabb(mesh, custom_aabb);
emit_changed();
}
AABB PrimitiveMesh::get_custom_aabb() const {
return custom_aabb;
}
PrimitiveMesh::PrimitiveMesh() { PrimitiveMesh::PrimitiveMesh() {
// defaults // defaults
mesh = VisualServer::get_singleton()->mesh_create(); mesh = VisualServer::get_singleton()->mesh_create();

View File

@ -48,6 +48,7 @@ class PrimitiveMesh : public Mesh {
private: private:
RID mesh; RID mesh;
mutable AABB aabb; mutable AABB aabb;
AABB custom_aabb;
Ref<Material> material; Ref<Material> material;
@ -81,6 +82,9 @@ public:
Array get_mesh_arrays() const; Array get_mesh_arrays() const;
void set_custom_aabb(const AABB &p_custom);
AABB get_custom_aabb() const;
PrimitiveMesh(); PrimitiveMesh();
~PrimitiveMesh(); ~PrimitiveMesh();
}; };