aboutsummaryrefslogtreecommitdiff
path: root/src/prop.odin
diff options
context:
space:
mode:
Diffstat (limited to 'src/prop.odin')
-rw-r--r--src/prop.odin41
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{