makeclass("world") makeclass('login') makeclass("engio") makeclass('cube') makeclass('sphere') -- This gets called on every login except the admin user. function login.init() local player = global.get("nextplayer") global.set("nextplayer", player + 1) dprint("login.init initializing player ", player) actor.player = player tangible.animinit{tan=actor, anim={bp="character", plane="earth", xyz={player * 100, 0, 90}}} end -- This gets called on the admin user. You can call login.init in here if you want. function world.init() dprint("world.init") global.set("nextplayer", 0) tangible.build{class=cube, anim={plane="earth", xyz={500,-100,0}, mat_color={1,0,0}}} tangible.build{class=sphere, anim={plane="earth", xyz={500,100,0}, mat_color={0,0,1}}} login.init() end function engio.move(action, xyz, facing) -- todo: sanity check the parameters. dprint("engio.move ", action, " ", xyz[1], " ", xyz[2], " ", xyz[3]) tangible.animate{tan=actor, anim={action=action, interactive=true, xyz=xyz, facing=facing}} end function moveto(x, y) local z = tangible.animfinal(actor).xyz[3] tangible.animate{tan=actor, anim={action="moveto", xyz={x, y, z}, facing=math.auto}} end function cube.lookhotkeys(keys) keys:add("Z", "Cube Hi", function () dprint("Doing Cube Hi") end) keys:add("X", "Cube Bye", function () dprint("Doing Cube Bye") end) keys:add("C", "Cube Yo", function () dprint("Doing Cube Yo") end) end function sphere.lookhotkeys(keys) keys:add("Z", "Sphere Hi", function () dprint("Doing Sphere Hi") end) keys:add("X", "Sphere Bye", function () dprint("Doing Sphere Bye") end) keys:add("C", "Sphere Yo", function () dprint("Doing Sphere Yo") end) end function engio.getlookat() local class = tangible.getclass(place) -- if the tangible is not of any class, return empty string. if class == nil then return "" end -- if the class has a function 'lookhotkeys', then the correct -- look-at widget is 'hotkeys'. We're going to automatically -- generate the correct response. if class.lookhotkeys ~= nil then local keys = hotkeylist.create() class.lookhotkeys(keys) setmetatable(keys, nil) return keys end -- otherwise, if the class has a function 'getlookat', use that. if class.getlookat ~= nil then return class.getlookat() end -- by default, return the empty string. return "" end function engio.presshotkey(action) local class = tangible.getclass(place) -- if the tangible doesn't have a 'lookhotkeys' function, do nothing if class == nil or class.lookhotkeys == nil then return end local press = hotkeypress.create(action) class.lookhotkeys(press) local closure = press.closure if closure ~= nil then closure() end end function jp3() tangible.animate{tan=actor, anim={action="play", seq="jump"}} tangible.animate{tan=actor, anim={action="play", seq="jump"}} tangible.animate{tan=actor, anim={action="play", seq="jump"}} end