Add shake multiplier value to ScreenShaker
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user