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