diff --git a/src/main.zig b/src/main.zig index a8aab32..e99266f 100644 --- a/src/main.zig +++ b/src/main.zig @@ -38,20 +38,27 @@ const Particle = struct { velocity : pr.Vec = .{.a = .{.x=0,.y=0,.z=0}}, acceleration : pr.Vec = .{.a = .{.x=0,.y=0,.z=0}}, lifespan : u8 = 0, + spawm : u8 = 1, pub fn new(self:Self) void { _ = self; } pub fn update(self:*Self) void { self.velocity.add(self.acceleration); self.position.add(self.velocity); + if (self.position.a.y > screenHeight) + { + self.velocity.a.y *= -0.9; + // self.acceleration.a.y *= -0.5; + } if (self.lifespan > 0) { self.lifespan -= 1; - } else { + } else + { const xrnr = randMinMaxFloat(-1,1); const yrnr = randMinMaxFloat(-0.5,0.5); - self.lifespan = rand.intRangeAtMost(u8,1,100); + self.lifespan = rand.intRangeAtMost(u8,75,255); self.acceleration.a.x = xrnr; self.acceleration.a.y = yrnr; self.position.a.x = @floatFromInt(rl.getMouseX()-screenWidth/2); @@ -67,12 +74,17 @@ const Particle = struct { self.velocity.a.y += val; } }; +fn ItoF(x:i32) f32 +{ + return @as(f32,@floatFromInt(x)); +} pub fn main() anyerror!void { // Initialization //-------------------------------------------------------------------------------------- const rect2 = rl.Rectangle{ .x = @as(f32, @floatFromInt(10)), .y = @as(f32, @floatFromInt(10)), .width = @as(f32, @floatFromInt(300)), .height = @as(f32, @floatFromInt(100)) }; + const rect3 = rl.Rectangle{ .x = @as(f32, @floatFromInt(200)), .y = @as(f32, @floatFromInt(150)), .width = @as(f32, @floatFromInt(600)), .height = @as(f32, @floatFromInt(10)) }; var msg_res : i32=-1; var state : i32=-1; @@ -85,8 +97,9 @@ pub fn main() anyerror!void { var posx : i32 = 0; var posy : i32 = 0; + var value : f32 = 0; - const p1 = try allocator.alloc(Particle,5000); + const p1 = try allocator.alloc(Particle,500000); for (p1) |*p| { xrnr = rand.float(f32); yrnr = rand.float(f32); @@ -126,20 +139,28 @@ pub fn main() anyerror!void { else =>{}, } } - for (p1) |*p| { - p.update(); - p.applyGravity(2); - if(p.position.a.x >= -(screenWidth/2)){ - posx = @intFromFloat(screenWidth / 2 + p.position.a.x); - } else { - posx = 0; + _ = rg.guiSlider(rect3,"0","500000",&value,ItoF(0),ItoF(500000)); + for (0..,p1) |i,*p| { + if(i<@as(usize,@intFromFloat(value))) + { + if(rl.isMouseButtonPressed(rl.MouseButton.mouse_button_left)) + { + p.spawm = 1; + } + p.update(); + p.applyGravity(2); + if(p.position.a.x >= -(screenWidth/2)){ + posx = @intFromFloat(screenWidth / 2 + p.position.a.x); + } else { + posx = 0; + } + if(p.position.a.y >= -(screenHeight/2)){ + posy = @intFromFloat(screenHeight / 2 + p.position.a.y); + } else { + posy = 0; + } + rl.drawRectangle(posx,posy,2,2,rl.Color{.r=p.position.a.color.r,.g=p.position.a.color.g,.b=p.position.a.color.b,.a=255}); } - if(p.position.a.y >= -(screenHeight/2)){ - posy = @intFromFloat(screenHeight / 2 + p.position.a.y); - } else { - posy = 0; - } - rl.drawRectangle(posx,posy,5,5,rl.Color{.r=p.position.a.color.r,.g=p.position.a.color.g,.b=p.position.a.color.b,.a=255}); } diff --git a/zig-out/bin/raylib-test b/zig-out/bin/raylib-test index b5d0b64..aa1173b 100755 Binary files a/zig-out/bin/raylib-test and b/zig-out/bin/raylib-test differ