Browse Source

Exposed custom AABB setter on GeometryInstance

Marc Gilleron 6 years ago
parent
commit
5b378f408c
3 changed files with 18 additions and 0 deletions
  1. 9 0
      doc/classes/GeometryInstance.xml
  2. 7 0
      scene/3d/visual_instance.cpp
  3. 2 0
      scene/3d/visual_instance.h

+ 9 - 0
doc/classes/GeometryInstance.xml

@@ -11,6 +11,15 @@
 	<demos>
 	</demos>
 	<methods>
+		<method name="set_custom_aabb">
+			<return type="void">
+			</return>
+			<argument index="0" name="aabb" type="AABB">
+			</argument>
+			<description>
+				Overrides the bounding box of this node with a custom one. To remove it, set an AABB with all fields set to zero.
+			</description>
+		</method>
 	</methods>
 	<members>
 		<member name="cast_shadow" type="int" setter="set_cast_shadows_setting" getter="get_cast_shadows_setting" enum="GeometryInstance.ShadowCastingSetting">

+ 7 - 0
scene/3d/visual_instance.cpp

@@ -263,6 +263,11 @@ float GeometryInstance::get_extra_cull_margin() const {
 	return extra_cull_margin;
 }
 
+void GeometryInstance::set_custom_aabb(AABB aabb) {
+
+	VS::get_singleton()->instance_set_custom_aabb(get_instance(), aabb);
+}
+
 void GeometryInstance::_bind_methods() {
 
 	ClassDB::bind_method(D_METHOD("set_material_override", "material"), &GeometryInstance::set_material_override);
@@ -289,6 +294,8 @@ void GeometryInstance::_bind_methods() {
 	ClassDB::bind_method(D_METHOD("set_extra_cull_margin", "margin"), &GeometryInstance::set_extra_cull_margin);
 	ClassDB::bind_method(D_METHOD("get_extra_cull_margin"), &GeometryInstance::get_extra_cull_margin);
 
+	ClassDB::bind_method(D_METHOD("set_custom_aabb", "aabb"), &GeometryInstance::set_custom_aabb);
+
 	ClassDB::bind_method(D_METHOD("get_aabb"), &GeometryInstance::get_aabb);
 
 	ADD_GROUP("Geometry", "");

+ 2 - 0
scene/3d/visual_instance.h

@@ -137,6 +137,8 @@ public:
 	void set_extra_cull_margin(float p_margin);
 	float get_extra_cull_margin() const;
 
+	void set_custom_aabb(AABB aabb);
+
 	GeometryInstance();
 };