diff --git a/engine/physics/src/physicsSystem.zig b/engine/physics/src/physicsSystem.zig index 0c25fa8..32c347f 100644 --- a/engine/physics/src/physicsSystem.zig +++ b/engine/physics/src/physicsSystem.zig @@ -244,12 +244,13 @@ pub const PhysicsRuntime = struct { physChar.deinit(); } { - // var iterator = self.shapes.iterator(); - // while (iterator.next()) |n| { - // n.value_ptr.shape.release(); - // } + var iterator = self.shapes.iterator(); + while (iterator.next()) |n| { + n.value_ptr.shape.release(); + } } + self.system.update(0.01, .{}) catch {}; { const interface = self.system.getBodyInterfaceMut(); diff --git a/extras/bsp/src/maploader.zig b/extras/bsp/src/maploader.zig index 589baab..a6685c5 100644 --- a/extras/bsp/src/maploader.zig +++ b/extras/bsp/src/maploader.zig @@ -44,12 +44,17 @@ pub const TBMap = struct { mesh.setTexture(textureName); if (!rend.textureExists(textureName)) { + var textureRef = builder.materialName.utf8(); + if (std.mem.eql(u8, textureRef, "__TB_empty")) { + textureRef = "texture_sample"; + } + try assets.load( assets.MakeImportRefOptions( "Texture", textureName, // TODO don't hardcode the root path - .{ .path = try std.fmt.bufPrint(&fmtBuf2, "textures/{s}.png", .{builder.materialName.utf8()}) }, + .{ .path = try std.fmt.bufPrint(&fmtBuf2, "textures/{s}.png", .{textureRef}) }, ), ); } @@ -134,9 +139,12 @@ pub const TBMap = struct { } self.colliderSpecs.deinit(self.allocator); - for (self.shapes.items) |*shapeName| { - physics.removeShape(shapeName); - } + physics.context().system.update(0.001, .{}) catch {}; + + // for (self.shapes.items) |*shapeName| { + // //_ = shapeName; + // physics.removeShape(shapeName); + // } self.shapes.deinit(self.allocator); self.root.destroy(); @@ -246,6 +254,8 @@ pub const MeshBuilder = struct { } }; +var tbMapDefaultName: core.Name = core.DefineName("__TB_empty"); + pub fn LoadTrenchbroomMap(baseAllocator: std.mem.Allocator, settings: Settings) !*TBMap { var err: QuakeMap.ErrorInfo = undefined; const fileMapping = try core.fs().loadFile(settings.mapName); @@ -268,7 +278,9 @@ pub fn LoadTrenchbroomMap(baseAllocator: std.mem.Allocator, settings: Settings) var name = core.MakeName(face.texture_name); if (!builders.contains(name.handle())) { - const meshName = try std.fmt.allocPrint(alloc, "map/m_{s}", .{face.texture_name}); + var meshName: []u8 = undefined; + meshName = try std.fmt.allocPrint(alloc, "map/m_{s}", .{face.texture_name}); + try builders.put(alloc, name.handle(), .{ .materialName = name, .meshName = core.MakeName(meshName), @@ -288,7 +300,6 @@ pub fn LoadTrenchbroomMap(baseAllocator: std.mem.Allocator, settings: Settings) try builder.addFace(face, settings); } } - // loop over every vertex in quakeMap and push vertices and indices. const tbMap = try TBMap.create(baseAllocator); @@ -303,6 +314,7 @@ pub fn LoadTrenchbroomMap(baseAllocator: std.mem.Allocator, settings: Settings) try tbMap.addPhysicsShape(solid, settings); } + physics.context().system.update(0.001, .{}) catch {}; // loop over all point entities look for info_player_start return tbMap; } diff --git a/projects/content/bsp/testmap.map b/projects/content/bsp/testmap.map index d9c60f5..d6652e0 100644 --- a/projects/content/bsp/testmap.map +++ b/projects/content/bsp/testmap.map @@ -626,12 +626,12 @@ } // brush 69 { -( -1160 -864 192 ) ( -1160 -863 192 ) ( -1160 -864 193 ) mapping_defaults/ProtoGrey 16 -128 0 1 1 -( -1148 -816 296 ) ( -1136 -816 288 ) ( -1136 -688 288 ) mapping_defaults/ProtoGrey 64 -16 0 1 1 -( -1064 -864 192 ) ( -1064 -864 193 ) ( -1063 -864 192 ) mapping_defaults/ProtoGrey 64 -128 0 1 1 -( -1064 -864 192 ) ( -1063 -864 192 ) ( -1064 -863 192 ) mapping_defaults/ProtoGrey 64 -16 0 1 1 -( -936 -816 196 ) ( -935 -816 196 ) ( -936 -816 197 ) mapping_defaults/ProtoGrey 64 -128 0 1 1 -( -1160 -844 312 ) ( -1148 -716 304 ) ( -1148 -844 304 ) mapping_defaults/ProtoGrey 64 -16 0 1 1 +( -1160 -816 312 ) ( -1160 -864 312 ) ( -1160 -864 304 ) mapping_defaults/ProtoGrey 16 -128 0 1 1 +( -992 -864 192 ) ( -992 -816 192 ) ( -1160 -816 304 ) mapping_defaults/ProtoGrey 64 -16 0 1 1 +( -1160 -864 312 ) ( -980 -864 192 ) ( -992 -864 192 ) mapping_defaults/ProtoGrey 64 -128 0 1 1 +( -980 -864 192 ) ( -980 -816 192 ) ( -992 -816 192 ) mapping_defaults/ProtoGrey 64 -16 0 1 1 +( -992 -816 192 ) ( -980 -816 192 ) ( -1160 -816 312 ) mapping_defaults/ProtoGrey 64 -128 0 1 1 +( -1160 -816 312 ) ( -980 -816 192 ) ( -980 -864 192 ) mapping_defaults/ProtoGrey 64 -16 0 1 1 } // brush 70 { @@ -1172,6 +1172,15 @@ ( -1532 -672 64 ) ( -1404 -672 80 ) ( -1532 -672 80 ) mapping_defaults/ProtoWhite 64 -128 0 1 1 ( -1532 -536 84 ) ( -1532 -536 85 ) ( -1532 -535 84 ) mapping_defaults/ProtoWhite 16 -128 0 1 1 } +// brush 130 +{ +( -208 -592 192 ) ( -208 -591 192 ) ( -208 -592 193 ) mapping_defaults/ProtoGreen 0 0 0 0.25 0.25 +( -208 -592 192 ) ( -208 -592 193 ) ( -207 -592 192 ) mapping_defaults/ProtoGreen 0 0 0 0.25 0.25 +( -208 -592 192 ) ( -207 -592 192 ) ( -208 -591 192 ) mapping_defaults/ProtoGreen 0 0 0 0.25 0.25 +( -96 -352 400 ) ( -96 -351 400 ) ( -95 -352 400 ) mapping_defaults/ProtoGreen 0 0 0 0.25 0.25 +( -96 -352 208 ) ( -95 -352 208 ) ( -96 -352 209 ) mapping_defaults/ProtoGreen 0 0 0 0.25 0.25 +( -96 -352 208 ) ( -96 -352 209 ) ( -96 -351 208 ) mapping_defaults/ProtoGreen 0 0 0 0.25 0.25 +} } // entity 1 { diff --git a/projects/sampleGame/externGame/externGame.zig b/projects/sampleGame/externGame/externGame.zig index 87af5bf..6b91df8 100644 --- a/projects/sampleGame/externGame/externGame.zig +++ b/projects/sampleGame/externGame/externGame.zig @@ -140,7 +140,7 @@ pub const ExternGameObject = struct { const self: *@This() = @ptrCast(@alignCast(ctx)); if (platform.context().isCursorEnabled()) { - core.engine_logs("moving light "); + core.engine_logs("moving light"); const ray = rend.context().activeCamera.?.getNormalRayFromScreen(platform.getCursorPosition()); if (physics.traceLine(ray.start, ray.dir.fmul(10000), .{ .bodyFilter = &self.fireTraceFilter, .getNormalsSlow = true })) |r| { if (r.normal) |n| { @@ -170,7 +170,7 @@ pub const ExternGameObject = struct { if (ig.begin("meh", null, .{})) { // if (ig.checkbox("move lights ", null)) {} - ig.textFmt("info: - WASD to move, mouse to look,\n- Q and E to go up and down", .{}) catch return; + ig.textFmt("info: - WASD to move, mouse to look,\n- Q and E to go up and down lol", .{}) catch return; ig.textFmt("- shift to slow down camera speed", .{}) catch return; ig.textFmt("- T to enable/disable mouse cursor", .{}) catch return; ig.textFmt("- f2 to route all inputs to the doom player", .{}) catch return;