mirror of
https://github.com/Ed94/Odin.git
synced 2026-07-14 23:21:25 -07:00
45 lines
693 B
Odin
45 lines
693 B
Odin
// Demo 001
|
|
#load "basic.odin"
|
|
#load "game.odin"
|
|
|
|
main :: proc() {
|
|
Vec3 :: type struct { x, y, z: f32 }
|
|
Entity :: type struct {
|
|
using pos: Vec3
|
|
name: string
|
|
}
|
|
|
|
Amp :: type struct {
|
|
using entity: Entity
|
|
jump_height: f32
|
|
}
|
|
Frog :: type struct {
|
|
using amp: Amp
|
|
volume: f64
|
|
}
|
|
|
|
f := Frog{};
|
|
f.name = "ribbit";
|
|
f.jump_height = 1337;
|
|
|
|
e := ^f.entity;
|
|
parent := e down_cast ^Frog;
|
|
|
|
print_name :: proc(using e: Entity, v: Vec3) {
|
|
print_string(name); nl()
|
|
print_int(v.x as int); nl()
|
|
}
|
|
|
|
print_f32(f.jump_height); nl()
|
|
print_f32(parent.jump_height); nl()
|
|
|
|
print_name(f, Vec3{1, 2, 3})
|
|
print_name(parent, Vec3{3, 2, 1})
|
|
|
|
|
|
}
|
|
|
|
|
|
nl :: proc() #inline { print_nl() }
|
|
|