shader = require("shaders.world") win = require("window") hc = require("party.hc.init") ecs = require("ecs") world = require("world") ss = require("shader_shim") ui = require("ui") peer = require("router") server = ui.button(-200,0,100,100, "Server") co = nil server.on = () => if @co == nil print("Setting co...") @co = coroutine.create(() -> router = peer.Router! router\initalize! router ) button = @ @node\action(() => if button.co and coroutine.status(button.co) ~= "dead" succ, val = coroutine.resume(button.co) if not succ error(debug.traceback(button.co,val)) if type(val) == "string" button.text.text = val else router = val world.router = router ) client.on = () => textbox = ui.textbox(200,100,100,32, "Serverid") client = ui.button(200,0,100,100, "Client") test_sprite = am.translate(0,0) ^ am.scale(20) ^ am.sprite("BRY\nYYY\nBBB") ui.node\prepend(test_sprite) world_cache = { } print("Before setting world level:", world) world.level = { graphics:{} entities:{} graphic_world: hc.new(5) physics_world: hc.new(1) } world.level.entities[0] = ecs.Entity("World",{ ecs.NetworkedComponent("net",{seed: "1234567"}), ecs.GraphicsComponent("graphics",{ node: ss.world\append( am.depth_test("less")\append( am.cull_face("front")\append( am.bind({})\append( am.draw("triangles") )))) }), ecs.PhysicsComponent("physics",{ shape: world.level.physics_world\rectangle(0,0,100,100) }), ecs.ScriptComponent("script",{script: "prefab.worldgen"}) }) world.level.entities[1] = ecs.Entity("LocalPlayer",{ ecs.NetworkedComponent({ name: "" position: {0,0} velocity: {0,0} acceleration: {0,0} lasttime: 0 }), ecs.GraphicsComponent("graphics",{ node: ss.world\append( am.depth_test("less")\append( am.cull_face("front")\append( am.bind({})\append( am.draw("triangles") )))) }), ecs.PhysicsComponent("physics",{shape: world.level.physics_world\circle(0,0,0.5)}), ecs.ScriptComponent("script",{script: "player"}) })