Particle start color is initialized correctly, small particle collision fix

This commit is contained in:
Regalis
2016-09-22 21:24:40 +03:00
parent 4d6ebe8374
commit ccb50ca28f
+9 -9
View File
@@ -103,7 +103,7 @@ namespace Barotrauma.Particles
sizeChange = prefab.SizeChangeMin + (prefab.SizeChangeMax - prefab.SizeChangeMin) * Rand.Range(0.0f, 1.0f); sizeChange = prefab.SizeChangeMin + (prefab.SizeChangeMax - prefab.SizeChangeMin) * Rand.Range(0.0f, 1.0f);
color = prefab.StartColor; color = new Color(prefab.StartColor, 1.0f);
alpha = prefab.StartAlpha; alpha = prefab.StartAlpha;
velocityChange = prefab.VelocityChange; velocityChange = prefab.VelocityChange;
@@ -242,24 +242,24 @@ namespace Barotrauma.Particles
if (position.Y < prevHullRect.Y - prevHullRect.Height) if (position.Y < prevHullRect.Y - prevHullRect.Height)
{ {
position.Y = prevHullRect.Y - prevHullRect.Height + 1.0f; position.Y = prevHullRect.Y - prevHullRect.Height + prefab.CollisionRadius;
velocity.Y = -velocity.Y; velocity.Y = -velocity.Y;
} }
else if (position.Y > prevHullRect.Y) else if (position.Y > prevHullRect.Y)
{ {
position.Y = prevHullRect.Y - 1.0f; position.Y = prevHullRect.Y - prefab.CollisionRadius;
velocity.X = Math.Abs(velocity.Y) * Math.Sign(velocity.X); velocity.X = Math.Abs(velocity.Y) * Math.Sign(velocity.X);
velocity.Y = -velocity.Y * 0.1f; velocity.Y = -velocity.Y * 0.1f;
} }
if (position.X < prevHullRect.X) if (position.X < prevHullRect.X)
{ {
position.X = prevHullRect.X + 1.0f; position.X = prevHullRect.X + prefab.CollisionRadius;
velocity.X = -velocity.X; velocity.X = -velocity.X;
} }
else if (position.X > prevHullRect.X + prevHullRect.Width) else if (position.X > prevHullRect.X + prevHullRect.Width)
{ {
position.X = prevHullRect.X + prevHullRect.Width - 1.0f; position.X = prevHullRect.X + prevHullRect.Width - prefab.CollisionRadius;
velocity.X = -velocity.X; velocity.X = -velocity.X;
} }
@@ -275,24 +275,24 @@ namespace Barotrauma.Particles
if (position.Y < hullRect.Y - hullRect.Height) if (position.Y < hullRect.Y - hullRect.Height)
{ {
position.Y = hullRect.Y - hullRect.Height - 1.0f; position.Y = hullRect.Y - hullRect.Height - prefab.CollisionRadius;
velocity.Y = -velocity.Y; velocity.Y = -velocity.Y;
} }
else if (position.Y > hullRect.Y) else if (position.Y > hullRect.Y)
{ {
position.Y = hullRect.Y + 1.0f; position.Y = hullRect.Y + prefab.CollisionRadius;
velocity.X = Math.Abs(velocity.Y) * Math.Sign(velocity.X); velocity.X = Math.Abs(velocity.Y) * Math.Sign(velocity.X);
velocity.Y = -velocity.Y; velocity.Y = -velocity.Y;
} }
if (position.X < hullRect.X) if (position.X < hullRect.X)
{ {
position.X = hullRect.X - 1.0f; position.X = hullRect.X - prefab.CollisionRadius;
velocity.X = -velocity.X; velocity.X = -velocity.X;
} }
else if (position.X > hullRect.X + hullRect.Width) else if (position.X > hullRect.X + hullRect.Width)
{ {
position.X = hullRect.X + hullRect.Width + 1.0f; position.X = hullRect.X + hullRect.Width + prefab.CollisionRadius;
velocity.X = -velocity.X; velocity.X = -velocity.X;
} }