Cherry-picked fa84c5b (ragdoll optimization)
This commit is contained in:
@@ -93,6 +93,8 @@ namespace Barotrauma
|
|||||||
protected List<PhysicsBody> collider;
|
protected List<PhysicsBody> collider;
|
||||||
protected int colliderIndex = 0;
|
protected int colliderIndex = 0;
|
||||||
|
|
||||||
|
private Category prevCollisionCategory = Category.None;
|
||||||
|
|
||||||
public PhysicsBody Collider
|
public PhysicsBody Collider
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@@ -274,11 +276,7 @@ namespace Barotrauma
|
|||||||
get { return ignorePlatforms; }
|
get { return ignorePlatforms; }
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (ignorePlatforms == value) return;
|
|
||||||
ignorePlatforms = value;
|
ignorePlatforms = value;
|
||||||
|
|
||||||
UpdateCollisionCategories();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -812,10 +810,7 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
|
|
||||||
CurrentHull = newHull;
|
CurrentHull = newHull;
|
||||||
|
character.Submarine = currentHull?.Submarine;
|
||||||
character.Submarine = currentHull == null ? null : currentHull.Submarine;
|
|
||||||
|
|
||||||
UpdateCollisionCategories();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Teleport(Vector2 moveAmount, Vector2 velocityChange)
|
public void Teleport(Vector2 moveAmount, Vector2 velocityChange)
|
||||||
@@ -856,6 +851,9 @@ namespace Barotrauma
|
|||||||
wall | Physics.CollisionProjectile | Physics.CollisionStairs
|
wall | Physics.CollisionProjectile | Physics.CollisionStairs
|
||||||
: wall | Physics.CollisionProjectile | Physics.CollisionPlatform | Physics.CollisionStairs;
|
: wall | Physics.CollisionProjectile | Physics.CollisionPlatform | Physics.CollisionStairs;
|
||||||
|
|
||||||
|
if (collisionCategory == prevCollisionCategory) return;
|
||||||
|
prevCollisionCategory = collisionCategory;
|
||||||
|
|
||||||
Collider.CollidesWith = collisionCategory;
|
Collider.CollidesWith = collisionCategory;
|
||||||
|
|
||||||
foreach (Limb limb in Limbs)
|
foreach (Limb limb in Limbs)
|
||||||
@@ -881,6 +879,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
UpdateNetPlayerPosition(deltaTime);
|
UpdateNetPlayerPosition(deltaTime);
|
||||||
CheckDistFromCollider();
|
CheckDistFromCollider();
|
||||||
|
UpdateCollisionCategories();
|
||||||
|
|
||||||
Vector2 flowForce = Vector2.Zero;
|
Vector2 flowForce = Vector2.Zero;
|
||||||
|
|
||||||
@@ -1268,8 +1267,6 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
//set the position of the ragdoll to make sure limbs don't get stuck inside walls when re-enabling collisions
|
//set the position of the ragdoll to make sure limbs don't get stuck inside walls when re-enabling collisions
|
||||||
SetPosition(Collider.SimPosition, true);
|
SetPosition(Collider.SimPosition, true);
|
||||||
|
|
||||||
UpdateCollisionCategories();
|
|
||||||
collisionsDisabled = false;
|
collisionsDisabled = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user