public void Draw(RenderTarget target) { const int size = 5; var centre = m_physicsComponent.Position + (m_pixelGrid.Centre * size); var rotation = AngleHelpers.GetRotation( centre, m_physicsComponent.Facing); rotation += AngleHelpers.ToRadians(90); foreach (var key in m_pixelGrid.Grid.Keys) { var pixelPosition = m_physicsComponent.Position + (key * size); var rotatedPosition = AngleHelpers.Rotate(pixelPosition - centre, rotation) + centre; var shape = new RectangleShape(new Vector2f(size, size)) { Position = rotatedPosition, FillColor = Color.Black, OutlineColor = m_pixelGrid.Grid[key], OutlineThickness = 1 }; target.Draw(shape); } }
private void Update() { var cameraAngle = CameraControl.Instance.transform.eulerAngles.y; var angleFromCamera = AngleHelpers.BetweenPlusMinus180(this._currentAngleTarget - cameraAngle); if (Math.Abs(angleFromCamera) > MaxAngleFromPlayerPov) { var newAngleOffset = -Mathf.Min(MaxAngleFromPlayerPov / 4, Mathf.Max(-MaxAngleFromPlayerPov / 4, angleFromCamera)); this._currentAngleTarget += newAngleOffset; } }
public void Center(bool instantly) { var angleDiff = AngleHelpers.BetweenPlusMinus180(CameraControl.Instance.transform.eulerAngles.y - this._currentAngleTarget); this._currentAngleTarget += angleDiff; if (instantly) { this._currentAngle = this._currentAngleTarget; this.transform.eulerAngles = new Vector3(0, this._currentAngleTarget, 0); } }