瀏覽代碼

Merge pull request #61753 from timothyqiu/own-world

Rémi Verschelde 3 年之前
父節點
當前提交
7272ccb53e
共有 3 個文件被更改,包括 10 次插入10 次删除
  1. 1 1
      doc/classes/Viewport.xml
  2. 8 8
      scene/main/viewport.cpp
  3. 1 1
      scene/main/viewport.h

+ 1 - 1
doc/classes/Viewport.xml

@@ -227,7 +227,7 @@
 			The multisample anti-aliasing mode. A higher number results in smoother edges at the cost of significantly worse performance. A value of 2 or 4 is best unless targeting very high-end systems. See also bilinear scaling 3d [member scaling_3d_mode] for supersampling, which provides higher quality but is much more expensive.
 		</member>
 		<member name="own_world_3d" type="bool" setter="set_use_own_world_3d" getter="is_using_own_world_3d" default="false">
-			If [code]true[/code], the viewport will use the [World3D] defined in [member world_3d].
+			If [code]true[/code], the viewport will use a unique copy of the [World3D] defined in [member world_3d].
 		</member>
 		<member name="physics_object_picking" type="bool" setter="set_physics_object_picking" getter="get_physics_object_picking" default="false">
 			If [code]true[/code], the objects rendered by viewport become subjects of mouse picking process.

+ 8 - 8
scene/main/viewport.cpp

@@ -3458,8 +3458,8 @@ void Viewport::_own_world_3d_changed() {
 	_update_audio_listener_3d();
 }
 
-void Viewport::set_use_own_world_3d(bool p_world_3d) {
-	if (p_world_3d == own_world_3d.is_valid()) {
+void Viewport::set_use_own_world_3d(bool p_use_own_world_3d) {
+	if (p_use_own_world_3d == own_world_3d.is_valid()) {
 		return;
 	}
 
@@ -3467,18 +3467,18 @@ void Viewport::set_use_own_world_3d(bool p_world_3d) {
 		_propagate_exit_world_3d(this);
 	}
 
-	if (!p_world_3d) {
-		own_world_3d = Ref<World3D>();
-		if (world_3d.is_valid()) {
-			world_3d->disconnect(CoreStringNames::get_singleton()->changed, callable_mp(this, &Viewport::_own_world_3d_changed));
-		}
-	} else {
+	if (p_use_own_world_3d) {
 		if (world_3d.is_valid()) {
 			own_world_3d = world_3d->duplicate();
 			world_3d->connect(CoreStringNames::get_singleton()->changed, callable_mp(this, &Viewport::_own_world_3d_changed));
 		} else {
 			own_world_3d = Ref<World3D>(memnew(World3D));
 		}
+	} else {
+		own_world_3d = Ref<World3D>();
+		if (world_3d.is_valid()) {
+			world_3d->disconnect(CoreStringNames::get_singleton()->changed, callable_mp(this, &Viewport::_own_world_3d_changed));
+		}
 	}
 
 	if (is_inside_tree()) {

+ 1 - 1
scene/main/viewport.h

@@ -676,7 +676,7 @@ public:
 	Ref<World3D> get_world_3d() const;
 	Ref<World3D> find_world_3d() const;
 	void _own_world_3d_changed();
-	void set_use_own_world_3d(bool p_world_3d);
+	void set_use_own_world_3d(bool p_use_own_world_3d);
 	bool is_using_own_world_3d() const;
 	void _propagate_enter_world_3d(Node *p_node);
 	void _propagate_exit_world_3d(Node *p_node);