Fixed projectiles colliding with railguns due to 1e02d74
This commit is contained in:
@@ -188,6 +188,8 @@ namespace Barotrauma.Items.Components
|
|||||||
{
|
{
|
||||||
if (fixture == null || fixture.IsSensor) return -1;
|
if (fixture == null || fixture.IsSensor) return -1;
|
||||||
|
|
||||||
|
if (fixture.UserData is Item) return -1;
|
||||||
|
|
||||||
if (!fixture.CollisionCategories.HasFlag(Physics.CollisionCharacter) &&
|
if (!fixture.CollisionCategories.HasFlag(Physics.CollisionCharacter) &&
|
||||||
!fixture.CollisionCategories.HasFlag(Physics.CollisionWall) &&
|
!fixture.CollisionCategories.HasFlag(Physics.CollisionWall) &&
|
||||||
!fixture.CollisionCategories.HasFlag(Physics.CollisionLevel)) return -1;
|
!fixture.CollisionCategories.HasFlag(Physics.CollisionLevel)) return -1;
|
||||||
@@ -291,6 +293,8 @@ namespace Barotrauma.Items.Components
|
|||||||
|
|
||||||
if (IgnoredBodies.Contains(target.Body)) return false;
|
if (IgnoredBodies.Contains(target.Body)) return false;
|
||||||
|
|
||||||
|
if (target.UserData is Item) return false;
|
||||||
|
|
||||||
if (target.CollisionCategories == Physics.CollisionCharacter && !(target.Body.UserData is Limb))
|
if (target.CollisionCategories == Physics.CollisionCharacter && !(target.Body.UserData is Limb))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
public PhysicsBody body;
|
public PhysicsBody body;
|
||||||
|
|
||||||
public readonly XElement staticBodyConfig;
|
public readonly XElement StaticBodyConfig;
|
||||||
|
|
||||||
private Vector2 lastSentPos;
|
private Vector2 lastSentPos;
|
||||||
private bool prevBodyAwake;
|
private bool prevBodyAwake;
|
||||||
@@ -402,7 +402,7 @@ namespace Barotrauma
|
|||||||
case "brokensprite":
|
case "brokensprite":
|
||||||
break;
|
break;
|
||||||
case "staticbody":
|
case "staticbody":
|
||||||
staticBodyConfig = subElement;
|
StaticBodyConfig = subElement;
|
||||||
break;
|
break;
|
||||||
case "aitarget":
|
case "aitarget":
|
||||||
aiTarget = new AITarget(this);
|
aiTarget = new AITarget(this);
|
||||||
|
|||||||
@@ -131,31 +131,31 @@ namespace Barotrauma
|
|||||||
|
|
||||||
foreach (Item item in Item.ItemList)
|
foreach (Item item in Item.ItemList)
|
||||||
{
|
{
|
||||||
if (item.staticBodyConfig == null) continue;
|
if (item.StaticBodyConfig == null) continue;
|
||||||
|
|
||||||
float radius = ConvertUnits.ToSimUnits(item.staticBodyConfig.GetAttributeFloat("radius", 0.0f));
|
float radius = ConvertUnits.ToSimUnits(item.StaticBodyConfig.GetAttributeFloat("radius", 0.0f));
|
||||||
float width = ConvertUnits.ToSimUnits(item.staticBodyConfig.GetAttributeFloat("width", 0.0f));
|
float width = ConvertUnits.ToSimUnits(item.StaticBodyConfig.GetAttributeFloat("width", 0.0f));
|
||||||
float height = ConvertUnits.ToSimUnits(item.staticBodyConfig.GetAttributeFloat("height", 0.0f));
|
float height = ConvertUnits.ToSimUnits(item.StaticBodyConfig.GetAttributeFloat("height", 0.0f));
|
||||||
|
|
||||||
if (width != 0.0f && height != 0.0f)
|
if (width != 0.0f && height != 0.0f)
|
||||||
{
|
{
|
||||||
FixtureFactory.AttachRectangle(width, height, 5.0f, ConvertUnits.ToSimUnits(item.Position), farseerBody, this);
|
FixtureFactory.AttachRectangle(width, height, 5.0f, ConvertUnits.ToSimUnits(item.Position), farseerBody, this).UserData = item;
|
||||||
}
|
}
|
||||||
else if (radius != 0.0f && width != 0.0f)
|
else if (radius != 0.0f && width != 0.0f)
|
||||||
{
|
{
|
||||||
FixtureFactory.AttachRectangle(width, radius * 2, 5.0f, ConvertUnits.ToSimUnits(item.Position), farseerBody, this);
|
FixtureFactory.AttachRectangle(width, radius * 2, 5.0f, ConvertUnits.ToSimUnits(item.Position), farseerBody, this).UserData = item;
|
||||||
FixtureFactory.AttachCircle(radius, 5.0f, farseerBody, ConvertUnits.ToSimUnits(item.Position) - Vector2.UnitX * width / 2, this);
|
FixtureFactory.AttachCircle(radius, 5.0f, farseerBody, ConvertUnits.ToSimUnits(item.Position) - Vector2.UnitX * width / 2, this).UserData = item;
|
||||||
FixtureFactory.AttachCircle(radius, 5.0f, farseerBody, ConvertUnits.ToSimUnits(item.Position) + Vector2.UnitX * width / 2, this);
|
FixtureFactory.AttachCircle(radius, 5.0f, farseerBody, ConvertUnits.ToSimUnits(item.Position) + Vector2.UnitX * width / 2, this).UserData = item;
|
||||||
}
|
}
|
||||||
else if (radius != 0.0f && height != 0.0f)
|
else if (radius != 0.0f && height != 0.0f)
|
||||||
{
|
{
|
||||||
FixtureFactory.AttachRectangle(radius * 2, height, 5.0f, ConvertUnits.ToSimUnits(item.Position), farseerBody, this);
|
FixtureFactory.AttachRectangle(radius * 2, height, 5.0f, ConvertUnits.ToSimUnits(item.Position), farseerBody, this).UserData = item;
|
||||||
FixtureFactory.AttachCircle(radius, 5.0f, farseerBody, ConvertUnits.ToSimUnits(item.Position) - Vector2.UnitY * height / 2, this);
|
FixtureFactory.AttachCircle(radius, 5.0f, farseerBody, ConvertUnits.ToSimUnits(item.Position) - Vector2.UnitY * height / 2, this).UserData = item;
|
||||||
FixtureFactory.AttachCircle(radius, 5.0f, farseerBody, ConvertUnits.ToSimUnits(item.Position) + Vector2.UnitX * height / 2, this);
|
FixtureFactory.AttachCircle(radius, 5.0f, farseerBody, ConvertUnits.ToSimUnits(item.Position) + Vector2.UnitX * height / 2, this).UserData = item;
|
||||||
}
|
}
|
||||||
else if (radius != 0.0f)
|
else if (radius != 0.0f)
|
||||||
{
|
{
|
||||||
FixtureFactory.AttachCircle(radius, 5.0f, farseerBody, ConvertUnits.ToSimUnits(item.Position), this);
|
FixtureFactory.AttachCircle(radius, 5.0f, farseerBody, ConvertUnits.ToSimUnits(item.Position), this).UserData = item;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user