Add shake multiplier value to ScreenShaker

This commit is contained in:
ScottNZ
2013-10-27 20:38:43 +13:00
parent aec50426d5
commit d74c54d9f7

View File

@@ -38,16 +38,26 @@ namespace OpenRA.Traits
public void AddEffect(int time, WPos position, int intensity) public void AddEffect(int time, WPos position, int intensity)
{ {
shakeEffects.Add(new ShakeEffect { ExpiryTime = ticks + time, Position = position, Intensity = intensity }); AddEffect(time, position, intensity, new float2(1, 1));
}
public void AddEffect(int time, WPos position, int intensity, float2 multiplier)
{
shakeEffects.Add(new ShakeEffect { ExpiryTime = ticks + time, Position = position, Intensity = intensity, Multiplier = multiplier });
} }
float2 GetScrollOffset() float2 GetScrollOffset()
{ {
return GetIntensity() * new float2( return GetMultiplier() * GetIntensity() * new float2(
(float)Math.Sin((ticks * 2 * Math.PI) / 4), (float)Math.Sin((ticks * 2 * Math.PI) / 4),
(float)Math.Cos((ticks * 2 * Math.PI) / 5)); (float)Math.Cos((ticks * 2 * Math.PI) / 5));
} }
float2 GetMultiplier()
{
return shakeEffects.Aggregate(float2.Zero, (sum, next) => sum + next.Multiplier);
}
float GetIntensity() float GetIntensity()
{ {
var cp = worldRenderer.Position(worldRenderer.Viewport.CenterLocation); var cp = worldRenderer.Position(worldRenderer.Viewport.CenterLocation);
@@ -63,5 +73,6 @@ namespace OpenRA.Traits
public int ExpiryTime; public int ExpiryTime;
public WPos Position; public WPos Position;
public int Intensity; public int Intensity;
public float2 Multiplier;
} }
} }