(7d0cf0d4f) Clamp forces in a bunch of more places where forces are applied to bodies
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
using FarseerPhysics;
|
using Barotrauma.Networking;
|
||||||
|
using FarseerPhysics;
|
||||||
using FarseerPhysics.Dynamics.Joints;
|
using FarseerPhysics.Dynamics.Joints;
|
||||||
using Microsoft.Xna.Framework;
|
using Microsoft.Xna.Framework;
|
||||||
using System;
|
using System;
|
||||||
@@ -314,7 +315,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
//pull the character's mouth to the target character (again with a fluctuating force)
|
//pull the character's mouth to the target character (again with a fluctuating force)
|
||||||
float pullStrength = (float)(Math.Sin(eatTimer) * Math.Max(Math.Sin(eatTimer * 0.5f), 0.0f));
|
float pullStrength = (float)(Math.Sin(eatTimer) * Math.Max(Math.Sin(eatTimer * 0.5f), 0.0f));
|
||||||
mouthLimb.body.ApplyForce(limbDiff * mouthLimb.Mass * 50.0f * pullStrength);
|
mouthLimb.body.ApplyForce(limbDiff * mouthLimb.Mass * 50.0f * pullStrength, maxVelocity: NetConfig.MaxPhysicsBodyVelocity);
|
||||||
|
|
||||||
character.ApplyStatusEffects(ActionType.OnEating, deltaTime);
|
character.ApplyStatusEffects(ActionType.OnEating, deltaTime);
|
||||||
|
|
||||||
@@ -695,7 +696,7 @@ namespace Barotrauma
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
limb.body.ApplyForce(diff * (float)(Math.Sin(WalkPos) * Math.Sqrt(limb.Mass)) * 30.0f * animStrength);
|
limb.body.ApplyForce(diff * (float)(Math.Sin(WalkPos) * Math.Sqrt(limb.Mass)) * 30.0f * animStrength, maxVelocity: 10.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Barotrauma.Extensions;
|
using Barotrauma.Extensions;
|
||||||
|
using Barotrauma.Networking;
|
||||||
|
|
||||||
namespace Barotrauma
|
namespace Barotrauma
|
||||||
{
|
{
|
||||||
@@ -1189,7 +1190,7 @@ namespace Barotrauma
|
|||||||
if (character.SimPosition.Y > ladderSimPos.Y) { climbForce.Y = Math.Min(0.0f, climbForce.Y); }
|
if (character.SimPosition.Y > ladderSimPos.Y) { climbForce.Y = Math.Min(0.0f, climbForce.Y); }
|
||||||
|
|
||||||
//apply forces to the collider to move the Character up/down
|
//apply forces to the collider to move the Character up/down
|
||||||
Collider.ApplyForce((climbForce * 20.0f + subSpeed * 50.0f) * Collider.Mass);
|
Collider.ApplyForce((climbForce * 20.0f + subSpeed * 50.0f) * Collider.Mass, maxVelocity: NetConfig.MaxPhysicsBodyVelocity);
|
||||||
head.body.SmoothRotate(0.0f);
|
head.body.SmoothRotate(0.0f);
|
||||||
|
|
||||||
if (!character.SelectedConstruction.Prefab.Triggers.Any())
|
if (!character.SelectedConstruction.Prefab.Triggers.Any())
|
||||||
@@ -1347,8 +1348,8 @@ namespace Barotrauma
|
|||||||
|
|
||||||
if (cprPump >= 1)
|
if (cprPump >= 1)
|
||||||
{
|
{
|
||||||
torso.body.ApplyForce(new Vector2(0, -1000f));
|
torso.body.ApplyLinearImpulse(new Vector2(0, -20f), maxVelocity: NetConfig.MaxPhysicsBodyVelocity);
|
||||||
targetTorso.body.ApplyForce(new Vector2(0, -1000f));
|
targetTorso.body.ApplyLinearImpulse(new Vector2(0, -20f), maxVelocity: NetConfig.MaxPhysicsBodyVelocity);
|
||||||
cprPump = 0;
|
cprPump = 0;
|
||||||
|
|
||||||
if (skill < CPRSettings.DamageSkillThreshold)
|
if (skill < CPRSettings.DamageSkillThreshold)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
using Microsoft.Xna.Framework;
|
using Microsoft.Xna.Framework;
|
||||||
|
using Barotrauma.Networking;
|
||||||
#if CLIENT
|
#if CLIENT
|
||||||
using Microsoft.Xna.Framework.Graphics;
|
using Microsoft.Xna.Framework.Graphics;
|
||||||
using Barotrauma.Particles;
|
using Barotrauma.Particles;
|
||||||
@@ -83,15 +84,20 @@ namespace Barotrauma.Items.Components
|
|||||||
|
|
||||||
foreach (Limb limb in character.AnimController.Limbs)
|
foreach (Limb limb in character.AnimController.Limbs)
|
||||||
{
|
{
|
||||||
if (limb.WearingItems.Find(w => w.WearableComponent.Item == this.item)==null) continue;
|
if (limb.WearingItems.Find(w => w.WearableComponent.Item == this.item) == null) continue;
|
||||||
|
limb.body.ApplyForce(propulsion, maxVelocity: NetConfig.MaxPhysicsBodyVelocity);
|
||||||
limb.body.ApplyForce(propulsion);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
character.AnimController.Collider.ApplyForce(propulsion);
|
character.AnimController.Collider.ApplyForce(propulsion, maxVelocity: NetConfig.MaxPhysicsBodyVelocity);
|
||||||
|
|
||||||
if (character.SelectedItems[0] == item) character.AnimController.GetLimb(LimbType.RightHand).body.ApplyForce(propulsion);
|
if (character.SelectedItems[0] == item)
|
||||||
if (character.SelectedItems[1] == item) character.AnimController.GetLimb(LimbType.LeftHand).body.ApplyForce(propulsion);
|
{
|
||||||
|
character.AnimController.GetLimb(LimbType.RightHand)?.body.ApplyForce(propulsion, maxVelocity: NetConfig.MaxPhysicsBodyVelocity);
|
||||||
|
}
|
||||||
|
if (character.SelectedItems[1] == item)
|
||||||
|
{
|
||||||
|
character.AnimController.GetLimb(LimbType.LeftHand)?.body.ApplyForce(propulsion, maxVelocity: NetConfig.MaxPhysicsBodyVelocity);
|
||||||
|
}
|
||||||
|
|
||||||
#if CLIENT
|
#if CLIENT
|
||||||
if (!string.IsNullOrWhiteSpace(particles))
|
if (!string.IsNullOrWhiteSpace(particles))
|
||||||
|
|||||||
@@ -26,10 +26,6 @@ namespace Barotrauma.Items.Components
|
|||||||
|
|
||||||
private float blinkTimer;
|
private float blinkTimer;
|
||||||
|
|
||||||
private bool itemLoaded;
|
|
||||||
|
|
||||||
private float blinkTimer;
|
|
||||||
|
|
||||||
public PhysicsBody ParentBody;
|
public PhysicsBody ParentBody;
|
||||||
|
|
||||||
[Editable(MinValueFloat = 0.0f, MaxValueFloat = 2048.0f), Serialize(100.0f, true)]
|
[Editable(MinValueFloat = 0.0f, MaxValueFloat = 2048.0f), Serialize(100.0f, true)]
|
||||||
|
|||||||
@@ -315,7 +315,7 @@ namespace Barotrauma.Items.Components
|
|||||||
Vector2 diff = nodes[nodes.Count - 1] - newNodePos;
|
Vector2 diff = nodes[nodes.Count - 1] - newNodePos;
|
||||||
Vector2 pullBackDir = diff == Vector2.Zero ? Vector2.Zero : Vector2.Normalize(diff);
|
Vector2 pullBackDir = diff == Vector2.Zero ? Vector2.Zero : Vector2.Normalize(diff);
|
||||||
|
|
||||||
user.AnimController.Collider.ApplyForce(pullBackDir * user.Mass * 50.0f);
|
user.AnimController.Collider.ApplyForce(pullBackDir * user.Mass * 50.0f, maxVelocity: NetConfig.MaxPhysicsBodyVelocity);
|
||||||
user.AnimController.UpdateUseItem(true, user.WorldPosition + pullBackDir * 200.0f);
|
user.AnimController.UpdateUseItem(true, user.WorldPosition + pullBackDir * 200.0f);
|
||||||
|
|
||||||
if (GameMain.NetworkMember == null || GameMain.NetworkMember.IsServer)
|
if (GameMain.NetworkMember == null || GameMain.NetworkMember.IsServer)
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Barotrauma.Items.Components;
|
using Barotrauma.Items.Components;
|
||||||
|
using Barotrauma.Networking;
|
||||||
using FarseerPhysics;
|
using FarseerPhysics;
|
||||||
using Microsoft.Xna.Framework;
|
using Microsoft.Xna.Framework;
|
||||||
using System;
|
using System;
|
||||||
@@ -310,7 +311,7 @@ namespace Barotrauma
|
|||||||
errorMsg);
|
errorMsg);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
character.AnimController.Collider.ApplyForce(force * limb.body.Mass);
|
character.AnimController.Collider.ApplyForce(force * limb.body.Mass, maxVelocity: NetConfig.MaxPhysicsBodyVelocity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using FarseerPhysics;
|
using Barotrauma.Networking;
|
||||||
|
using FarseerPhysics;
|
||||||
using FarseerPhysics.Collision;
|
using FarseerPhysics.Collision;
|
||||||
using FarseerPhysics.Common;
|
using FarseerPhysics.Common;
|
||||||
using FarseerPhysics.Dynamics;
|
using FarseerPhysics.Dynamics;
|
||||||
@@ -368,7 +369,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
public void ApplyForce(Vector2 force)
|
public void ApplyForce(Vector2 force)
|
||||||
{
|
{
|
||||||
Body.ApplyForce(force);
|
Body.ApplyForce(force, maxVelocity: NetConfig.MaxPhysicsBodyVelocity);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetPosition(Vector2 position)
|
public void SetPosition(Vector2 position)
|
||||||
|
|||||||
Reference in New Issue
Block a user