| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- // This is a port of https://www.raylib.com/examples/textures/loader.html?name=textures_bunnymark
- package karl2d_bunnymark
- import k2 "../../.."
- import "core:math/rand"
- import "core:log"
- MAX_BUNNIES :: 50000
- Bunny :: struct {
- position: k2.Vec2,
- speed: k2.Vec2,
- color: k2.Color,
- }
- main :: proc() {
- context.logger = log.create_console_logger()
- SCREEN_WIDTH :: 800
- SCREEN_HEIGHT :: 450
- k2.init(SCREEN_WIDTH, SCREEN_HEIGHT, "bunnymark (raylib port)")
- tex_bunny := k2.load_texture_from_file("wabbit_alpha.png")
- bunnies: [dynamic]Bunny
- for !k2.shutdown_wanted() {
- if k2.mouse_button_is_held(.Left) {
- for _ in 0..<100 {
- append(&bunnies, Bunny {
- position = k2.get_mouse_position(),
- speed = {
- rand.float32_range(-250, 250)/60,
- rand.float32_range(-250, 250)/60,
- },
- color = {
- u8(rand.int_max(190) + 50),
- u8(rand.int_max(160) + 80),
- u8(rand.int_max(140) + 100),
- 255,
- },
- })
- }
- }
- for &b in bunnies {
- b.position += b.speed
- if (b.position.x + f32(tex_bunny.width/2) > f32(k2.get_screen_width())) || ((b.position.x + f32(tex_bunny.width/2)) < 0) {
- b.speed.x *= -1
- }
- if (b.position.y + f32(tex_bunny.height/2) > f32(k2.get_screen_height())) || ((b.position.y + f32(tex_bunny.height/2)) < 0) {
- b.speed.y *= -1
- }
- }
- k2.process_events()
- k2.clear(k2.RL_RAYWHITE)
- for &b in bunnies {
- k2.draw_texture(tex_bunny, b.position, b.color)
- }
- k2.present()
- }
- delete(bunnies)
- k2.destroy_texture(tex_bunny)
- k2.shutdown()
- }
|