diff --git a/OpenRA.Game/Graphics/Animation.cs b/OpenRA.Game/Graphics/Animation.cs index ff8d3cd446..d851c20094 100644 --- a/OpenRA.Game/Graphics/Animation.cs +++ b/OpenRA.Game/Graphics/Animation.cs @@ -23,9 +23,12 @@ namespace OpenRA.Graphics int frame = 0; bool backwards = false; - bool tickAlways; + string name; + readonly int defaultTick = 40; // 25 fps == 40 ms + bool tickAlways; + public string Name { get { return name; } } readonly SequenceProvider sequenceProvider; @@ -66,6 +69,12 @@ namespace OpenRA.Graphics return Render(pos, WVec.Zero, 0, palette, 1f); } + public void Initialize(string sequenceName) + { + CurrentSequence = sequenceProvider.GetSequence(name, sequenceName); + tickAlways = true; + } + public void Play(string sequenceName) { PlayThen(sequenceName, null); @@ -149,7 +158,7 @@ namespace OpenRA.Graphics while (timeUntilNextFrame <= 0) { tickFunc(); - timeUntilNextFrame += CurrentSequence != null ? CurrentSequence.Tick : 40; // 25 fps == 40 ms + timeUntilNextFrame += CurrentSequence != null ? CurrentSequence.Tick : defaultTick; } } } diff --git a/OpenRA.Mods.RA/Render/RenderBuilding.cs b/OpenRA.Mods.RA/Render/RenderBuilding.cs index 2cff096996..e30569fbf5 100755 --- a/OpenRA.Mods.RA/Render/RenderBuilding.cs +++ b/OpenRA.Mods.RA/Render/RenderBuilding.cs @@ -49,7 +49,8 @@ namespace OpenRA.Mods.RA.Render this.info = info; skipMakeAnimation = init.Contains(); - DefaultAnimation.PlayRepeating(NormalizeSequence(self, "idle")); + DefaultAnimation.Initialize(NormalizeSequence(self, "idle")); + self.Trait().SetAutodetectedFacings(DefaultAnimation.CurrentSequence.Facings); } @@ -71,6 +72,8 @@ namespace OpenRA.Mods.RA.Render public virtual void BuildingComplete(Actor self) { + DefaultAnimation.PlayRepeating(NormalizeSequence(self, "idle")); + if (info.PauseOnLowPower) { var disabled = self.TraitsImplementing();