diff options
Diffstat (limited to 'src/prop.odin')
| -rw-r--r-- | src/prop.odin | 41 |
1 files changed, 20 insertions, 21 deletions
diff --git a/src/prop.odin b/src/prop.odin index 34d4559..35e16e8 100644 --- a/src/prop.odin +++ b/src/prop.odin @@ -3,8 +3,7 @@ package demonchime import "core:math/linalg" import "core:log" -import rl "vendor:raylib" - +import "fw" import "phys" Prop :: struct { @@ -22,7 +21,7 @@ draw_props :: proc() { iter := iter_entity_list(state.prop_list) for p in entity_list_iter(&iter) { image := get_image(p.image_id) - draw_texture( + fw.draw_tex( image, p.pos, scale = p.scale, @@ -36,8 +35,8 @@ Wiggle_Prop :: struct { pos: Vec2, scale: Vec2, offset: Vec2, - rotation: f32, - rotation_factor: f32, + shear: f32, + shear_factor: f32, } make_wiggle_prop :: proc(prop: Wiggle_Prop) -> (Entity_Handle, ^Wiggle_Prop) { @@ -52,23 +51,23 @@ update_wiggle_props :: proc(dt: f32) { image := get_image(p.image_id) dist := linalg.length(p.pos - player_pos) - dist = f32(max(image.width, image.height)) - dist + dist = f32(max(image.size.x, image.size.y)) - dist if dist < 0 { dist = 0 } - p.rotation = player_vel.x / PLAYER_SPEED * dist * p.rotation_factor + p.shear = player_vel.x / PLAYER_SPEED * dist * p.shear_factor } } draw_wiggle_props :: proc() { iter := iter_entity_list(state.wiggle_prop_list) for p in entity_list_iter(&iter) { - draw_texture_full( + fw.draw_tex_ex( get_image(p.image_id), p.pos, - p.offset, - p.rotation, - p.scale, + offset = p.offset, + // rot = p.rotation, + shear = Vec2{-p.shear, 0}, ) } } @@ -95,7 +94,7 @@ object_spawner_prop :: proc(obj: Object_Resource) { tile := tiles[tile_id] img := get_image(tile.image) - pos := obj.pos - Vec2{0, f32(img.height)} + pos := obj.pos - Vec2{0, f32(img.size.y)} scale := Vec2{1, 1} if obj.size.x < 0 { scale.x = -1 @@ -114,14 +113,14 @@ object_spawner_prop :: proc(obj: Object_Resource) { .Windchimes_0, .Windchimes_1: offset := linalg.round(Vec2{ - f32(img.width) * 0.5, + f32(img.size.x) * 0.5, 0, }) - rotation_factor: f32 = 1 + shear_factor: f32 = 1 #partial switch tile.image { case .Carrabasset_Vines_0: - rotation_factor = 0.25 + shear_factor = 0.1 } make_wiggle_prop(Wiggle_Prop{ @@ -129,18 +128,18 @@ object_spawner_prop :: proc(obj: Object_Resource) { pos = pos + offset, scale = scale, offset = offset, - rotation_factor = -rotation_factor, + shear_factor = -shear_factor, }) case .Carrabassett_Small_Bush_0, .Carrabassett_Big_Bush_0: offset := linalg.round(Vec2{ - f32(img.width) * 0.5, - f32(img.height), + f32(img.size.x) * 0.5, + f32(img.size.y), }) - rotation_factor: f32 = 1 + shear_factor: f32 = 0.01 #partial switch tile.image { case .Carrabassett_Big_Bush_0: - rotation_factor = 0.25 + shear_factor = 0.01 } make_wiggle_prop(Wiggle_Prop{ @@ -148,7 +147,7 @@ object_spawner_prop :: proc(obj: Object_Resource) { pos = pos + offset, scale = scale, offset = offset, - rotation_factor = rotation_factor, + shear_factor = shear_factor, }) case: make_prop(Prop{ |
