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:
Regalis
2016-05-19 19:47:26 +03:00
parent 6651933c45
commit a477dad1b2
12 changed files with 25 additions and 14 deletions

View File

@@ -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)

View File

@@ -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);

View File

@@ -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)

View File

@@ -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; }

View File

@@ -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();

View File

@@ -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]);

View File

@@ -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)
{

View File

@@ -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)

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);