Merge pull request #42167 from madmiraal/fix-42108
Remove the unnecessary sync() and the restrictions it imposes on 3D Physics.
This commit is contained in:
commit
d7176e9040
@ -16,7 +16,7 @@
|
|||||||
The [RID] of this world's canvas resource. Used by the [RenderingServer] for 2D drawing.
|
The [RID] of this world's canvas resource. Used by the [RenderingServer] for 2D drawing.
|
||||||
</member>
|
</member>
|
||||||
<member name="direct_space_state" type="PhysicsDirectSpaceState2D" setter="" getter="get_direct_space_state">
|
<member name="direct_space_state" type="PhysicsDirectSpaceState2D" setter="" getter="get_direct_space_state">
|
||||||
Direct access to the world's physics 2D space state. Used for querying current and potential collisions. Must only be accessed from the main thread within [code]_physics_process(delta)[/code].
|
Direct access to the world's physics 2D space state. Used for querying current and potential collisions. When using multi-threaded physics, access is limited to [code]_physics_process(delta)[/code] in the main thread.
|
||||||
</member>
|
</member>
|
||||||
<member name="space" type="RID" setter="" getter="get_space">
|
<member name="space" type="RID" setter="" getter="get_space">
|
||||||
The [RID] of this world's physics space resource. Used by the [PhysicsServer2D] for 2D physics, treating it as both a space and an area.
|
The [RID] of this world's physics space resource. Used by the [PhysicsServer2D] for 2D physics, treating it as both a space and an area.
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
<member name="camera_effects" type="CameraEffects" setter="set_camera_effects" getter="get_camera_effects">
|
<member name="camera_effects" type="CameraEffects" setter="set_camera_effects" getter="get_camera_effects">
|
||||||
</member>
|
</member>
|
||||||
<member name="direct_space_state" type="PhysicsDirectSpaceState3D" setter="" getter="get_direct_space_state">
|
<member name="direct_space_state" type="PhysicsDirectSpaceState3D" setter="" getter="get_direct_space_state">
|
||||||
Direct access to the world's physics 3D space state. Used for querying current and potential collisions. Must only be accessed from within [code]_physics_process(delta)[/code].
|
Direct access to the world's physics 3D space state. Used for querying current and potential collisions.
|
||||||
</member>
|
</member>
|
||||||
<member name="environment" type="Environment" setter="set_environment" getter="get_environment">
|
<member name="environment" type="Environment" setter="set_environment" getter="get_environment">
|
||||||
The World3D's [Environment].
|
The World3D's [Environment].
|
||||||
|
@ -2396,7 +2396,6 @@ bool Main::iteration() {
|
|||||||
for (int iters = 0; iters < advance.physics_steps; ++iters) {
|
for (int iters = 0; iters < advance.physics_steps; ++iters) {
|
||||||
uint64_t physics_begin = OS::get_singleton()->get_ticks_usec();
|
uint64_t physics_begin = OS::get_singleton()->get_ticks_usec();
|
||||||
|
|
||||||
PhysicsServer3D::get_singleton()->sync();
|
|
||||||
PhysicsServer3D::get_singleton()->flush_queries();
|
PhysicsServer3D::get_singleton()->flush_queries();
|
||||||
|
|
||||||
PhysicsServer2D::get_singleton()->sync();
|
PhysicsServer2D::get_singleton()->sync();
|
||||||
|
@ -1553,9 +1553,6 @@ void BulletPhysicsServer3D::step(float p_deltaTime) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BulletPhysicsServer3D::sync() {
|
|
||||||
}
|
|
||||||
|
|
||||||
void BulletPhysicsServer3D::flush_queries() {
|
void BulletPhysicsServer3D::flush_queries() {
|
||||||
if (!active) {
|
if (!active) {
|
||||||
return;
|
return;
|
||||||
|
@ -397,7 +397,6 @@ public:
|
|||||||
|
|
||||||
virtual void init() override;
|
virtual void init() override;
|
||||||
virtual void step(float p_deltaTime) override;
|
virtual void step(float p_deltaTime) override;
|
||||||
virtual void sync() override;
|
|
||||||
virtual void flush_queries() override;
|
virtual void flush_queries() override;
|
||||||
virtual void finish() override;
|
virtual void finish() override;
|
||||||
|
|
||||||
|
@ -1230,8 +1230,6 @@ void PhysicsServer2DSW::step(real_t p_step) {
|
|||||||
|
|
||||||
_update_shapes();
|
_update_shapes();
|
||||||
|
|
||||||
doing_sync = false;
|
|
||||||
|
|
||||||
last_step = p_step;
|
last_step = p_step;
|
||||||
PhysicsDirectBodyState2DSW::singleton->step = p_step;
|
PhysicsDirectBodyState2DSW::singleton->step = p_step;
|
||||||
island_count = 0;
|
island_count = 0;
|
||||||
|
@ -174,7 +174,7 @@ real_t PhysicsServer3DSW::space_get_param(RID p_space, SpaceParameter p_param) c
|
|||||||
PhysicsDirectSpaceState3D *PhysicsServer3DSW::space_get_direct_state(RID p_space) {
|
PhysicsDirectSpaceState3D *PhysicsServer3DSW::space_get_direct_state(RID p_space) {
|
||||||
Space3DSW *space = space_owner.getornull(p_space);
|
Space3DSW *space = space_owner.getornull(p_space);
|
||||||
ERR_FAIL_COND_V(!space, nullptr);
|
ERR_FAIL_COND_V(!space, nullptr);
|
||||||
ERR_FAIL_COND_V_MSG(!doing_sync || space->is_locked(), nullptr, "Space state is inaccessible right now, wait for iteration or physics process notification.");
|
ERR_FAIL_COND_V_MSG(space->is_locked(), nullptr, "Space state is inaccessible right now, wait for iteration or physics process notification.");
|
||||||
|
|
||||||
return space->get_direct_state();
|
return space->get_direct_state();
|
||||||
}
|
}
|
||||||
@ -888,7 +888,7 @@ int PhysicsServer3DSW::body_test_ray_separation(RID p_body, const Transform &p_t
|
|||||||
PhysicsDirectBodyState3D *PhysicsServer3DSW::body_get_direct_state(RID p_body) {
|
PhysicsDirectBodyState3D *PhysicsServer3DSW::body_get_direct_state(RID p_body) {
|
||||||
Body3DSW *body = body_owner.getornull(p_body);
|
Body3DSW *body = body_owner.getornull(p_body);
|
||||||
ERR_FAIL_COND_V(!body, nullptr);
|
ERR_FAIL_COND_V(!body, nullptr);
|
||||||
ERR_FAIL_COND_V_MSG(!doing_sync || body->get_space()->is_locked(), nullptr, "Body state is inaccessible right now, wait for iteration or physics process notification.");
|
ERR_FAIL_COND_V_MSG(body->get_space()->is_locked(), nullptr, "Body state is inaccessible right now, wait for iteration or physics process notification.");
|
||||||
|
|
||||||
direct_state->body = body;
|
direct_state->body = body;
|
||||||
return direct_state;
|
return direct_state;
|
||||||
@ -1287,7 +1287,6 @@ void PhysicsServer3DSW::set_active(bool p_active) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer3DSW::init() {
|
void PhysicsServer3DSW::init() {
|
||||||
doing_sync = true;
|
|
||||||
last_step = 0.001;
|
last_step = 0.001;
|
||||||
iterations = 8; // 8?
|
iterations = 8; // 8?
|
||||||
stepper = memnew(Step3DSW);
|
stepper = memnew(Step3DSW);
|
||||||
@ -1303,8 +1302,6 @@ void PhysicsServer3DSW::step(real_t p_step) {
|
|||||||
|
|
||||||
_update_shapes();
|
_update_shapes();
|
||||||
|
|
||||||
doing_sync = false;
|
|
||||||
|
|
||||||
last_step = p_step;
|
last_step = p_step;
|
||||||
PhysicsDirectBodyState3DSW::singleton->step = p_step;
|
PhysicsDirectBodyState3DSW::singleton->step = p_step;
|
||||||
|
|
||||||
@ -1327,8 +1324,6 @@ void PhysicsServer3DSW::flush_queries() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
doing_sync = true;
|
|
||||||
|
|
||||||
flushing_queries = true;
|
flushing_queries = true;
|
||||||
|
|
||||||
uint64_t time_beg = OS::get_singleton()->get_ticks_usec();
|
uint64_t time_beg = OS::get_singleton()->get_ticks_usec();
|
||||||
|
@ -44,7 +44,6 @@ class PhysicsServer3DSW : public PhysicsServer3D {
|
|||||||
friend class PhysicsDirectSpaceState3DSW;
|
friend class PhysicsDirectSpaceState3DSW;
|
||||||
bool active;
|
bool active;
|
||||||
int iterations;
|
int iterations;
|
||||||
bool doing_sync;
|
|
||||||
real_t last_step;
|
real_t last_step;
|
||||||
|
|
||||||
int island_count;
|
int island_count;
|
||||||
@ -365,7 +364,6 @@ public:
|
|||||||
virtual void set_active(bool p_active) override;
|
virtual void set_active(bool p_active) override;
|
||||||
virtual void init() override;
|
virtual void init() override;
|
||||||
virtual void step(real_t p_step) override;
|
virtual void step(real_t p_step) override;
|
||||||
virtual void sync() override {}
|
|
||||||
virtual void flush_queries() override;
|
virtual void flush_queries() override;
|
||||||
virtual void finish() override;
|
virtual void finish() override;
|
||||||
|
|
||||||
|
@ -749,7 +749,6 @@ public:
|
|||||||
virtual void set_active(bool p_active) = 0;
|
virtual void set_active(bool p_active) = 0;
|
||||||
virtual void init() = 0;
|
virtual void init() = 0;
|
||||||
virtual void step(float p_step) = 0;
|
virtual void step(float p_step) = 0;
|
||||||
virtual void sync() = 0;
|
|
||||||
virtual void flush_queries() = 0;
|
virtual void flush_queries() = 0;
|
||||||
virtual void finish() = 0;
|
virtual void finish() = 0;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user