diff options
| author | realtradam <[email protected]> | 2021-08-07 21:40:00 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2021-08-07 21:40:00 -0400 |
| commit | 4a759ba2710de0b7335e6cfcd6db8bc16795c13b (patch) | |
| tree | d9c4a3d4c086ab5619c211781a79937208f991e5 | |
| parent | f338746d142fc742a31268ba1129fd83d750d07f (diff) | |
| download | ruby2d-camera-4a759ba2710de0b7335e6cfcd6db8bc16795c13b.tar.gz ruby2d-camera-4a759ba2710de0b7335e6cfcd6db8bc16795c13b.zip | |
added sprites
| -rw-r--r-- | lib/ruby2d/camera/sprite.rb | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/lib/ruby2d/camera/sprite.rb b/lib/ruby2d/camera/sprite.rb new file mode 100644 index 0000000..4ad5bca --- /dev/null +++ b/lib/ruby2d/camera/sprite.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true +module Ruby2D + module Camera + # Wraps existing variables as well as adding new methods + # so that it can be handled by the Camera Module + class Sprite < Ruby2D::Sprite + # Recalculates real coordiantes + # Use after changing variables + def _draw + angle = Camera.angle * (Math::PI / 180) + half_width = Window.width * 0.5 + half_height = Window.height * 0.5 + offset_x = x + (width / 2) + offset_y = y + (height / 2) + temp_x = @flip_x = (((offset_x - Camera.x) * Math.cos(angle)) - ((offset_y - Camera.y) * Math.sin(angle))) \ + * Camera.zoom + half_width - (width * Camera.zoom / 2) + temp_y = @flip_y = (((offset_x - Camera.x) * Math.sin(angle)) + ((offset_y - Camera.y) * Math.cos(angle))) \ + * Camera.zoom + half_height - (height * Camera.zoom / 2) + temp_rotate = rotate + Camera.angle + temp_width = @flip_width = width * Camera.zoom + temp_height = @flip_height = height * Camera.zoom + case @flip + when :both + @flip_x = @x + @height + @flip_width = -@width + @flip_y = @y + @width + @flip_height = -@height + when :horizontal + @flip_y = @y + @width + @flip_height = -@height + when :vertical + @flip_x = @x + @height + @flip_width = -@width + end + self.draw(x: temp_x, y: temp_x, + width: temp_width, + height: temp_height, + rotate: temp_rotate) + end + + def initialize(path, opts= {}) + super(path, opts) + Ruby2D::Camera << self + self.remove + end + end + end +end |
