Minor cleanup
parent
0af265040c
commit
2e57840b7a
|
@ -3,9 +3,7 @@ use cgmath::{Deg, Point2, Point3};
|
|||
use crate::{
|
||||
content::{self, ship::Engine},
|
||||
physics::PhysicsBody,
|
||||
render::Sprite,
|
||||
render::SpriteTexture,
|
||||
render::Spriteable,
|
||||
render::{Sprite, SpriteTexture, Spriteable, SubSprite},
|
||||
};
|
||||
|
||||
pub struct Ship {
|
||||
|
@ -35,7 +33,7 @@ impl Spriteable for Ship {
|
|||
Some(
|
||||
self.engines
|
||||
.iter()
|
||||
.map(|e| Sprite {
|
||||
.map(|e| SubSprite {
|
||||
pos: Point3 {
|
||||
x: e.pos.x,
|
||||
y: e.pos.y,
|
||||
|
@ -44,7 +42,6 @@ impl Spriteable for Ship {
|
|||
texture: SpriteTexture("flare::ion".to_owned()),
|
||||
angle: Deg(0.0),
|
||||
size: e.size,
|
||||
children: None,
|
||||
})
|
||||
.collect(),
|
||||
)
|
||||
|
|
|
@ -9,6 +9,7 @@ use super::{
|
|||
consts::{OPENGL_TO_WGPU_MATRIX, SPRITE_INSTANCE_LIMIT, STARFIELD_INSTANCE_LIMIT},
|
||||
globaldata::{GlobalData, GlobalDataContent},
|
||||
pipeline::PipelineBuilder,
|
||||
sprite::SubSprite,
|
||||
texturearray::TextureArray,
|
||||
vertexbuffer::{
|
||||
consts::{SPRITE_INDICES, SPRITE_VERTICES},
|
||||
|
@ -285,15 +286,10 @@ impl GPUState {
|
|||
&self,
|
||||
game: &Game,
|
||||
instances: &mut Vec<SpriteInstance>,
|
||||
s: Sprite,
|
||||
s: SubSprite,
|
||||
parent_pos: Point2<f32>,
|
||||
parent_angle: Deg<f32>,
|
||||
) {
|
||||
// TODO: clean up
|
||||
if s.children.is_some() {
|
||||
panic!("Child sprites must not have child sprites!")
|
||||
}
|
||||
|
||||
let texture = self.texture_array.get_sprite_texture(s.texture);
|
||||
let scale = s.size / (s.pos.z * game.camera.zoom);
|
||||
let sprite_aspect_and_scale =
|
||||
|
|
|
@ -7,7 +7,7 @@ mod texturearray;
|
|||
mod vertexbuffer;
|
||||
|
||||
pub use gpustate::GPUState;
|
||||
pub use sprite::{Sprite, Spriteable};
|
||||
pub use sprite::{Sprite, Spriteable, SubSprite};
|
||||
|
||||
/// A handle to a sprite texture
|
||||
#[derive(Debug, Clone)]
|
||||
|
|
|
@ -3,7 +3,7 @@ use cgmath::{Deg, Point3};
|
|||
use super::SpriteTexture;
|
||||
|
||||
pub struct Sprite {
|
||||
/// Name of the sprite to draw
|
||||
/// The sprite texture to draw
|
||||
pub texture: SpriteTexture,
|
||||
|
||||
/// This object's position, in world coordinates.
|
||||
|
@ -18,13 +18,26 @@ pub struct Sprite {
|
|||
pub angle: Deg<f32>,
|
||||
|
||||
/// Sprites that should be drawn relative to this sprite.
|
||||
/// Coordinates of sprites in this array will be interpreted
|
||||
/// as world units, relative to the center of this sprite,
|
||||
/// before any rotation or scaling.
|
||||
/// Children rotate with their parent sprite.
|
||||
///
|
||||
/// Note that child sprites may NOT have children.
|
||||
pub children: Option<Vec<Sprite>>,
|
||||
pub children: Option<Vec<SubSprite>>,
|
||||
}
|
||||
|
||||
pub struct SubSprite {
|
||||
/// The sprite texture to draw
|
||||
pub texture: SpriteTexture,
|
||||
|
||||
/// This object's position, in world coordinates.
|
||||
/// This is relative to this sprite's parent.
|
||||
pub pos: Point3<f32>,
|
||||
|
||||
/// The size of this sprite,
|
||||
/// given as height in world units.
|
||||
pub size: f32,
|
||||
|
||||
/// This sprite's rotation
|
||||
/// (relative to north, measured ccw)
|
||||
/// Just as position, this is relative to this
|
||||
/// subsprite's parent sprite.
|
||||
pub angle: Deg<f32>,
|
||||
}
|
||||
|
||||
pub trait Spriteable {
|
||||
|
|
Loading…
Reference in New Issue