Renamed the CollisionMisc collision category to CollisionItem, teleporting items inside/outside the sub if their physicsbody leaves/enters a hull, powercontainer charge can be changed in editor (i.e. batteries can be set to fully loaded)
This commit is contained in:
@@ -284,7 +284,7 @@ namespace Barotrauma
|
||||
if (fixture == null ||
|
||||
fixture.CollisionCategories == Physics.CollisionCharacter ||
|
||||
fixture.CollisionCategories == Physics.CollisionNone ||
|
||||
fixture.CollisionCategories == Physics.CollisionMisc) return -1;
|
||||
fixture.CollisionCategories == Physics.CollisionItem) return -1;
|
||||
|
||||
Structure structure = fixture.Body.UserData as Structure;
|
||||
if (structure != null)
|
||||
|
||||
@@ -212,7 +212,7 @@ namespace Barotrauma
|
||||
{
|
||||
//limbs don't collide with each other
|
||||
body.CollisionCategories = Physics.CollisionCharacter;
|
||||
body.CollidesWith = Physics.CollisionAll & ~Physics.CollisionCharacter & ~Physics.CollisionMisc;
|
||||
body.CollidesWith = Physics.CollisionAll & ~Physics.CollisionCharacter & ~Physics.CollisionItem;
|
||||
}
|
||||
|
||||
impactTolerance = ToolBox.GetAttributeFloat(element, "impacttolerance", 10.0f);
|
||||
|
||||
@@ -200,7 +200,7 @@ namespace Barotrauma.Items.Components
|
||||
{
|
||||
item.body.FarseerBody.OnCollision -= OnCollision;
|
||||
|
||||
item.body.CollisionCategories = Physics.CollisionMisc;
|
||||
item.body.CollisionCategories = Physics.CollisionItem;
|
||||
item.body.CollidesWith = Physics.CollisionWall;
|
||||
|
||||
//foreach (Limb l in picker.AnimController.Limbs)
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace Barotrauma.Items.Components
|
||||
get { return maxOutput; }
|
||||
}
|
||||
|
||||
[HasDefaultValue(0.0f, true)]
|
||||
[Editable, HasDefaultValue(0.0f, true)]
|
||||
public float Charge
|
||||
{
|
||||
get { return charge; }
|
||||
|
||||
@@ -155,8 +155,8 @@ namespace Barotrauma.Items.Components
|
||||
item.Move(-submarine.Position);
|
||||
item.Submarine = submarine;
|
||||
item.body.Submarine = submarine;
|
||||
item.FindHull();
|
||||
return false;
|
||||
//item.FindHull();
|
||||
return true;
|
||||
}
|
||||
|
||||
Limb limb;
|
||||
@@ -177,7 +177,7 @@ namespace Barotrauma.Items.Components
|
||||
item.body.FarseerBody.OnCollision -= OnProjectileCollision;
|
||||
|
||||
item.body.FarseerBody.IsBullet = false;
|
||||
item.body.CollisionCategories = Physics.CollisionMisc;
|
||||
item.body.CollisionCategories = Physics.CollisionItem;
|
||||
item.body.CollidesWith = Physics.CollisionWall | Physics.CollisionLevel;
|
||||
|
||||
IgnoredBodies.Clear();
|
||||
|
||||
@@ -98,7 +98,7 @@ namespace Barotrauma.Items.Components
|
||||
ropeList[i].Mass = 0.01f;
|
||||
ropeList[i].Enabled = false;
|
||||
//only collide with the map
|
||||
ropeList[i].CollisionCategories = Physics.CollisionMisc;
|
||||
ropeList[i].CollisionCategories = Physics.CollisionItem;
|
||||
ropeList[i].CollidesWith = Physics.CollisionWall;
|
||||
|
||||
ropeBodies[i] = new PhysicsBody(ropeList[i]);
|
||||
|
||||
@@ -121,7 +121,7 @@ namespace Barotrauma.Items.Components
|
||||
{
|
||||
base.Update(deltaTime, cam);
|
||||
|
||||
light.Submarine = (item.CurrentHull == null) ? null : item.CurrentHull.Submarine;
|
||||
light.Submarine = item.Submarine;
|
||||
|
||||
if (item.Container != null)
|
||||
{
|
||||
|
||||
@@ -707,7 +707,18 @@ namespace Barotrauma
|
||||
|
||||
if (Math.Abs(body.LinearVelocity.X) > 0.01f || Math.Abs(body.LinearVelocity.Y) > 0.01f)
|
||||
{
|
||||
Submarine prevSub = Submarine;
|
||||
|
||||
FindHull();
|
||||
|
||||
if (Submarine == null && prevSub != null)
|
||||
{
|
||||
body.SetTransform(body.SimPosition + prevSub.SimPosition, body.Rotation);
|
||||
}
|
||||
else if (Submarine != null && prevSub == null)
|
||||
{
|
||||
body.SetTransform(body.SimPosition - Submarine.SimPosition, body.Rotation);
|
||||
}
|
||||
|
||||
Vector2 moveAmount = body.SimPosition - body.LastSentPosition;
|
||||
if (parentInventory == null && moveAmount != Vector2.Zero && moveAmount.Length() > NetConfig.ItemPosUpdateDistance)
|
||||
|
||||
@@ -323,7 +323,7 @@ namespace Barotrauma
|
||||
{
|
||||
if (fixture == null ||
|
||||
fixture.CollisionCategories == Category.None ||
|
||||
fixture.CollisionCategories == Physics.CollisionMisc) return -1;
|
||||
fixture.CollisionCategories == Physics.CollisionItem) return -1;
|
||||
|
||||
if (collisionCategory != null && !fixture.CollisionCategories.HasFlag((Category)collisionCategory)) return -1;
|
||||
|
||||
|
||||
@@ -152,8 +152,8 @@ namespace Barotrauma
|
||||
|
||||
|
||||
body.BodyType = BodyType.Dynamic;
|
||||
body.CollisionCategories = Physics.CollisionMisc | Physics.CollisionWall;
|
||||
body.CollidesWith = Physics.CollisionLevel | Physics.CollisionCharacter | Physics.CollisionProjectile;
|
||||
body.CollisionCategories = Physics.CollisionWall;
|
||||
body.CollidesWith = Physics.CollisionItem | Physics.CollisionLevel | Physics.CollisionCharacter | Physics.CollisionProjectile;
|
||||
body.Restitution = Restitution;
|
||||
body.Friction = Friction;
|
||||
body.FixedRotation = true;
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace Barotrauma
|
||||
public const Category CollisionCharacter = Category.Cat2;
|
||||
public const Category CollisionPlatform = Category.Cat3;
|
||||
public const Category CollisionStairs = Category.Cat4;
|
||||
public const Category CollisionMisc = Category.Cat5;
|
||||
public const Category CollisionItem = Category.Cat5;
|
||||
public const Category CollisionProjectile = Category.Cat6;
|
||||
public const Category CollisionLevel = Category.Cat7;
|
||||
|
||||
|
||||
@@ -239,7 +239,7 @@ namespace Barotrauma
|
||||
|
||||
dir = 1.0f;
|
||||
|
||||
body.CollisionCategories = Physics.CollisionMisc;
|
||||
body.CollisionCategories = Physics.CollisionItem;
|
||||
body.CollidesWith = Physics.CollisionWall | Physics.CollisionLevel;
|
||||
|
||||
body.Friction = ToolBox.GetAttributeFloat(element, "friction", 0.3f);
|
||||
|
||||
Reference in New Issue
Block a user