public override void Draw(RenderTexture gui, Vector2i origin, RenderStates guiState) { progress = barProgress.Invoke(tag); if (!(progress == 1.0f && hideWhenFull) && !(progress == 0.0f && hideWhenEmpty)) { Transform t = new Transform(1, 0, 0, 0, 1, 0, 0, 0, 1); Vector2f pos = new Vector2f((position + origin).X, (origin + position).Y); t.Translate(pos); Transform original = guiState.Transform; guiState.Transform = t; //draw backdrop gui.Draw(backdrop, guiState); //draw bar t = new Transform(1, 0, 0, 0, 1, 0, 0, 0, 1); t.Scale(progress, 1); t.Translate(new Vector2f((origin + position).X * (1 / progress), (origin + position).Y)); guiState.Transform = t; gui.Draw(bar, guiState); guiState.Transform = original; } base.Draw(gui, origin, guiState); }