physics objects and mouse picking
This commit is contained in:
parent
6cd0dcb89e
commit
3478524fec
|
|
@ -141,6 +141,8 @@ pub fn addProgram(self: *BuildSystem, opts: AddProgramOptions) *std.Build.Module
|
||||||
|
|
||||||
b.getInstallStep().dependOn(self.nw_builder.getInstallStep());
|
b.getInstallStep().dependOn(self.nw_builder.getInstallStep());
|
||||||
|
|
||||||
|
run_exe.dependOn(b.getInstallStep());
|
||||||
|
|
||||||
return mod;
|
return mod;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -213,6 +213,7 @@ pub fn setupFromModule(__args: ModuleLoaderArgs) !void {
|
||||||
|
|
||||||
// walk through and patch all ecs containers
|
// walk through and patch all ecs containers
|
||||||
ecs.patchComponentList(ComponentList);
|
ecs.patchComponentList(ComponentList);
|
||||||
|
debug_draw.gDebugDrawInterface = __args.debugDrawInterface;
|
||||||
|
|
||||||
if (getEngineObject(SceneSystem)) |system| {
|
if (getEngineObject(SceneSystem)) |system| {
|
||||||
scene.Scene.SceneObjectContainer = system.sceneObjectContainer;
|
scene.Scene.SceneObjectContainer = system.sceneObjectContainer;
|
||||||
|
|
|
||||||
|
|
@ -7,13 +7,13 @@ pub const DebugDrawParams = struct {
|
||||||
rotation: core.Quat = .{ 0, 0, 0, 1 },
|
rotation: core.Quat = .{ 0, 0, 0, 1 },
|
||||||
};
|
};
|
||||||
|
|
||||||
const DebugDrawInterface = struct {
|
pub const DebugDrawInterface = struct {
|
||||||
debugSphereFn: *const fn (pos: core.Vectorf, radius: f32, DebugDrawParams) void,
|
debugSphereFn: *const fn (pos: core.Vectorf, radius: f32, DebugDrawParams) void,
|
||||||
debugBoxFn: *const fn (pos: core.Vectorf, extents: core.Vectorf, DebugDrawParams) void,
|
debugBoxFn: *const fn (pos: core.Vectorf, extents: core.Vectorf, DebugDrawParams) void,
|
||||||
debugLineFn: *const fn (start: core.Vectorf, end: core.Vectorf, DebugDrawParams) void,
|
debugLineFn: *const fn (start: core.Vectorf, end: core.Vectorf, DebugDrawParams) void,
|
||||||
};
|
};
|
||||||
|
|
||||||
var gDebugDrawInterface: ?*DebugDrawInterface = null;
|
pub var gDebugDrawInterface: ?*DebugDrawInterface = null;
|
||||||
var gDebugDrawAllocator: ?std.mem.Allocator = null;
|
var gDebugDrawAllocator: ?std.mem.Allocator = null;
|
||||||
|
|
||||||
pub fn debugSphereTransform(t: core.Mat, radius: f32, params: DebugDrawParams) void {
|
pub fn debugSphereTransform(t: core.Mat, radius: f32, params: DebugDrawParams) void {
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ pub const ModuleLoaderArgs = extern struct {
|
||||||
packerFS: *core.PackerFS,
|
packerFS: *core.PackerFS,
|
||||||
luaState: *anyopaque,
|
luaState: *anyopaque,
|
||||||
luaAllocator: *anyopaque,
|
luaAllocator: *anyopaque,
|
||||||
|
debugDrawInterface: *debug.DebugDrawInterface,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const LoadedModule = struct {
|
pub const LoadedModule = struct {
|
||||||
|
|
@ -180,6 +181,7 @@ pub const ModuleLoader = struct {
|
||||||
.packerFS = core.fs(),
|
.packerFS = core.fs(),
|
||||||
.luaState = @ptrCast(core.script.gLuaState.l),
|
.luaState = @ptrCast(core.script.gLuaState.l),
|
||||||
.luaAllocator = &core.script.gLuaAllocator,
|
.luaAllocator = &core.script.gLuaAllocator,
|
||||||
|
.debugDrawInterface = debug.gDebugDrawInterface.?,
|
||||||
};
|
};
|
||||||
if (interface.startup(&a, &args)) {
|
if (interface.startup(&a, &args)) {
|
||||||
core.engine_log("[ModuleLoader] module startup done", .{});
|
core.engine_log("[ModuleLoader] module startup done", .{});
|
||||||
|
|
@ -201,3 +203,4 @@ pub const ModuleLoader = struct {
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
const core = @import("../core.zig");
|
const core = @import("../core.zig");
|
||||||
const p2 = @import("p2");
|
const p2 = @import("p2");
|
||||||
|
const debug = @import("../debug_draw.zig");
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ const lua = @import("lua");
|
||||||
const pod = lua.pod;
|
const pod = lua.pod;
|
||||||
// LUA END
|
// LUA END
|
||||||
|
|
||||||
pub const Rayf = RayType(f32);
|
pub const Rayf = RayType(Vectorf);
|
||||||
|
|
||||||
pub fn matToScalef(mat: anytype) Vectorf {
|
pub fn matToScalef(mat: anytype) Vectorf {
|
||||||
const x = Vectorf.new(mat[0][0], mat[0][1], mat[0][2]).length();
|
const x = Vectorf.new(mat[0][0], mat[0][1], mat[0][2]).length();
|
||||||
|
|
@ -21,8 +21,8 @@ pub fn matToScalef(mat: anytype) Vectorf {
|
||||||
|
|
||||||
pub fn RayType(comptime T: type) type {
|
pub fn RayType(comptime T: type) type {
|
||||||
return struct {
|
return struct {
|
||||||
start: Vector3Type(T),
|
start: T,
|
||||||
dir: Vector3Type(T),
|
dir: T,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,23 @@ pub fn tick(self: *@This(), dt: f64) void {
|
||||||
}
|
}
|
||||||
ig.endMenu();
|
ig.endMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ig.beginMenu("Operations", true)) {
|
||||||
|
if (ig.menuItem_Bool("Recompile", null, false, true)) {
|
||||||
|
core.engine_log("recompiling in DEBUG mode", .{});
|
||||||
|
|
||||||
|
var success = true;
|
||||||
|
_ = core.shell.runCmd(self.allocator, &.{ "zig", "build", "install" }, ".") catch {
|
||||||
|
core.graphics_logs("compile failed!");
|
||||||
|
success = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (success)
|
||||||
|
core.graphics_logs("compile completed");
|
||||||
|
}
|
||||||
|
ig.endMenu();
|
||||||
|
}
|
||||||
|
|
||||||
ig.endMainMenuBar();
|
ig.endMainMenuBar();
|
||||||
|
|
||||||
for (self.windowsMenu.items) |entry| {
|
for (self.windowsMenu.items) |entry| {
|
||||||
|
|
|
||||||
|
|
@ -117,6 +117,7 @@ pub const RayCastSettings = struct {
|
||||||
pub const RayCastResult = struct {
|
pub const RayCastResult = struct {
|
||||||
body: BodyId,
|
body: BodyId,
|
||||||
point: core.Vectorf,
|
point: core.Vectorf,
|
||||||
|
normal: ?core.Vectorf = null, // how to get this?
|
||||||
entity: ?core.Entity = null,
|
entity: ?core.Entity = null,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ pub const PhysicsCollider = struct {
|
||||||
|
|
||||||
pub fn setupByShapeName(self: *@This(), shapeName: core.Name, bodySettings: zphysics.BodyCreationSettings) !void {
|
pub fn setupByShapeName(self: *@This(), shapeName: core.Name, bodySettings: zphysics.BodyCreationSettings) !void {
|
||||||
var n = shapeName;
|
var n = shapeName;
|
||||||
const system = physics.gPhysicsRuntime;
|
const system = physics.context();
|
||||||
const interface = system.system.getBodyInterfaceMut();
|
const interface = system.system.getBodyInterfaceMut();
|
||||||
const shape = system.shapes.get(n.handle()).?;
|
const shape = system.shapes.get(n.handle()).?;
|
||||||
var settings = bodySettings;
|
var settings = bodySettings;
|
||||||
|
|
@ -53,10 +53,18 @@ pub const PhysicsCollider = struct {
|
||||||
physics.setRotation(self.bodyId, scene.getRotation());
|
physics.setRotation(self.bodyId, scene.getRotation());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn deinitECS(self: *@This(), handle: core.SetHandle) void {
|
||||||
|
_ = handle;
|
||||||
|
core.engine_log("destroy body id {any}", .{self.bodyId.?});
|
||||||
|
physics.context().pushDestroyBodyId(self.bodyId.?);
|
||||||
|
}
|
||||||
|
|
||||||
pub fn deinit(self: *@This()) void {
|
pub fn deinit(self: *@This()) void {
|
||||||
|
_ = self;
|
||||||
// todo.
|
// todo.
|
||||||
// try system.bodyIdToEntityMap.remove(self.bodyId);
|
// try system.bodyIdToEntityMap.remove(self.bodyId);
|
||||||
_ = self;
|
// system.destroy entity
|
||||||
|
//try physics.context().idToEntity.remove(self.bodyId.?);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub var BaseContainer: *core.SparseMap(PhysicsCollider) = undefined;
|
pub var BaseContainer: *core.SparseMap(PhysicsCollider) = undefined;
|
||||||
|
|
|
||||||
|
|
@ -144,6 +144,8 @@ pub const PhysicsRuntime = struct {
|
||||||
timeSinceUpdate: f64 = 0.0,
|
timeSinceUpdate: f64 = 0.0,
|
||||||
idToEntity: std.AutoHashMapUnmanaged(zphysics.BodyId, core.Entity) = .{},
|
idToEntity: std.AutoHashMapUnmanaged(zphysics.BodyId, core.Entity) = .{},
|
||||||
|
|
||||||
|
bodyIdsToDestroy: std.ArrayListUnmanaged(BodyId) = .{},
|
||||||
|
|
||||||
pub var NeonObjectTable: core.EngineObjectVTable = core.EngineObjectVTable.from(@This(), "physics.Runtime");
|
pub var NeonObjectTable: core.EngineObjectVTable = core.EngineObjectVTable.from(@This(), "physics.Runtime");
|
||||||
|
|
||||||
pub fn registerBodyEntity(self: *@This(), bodyId: zphysics.BodyId, entity: core.Entity) !void {
|
pub fn registerBodyEntity(self: *@This(), bodyId: zphysics.BodyId, entity: core.Entity) !void {
|
||||||
|
|
@ -193,6 +195,12 @@ pub const PhysicsRuntime = struct {
|
||||||
|
|
||||||
fn updateScenes(self: *@This(), dt: f64) void {
|
fn updateScenes(self: *@This(), dt: f64) void {
|
||||||
const lockInterface = self.system.getBodyLockInterface();
|
const lockInterface = self.system.getBodyLockInterface();
|
||||||
|
const interface = self.system.getBodyInterfaceMut();
|
||||||
|
|
||||||
|
for (self.bodyIdsToDestroy.items) |toDestroy| {
|
||||||
|
interface.removeAndDestroyBody(toDestroy);
|
||||||
|
}
|
||||||
|
self.bodyIdsToDestroy.clearRetainingCapacity();
|
||||||
|
|
||||||
// update character controllers
|
// update character controllers
|
||||||
|
|
||||||
|
|
@ -220,6 +228,10 @@ pub const PhysicsRuntime = struct {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn pushDestroyBodyId(self: *@This(), bodyId: BodyId) void {
|
||||||
|
self.bodyIdsToDestroy.append(self.allocator, bodyId) catch unreachable;
|
||||||
|
}
|
||||||
|
|
||||||
pub fn deinit(self: *@This()) void {
|
pub fn deinit(self: *@This()) void {
|
||||||
const allocator = self.allocator;
|
const allocator = self.allocator;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,10 @@ pub fn setImguiVisible(visible: bool) void {
|
||||||
gPlatformInstance.imguiVisible = visible;
|
gPlatformInstance.imguiVisible = visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn getMouseVisible() bool {
|
||||||
|
gPlatformInstance.isCursorEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
pub fn start_module(spec: *core.SpecVariantMap, args: anytype, allocator: std.mem.Allocator) !void {
|
pub fn start_module(spec: *core.SpecVariantMap, args: anytype, allocator: std.mem.Allocator) !void {
|
||||||
_ = args;
|
_ = args;
|
||||||
_ = spec;
|
_ = spec;
|
||||||
|
|
|
||||||
|
|
@ -137,6 +137,8 @@ pub const PlatformInstance = struct {
|
||||||
_ = sdl3.c.SDL_SetWindowRelativeMouseMode(self.window, relativeMode);
|
_ = sdl3.c.SDL_SetWindowRelativeMouseMode(self.window, relativeMode);
|
||||||
_ = sdl3.c.SDL_SetWindowMouseRect(self.window, null);
|
_ = sdl3.c.SDL_SetWindowMouseRect(self.window, null);
|
||||||
|
|
||||||
|
self.cursorEnabled = !relativeMode;
|
||||||
|
|
||||||
self.enableImguiEvents = !relativeMode;
|
self.enableImguiEvents = !relativeMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -213,16 +215,12 @@ pub const PlatformInstance = struct {
|
||||||
return self.cursorPos;
|
return self.cursorPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn setCursorEnabled(self: *@This(), cursorEnabled: bool) void {
|
|
||||||
self.newCursorEnabled = cursorEnabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn isCursorEnabled(self: @This()) bool {
|
pub fn isCursorEnabled(self: @This()) bool {
|
||||||
return self.cursorEnabled;
|
return self.cursorEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn setCursorVisible(self: @This(), visible: bool) void {
|
pub fn setCursorVisible(self: @This(), visible: bool) void {
|
||||||
_ = self;
|
self.cursorEnabled = visible;
|
||||||
if (visible) {
|
if (visible) {
|
||||||
sdl3.showCursor();
|
sdl3.showCursor();
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,8 @@ finalPos: core.Vectorf = .{},
|
||||||
final: Mat = zm.identity(),
|
final: Mat = zm.identity(),
|
||||||
finalAlt: Mat = zm.identity(),
|
finalAlt: Mat = zm.identity(),
|
||||||
noTranslate: Mat = zm.identity(),
|
noTranslate: Mat = zm.identity(),
|
||||||
|
worldRotation: Mat = zm.identity(),
|
||||||
|
rotation: core.Rotation = .{},
|
||||||
|
|
||||||
entity: core.Entity = undefined,
|
entity: core.Entity = undefined,
|
||||||
|
|
||||||
|
|
@ -46,6 +48,54 @@ pub fn updateProjections(self: *@This()) void {
|
||||||
self.projectionAlt[1][1] *= -1;
|
self.projectionAlt[1][1] *= -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn getNormalRayFromScreen(
|
||||||
|
camera: @This(),
|
||||||
|
screenPos: core.Vector2f,
|
||||||
|
) core.Rayf {
|
||||||
|
|
||||||
|
// this is completely wrong right now.
|
||||||
|
var ray = core.Rayf{
|
||||||
|
.start = core.Vectorf.new(0, 0, 0),
|
||||||
|
.dir = core.Vectorf.new(0, 0, 0),
|
||||||
|
};
|
||||||
|
|
||||||
|
const s = core.Vector2f{
|
||||||
|
.x = @as(f32, @floatCast(platform.context().extent.x - screenPos.x)),
|
||||||
|
.y = @as(f32, @floatCast(screenPos.y)),
|
||||||
|
};
|
||||||
|
|
||||||
|
if (platform.context().extent.x == 0 or platform.context().extent.y == 0) {
|
||||||
|
return ray;
|
||||||
|
}
|
||||||
|
|
||||||
|
const i = core.zm.inverse(camera.projection);
|
||||||
|
// const iview = core.zm.inverse(camera.transform);
|
||||||
|
const width = platform.context().extent.x;
|
||||||
|
const height = platform.context().extent.y;
|
||||||
|
|
||||||
|
const sx = core.clamp(s.x, 0, width);
|
||||||
|
const sy = core.clamp(s.y, 0, height);
|
||||||
|
|
||||||
|
const vec = core.Vectorf{
|
||||||
|
.x = ((2.0 / width) * sx) - 1.0,
|
||||||
|
.y = ((2.0 / height) * sy) - 1.0,
|
||||||
|
.z = 1.0,
|
||||||
|
};
|
||||||
|
|
||||||
|
var eye = core.Vectorf.fromZm(core.zm.mul(i, vec.toZm()));
|
||||||
|
eye.z = -1;
|
||||||
|
const iworld = core.zm.mul(camera.worldTransform, eye.toZm());
|
||||||
|
// const iworld = core.zm.mul(core.zm.inverse(camera.noTranslate), eye.toZm());
|
||||||
|
// iworld = core.zm.normalize4(iworld);
|
||||||
|
|
||||||
|
// iworld = core.zm.mul(, iworld);
|
||||||
|
|
||||||
|
ray.dir = core.Vectorf.fromZm(iworld).normalize().fmul(-1.0);
|
||||||
|
ray.start = camera.finalPos;
|
||||||
|
|
||||||
|
return ray;
|
||||||
|
}
|
||||||
|
|
||||||
pub fn resolve(self: *@This()) void {
|
pub fn resolve(self: *@This()) void {
|
||||||
const scene = self.entity.fetch(core.Scene).?;
|
const scene = self.entity.fetch(core.Scene).?;
|
||||||
|
|
||||||
|
|
@ -77,7 +127,12 @@ pub fn resolve(self: *@This()) void {
|
||||||
posRot.rotation.quat[1] *= -1;
|
posRot.rotation.quat[1] *= -1;
|
||||||
|
|
||||||
self.worldTransform = mul(posRot.toTransform(), base);
|
self.worldTransform = mul(posRot.toTransform(), base);
|
||||||
|
|
||||||
|
posRot.position = .{};
|
||||||
|
|
||||||
|
self.worldRotation = mul(posRot.toTransform(), base);
|
||||||
}
|
}
|
||||||
|
self.rotation = rotation;
|
||||||
|
|
||||||
// calculate viewProjections
|
// calculate viewProjections
|
||||||
{
|
{
|
||||||
|
|
@ -120,6 +175,7 @@ pub const ScriptExports: []const []const u8 = &.{};
|
||||||
pub const EcsComponentDefinition = ecs.DefineComponent(@This(), .set);
|
pub const EcsComponentDefinition = ecs.DefineComponent(@This(), .set);
|
||||||
|
|
||||||
const core = @import("core");
|
const core = @import("core");
|
||||||
|
const platform = @import("platform");
|
||||||
const ecs = core.ecs;
|
const ecs = core.ecs;
|
||||||
const zm = core.zm;
|
const zm = core.zm;
|
||||||
const mul = zm.mul;
|
const mul = zm.mul;
|
||||||
|
|
|
||||||
|
|
@ -162,20 +162,34 @@ pub fn uploadCubeFromPaths(self: *@This(), name: core.Name, paths: []const []con
|
||||||
return tex;
|
return tex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline fn isPowerOfTwo(n: anytype) bool {
|
||||||
|
return n != 0 and (n & (n - 1)) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn getMiplevelFromSize(size: core.Vector2u) u32 {
|
||||||
|
if (size.x != size.y)
|
||||||
|
return 1;
|
||||||
|
if (!isPowerOfTwo(size.x))
|
||||||
|
return 1;
|
||||||
|
return std.math.log2(@as(u32, @intCast(@max(size.x, size.y)))) + 1;
|
||||||
|
}
|
||||||
|
|
||||||
pub fn uploadTextureFromPath(self: *@This(), name: core.Name, path: []const u8) !*Texture {
|
pub fn uploadTextureFromPath(self: *@This(), name: core.Name, path: []const u8) !*Texture {
|
||||||
var png = try core.png.PngContents.initFromFS(core.fs(), self.allocator, path);
|
var png = try core.png.PngContents.initFromFS(core.fs(), self.allocator, path);
|
||||||
defer png.deinit();
|
defer png.deinit();
|
||||||
|
|
||||||
const cmd = self.device.acquireGPUCommandBuffer();
|
const cmd = self.device.acquireGPUCommandBuffer();
|
||||||
|
const mipLevelCount = getMiplevelFromSize(png.size);
|
||||||
|
core.engine_log("creating mipmap level {d}", .{mipLevelCount});
|
||||||
|
|
||||||
const gpuTexture = self.device.createGPUTexture(&std.mem.zeroInit(gpu.GPUTextureCreateInfo, .{
|
const gpuTexture = self.device.createGPUTexture(&std.mem.zeroInit(gpu.GPUTextureCreateInfo, .{
|
||||||
.type = .texturetype2d,
|
.type = .texturetype2d,
|
||||||
.format = .textureformatR8g8b8a8UnormSrgb,
|
.format = .textureformatR8g8b8a8UnormSrgb,
|
||||||
.usage = .{ .textureusageSampler = true },
|
.usage = .{ .textureusageSampler = true, .textureusageColorTarget = true },
|
||||||
.width = png.size.x,
|
.width = png.size.x,
|
||||||
.height = png.size.y,
|
.height = png.size.y,
|
||||||
.layer_count_or_depth = 1,
|
.layer_count_or_depth = 1,
|
||||||
.num_levels = 1,
|
.num_levels = mipLevelCount,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const transferBuffer = self.device.createGPUTransferBuffer(&.{
|
const transferBuffer = self.device.createGPUTransferBuffer(&.{
|
||||||
|
|
@ -212,6 +226,10 @@ pub fn uploadTextureFromPath(self: *@This(), name: core.Name, path: []const u8)
|
||||||
);
|
);
|
||||||
|
|
||||||
copyPass.endGPUCopyPass();
|
copyPass.endGPUCopyPass();
|
||||||
|
|
||||||
|
if (mipLevelCount > 1)
|
||||||
|
cmd.generateMipmapsForGPUTexture(gpuTexture);
|
||||||
|
|
||||||
if (!cmd.submitGPUCommandBuffer()) {
|
if (!cmd.submitGPUCommandBuffer()) {
|
||||||
return error.CopyFailed;
|
return error.CopyFailed;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -269,15 +269,20 @@ pub const Renderer = struct {
|
||||||
.min_filter = .filterLinear,
|
.min_filter = .filterLinear,
|
||||||
.mag_filter = .filterLinear,
|
.mag_filter = .filterLinear,
|
||||||
.mipmap_mode = .samplermipmapmodeNearest,
|
.mipmap_mode = .samplermipmapmodeNearest,
|
||||||
|
.compare_op = .compareopNever,
|
||||||
// .address_mode_u = .sampleraddressmodeMirroredRepeat,
|
// .address_mode_u = .sampleraddressmodeMirroredRepeat,
|
||||||
// .address_mode_v = .sampleraddressmodeMirroredRepeat,
|
// .address_mode_v = .sampleraddressmodeMirroredRepeat,
|
||||||
// .address_mode_w = .sampleraddressmodeMirroredRepeat,
|
// .address_mode_w = .sampleraddressmodeMirroredRepeat,
|
||||||
// .address_mode_u = .sampleraddressmodeRepeat,
|
// .address_mode_u = .sampleraddressmodeRepeat,
|
||||||
// .address_mode_v = .sampleraddressmodeRepeat,
|
// .address_mode_v = .sampleraddressmodeRepeat,
|
||||||
// .address_mode_w = .sampleraddressmodeRepeat,
|
// .address_mode_w = .sampleraddressmodeRepeat,
|
||||||
.address_mode_u = .sampleraddressmodeClampToEdge,
|
//
|
||||||
.address_mode_v = .sampleraddressmodeClampToEdge,
|
.mip_lod_bias = -1.0,
|
||||||
.address_mode_w = .sampleraddressmodeClampToEdge,
|
.min_lod = 0, // Clamps the minimum of the computed LOD value.
|
||||||
|
.max_lod = 10, // Clamps the maximum of the computed LOD value.
|
||||||
|
.address_mode_u = .sampleraddressmodeRepeat,
|
||||||
|
.address_mode_v = .sampleraddressmodeRepeat,
|
||||||
|
.address_mode_w = .sampleraddressmodeRepeat,
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -814,7 +819,8 @@ pub const Renderer = struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (component.mesh) |mesh| {
|
if (component.mesh) |mesh| {
|
||||||
renderpass.bindGPUFragmentSamplers(0, &.{ .texture = t.?.texture, .sampler = self.blockySampler }, 1);
|
// TODO put the sampler onto the texture itself
|
||||||
|
renderpass.bindGPUFragmentSamplers(0, &.{ .texture = t.?.texture, .sampler = self.linearSampler }, 1);
|
||||||
|
|
||||||
if (component.cmrf) |cmrf| {
|
if (component.cmrf) |cmrf| {
|
||||||
cmrf(component.cmrf_ctx);
|
cmrf(component.cmrf_ctx);
|
||||||
|
|
|
||||||
|
|
@ -127,9 +127,8 @@ pub const TBMap = struct {
|
||||||
|
|
||||||
self.colliders.deinit(self.allocator);
|
self.colliders.deinit(self.allocator);
|
||||||
for (self.colliderSpecs.items) |spec| {
|
for (self.colliderSpecs.items) |spec| {
|
||||||
_ = spec;
|
var name = spec.name;
|
||||||
// var name = spec.name;
|
physics.context().shapes.get(name.handle()).?.shape.release();
|
||||||
// physics.gPhysicsRuntime.shapes.get(name.handle()).?.shape.release();
|
|
||||||
}
|
}
|
||||||
self.colliderSpecs.deinit(self.allocator);
|
self.colliderSpecs.deinit(self.allocator);
|
||||||
|
|
||||||
|
|
@ -196,7 +195,6 @@ pub const MeshBuilder = struct {
|
||||||
if (normal.dot(.{ .y = 1.0 }) < 0.5) {
|
if (normal.dot(.{ .y = 1.0 }) < 0.5) {
|
||||||
// return;
|
// return;
|
||||||
}
|
}
|
||||||
core.engine_log("{any}", .{normal});
|
|
||||||
|
|
||||||
// append all vertices to the vertex list
|
// append all vertices to the vertex list
|
||||||
for (face.vertices) |vert| {
|
for (face.vertices) |vert| {
|
||||||
|
|
@ -294,9 +292,9 @@ pub fn LoadTrenchbroomMap(baseAllocator: std.mem.Allocator, settings: Settings)
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
//for (map.worldspawn.solids.items) |solid| {
|
for (map.worldspawn.solids.items) |solid| {
|
||||||
//try tbMap.addPhysicsShape(solid, settings);
|
try tbMap.addPhysicsShape(solid, settings);
|
||||||
// }
|
}
|
||||||
|
|
||||||
// loop over all point entities look for info_player_start
|
// loop over all point entities look for info_player_start
|
||||||
return tbMap;
|
return tbMap;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,51 @@
|
||||||
|
allocator: std.mem.Allocator,
|
||||||
|
|
||||||
|
lastUpdateFrame: u64 = 0,
|
||||||
|
arena: std.heap.ArenaAllocator,
|
||||||
|
bodyIds: std.ArrayList(physics.BodyId),
|
||||||
|
|
||||||
|
pub fn create(allocator: std.mem.Allocator) !*@This() {
|
||||||
|
const self = try allocator.create(@This());
|
||||||
|
|
||||||
|
self.* = .{
|
||||||
|
.allocator = allocator,
|
||||||
|
.arena = std.heap.ArenaAllocator.init(allocator),
|
||||||
|
.bodyIds = std.ArrayList(physics.BodyId).init(allocator),
|
||||||
|
};
|
||||||
|
|
||||||
|
if (core.getEngineObject(igutils.TopBar)) |topbar| {
|
||||||
|
topbar.addMenuObject(self, "Physis Objects") catch {};
|
||||||
|
}
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn windowOpen(entry: *igutils.MenuEntry, dt: f64) void {
|
||||||
|
_ = dt;
|
||||||
|
const self: *@This() = @ptrCast(@alignCast(entry.ctx));
|
||||||
|
self.bodyIds.clearRetainingCapacity();
|
||||||
|
|
||||||
|
physics.context().system.getBodyIds(&self.bodyIds) catch return;
|
||||||
|
|
||||||
|
if (ig.begin("Physics Objects", &entry.open, .{})) {
|
||||||
|
ig.textf("total Physics Objects count: {d}", .{self.bodyIds.items.len});
|
||||||
|
for (self.bodyIds.items) |bodyId| {
|
||||||
|
ig.textf("body Id: {any}", .{bodyId});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ig.end();
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn destroy(self: *@This()) void {
|
||||||
|
self.arena.deinit();
|
||||||
|
self.bodyIds.deinit();
|
||||||
|
self.allocator.destroy(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
const std = @import("std");
|
||||||
|
const backlog = @import("Backlog");
|
||||||
|
const core = backlog.core;
|
||||||
|
const rend = backlog.rend;
|
||||||
|
const ig = backlog.imgui.api;
|
||||||
|
const igutils = backlog.imgui.utils;
|
||||||
|
const physics = backlog.physics;
|
||||||
|
|
@ -3,3 +3,5 @@ pub const inputDebugger = @import("inputDebugger.zig");
|
||||||
pub const ObjectSpawner = @import("objectSpawner.zig");
|
pub const ObjectSpawner = @import("objectSpawner.zig");
|
||||||
pub const RendererDebug = @import("RendererDebug.zig");
|
pub const RendererDebug = @import("RendererDebug.zig");
|
||||||
pub const EngineTool = @import("EngineTool.zig");
|
pub const EngineTool = @import("EngineTool.zig");
|
||||||
|
|
||||||
|
pub const PhysicsObjectList = @import("PhysicsObjectList.zig");
|
||||||
|
|
|
||||||
|
|
@ -627,9 +627,13 @@ pub fn SparseMap(comptime T: type) type {
|
||||||
|
|
||||||
_ = self.map.remove(handle);
|
_ = self.map.remove(handle);
|
||||||
_ = self.listEntriesByHandle.remove(handle);
|
_ = self.listEntriesByHandle.remove(handle);
|
||||||
_ = self.list.swapRemove(index);
|
_ = self.list.swapRemove(index); // oops.
|
||||||
|
const swappedHandle = self.handles.getLastOrNull();
|
||||||
_ = self.handles.swapRemove(index);
|
_ = self.handles.swapRemove(index);
|
||||||
|
|
||||||
|
if (swappedHandle) |swapped|
|
||||||
|
self.listEntriesByHandle.put(alloc, swapped, index) catch unreachable;
|
||||||
|
|
||||||
self.opCount +%= 1;
|
self.opCount +%= 1;
|
||||||
|
|
||||||
if (self.containerListener) |l| {
|
if (self.containerListener) |l| {
|
||||||
|
|
|
||||||
|
|
@ -87,6 +87,7 @@ pub const ShellProcess = struct {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// TODO this is really bad
|
||||||
pub fn runCmd(allocator: std.mem.Allocator, cmd: []const []const u8, cwd: []const u8) ![]u8 {
|
pub fn runCmd(allocator: std.mem.Allocator, cmd: []const []const u8, cwd: []const u8) ![]u8 {
|
||||||
var proc: ChildProcess = ChildProcess.init(cmd, allocator);
|
var proc: ChildProcess = ChildProcess.init(cmd, allocator);
|
||||||
proc.cwd = cwd;
|
proc.cwd = cwd;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
#define __JPC_API_IMPL 1
|
||||||
#include "JoltPhysicsC.h"
|
#include "JoltPhysicsC.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
|
|
@ -48,6 +49,7 @@ JPC_PhysicsSystem_GetBodyIDs(const JPC_PhysicsSystem *in_physics_system,
|
||||||
uint32_t *out_num_body_ids,
|
uint32_t *out_num_body_ids,
|
||||||
JPC_BodyID *out_body_ids)
|
JPC_BodyID *out_body_ids)
|
||||||
{
|
{
|
||||||
|
int i = 32;
|
||||||
assert(in_physics_system != nullptr && out_body_ids != nullptr);
|
assert(in_physics_system != nullptr && out_body_ids != nullptr);
|
||||||
assert(in_max_body_ids > 0);
|
assert(in_max_body_ids > 0);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ pub fn build(b: *std.Build) void {
|
||||||
blbuild.addExtraModule(sampleGame, "doomplayer");
|
blbuild.addExtraModule(sampleGame, "doomplayer");
|
||||||
blbuild.addExtraModule(sampleGame, "bsp");
|
blbuild.addExtraModule(sampleGame, "bsp");
|
||||||
|
|
||||||
|
// external reload modules
|
||||||
const sampleGameExtern = b.addSharedLibrary(.{
|
const sampleGameExtern = b.addSharedLibrary(.{
|
||||||
.root_source_file = b.path("sampleGame/externGame/externGame.zig"),
|
.root_source_file = b.path("sampleGame/externGame/externGame.zig"),
|
||||||
.link_libc = true,
|
.link_libc = true,
|
||||||
|
|
|
||||||
|
|
@ -365,21 +365,21 @@
|
||||||
}
|
}
|
||||||
// brush 40
|
// brush 40
|
||||||
{
|
{
|
||||||
( -1184 -408 240 ) ( -1184 -280 248 ) ( -1184 -408 248 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1184 -408 240 ) ( -1184 -280 248 ) ( -1184 -408 248 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -1368 -408 192 ) ( -1368 -408 193 ) ( -1367 -408 192 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1368 -408 192 ) ( -1368 -408 193 ) ( -1367 -408 192 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1368 -408 192 ) ( -1367 -408 192 ) ( -1368 -407 192 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1368 -408 192 ) ( -1367 -408 192 ) ( -1368 -407 192 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -920 -400 304 ) ( -920 -399 304 ) ( -919 -400 304 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -920 -400 304 ) ( -920 -399 304 ) ( -919 -400 304 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -920 -400 200 ) ( -919 -400 200 ) ( -920 -400 201 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -920 -400 200 ) ( -919 -400 200 ) ( -920 -400 201 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -920 -400 200 ) ( -920 -400 201 ) ( -920 -399 200 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -920 -400 200 ) ( -920 -400 201 ) ( -920 -399 200 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 41
|
// brush 41
|
||||||
{
|
{
|
||||||
( -928 -616 192 ) ( -928 -615 192 ) ( -928 -616 193 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -928 -616 192 ) ( -928 -615 192 ) ( -928 -616 193 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -928 -624 192 ) ( -928 -624 193 ) ( -927 -624 192 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -928 -624 192 ) ( -928 -624 193 ) ( -927 -624 192 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -928 -616 192 ) ( -927 -616 192 ) ( -928 -615 192 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -928 -616 192 ) ( -927 -616 192 ) ( -928 -615 192 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -920 -408 448 ) ( -920 -407 448 ) ( -919 -408 448 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -920 -408 448 ) ( -920 -407 448 ) ( -919 -408 448 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -920 -400 200 ) ( -919 -400 200 ) ( -920 -400 201 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -920 -400 200 ) ( -919 -400 200 ) ( -920 -400 201 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -920 -408 200 ) ( -920 -408 201 ) ( -920 -407 200 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -920 -408 200 ) ( -920 -408 201 ) ( -920 -407 200 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 42
|
// brush 42
|
||||||
{
|
{
|
||||||
|
|
@ -392,183 +392,183 @@
|
||||||
}
|
}
|
||||||
// brush 43
|
// brush 43
|
||||||
{
|
{
|
||||||
( -1248 -512 400 ) ( -1248 -511 400 ) ( -1248 -512 401 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1248 -512 400 ) ( -1248 -511 400 ) ( -1248 -512 401 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -1240 -512 400 ) ( -1240 -512 401 ) ( -1239 -512 400 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1240 -512 400 ) ( -1240 -512 401 ) ( -1239 -512 400 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1240 -512 400 ) ( -1239 -512 400 ) ( -1240 -511 400 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1240 -512 400 ) ( -1239 -512 400 ) ( -1240 -511 400 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -928 -432 448 ) ( -928 -431 448 ) ( -927 -432 448 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -928 -432 448 ) ( -928 -431 448 ) ( -927 -432 448 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -928 -404 408 ) ( -927 -404 408 ) ( -928 -404 409 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -928 -404 408 ) ( -927 -404 408 ) ( -928 -404 409 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -928 -432 408 ) ( -928 -432 409 ) ( -928 -431 408 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -928 -432 408 ) ( -928 -432 409 ) ( -928 -431 408 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 44
|
// brush 44
|
||||||
{
|
{
|
||||||
( -1256 -464 192 ) ( -1256 -463 192 ) ( -1256 -464 193 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1256 -464 192 ) ( -1256 -463 192 ) ( -1256 -464 193 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -1256 -824 192 ) ( -1256 -824 193 ) ( -1255 -824 192 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1256 -824 192 ) ( -1256 -824 193 ) ( -1255 -824 192 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1248 -608 424 ) ( -1120 -584 424 ) ( -1248 -584 424 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1248 -608 424 ) ( -1120 -584 424 ) ( -1248 -584 424 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1248 -408 448 ) ( -1248 -407 448 ) ( -1247 -408 448 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1248 -408 448 ) ( -1248 -407 448 ) ( -1247 -408 448 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1248 -404 200 ) ( -1247 -404 200 ) ( -1248 -404 201 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1248 -404 200 ) ( -1247 -404 200 ) ( -1248 -404 201 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1248 -408 200 ) ( -1248 -408 201 ) ( -1248 -407 200 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1248 -408 200 ) ( -1248 -408 201 ) ( -1248 -407 200 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 45
|
// brush 45
|
||||||
{
|
{
|
||||||
( -1256 -464 192 ) ( -1256 -463 192 ) ( -1256 -464 193 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1256 -464 192 ) ( -1256 -463 192 ) ( -1256 -464 193 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -1248 -568 392 ) ( -1248 -568 408 ) ( -1120 -568 408 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1248 -568 392 ) ( -1248 -568 408 ) ( -1120 -568 408 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1248 -608 384 ) ( -1120 -584 384 ) ( -1248 -584 384 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1248 -608 384 ) ( -1120 -584 384 ) ( -1248 -584 384 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1248 -608 424 ) ( -1248 -584 424 ) ( -1120 -584 424 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1248 -608 424 ) ( -1248 -584 424 ) ( -1120 -584 424 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1248 -404 200 ) ( -1247 -404 200 ) ( -1248 -404 201 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1248 -404 200 ) ( -1247 -404 200 ) ( -1248 -404 201 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1248 -408 200 ) ( -1248 -408 201 ) ( -1248 -407 200 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1248 -408 200 ) ( -1248 -408 201 ) ( -1248 -407 200 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 46
|
// brush 46
|
||||||
{
|
{
|
||||||
( -1256 -464 192 ) ( -1256 -463 192 ) ( -1256 -464 193 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1256 -464 192 ) ( -1256 -463 192 ) ( -1256 -464 193 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -1248 -648 392 ) ( -1248 -648 400 ) ( -1120 -648 400 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1248 -648 392 ) ( -1248 -648 400 ) ( -1120 -648 400 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1248 -608 384 ) ( -1120 -584 384 ) ( -1248 -584 384 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1248 -608 384 ) ( -1120 -584 384 ) ( -1248 -584 384 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1248 -608 424 ) ( -1248 -584 424 ) ( -1120 -584 424 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1248 -608 424 ) ( -1248 -584 424 ) ( -1120 -584 424 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1248 -608 392 ) ( -1120 -608 400 ) ( -1248 -608 400 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1248 -608 392 ) ( -1120 -608 400 ) ( -1248 -608 400 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1248 -408 200 ) ( -1248 -408 201 ) ( -1248 -407 200 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1248 -408 200 ) ( -1248 -408 201 ) ( -1248 -407 200 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 47
|
// brush 47
|
||||||
{
|
{
|
||||||
( -1256 -464 192 ) ( -1256 -463 192 ) ( -1256 -464 193 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1256 -464 192 ) ( -1256 -463 192 ) ( -1256 -464 193 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -1248 -736 392 ) ( -1248 -736 400 ) ( -1120 -736 400 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1248 -736 392 ) ( -1248 -736 400 ) ( -1120 -736 400 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1248 -608 384 ) ( -1120 -584 384 ) ( -1248 -584 384 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1248 -608 384 ) ( -1120 -584 384 ) ( -1248 -584 384 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1248 -608 424 ) ( -1248 -584 424 ) ( -1120 -584 424 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1248 -608 424 ) ( -1248 -584 424 ) ( -1120 -584 424 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1248 -688 392 ) ( -1120 -688 408 ) ( -1248 -688 408 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1248 -688 392 ) ( -1120 -688 408 ) ( -1248 -688 408 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1248 -408 200 ) ( -1248 -408 201 ) ( -1248 -407 200 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1248 -408 200 ) ( -1248 -408 201 ) ( -1248 -407 200 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 48
|
// brush 48
|
||||||
{
|
{
|
||||||
( -1256 -464 192 ) ( -1256 -463 192 ) ( -1256 -464 193 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1256 -464 192 ) ( -1256 -463 192 ) ( -1256 -464 193 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -1256 -824 192 ) ( -1256 -824 193 ) ( -1255 -824 192 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1256 -824 192 ) ( -1256 -824 193 ) ( -1255 -824 192 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1248 -608 384 ) ( -1120 -584 384 ) ( -1248 -584 384 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1248 -608 384 ) ( -1120 -584 384 ) ( -1248 -584 384 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1248 -608 424 ) ( -1248 -584 424 ) ( -1120 -584 424 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1248 -608 424 ) ( -1248 -584 424 ) ( -1120 -584 424 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1248 -776 400 ) ( -1120 -776 408 ) ( -1248 -776 408 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1248 -776 400 ) ( -1120 -776 408 ) ( -1248 -776 408 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1248 -408 200 ) ( -1248 -408 201 ) ( -1248 -407 200 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1248 -408 200 ) ( -1248 -408 201 ) ( -1248 -407 200 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 49
|
// brush 49
|
||||||
{
|
{
|
||||||
( -1248 -608 440 ) ( -1248 -607 440 ) ( -1248 -608 441 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1248 -608 440 ) ( -1248 -607 440 ) ( -1248 -608 441 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -1248 -864 440 ) ( -1248 -864 441 ) ( -1247 -864 440 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1248 -864 440 ) ( -1248 -864 441 ) ( -1247 -864 440 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1248 -608 440 ) ( -1247 -608 440 ) ( -1248 -607 440 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1248 -608 440 ) ( -1247 -608 440 ) ( -1248 -607 440 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -928 -512 448 ) ( -928 -511 448 ) ( -927 -512 448 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -928 -512 448 ) ( -928 -511 448 ) ( -927 -512 448 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -928 -512 448 ) ( -927 -512 448 ) ( -928 -512 449 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -928 -512 448 ) ( -927 -512 448 ) ( -928 -512 449 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1056 -512 448 ) ( -1056 -512 449 ) ( -1056 -511 448 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1056 -512 448 ) ( -1056 -512 449 ) ( -1056 -511 448 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 50
|
// brush 50
|
||||||
{
|
{
|
||||||
( -1256 -464 192 ) ( -1256 -463 192 ) ( -1256 -464 193 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1256 -464 192 ) ( -1256 -463 192 ) ( -1256 -464 193 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -1256 -824 192 ) ( -1256 -824 193 ) ( -1255 -824 192 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1256 -824 192 ) ( -1256 -824 193 ) ( -1255 -824 192 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1248 -800 288 ) ( -1120 -736 288 ) ( -1248 -736 288 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1248 -800 288 ) ( -1120 -736 288 ) ( -1248 -736 288 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1248 -608 384 ) ( -1248 -584 384 ) ( -1120 -584 384 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1248 -608 384 ) ( -1248 -584 384 ) ( -1120 -584 384 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1248 -404 200 ) ( -1247 -404 200 ) ( -1248 -404 201 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1248 -404 200 ) ( -1247 -404 200 ) ( -1248 -404 201 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1248 -408 200 ) ( -1248 -408 201 ) ( -1248 -407 200 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1248 -408 200 ) ( -1248 -408 201 ) ( -1248 -407 200 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 51
|
// brush 51
|
||||||
{
|
{
|
||||||
( -1256 -464 192 ) ( -1256 -463 192 ) ( -1256 -464 193 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1256 -464 192 ) ( -1256 -463 192 ) ( -1256 -464 193 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -1256 -824 192 ) ( -1256 -824 193 ) ( -1255 -824 192 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1256 -824 192 ) ( -1256 -824 193 ) ( -1255 -824 192 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1256 -464 192 ) ( -1255 -464 192 ) ( -1256 -463 192 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1256 -464 192 ) ( -1255 -464 192 ) ( -1256 -463 192 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1248 -800 288 ) ( -1248 -736 288 ) ( -1120 -736 288 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1248 -800 288 ) ( -1248 -736 288 ) ( -1120 -736 288 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1248 -792 208 ) ( -1120 -792 216 ) ( -1248 -792 216 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1248 -792 208 ) ( -1120 -792 216 ) ( -1248 -792 216 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1248 -408 200 ) ( -1248 -408 201 ) ( -1248 -407 200 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1248 -408 200 ) ( -1248 -408 201 ) ( -1248 -407 200 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 52
|
// brush 52
|
||||||
{
|
{
|
||||||
( -1256 -464 192 ) ( -1256 -463 192 ) ( -1256 -464 193 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1256 -464 192 ) ( -1256 -463 192 ) ( -1256 -464 193 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -1248 -704 216 ) ( -1248 -704 232 ) ( -1120 -704 232 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1248 -704 216 ) ( -1248 -704 232 ) ( -1120 -704 232 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1256 -464 192 ) ( -1255 -464 192 ) ( -1256 -463 192 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1256 -464 192 ) ( -1255 -464 192 ) ( -1256 -463 192 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1248 -800 288 ) ( -1248 -736 288 ) ( -1120 -736 288 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1248 -800 288 ) ( -1248 -736 288 ) ( -1120 -736 288 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1248 -408 200 ) ( -1247 -408 200 ) ( -1248 -408 201 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1248 -408 200 ) ( -1247 -408 200 ) ( -1248 -408 201 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1248 -408 200 ) ( -1248 -408 201 ) ( -1248 -407 200 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1248 -408 200 ) ( -1248 -408 201 ) ( -1248 -407 200 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 53
|
// brush 53
|
||||||
{
|
{
|
||||||
( -1256 -864 192 ) ( -1256 -863 192 ) ( -1256 -864 193 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1256 -864 192 ) ( -1256 -863 192 ) ( -1256 -864 193 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -1256 -864 192 ) ( -1256 -864 193 ) ( -1255 -864 192 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1256 -864 192 ) ( -1256 -864 193 ) ( -1255 -864 192 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1256 -864 192 ) ( -1255 -864 192 ) ( -1256 -863 192 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1256 -864 192 ) ( -1255 -864 192 ) ( -1256 -863 192 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1248 -824 448 ) ( -1248 -823 448 ) ( -1247 -824 448 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1248 -824 448 ) ( -1248 -823 448 ) ( -1247 -824 448 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1248 -824 200 ) ( -1247 -824 200 ) ( -1248 -824 201 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1248 -824 200 ) ( -1247 -824 200 ) ( -1248 -824 201 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1248 -824 200 ) ( -1248 -824 201 ) ( -1248 -823 200 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1248 -824 200 ) ( -1248 -824 201 ) ( -1248 -823 200 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 54
|
// brush 54
|
||||||
{
|
{
|
||||||
( -928 -864 440 ) ( -928 -863 440 ) ( -928 -864 441 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -928 -864 440 ) ( -928 -863 440 ) ( -928 -864 441 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -928 -864 440 ) ( -928 -864 441 ) ( -927 -864 440 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -928 -864 440 ) ( -928 -864 441 ) ( -927 -864 440 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -928 -864 360 ) ( -927 -864 360 ) ( -928 -863 360 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -928 -864 360 ) ( -927 -864 360 ) ( -928 -863 360 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -920 -624 448 ) ( -920 -623 448 ) ( -919 -624 448 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -920 -624 448 ) ( -920 -623 448 ) ( -919 -624 448 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -920 -624 448 ) ( -919 -624 448 ) ( -920 -624 449 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -920 -624 448 ) ( -919 -624 448 ) ( -920 -624 449 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -920 -624 448 ) ( -920 -624 449 ) ( -920 -623 448 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -920 -624 448 ) ( -920 -624 449 ) ( -920 -623 448 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 55
|
// brush 55
|
||||||
{
|
{
|
||||||
( -928 -864 352 ) ( -928 -863 352 ) ( -928 -864 353 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -928 -864 352 ) ( -928 -863 352 ) ( -928 -864 353 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -928 -864 352 ) ( -928 -864 353 ) ( -927 -864 352 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -928 -864 352 ) ( -928 -864 353 ) ( -927 -864 352 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -928 -864 192 ) ( -927 -864 192 ) ( -928 -863 192 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -928 -864 192 ) ( -927 -864 192 ) ( -928 -863 192 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -920 -856 360 ) ( -920 -855 360 ) ( -919 -856 360 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -920 -856 360 ) ( -920 -855 360 ) ( -919 -856 360 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -920 -792 360 ) ( -919 -792 360 ) ( -920 -792 361 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -920 -792 360 ) ( -919 -792 360 ) ( -920 -792 361 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -920 -856 360 ) ( -920 -856 361 ) ( -920 -855 360 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -920 -856 360 ) ( -920 -856 361 ) ( -920 -855 360 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 56
|
// brush 56
|
||||||
{
|
{
|
||||||
( -1248 -832 304 ) ( -1248 -831 304 ) ( -1248 -832 305 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1248 -832 304 ) ( -1248 -831 304 ) ( -1248 -832 305 ) mapping_defaults/ProtoGrey 16 -128 0 1 1
|
||||||
( -1248 -864 304 ) ( -1248 -864 305 ) ( -1247 -864 304 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1248 -864 304 ) ( -1248 -864 305 ) ( -1247 -864 304 ) mapping_defaults/ProtoGrey 64 -128 0 1 1
|
||||||
( -1248 -832 304 ) ( -1247 -832 304 ) ( -1248 -831 304 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1248 -832 304 ) ( -1247 -832 304 ) ( -1248 -831 304 ) mapping_defaults/ProtoGrey 64 -16 0 1 1
|
||||||
( -1184 -648 312 ) ( -1184 -647 312 ) ( -1183 -648 312 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1184 -648 312 ) ( -1184 -647 312 ) ( -1183 -648 312 ) mapping_defaults/ProtoGrey 64 -16 0 1 1
|
||||||
( -1184 -576 312 ) ( -1183 -576 312 ) ( -1184 -576 313 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1184 -576 312 ) ( -1183 -576 312 ) ( -1184 -576 313 ) mapping_defaults/ProtoGrey 64 -128 0 1 1
|
||||||
( -1160 -648 312 ) ( -1160 -648 313 ) ( -1160 -647 312 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1160 -648 312 ) ( -1160 -648 313 ) ( -1160 -647 312 ) mapping_defaults/ProtoGrey 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 57
|
// brush 57
|
||||||
{
|
{
|
||||||
( -1164 -660 312 ) ( -1164 -659 312 ) ( -1164 -660 313 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1164 -660 312 ) ( -1164 -659 312 ) ( -1164 -660 313 ) mapping_defaults/ProtoGrey 16 -128 0 1 1
|
||||||
( -1164 -816 312 ) ( -1164 -816 313 ) ( -1163 -816 312 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1164 -816 312 ) ( -1164 -816 313 ) ( -1163 -816 312 ) mapping_defaults/ProtoGrey 64 -128 0 1 1
|
||||||
( -1164 -660 312 ) ( -1163 -660 312 ) ( -1164 -659 312 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1164 -660 312 ) ( -1163 -660 312 ) ( -1164 -659 312 ) mapping_defaults/ProtoGrey 64 -16 0 1 1
|
||||||
( -1160 -528 340 ) ( -1160 -527 340 ) ( -1159 -528 340 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1160 -528 340 ) ( -1160 -527 340 ) ( -1159 -528 340 ) mapping_defaults/ProtoGrey 64 -16 0 1 1
|
||||||
( -1160 -576 316 ) ( -1159 -576 316 ) ( -1160 -576 317 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1160 -576 316 ) ( -1159 -576 316 ) ( -1160 -576 317 ) mapping_defaults/ProtoGrey 64 -128 0 1 1
|
||||||
( -1160 -528 316 ) ( -1160 -528 317 ) ( -1160 -527 316 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1160 -528 316 ) ( -1160 -528 317 ) ( -1160 -527 316 ) mapping_defaults/ProtoGrey 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 58
|
// brush 58
|
||||||
{
|
{
|
||||||
( -1184 -480 368 ) ( -1184 -472 360 ) ( -1184 -472 488 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1184 -480 368 ) ( -1184 -472 360 ) ( -1184 -472 488 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -1224 -492 380 ) ( -1220 -492 508 ) ( -1220 -492 380 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1224 -492 380 ) ( -1220 -492 508 ) ( -1220 -492 380 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1256 -432 320 ) ( -1256 -440 328 ) ( -1128 -440 328 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1256 -432 320 ) ( -1256 -440 328 ) ( -1128 -440 328 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1128 -400 400 ) ( -1128 -399 400 ) ( -1127 -400 400 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1128 -400 400 ) ( -1128 -399 400 ) ( -1127 -400 400 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1232 -460 348 ) ( -1212 -460 348 ) ( -1212 -460 476 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1232 -460 348 ) ( -1212 -460 348 ) ( -1212 -460 476 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -928 -400 312 ) ( -928 -400 313 ) ( -928 -399 312 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -928 -400 312 ) ( -928 -400 313 ) ( -928 -399 312 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 59
|
// brush 59
|
||||||
{
|
{
|
||||||
( -1248 -560 304 ) ( -1248 -559 304 ) ( -1248 -560 305 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1248 -560 304 ) ( -1248 -559 304 ) ( -1248 -560 305 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -1232 -460 348 ) ( -1212 -460 476 ) ( -1212 -460 348 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1232 -460 348 ) ( -1212 -460 476 ) ( -1212 -460 348 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1256 -432 320 ) ( -1256 -440 328 ) ( -1128 -440 328 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1256 -432 320 ) ( -1256 -440 328 ) ( -1128 -440 328 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1248 -560 304 ) ( -1247 -560 304 ) ( -1248 -559 304 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1248 -560 304 ) ( -1247 -560 304 ) ( -1248 -559 304 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1128 -400 352 ) ( -1128 -399 352 ) ( -1127 -400 352 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1128 -400 352 ) ( -1128 -399 352 ) ( -1127 -400 352 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1128 -400 312 ) ( -1127 -400 312 ) ( -1128 -400 313 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1128 -400 312 ) ( -1127 -400 312 ) ( -1128 -400 313 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1188 -460 348 ) ( -1188 -460 352 ) ( -1188 -332 352 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1188 -460 348 ) ( -1188 -460 352 ) ( -1188 -332 352 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 60
|
// brush 60
|
||||||
{
|
{
|
||||||
( -1184 -496 384 ) ( -1184 -500 516 ) ( -1184 -500 388 ) mapping_defaults/ProtoWhite 16 -127.99997 0 1 1
|
( -1184 -496 384 ) ( -1184 -500 516 ) ( -1184 -500 388 ) mapping_defaults/ProtoOrange 16 -127.99997 0 1 1
|
||||||
( -1256 -432 320 ) ( -1256 -440 328 ) ( -1128 -440 328 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1256 -432 320 ) ( -1256 -440 328 ) ( -1128 -440 328 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1128 -400 400 ) ( -1128 -399 400 ) ( -1127 -400 400 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1128 -400 400 ) ( -1128 -399 400 ) ( -1127 -400 400 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1224 -492 380 ) ( -1220 -492 380 ) ( -1220 -492 508 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1224 -492 380 ) ( -1220 -492 380 ) ( -1220 -492 508 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -928 -400 312 ) ( -928 -400 313 ) ( -928 -399 312 ) mapping_defaults/ProtoWhite 16 -127.99997 0 1 1
|
( -928 -400 312 ) ( -928 -400 313 ) ( -928 -399 312 ) mapping_defaults/ProtoOrange 16 -127.99997 0 1 1
|
||||||
}
|
}
|
||||||
// brush 61
|
// brush 61
|
||||||
{
|
{
|
||||||
( -1248 -560 304 ) ( -1248 -559 304 ) ( -1248 -560 305 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1248 -560 304 ) ( -1248 -559 304 ) ( -1248 -560 305 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -1256 -432 320 ) ( -1256 -440 328 ) ( -1128 -440 328 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1256 -432 320 ) ( -1256 -440 328 ) ( -1128 -440 328 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1128 -400 400 ) ( -1128 -399 400 ) ( -1127 -400 400 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1128 -400 400 ) ( -1128 -399 400 ) ( -1127 -400 400 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1248 -500 388 ) ( -1240 -500 388 ) ( -1240 -500 516 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1248 -500 388 ) ( -1240 -500 388 ) ( -1240 -500 516 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1184 -496 384 ) ( -1184 -500 388 ) ( -1184 -500 516 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1184 -496 384 ) ( -1184 -500 388 ) ( -1184 -500 516 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 62
|
// brush 62
|
||||||
{
|
{
|
||||||
( -1188 -460 348 ) ( -1188 -332 352 ) ( -1188 -460 352 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1188 -460 348 ) ( -1188 -332 352 ) ( -1188 -460 352 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -1232 -460 348 ) ( -1212 -460 476 ) ( -1212 -460 348 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1232 -460 348 ) ( -1212 -460 476 ) ( -1212 -460 348 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1256 -432 320 ) ( -1256 -440 328 ) ( -1128 -440 328 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1256 -432 320 ) ( -1256 -440 328 ) ( -1128 -440 328 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1248 -560 304 ) ( -1247 -560 304 ) ( -1248 -559 304 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1248 -560 304 ) ( -1247 -560 304 ) ( -1248 -559 304 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1184 -400 352 ) ( -1176 -272 352 ) ( -1176 -400 352 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1184 -400 352 ) ( -1176 -272 352 ) ( -1176 -400 352 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1128 -396 312 ) ( -1127 -396 312 ) ( -1128 -396 313 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1128 -396 312 ) ( -1127 -396 312 ) ( -1128 -396 313 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -928 -400 312 ) ( -928 -400 313 ) ( -928 -399 312 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -928 -400 312 ) ( -928 -400 313 ) ( -928 -399 312 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 63
|
// brush 63
|
||||||
{
|
{
|
||||||
|
|
@ -626,21 +626,21 @@
|
||||||
}
|
}
|
||||||
// brush 69
|
// brush 69
|
||||||
{
|
{
|
||||||
( -1536 -868 80 ) ( -1536 -867 80 ) ( -1536 -868 81 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1536 -868 80 ) ( -1536 -867 80 ) ( -1536 -868 81 ) mapping_defaults/ProtoDark 16 -128 0 1 1
|
||||||
( -1536 -868 80 ) ( -1536 -868 81 ) ( -1535 -868 80 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1536 -868 80 ) ( -1536 -868 81 ) ( -1535 -868 80 ) mapping_defaults/ProtoDark 64 -128 0 1 1
|
||||||
( -1536 -868 4 ) ( -1535 -868 4 ) ( -1536 -867 4 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1536 -868 4 ) ( -1535 -868 4 ) ( -1536 -867 4 ) mapping_defaults/ProtoDark 64 -16 0 1 1
|
||||||
( -1248 -864 180 ) ( -1248 -863 180 ) ( -1247 -864 180 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1248 -864 180 ) ( -1248 -863 180 ) ( -1247 -864 180 ) mapping_defaults/ProtoDark 64 -16 0 1 1
|
||||||
( -1248 -864 84 ) ( -1247 -864 84 ) ( -1248 -864 85 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1248 -864 84 ) ( -1247 -864 84 ) ( -1248 -864 85 ) mapping_defaults/ProtoDark 64 -128 0 1 1
|
||||||
( -1104 -864 84 ) ( -1104 -864 85 ) ( -1104 -863 84 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1104 -864 84 ) ( -1104 -864 85 ) ( -1104 -863 84 ) mapping_defaults/ProtoDark 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 70
|
// brush 70
|
||||||
{
|
{
|
||||||
( -1160 -864 192 ) ( -1160 -863 192 ) ( -1160 -864 193 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -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/ProtoWhite 64 -16 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/ProtoWhite 64 -128 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/ProtoWhite 64 -16 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/ProtoWhite 64 -128 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/ProtoWhite 64 -16 0 1 1
|
( -1160 -844 312 ) ( -1148 -716 304 ) ( -1148 -844 304 ) mapping_defaults/ProtoGrey 64 -16 0 1 1
|
||||||
}
|
}
|
||||||
// brush 71
|
// brush 71
|
||||||
{
|
{
|
||||||
|
|
@ -805,48 +805,48 @@
|
||||||
}
|
}
|
||||||
// brush 89
|
// brush 89
|
||||||
{
|
{
|
||||||
( -1256 -880 192 ) ( -1256 -879 192 ) ( -1256 -880 193 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1256 -880 192 ) ( -1256 -879 192 ) ( -1256 -880 193 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -1256 -872 192 ) ( -1256 -872 193 ) ( -1255 -872 192 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1256 -872 192 ) ( -1256 -872 193 ) ( -1255 -872 192 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1256 -880 192 ) ( -1255 -880 192 ) ( -1256 -879 192 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1256 -880 192 ) ( -1255 -880 192 ) ( -1256 -879 192 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -888 -864 448 ) ( -888 -863 448 ) ( -887 -864 448 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -888 -864 448 ) ( -888 -863 448 ) ( -887 -864 448 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -888 -864 200 ) ( -887 -864 200 ) ( -888 -864 201 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -888 -864 200 ) ( -887 -864 200 ) ( -888 -864 201 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1104 -872 240 ) ( -1104 -872 272 ) ( -1104 -744 272 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1104 -872 240 ) ( -1104 -872 272 ) ( -1104 -744 272 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 90
|
// brush 90
|
||||||
{
|
{
|
||||||
( -1056 -872 240 ) ( -1056 -744 272 ) ( -1056 -872 272 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1056 -872 240 ) ( -1056 -744 272 ) ( -1056 -872 272 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -1256 -872 192 ) ( -1256 -872 193 ) ( -1255 -872 192 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1256 -872 192 ) ( -1256 -872 193 ) ( -1255 -872 192 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1256 -880 192 ) ( -1255 -880 192 ) ( -1256 -879 192 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1256 -880 192 ) ( -1255 -880 192 ) ( -1256 -879 192 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -888 -864 448 ) ( -888 -863 448 ) ( -887 -864 448 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -888 -864 448 ) ( -888 -863 448 ) ( -887 -864 448 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -888 -864 200 ) ( -887 -864 200 ) ( -888 -864 201 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -888 -864 200 ) ( -887 -864 200 ) ( -888 -864 201 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -888 -864 200 ) ( -888 -864 201 ) ( -888 -863 200 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -888 -864 200 ) ( -888 -864 201 ) ( -888 -863 200 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 91
|
// brush 91
|
||||||
{
|
{
|
||||||
( -1104 -872 240 ) ( -1104 -744 272 ) ( -1104 -872 272 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1104 -872 240 ) ( -1104 -744 272 ) ( -1104 -872 272 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -1256 -872 192 ) ( -1256 -872 193 ) ( -1255 -872 192 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1256 -872 192 ) ( -1256 -872 193 ) ( -1255 -872 192 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1072 -872 192 ) ( -1088 -744 192 ) ( -1088 -872 192 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1072 -872 192 ) ( -1088 -744 192 ) ( -1088 -872 192 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -888 -864 448 ) ( -888 -863 448 ) ( -887 -864 448 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -888 -864 448 ) ( -888 -863 448 ) ( -887 -864 448 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -888 -864 200 ) ( -887 -864 200 ) ( -888 -864 201 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -888 -864 200 ) ( -887 -864 200 ) ( -888 -864 201 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1056 -872 240 ) ( -1056 -872 272 ) ( -1056 -744 272 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1056 -872 240 ) ( -1056 -872 272 ) ( -1056 -744 272 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 92
|
// brush 92
|
||||||
{
|
{
|
||||||
( -720 -1600 192 ) ( -720 -1568 192 ) ( -720 -1568 320 ) mapping_defaults/ProtoWhite 0 -64 0 0.25 0.25
|
( -720 -1600 192 ) ( -720 -1568 192 ) ( -720 -1568 320 ) mapping_defaults/ProtoDark 0 -64 0 0.25 0.25
|
||||||
( -320 -1024 192 ) ( -352 -1024 192 ) ( -352 -1024 320 ) mapping_defaults/ProtoWhite 64 -64 0 0.25 0.25
|
( -320 -1024 192 ) ( -352 -1024 192 ) ( -352 -1024 320 ) mapping_defaults/ProtoDark 64 -64 0 0.25 0.25
|
||||||
( -1552 -1664 160 ) ( -1551 -1664 160 ) ( -1552 -1663 160 ) mapping_defaults/ProtoWhite 64 0 0 0.25 0.25
|
( -1552 -1664 160 ) ( -1551 -1664 160 ) ( -1552 -1663 160 ) mapping_defaults/ProtoDark 64 0 0 0.25 0.25
|
||||||
( -1424 -1536 192 ) ( -1424 -1535 192 ) ( -1423 -1536 192 ) mapping_defaults/ProtoWhite 64 0 0 0.25 0.25
|
( -1424 -1536 192 ) ( -1424 -1535 192 ) ( -1423 -1536 192 ) mapping_defaults/ProtoDark 64 0 0 0.25 0.25
|
||||||
( -1424 -64 192 ) ( -1423 -64 192 ) ( -1424 -64 193 ) mapping_defaults/ProtoWhite 64 -64 0 0.25 0.25
|
( -1424 -64 192 ) ( -1423 -64 192 ) ( -1424 -64 193 ) mapping_defaults/ProtoDark 64 -64 0 0.25 0.25
|
||||||
( -96 -1536 192 ) ( -96 -1536 193 ) ( -96 -1535 192 ) mapping_defaults/ProtoWhite 0 -64 0 0.25 0.25
|
( -96 -1536 192 ) ( -96 -1536 193 ) ( -96 -1535 192 ) mapping_defaults/ProtoDark 0 -64 0 0.25 0.25
|
||||||
}
|
}
|
||||||
// brush 93
|
// brush 93
|
||||||
{
|
{
|
||||||
( -1712 -1664 160 ) ( -1712 -1663 160 ) ( -1712 -1664 161 ) mapping_defaults/ProtoWhite 0 -64 0 0.25 0.25
|
( -1712 -1664 160 ) ( -1712 -1663 160 ) ( -1712 -1664 161 ) mapping_defaults/ProtoDark 0 -64 0 0.25 0.25
|
||||||
( -1552 -1760 160 ) ( -1552 -1760 161 ) ( -1551 -1760 160 ) mapping_defaults/ProtoWhite 64 -64 0 0.25 0.25
|
( -1552 -1760 160 ) ( -1552 -1760 161 ) ( -1551 -1760 160 ) mapping_defaults/ProtoDark 64 -64 0 0.25 0.25
|
||||||
( -1552 -1664 160 ) ( -1551 -1664 160 ) ( -1552 -1663 160 ) mapping_defaults/ProtoWhite 64 0 0 0.25 0.25
|
( -1552 -1664 160 ) ( -1551 -1664 160 ) ( -1552 -1663 160 ) mapping_defaults/ProtoDark 64 0 0 0.25 0.25
|
||||||
( -1424 -1536 192 ) ( -1424 -1535 192 ) ( -1423 -1536 192 ) mapping_defaults/ProtoWhite 64 0 0 0.25 0.25
|
( -1424 -1536 192 ) ( -1424 -1535 192 ) ( -1423 -1536 192 ) mapping_defaults/ProtoDark 64 0 0 0.25 0.25
|
||||||
( -320 -1024 192 ) ( -352 -1024 320 ) ( -352 -1024 192 ) mapping_defaults/ProtoWhite 64 -64 0 0.25 0.25
|
( -320 -1024 192 ) ( -352 -1024 320 ) ( -352 -1024 192 ) mapping_defaults/ProtoDark 64 -64 0 0.25 0.25
|
||||||
( -720 -1600 192 ) ( -720 -1568 320 ) ( -720 -1568 192 ) mapping_defaults/ProtoWhite 0 -64 0 0.25 0.25
|
( -720 -1600 192 ) ( -720 -1568 320 ) ( -720 -1568 192 ) mapping_defaults/ProtoDark 0 -64 0 0.25 0.25
|
||||||
}
|
}
|
||||||
// brush 94
|
// brush 94
|
||||||
{
|
{
|
||||||
|
|
@ -895,21 +895,21 @@
|
||||||
}
|
}
|
||||||
// brush 99
|
// brush 99
|
||||||
{
|
{
|
||||||
( -1256 -400 352 ) ( -1256 -399 352 ) ( -1256 -400 353 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -1256 -400 352 ) ( -1256 -399 352 ) ( -1256 -400 353 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -1180 -404 352 ) ( -1180 -404 353 ) ( -1179 -404 352 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1180 -404 352 ) ( -1180 -404 353 ) ( -1179 -404 352 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1180 -400 352 ) ( -1179 -400 352 ) ( -1180 -399 352 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1180 -400 352 ) ( -1179 -400 352 ) ( -1180 -399 352 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1076 -396 448 ) ( -1076 -395 448 ) ( -1075 -396 448 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1076 -396 448 ) ( -1076 -395 448 ) ( -1075 -396 448 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1076 -396 356 ) ( -1075 -396 356 ) ( -1076 -396 357 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1076 -396 356 ) ( -1075 -396 356 ) ( -1076 -396 357 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -976 -404 368 ) ( -976 -404 384 ) ( -976 -276 384 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -976 -404 368 ) ( -976 -404 384 ) ( -976 -276 384 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 100
|
// brush 100
|
||||||
{
|
{
|
||||||
( -976 -404 368 ) ( -976 -276 384 ) ( -976 -404 384 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -976 -404 368 ) ( -976 -276 384 ) ( -976 -404 384 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
( -1180 -404 352 ) ( -1180 -404 353 ) ( -1179 -404 352 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1180 -404 352 ) ( -1180 -404 353 ) ( -1179 -404 352 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -1180 -400 400 ) ( -1179 -400 400 ) ( -1180 -399 400 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1180 -400 400 ) ( -1179 -400 400 ) ( -1180 -399 400 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1076 -396 448 ) ( -1076 -395 448 ) ( -1075 -396 448 ) mapping_defaults/ProtoWhite 64 -16 0 1 1
|
( -1076 -396 448 ) ( -1076 -395 448 ) ( -1075 -396 448 ) mapping_defaults/ProtoOrange 64 -16 0 1 1
|
||||||
( -1076 -396 356 ) ( -1075 -396 356 ) ( -1076 -396 357 ) mapping_defaults/ProtoWhite 64 -128 0 1 1
|
( -1076 -396 356 ) ( -1075 -396 356 ) ( -1076 -396 357 ) mapping_defaults/ProtoOrange 64 -128 0 1 1
|
||||||
( -928 -396 356 ) ( -928 -396 357 ) ( -928 -395 356 ) mapping_defaults/ProtoWhite 16 -128 0 1 1
|
( -928 -396 356 ) ( -928 -396 357 ) ( -928 -395 356 ) mapping_defaults/ProtoOrange 16 -128 0 1 1
|
||||||
}
|
}
|
||||||
// brush 101
|
// brush 101
|
||||||
{
|
{
|
||||||
|
|
@ -1003,30 +1003,30 @@
|
||||||
}
|
}
|
||||||
// brush 111
|
// brush 111
|
||||||
{
|
{
|
||||||
( -1712 -1664 160 ) ( -1712 -1663 160 ) ( -1712 -1664 161 ) mapping_defaults/ProtoWhite 0 -64 0 0.25 0.25
|
( -1712 -1664 160 ) ( -1712 -1663 160 ) ( -1712 -1664 161 ) mapping_defaults/ProtoDark 0 -64 0 0.25 0.25
|
||||||
( -1120 -816 192 ) ( -1136 -816 192 ) ( -1136 -816 320 ) mapping_defaults/ProtoWhite 64 -64 0 0.25 0.25
|
( -1120 -816 192 ) ( -1136 -816 192 ) ( -1136 -816 320 ) mapping_defaults/ProtoDark 64 -64 0 0.25 0.25
|
||||||
( -1552 -1664 160 ) ( -1551 -1664 160 ) ( -1552 -1663 160 ) mapping_defaults/ProtoWhite 64 0 0 0.25 0.25
|
( -1552 -1664 160 ) ( -1551 -1664 160 ) ( -1552 -1663 160 ) mapping_defaults/ProtoDark 64 0 0 0.25 0.25
|
||||||
( -1424 -1536 192 ) ( -1424 -1535 192 ) ( -1423 -1536 192 ) mapping_defaults/ProtoWhite 64 0 0 0.25 0.25
|
( -1424 -1536 192 ) ( -1424 -1535 192 ) ( -1423 -1536 192 ) mapping_defaults/ProtoDark 64 0 0 0.25 0.25
|
||||||
( -1424 -64 192 ) ( -1423 -64 192 ) ( -1424 -64 193 ) mapping_defaults/ProtoWhite 64 -64 0 0.25 0.25
|
( -1424 -64 192 ) ( -1423 -64 192 ) ( -1424 -64 193 ) mapping_defaults/ProtoDark 64 -64 0 0.25 0.25
|
||||||
( -720 -1600 192 ) ( -720 -1568 320 ) ( -720 -1568 192 ) mapping_defaults/ProtoWhite 0 -64 0 0.25 0.25
|
( -720 -1600 192 ) ( -720 -1568 320 ) ( -720 -1568 192 ) mapping_defaults/ProtoDark 0 -64 0 0.25 0.25
|
||||||
}
|
}
|
||||||
// brush 112
|
// brush 112
|
||||||
{
|
{
|
||||||
( -1088 -832 192 ) ( -1088 -848 320 ) ( -1088 -848 192 ) mapping_defaults/ProtoWhite 0 -64 0 0.25 0.25
|
( -1088 -832 192 ) ( -1088 -848 320 ) ( -1088 -848 192 ) mapping_defaults/ProtoDark 0 -64 0 0.25 0.25
|
||||||
( -320 -1024 192 ) ( -352 -1024 192 ) ( -352 -1024 320 ) mapping_defaults/ProtoWhite 64 -64 0 0.25 0.25
|
( -320 -1024 192 ) ( -352 -1024 192 ) ( -352 -1024 320 ) mapping_defaults/ProtoDark 64 -64 0 0.25 0.25
|
||||||
( -1552 -1664 160 ) ( -1551 -1664 160 ) ( -1552 -1663 160 ) mapping_defaults/ProtoWhite 64 0 0 0.25 0.25
|
( -1552 -1664 160 ) ( -1551 -1664 160 ) ( -1552 -1663 160 ) mapping_defaults/ProtoDark 64 0 0 0.25 0.25
|
||||||
( -1424 -1536 192 ) ( -1424 -1535 192 ) ( -1423 -1536 192 ) mapping_defaults/ProtoWhite 64 0 0 0.25 0.25
|
( -1424 -1536 192 ) ( -1424 -1535 192 ) ( -1423 -1536 192 ) mapping_defaults/ProtoDark 64 0 0 0.25 0.25
|
||||||
( -1120 -816 192 ) ( -1136 -816 320 ) ( -1136 -816 192 ) mapping_defaults/ProtoWhite 64 -64 0 0.25 0.25
|
( -1120 -816 192 ) ( -1136 -816 320 ) ( -1136 -816 192 ) mapping_defaults/ProtoDark 64 -64 0 0.25 0.25
|
||||||
( -720 -1600 192 ) ( -720 -1568 320 ) ( -720 -1568 192 ) mapping_defaults/ProtoWhite 0 -64 0 0.25 0.25
|
( -720 -1600 192 ) ( -720 -1568 320 ) ( -720 -1568 192 ) mapping_defaults/ProtoDark 0 -64 0 0.25 0.25
|
||||||
}
|
}
|
||||||
// brush 113
|
// brush 113
|
||||||
{
|
{
|
||||||
( -1712 -1664 160 ) ( -1712 -1663 160 ) ( -1712 -1664 161 ) mapping_defaults/ProtoWhite 0 -64 0 0.25 0.25
|
( -1712 -1664 160 ) ( -1712 -1663 160 ) ( -1712 -1664 161 ) mapping_defaults/ProtoDark 0 -64 0 0.25 0.25
|
||||||
( -320 -1024 192 ) ( -352 -1024 192 ) ( -352 -1024 320 ) mapping_defaults/ProtoWhite 64 -64 0 0.25 0.25
|
( -320 -1024 192 ) ( -352 -1024 192 ) ( -352 -1024 320 ) mapping_defaults/ProtoDark 64 -64 0 0.25 0.25
|
||||||
( -1552 -1664 160 ) ( -1551 -1664 160 ) ( -1552 -1663 160 ) mapping_defaults/ProtoWhite 64 0 0 0.25 0.25
|
( -1552 -1664 160 ) ( -1551 -1664 160 ) ( -1552 -1663 160 ) mapping_defaults/ProtoDark 64 0 0 0.25 0.25
|
||||||
( -1424 -1536 192 ) ( -1424 -1535 192 ) ( -1423 -1536 192 ) mapping_defaults/ProtoWhite 64 0 0 0.25 0.25
|
( -1424 -1536 192 ) ( -1424 -1535 192 ) ( -1423 -1536 192 ) mapping_defaults/ProtoDark 64 0 0 0.25 0.25
|
||||||
( -1104 -864 192 ) ( -1120 -864 320 ) ( -1120 -864 192 ) mapping_defaults/ProtoWhite 64 -64 0 0.25 0.25
|
( -1104 -864 192 ) ( -1120 -864 320 ) ( -1120 -864 192 ) mapping_defaults/ProtoDark 64 -64 0 0.25 0.25
|
||||||
( -1088 -832 192 ) ( -1088 -848 192 ) ( -1088 -848 320 ) mapping_defaults/ProtoWhite 0 -64 0 0.25 0.25
|
( -1088 -832 192 ) ( -1088 -848 192 ) ( -1088 -848 320 ) mapping_defaults/ProtoDark 0 -64 0 0.25 0.25
|
||||||
}
|
}
|
||||||
// brush 114
|
// brush 114
|
||||||
{
|
{
|
||||||
|
|
@ -1039,12 +1039,12 @@
|
||||||
}
|
}
|
||||||
// brush 115
|
// brush 115
|
||||||
{
|
{
|
||||||
( -31040 -160 16 ) ( -31040 -159 16 ) ( -31040 -160 17 ) mapping_defaults/ProtoWhite 0 128 0 0.25 0.25
|
( -31040 -160 16 ) ( -31040 -159 16 ) ( -31040 -160 17 ) mapping_defaults/ProtoOrange 0 128 0 0.25 0.25
|
||||||
( 16 -14416 16 ) ( 16 -14416 17 ) ( 17 -14416 16 ) mapping_defaults/ProtoWhite 0 128 0 0.25 0.25
|
( 16 -14416 16 ) ( 16 -14416 17 ) ( 17 -14416 16 ) mapping_defaults/ProtoOrange 0 128 0 0.25 0.25
|
||||||
( 16 -160 -192 ) ( 17 -160 -192 ) ( 16 -159 -192 ) mapping_defaults/ProtoWhite 0 0 0 0.25 0.25
|
( 16 -160 -192 ) ( 17 -160 -192 ) ( 16 -159 -192 ) mapping_defaults/ProtoOrange 0 0 0 0.25 0.25
|
||||||
( 96 16 32 ) ( 96 17 32 ) ( 97 16 32 ) mapping_defaults/ProtoWhite 0 0 0 0.25 0.25
|
( 96 16 32 ) ( 96 17 32 ) ( 97 16 32 ) mapping_defaults/ProtoOrange 0 0 0 0.25 0.25
|
||||||
( 96 31312 32 ) ( 97 31312 32 ) ( 96 31312 33 ) mapping_defaults/ProtoWhite 0 128 0 0.25 0.25
|
( 96 31312 32 ) ( 97 31312 32 ) ( 96 31312 33 ) mapping_defaults/ProtoOrange 0 128 0 0.25 0.25
|
||||||
( 18048 16 32 ) ( 18048 16 33 ) ( 18048 17 32 ) mapping_defaults/ProtoWhite 0 128 0 0.25 0.25
|
( 18048 16 32 ) ( 18048 16 33 ) ( 18048 17 32 ) mapping_defaults/ProtoOrange 0 128 0 0.25 0.25
|
||||||
}
|
}
|
||||||
// brush 116
|
// brush 116
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,8 @@ pub const ExternGameObject = struct {
|
||||||
allocator: std.mem.Allocator = undefined,
|
allocator: std.mem.Allocator = undefined,
|
||||||
consoleWindow: imgui.utils.ConsoleWindow = undefined,
|
consoleWindow: imgui.utils.ConsoleWindow = undefined,
|
||||||
tbMap: ?*bsp.maploader.TBMap = null,
|
tbMap: ?*bsp.maploader.TBMap = null,
|
||||||
|
physicsObjectsWindow: *extras.PhysicsObjectList = undefined,
|
||||||
|
fireTraceFilter: physics.IgnoreFixedBodiesFilter = .{},
|
||||||
|
|
||||||
//lmao: bool = false,
|
//lmao: bool = false,
|
||||||
//lmao2: bool = true,
|
//lmao2: bool = true,
|
||||||
|
|
@ -76,11 +78,34 @@ pub const ExternGameObject = struct {
|
||||||
};
|
};
|
||||||
|
|
||||||
imgui.utils.addMenuFunc(self, "Input Stack Viewer", extras.inputDebugger.windowOpen);
|
imgui.utils.addMenuFunc(self, "Input Stack Viewer", extras.inputDebugger.windowOpen);
|
||||||
|
|
||||||
|
self.physicsObjectsWindow = try extras.PhysicsObjectList.create(self.allocator);
|
||||||
self.consoleWindow.setup();
|
self.consoleWindow.setup();
|
||||||
|
|
||||||
|
const fireInput = try core.ActionBinding.create(core.MakeName("fire"));
|
||||||
|
fireInput.addKey(.Mouse1, .keyDown);
|
||||||
|
_ = fireInput.data.addListener(self, onFire);
|
||||||
|
fireInput.activate();
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn onFire(ctx: ?*anyopaque, _: core.ActionEvent) void {
|
||||||
|
const self: *@This() = @ptrCast(@alignCast(ctx));
|
||||||
|
|
||||||
|
if (platform.context().isCursorEnabled()) {
|
||||||
|
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 })) |r| {
|
||||||
|
core.debugSphere(r.point, 0.2, .{ .color = .{ .y = 1.0 }, .duration = 10.0 });
|
||||||
|
// core.debugLine(ray.start, ray.start.add(ray.dir.fmul(1000)), .{ .duration = 2.5 });
|
||||||
|
// physics.applyForce(r.body, ray.dir.fmul(400), r.point);
|
||||||
|
rend.context().lightPosition = r.point.add(.{ .y = 0.1 });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn tick(self: *@This(), dt: f64) void {
|
pub fn tick(self: *@This(), dt: f64) void {
|
||||||
const rctx = rend.context();
|
const rctx = rend.context();
|
||||||
_ = dt;
|
_ = dt;
|
||||||
|
|
@ -108,6 +133,22 @@ pub const ExternGameObject = struct {
|
||||||
}
|
}
|
||||||
ig.end();
|
ig.end();
|
||||||
|
|
||||||
|
if (platform.context().isCursorEnabled()) {
|
||||||
|
if (ig.begin("cursor", null, .{})) {
|
||||||
|
if (rend.context().activeCamera) |cam| {
|
||||||
|
const ray = cam.getNormalRayFromScreen(platform.getCursorPosition());
|
||||||
|
|
||||||
|
if (physics.traceLine(ray.start, ray.dir.fmul(10000), .{ .bodyFilter = &self.fireTraceFilter })) |r| {
|
||||||
|
core.debugSphere(r.point, 0.2, .{ .color = .{ .x = 1.0 }, .duration = 0 });
|
||||||
|
// core.debugLine(ray.start, ray.start.add(ray.dir.fmul(1000)), .{ .duration = 2.5 });
|
||||||
|
// physics.applyForce(r.body, ray.dir.fmul(400), r.point);
|
||||||
|
ig.textf("{d} {d} {d}", .{ r.point.x, r.point.y, r.point.z });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ig.end();
|
||||||
|
}
|
||||||
|
|
||||||
//_ = self;
|
//_ = self;
|
||||||
// imgui.utils.structHexView(self);
|
// imgui.utils.structHexView(self);
|
||||||
// imgui.utils.structHexView(rctx.activeCamera.?);
|
// imgui.utils.structHexView(rctx.activeCamera.?);
|
||||||
|
|
@ -152,6 +193,7 @@ const std = @import("std");
|
||||||
const backlog = @import("backlog");
|
const backlog = @import("backlog");
|
||||||
const core = backlog.core;
|
const core = backlog.core;
|
||||||
const imgui = backlog.imgui;
|
const imgui = backlog.imgui;
|
||||||
|
const physics = backlog.physics;
|
||||||
const rend = backlog.rend;
|
const rend = backlog.rend;
|
||||||
const ig = imgui.api;
|
const ig = imgui.api;
|
||||||
const platform = backlog.platform;
|
const platform = backlog.platform;
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ objectSpawner: *extras.ObjectSpawner = undefined,
|
||||||
inputEnabled: bool = true,
|
inputEnabled: bool = true,
|
||||||
videoFullbright: bool = false,
|
videoFullbright: bool = false,
|
||||||
|
|
||||||
moveLight: bool = true,
|
//moveLight: bool = true,
|
||||||
|
|
||||||
tbMap: ?*bsp.maploader.TBMap = null,
|
tbMap: ?*bsp.maploader.TBMap = null,
|
||||||
|
|
||||||
|
|
@ -420,11 +420,11 @@ pub fn tick(self: *@This(), dt: f64) void {
|
||||||
self.objectSpawner.spawnPosition = debugCenter;
|
self.objectSpawner.spawnPosition = debugCenter;
|
||||||
self.objectSpawner.spawnRotation = core.Rotation.eulerY(core.radians(self.fpcamera.yaw));
|
self.objectSpawner.spawnRotation = core.Rotation.eulerY(core.radians(self.fpcamera.yaw));
|
||||||
|
|
||||||
if (self.moveLight) {
|
//if (self.moveLight) {
|
||||||
core.debugSphere(debugCenter, 0.3, .{});
|
// core.debugSphere(debugCenter, 0.3, .{});
|
||||||
core.debugSphere(debugCenter, 0.1, .{ .color = .{ .x = 1.0 } });
|
// core.debugSphere(debugCenter, 0.1, .{ .color = .{ .x = 1.0 } });
|
||||||
rend.context().lightPosition = debugCenter;
|
// rend.context().lightPosition = debugCenter;
|
||||||
}
|
//}
|
||||||
|
|
||||||
// self.loadMap2() catch unreachable;
|
// self.loadMap2() catch unreachable;
|
||||||
// show a window with the current camera's position
|
// show a window with the current camera's position
|
||||||
|
|
@ -432,6 +432,10 @@ pub fn tick(self: *@This(), dt: f64) void {
|
||||||
if (!self.mouseLook) {
|
if (!self.mouseLook) {
|
||||||
// self.engineTool.tick();
|
// self.engineTool.tick();
|
||||||
self.objectSpawner.windowOpen = !self.mouseLook;
|
self.objectSpawner.windowOpen = !self.mouseLook;
|
||||||
|
//if (ig.begin("meh", null, .{})) {
|
||||||
|
//if (ig.checkbox("move lights ", &self.moveLight)) {}
|
||||||
|
//}
|
||||||
|
//ig.end();
|
||||||
// self.objectSpawner.tick(dt);
|
// self.objectSpawner.tick(dt);
|
||||||
// self.rendererDebugger.tick(dt);
|
// self.rendererDebugger.tick(dt);
|
||||||
// if (ig.begin("meh", null, .{})) {
|
// if (ig.begin("meh", null, .{})) {
|
||||||
|
|
@ -442,8 +446,6 @@ pub fn tick(self: *@This(), dt: f64) void {
|
||||||
// // //}
|
// // //}
|
||||||
// // }
|
// // }
|
||||||
|
|
||||||
// if (ig.checkbox("move lights ", &self.moveLight)) {}
|
|
||||||
|
|
||||||
// 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", .{}) catch return;
|
||||||
// ig.textFmt("- shift to slow down camera speed", .{}) catch return;
|
// ig.textFmt("- shift to slow down camera speed", .{}) catch return;
|
||||||
// ig.textFmt("- T to enable/disable mouse cursor", .{}) catch return;
|
// ig.textFmt("- T to enable/disable mouse cursor", .{}) catch return;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue