Change Renderable to take centered positions.

This commit is contained in:
Paul Chote
2013-05-12 17:32:37 +12:00
parent d103a187f6
commit d878c96343
23 changed files with 41 additions and 41 deletions

View File

@@ -40,10 +40,11 @@ namespace OpenRA.Graphics
public Renderable Image(Actor self, WorldRenderer wr, PaletteReference pal, float scale)
{
var p = self.CenterLocation;
var loc = p.ToFloat2() - 0.5f * scale * Animation.Image.size
+ (OffsetFunc != null ? OffsetFunc(wr) : float2.Zero);
var offset = p.ToFloat2();
if (OffsetFunc != null)
offset += OffsetFunc(wr);
return new Renderable(Animation.Image, loc, pal, p.Y, ZOffset, scale);
return new Renderable(Animation.Image, offset, pal, p.Y, ZOffset, scale);
}
public static implicit operator AnimationWithOffset(Animation a)

View File

@@ -56,7 +56,7 @@ namespace OpenRA.Graphics
public void Render(WorldRenderer wr)
{
Sprite.DrawAt(Pos, Palette.Index, Scale);
Sprite.DrawAt(Pos - 0.5f*Scale*Sprite.size, Palette.Index, Scale);
}
public Size Size

View File

@@ -30,15 +30,16 @@ namespace OpenRA.Traits
[Desc("Number of facings for gameplay calculations. -1 indiciates auto-detection from sequence")]
public readonly int QuantizedFacings = -1;
[Desc("Camera pitch the sprite was rendered with. Used to determine rotation ellipses")]
public readonly WAngle CameraPitch = WAngle.FromDegrees(40);
public virtual object Create(ActorInitializer init) { return new RenderSimple(init.self); }
public virtual IEnumerable<Renderable> RenderPreview(ActorInfo building, PaletteReference pr)
public virtual IEnumerable<Renderable> RenderPreview(ActorInfo ai, PaletteReference pr)
{
var anim = new Animation(RenderSimple.GetImage(building), () => 0);
var anim = new Animation(RenderSimple.GetImage(ai), () => 0);
anim.PlayRepeating("idle");
yield return new Renderable(anim.Image, 0.5f * anim.Image.size * (1 - Scale), pr, 0, Scale);
yield return new Renderable(anim.Image, 0.5f*anim.Image.size, pr, 0, Scale);
}
}