From 9c65162cfd24c3360a1f5b09c6b11c9b60bebe24 Mon Sep 17 00:00:00 2001 From: Yusef Sohail Date: Fri, 19 Feb 2016 13:27:32 -0600 Subject: [PATCH] optimizing gulp --- example/assets/entities/client/boulder.json | 4 - example/assets/entities/client/particle.json | 6 -- example/assets/entities/client/player.json | 7 -- example/assets/entities/client/scene.json | 4 - example/assets/entities/server/player.json | 5 -- example/assets/entities/server/scene.json | 4 - example/assets/images/boulder.png | Bin 2851 -> 0 bytes example/assets/images/particle.png | Bin 28129 -> 0 bytes example/assets/images/player.png | Bin 1503 -> 0 bytes example/assets/test.json | 1 - example/assets/test.png | Bin 34427 -> 0 bytes example/assets/test.txt | 3 - example/assets/world01.json | 46 ---------- example/bootstrap.js | 6 -- example/bower.json | 22 ----- example/build/client.js | 58 ++++++++++++ example/build/js/client/Physics.js | 32 +++++++ example/build/js/client/PlayerController.js | 70 +++++++++++++++ example/build/js/client/initialize.js | 51 +++++++++++ example/build/js/server/initialize.js | 41 +++++++++ example/build/js/shared/GameLogic.js | 31 +++++++ example/build/js/shared/PlayerLogic.js | 89 ++++++++++++++++++ example/build/js/shared/constants.js | 8 ++ example/build/server.js | 17 ++++ example/client.html | 20 ----- example/client.js | 1 - example/css/style.css | 0 example/js/client/initialize.js | 6 +- example/js/server/initialize.js | 4 +- example/js/{server => shared}/GameLogic.js | 0 example/js/{server => shared}/PlayerLogic.js | 0 example/js/{ => shared}/constants.js | 0 example/package.json | 16 ---- example/server.html | 20 ----- gulpfile.js | 90 ++++++++++--------- package.json | 9 +- server.js | 8 -- 37 files changed, 455 insertions(+), 224 deletions(-) delete mode 100644 example/assets/entities/client/boulder.json delete mode 100644 example/assets/entities/client/particle.json delete mode 100644 example/assets/entities/client/player.json delete mode 100644 example/assets/entities/client/scene.json delete mode 100644 example/assets/entities/server/player.json delete mode 100644 example/assets/entities/server/scene.json delete mode 100644 example/assets/images/boulder.png delete mode 100644 example/assets/images/particle.png delete mode 100644 example/assets/images/player.png delete mode 100644 example/assets/test.json delete mode 100644 example/assets/test.png delete mode 100644 example/assets/test.txt delete mode 100644 example/assets/world01.json delete mode 100644 example/bootstrap.js delete mode 100644 example/bower.json create mode 100644 example/build/client.js create mode 100644 example/build/js/client/Physics.js create mode 100644 example/build/js/client/PlayerController.js create mode 100644 example/build/js/client/initialize.js create mode 100644 example/build/js/server/initialize.js create mode 100644 example/build/js/shared/GameLogic.js create mode 100644 example/build/js/shared/PlayerLogic.js create mode 100644 example/build/js/shared/constants.js create mode 100644 example/build/server.js delete mode 100644 example/client.html delete mode 100644 example/css/style.css rename example/js/{server => shared}/GameLogic.js (100%) rename example/js/{server => shared}/PlayerLogic.js (100%) rename example/js/{ => shared}/constants.js (100%) delete mode 100644 example/package.json delete mode 100644 example/server.html delete mode 100644 server.js diff --git a/example/assets/entities/client/boulder.json b/example/assets/entities/client/boulder.json deleted file mode 100644 index 7b37794..0000000 --- a/example/assets/entities/client/boulder.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "Transform2D" : null, - "Sprite" : { "width" : 100, "height" : 100, "url" : "assets/images/boulder.png" } -} \ No newline at end of file diff --git a/example/assets/entities/client/particle.json b/example/assets/entities/client/particle.json deleted file mode 100644 index a7cfef4..0000000 --- a/example/assets/entities/client/particle.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "Transform2D" : null, - "Sprite" : { "width" : 10, "height" : 10, "url" : "assets/images/particle.png" }, - "Physics" : null, - "Lifetime" : 500 -} \ No newline at end of file diff --git a/example/assets/entities/client/player.json b/example/assets/entities/client/player.json deleted file mode 100644 index b0c8985..0000000 --- a/example/assets/entities/client/player.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "Transform2D" : null, - "Sprite" : { "width" : 100, "height" : 100, "url" : "assets/images/player.png" }, - "PlayerController" : null, - "PlayerLogic" : null, - "Physics" : null -} \ No newline at end of file diff --git a/example/assets/entities/client/scene.json b/example/assets/entities/client/scene.json deleted file mode 100644 index f64aa61..0000000 --- a/example/assets/entities/client/scene.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "Transform2D" : null, - "GameLogic" : null -} \ No newline at end of file diff --git a/example/assets/entities/server/player.json b/example/assets/entities/server/player.json deleted file mode 100644 index c83bd8a..0000000 --- a/example/assets/entities/server/player.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "Transform2D" : null, - "PlayerSync" : { "mode" : "source"}, - "PlayerLogic" : null -} \ No newline at end of file diff --git a/example/assets/entities/server/scene.json b/example/assets/entities/server/scene.json deleted file mode 100644 index 65b7b27..0000000 --- a/example/assets/entities/server/scene.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "Transform2D" : null, - "Synchronizer" : { "mode" : "source"} -} \ No newline at end of file diff --git a/example/assets/images/boulder.png b/example/assets/images/boulder.png deleted file mode 100644 index f6b8017b4e95841e8089647d067d400b2f517368..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2851 zcmZXW3sjPM7Qp|2_`(O{T9&0UIX=#}vb55n1sXa`^5RhDT)=I4z zo9IEhJL!<+nr5LGX1nQTAr_80iP%<}k(dHGJaob4%p%-#KE8X-_q+GI|NHtVjouk* zZRuzU0I&`ZBg6mz(W($&ZmPW{9JP(S=7j_JPkuIeZSTGwdnk>RsVHKq(NnfllXLwQTpg|3bxUu1xCX!e1#r3nQP5t3JTd zmXEx-s6?lQGw56G^&Vtw6%;4R%AFv%RBr z&?ck-^wfKQ)iL*6)`3l*8kzrwM+CRxYl%4MLPMZ*X)*zzWTS?Rn41J3Jv}z_WNd@n z_dIc{uE7_{SAcB$Sw?)GCokNmneJ_6{6yImE(@p?LHRm|2J!>&U2e+B?ubv$s9S%( z|Lu)>x9=2o0$X*y0SGWKRKirwk;1dY?H05lwIWr`@+Hf7K%EbZfi}jYM^IeZ#toMI7Zmw20)j zcj6bfCeI8Cy3>aa22ktAT9s3~>}j$hls=Mm1XLGOL$IgIxy%9~W1C>CwS~tvqbERU zx=CFAf_f}cfSDy2`0 zJHeHQqvM@HHB3Bv-M}S3b1&sg*;2K4{aCYnCdF2{cC)#zVfADoDHG*0q+aj(PNY!x z9()a?b}lc4acoW#GD4M7!)maKOAS*nJ*x#(1Q)B#b|DX8)t4w0!E#mI-0zL_ZqNHC zIzpL!!U(^3k6Z(jeAtviajNS=CmtJ^N&!M!k~FA7xU}q+f-G=LQhZ2(**VF&{d;05 z17-%MfC%Y@-hksXV-IXxwhn&?3xAe@CLVpCmaY9Hc5hZ?MR|-Vb$=D~g*HE?woX87 z3rY4&(BRLux1CTFR*sJ)S(CFnu+ic=&@{0^pV#R`2oioHr#n?a>Pn073WaI6Lae;- z+{DwZtJj)XEb%qu4?vMlD=+(nUF6C(39ZSMK&rW4v+)KlQvwY%vO_; z2T#UgRVseQqhRdZUJWh^f~;c%82T>%DQfMSFb&x65Wai!)ezg~W&VkKtnt||CNmt2 z_C0S0NQemD4|dyH2D=PMpgpFpt)*L3=yMaDzHF?l%hRwLpti?sY02L=!S6B&@jkxa z<|Ex(d2H%PtMMVrOjtR%R2i(-(bduKQta@{D@kI6=kQ9-G;nyg<9G<0Y3;|{h;#$j@1Ne-e0YlrQt#ihk&H}H1f92F1VmUX40FNT4(zRL zs xf9ew^%g8ano38bv^u77Oy|o8oI9WWeX%}^$&s9jp@2_;0;lVozw}VK9{{v?Wk1qfK diff --git a/example/assets/images/particle.png b/example/assets/images/particle.png deleted file mode 100644 index 1bbce8a1bff7f8689b2fa4e17523789ada7d404f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28129 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 NzpV|rzcecA{{ei&3cUaT diff --git a/example/assets/images/player.png b/example/assets/images/player.png deleted file mode 100644 index 2a68c96ec4d12041a85525c5afc73bd011cd009e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1503 zcmZWp3rtgI6#iR4= zf7d^tNAGhy;s^lP7aK$S2ml-w;=tZL*phVh#|&)QbKy)h4H!+A@Lqczw&Rc!lgI?X z>453Rfu?3RY|}n3HZICuZes^d9=aaf_yYiTS7K?AXNzW3^OUM|hTF*bW9jwqf~(_< zb6ZW;jq0_7N1eZ`N=vFdyu!0mNB%&_+?*DpEPgV3{k?Vj z2*j_5J#dQ%ab7JgW8y!-0X*0Xya5;N1``dUd429g>RoNWaickMpqn>bEEqx`{pA(P z=5UIY51K0uz0BVIZ2lb##pG3mvmm16p;FCx*P~W8?qFGXT}Yp+2$S|3#1vv36R*)< zp3r5oVmKTo{@nBC&rqCv;6a5MjAfrRJ9B8>UNip4W{A>o2J*C;OmKfFWx&aOCW7EyNEc>Fo4Fd$@pSwzcqj^x z*t~fqgzwWO%jXYyj_=nRSS84gRYMH2_%!U$8xR6pQxLo@x2u$F@@R06VwfWz&*)j& z99^u*=XB$N8RsrwLGVk9ea#@jOO;L}tm=3InOv<)l&c4`A4!T0Q<+`0vR3x?q+&l! zCu`_8?Unrd;+A>LJ-*s-J1K38lPuKLg&cW z=E&vo6k`Z0yeWNJRUlH5NFe(EQ6s%FPQObQsLV{ro@>{cz)~~fdYF9#xq1p zsb)v2JSIir+ozT`2kum%NaKOK7A+P8Qez->7MYfM+%JRRZA7CVT0ye=W;0beSN)1+1J;XsFrUk7MUE<(Z^vHX5rbe+xp3PMqMd8Sr$b} z#e{_DwH2a{b;;Rc&aiK`0fpv1#Uh}A*%R#?nD=7rf<2H$E3!p{oZlE+S$Vpa@d Mqv*6dr_w6^1Iwo>KL7v# diff --git a/example/assets/test.json b/example/assets/test.json deleted file mode 100644 index cdb4ed4..0000000 --- a/example/assets/test.json +++ /dev/null @@ -1 +0,0 @@ -{"test":12} \ No newline at end of file diff --git a/example/assets/test.png b/example/assets/test.png deleted file mode 100644 index bd7c8e620bae585da89adca1a983be64b1e10ba9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34427 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 ? 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 WPaPFfUUP>0tD)X*#seK&zyAU9K`pib diff --git a/example/assets/test.txt b/example/assets/test.txt deleted file mode 100644 index a49f6bd..0000000 --- a/example/assets/test.txt +++ /dev/null @@ -1,3 +0,0 @@ -H E L L O -L E O -: ^ ) \ No newline at end of file diff --git a/example/assets/world01.json b/example/assets/world01.json deleted file mode 100644 index af32f8a..0000000 --- a/example/assets/world01.json +++ /dev/null @@ -1,46 +0,0 @@ -[ - -{ - "type" : "Boulder", - "Transform2D" : { - "position" : [100, 100] - } -}, - -{ - "type" : "Boulder", - "Transform2D" : { - "position" : [-100, 100] - } -}, - -{ - "type" : "Boulder", - "Transform2D" : { - "position" : [-100, -100] - } -}, - -{ - "type" : "Boulder", - "Transform2D" : { - "position" : [100, -100] - } -}, -{ - "type" : "Boulder", - "Transform2D" : { - "position" : [0, 200] - } -}, -{ - "type" : "Boulder", - "Transform2D" : { - "position" : [0, -200] - } -} - - - - -] \ No newline at end of file diff --git a/example/bootstrap.js b/example/bootstrap.js deleted file mode 100644 index 5df7e3c..0000000 --- a/example/bootstrap.js +++ /dev/null @@ -1,6 +0,0 @@ -var traceur = require('traceur'); -traceur.require.makeDefault(function(filename) { - // don't transpile our dependencies, just our app - return filename.indexOf('node_modules') === -1; -}); -require('./dist/server.js'); \ No newline at end of file diff --git a/example/bower.json b/example/bower.json deleted file mode 100644 index 80d651e..0000000 --- a/example/bower.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "CruftEngine", - "homepage": "https://github.com/mjneil/CruftEngine", - "description": "cruft", - "main": "", - "moduleType": [ - "amd" - ], - "license": "MIT", - "private": true, - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ], - "dependencies": { - "traceur": "^0.0.95", - "peerjs": "^0.3.14" - } -} diff --git a/example/build/client.js b/example/build/client.js new file mode 100644 index 0000000..2fbe5ab --- /dev/null +++ b/example/build/client.js @@ -0,0 +1,58 @@ +"use strict"; +var $__js_47_client_47_initialize__, + $__engine_47_Engine__, + $__engine_47_graphics_47_Camera2D__, + $__engine_47_core_47_Actor__, + $__engine_47_processes_47_Script__; +var initialize = ($__js_47_client_47_initialize__ = require("./js/client/initialize"), $__js_47_client_47_initialize__ && $__js_47_client_47_initialize__.__esModule && $__js_47_client_47_initialize__ || {default: $__js_47_client_47_initialize__}).default; +var engine = ($__engine_47_Engine__ = require("engine/Engine"), $__engine_47_Engine__ && $__engine_47_Engine__.__esModule && $__engine_47_Engine__ || {default: $__engine_47_Engine__}).default; +var Camera2D = ($__engine_47_graphics_47_Camera2D__ = require("engine/graphics/Camera2D"), $__engine_47_graphics_47_Camera2D__ && $__engine_47_graphics_47_Camera2D__.__esModule && $__engine_47_graphics_47_Camera2D__ || {default: $__engine_47_graphics_47_Camera2D__}).default; +var Actor = ($__engine_47_core_47_Actor__ = require("engine/core/Actor"), $__engine_47_core_47_Actor__ && $__engine_47_core_47_Actor__.__esModule && $__engine_47_core_47_Actor__ || {default: $__engine_47_core_47_Actor__}).default; +var Script = ($__engine_47_processes_47_Script__ = require("engine/processes/Script"), $__engine_47_processes_47_Script__ && $__engine_47_processes_47_Script__.__esModule && $__engine_47_processes_47_Script__ || {default: $__engine_47_processes_47_Script__}).default; +initialize(); +var main = function() { + engine.camera = new Camera2D(window.innerWidth, window.innerHeight); + var player = engine.factory.create(Actor, "Player"); + engine.scene.addChild(player); + engine.scene.addChild(engine.camera); + engine.scene.getComponent("GameLogic").player = player; + engine.scheduler.addChild(new Script(function() { + engine.camera.render(); + })); +}; +engine.running.then(main); +window.engine = engine; +window.kill = function() { + engine.scheduler.kill(); +}; +window.onbeforeonload = function() { + engine.network.peer.destroy(); +}; +engine.cache.get("assets/world01.json").then(function(world) { + var $__9 = true; + var $__10 = false; + var $__11 = undefined; + try { + for (var $__7 = void 0, + $__6 = (world)[Symbol.iterator](); !($__9 = ($__7 = $__6.next()).done); $__9 = true) { + var actor = $__7.value; + { + var boulder = engine.factory.create(Actor, "Boulder", actor); + engine.scene.addChild(boulder); + } + } + } catch ($__12) { + $__10 = true; + $__11 = $__12; + } finally { + try { + if (!$__9 && $__6.return != null) { + $__6.return(); + } + } finally { + if ($__10) { + throw $__11; + } + } + } +}); diff --git a/example/build/js/client/Physics.js b/example/build/js/client/Physics.js new file mode 100644 index 0000000..eb8d6e8 --- /dev/null +++ b/example/build/js/client/Physics.js @@ -0,0 +1,32 @@ +"use strict"; +var $__engine_47_core_47_Component__, + $__engine_47_lib_47_gl_45_matrix__; +var Component = ($__engine_47_core_47_Component__ = require("engine/core/Component"), $__engine_47_core_47_Component__ && $__engine_47_core_47_Component__.__esModule && $__engine_47_core_47_Component__ || {default: $__engine_47_core_47_Component__}).default; +var vec2 = ($__engine_47_lib_47_gl_45_matrix__ = require("engine/lib/gl-matrix"), $__engine_47_lib_47_gl_45_matrix__ && $__engine_47_lib_47_gl_45_matrix__.__esModule && $__engine_47_lib_47_gl_45_matrix__ || {default: $__engine_47_lib_47_gl_45_matrix__}).vec2; +var Physics = function($__super) { + function Physics() { + $traceurRuntime.superConstructor(Physics).call(this, "Physics"); + this.velocity = [0, 0]; + } + return ($traceurRuntime.createClass)(Physics, { + update: function(deltaMs) { + var transform = this.actor.getComponent("transform"); + var position = transform.position; + var tmp = vec2.create(); + vec2.add(position, position, vec2.scale(tmp, this.velocity, deltaMs)); + transform.position = position; + }, + setFromJSON: function(json) { + if (!json) + return; + this.velocity = json.velocity; + } + }, {}, $__super); +}(Component); +var $__default = Physics; +Object.defineProperties(module.exports, { + default: {get: function() { + return $__default; + }}, + __esModule: {value: true} +}); diff --git a/example/build/js/client/PlayerController.js b/example/build/js/client/PlayerController.js new file mode 100644 index 0000000..534f095 --- /dev/null +++ b/example/build/js/client/PlayerController.js @@ -0,0 +1,70 @@ +"use strict"; +var $__engine_47_core_47_Component__, + $__engine_47_lib_47_gl_45_matrix__, + $__engine_47_Engine__; +var Component = ($__engine_47_core_47_Component__ = require("engine/core/Component"), $__engine_47_core_47_Component__ && $__engine_47_core_47_Component__.__esModule && $__engine_47_core_47_Component__ || {default: $__engine_47_core_47_Component__}).default; +var vec2 = ($__engine_47_lib_47_gl_45_matrix__ = require("engine/lib/gl-matrix"), $__engine_47_lib_47_gl_45_matrix__ && $__engine_47_lib_47_gl_45_matrix__.__esModule && $__engine_47_lib_47_gl_45_matrix__ || {default: $__engine_47_lib_47_gl_45_matrix__}).vec2; +var engine = ($__engine_47_Engine__ = require("engine/Engine"), $__engine_47_Engine__ && $__engine_47_Engine__.__esModule && $__engine_47_Engine__ || {default: $__engine_47_Engine__}).default; +var PlayerController = function($__super) { + function PlayerController(connection) { + var $__5, + $__6, + $__7, + $__8; + $traceurRuntime.superConstructor(PlayerController).call(this, "PlayerController"); + this.keyStates = {}; + this.last = {}; + this.fire = false; + this.mouse = [window.innerWidth / 2, window.innerHeight / 2]; + addEventListener("keydown", ($__5 = this, function(e) { + $__5.keyStates[String.fromCharCode(e.which)] = true; + })); + addEventListener("keyup", ($__6 = this, function(e) { + $__6.keyStates[String.fromCharCode(e.which)] = false; + })); + addEventListener("mousemove", ($__7 = this, function(e) { + $__7.mouse[0] = e.pageX; + $__7.mouse[1] = e.pageY; + })); + addEventListener("mousedown", ($__8 = this, function(e) { + $__8.fire = true; + })); + } + return ($traceurRuntime.createClass)(PlayerController, {update: function(deltaMs) { + var events = {}; + var keyStates = this.keyStates; + var last = this.last; + for (var key in keyStates) { + if (keyStates[key] !== last[key]) { + if (key == "W") { + events["SET_MOVING_UP"] = keyStates[key]; + } + if (key == "A") { + events["SET_MOVING_LEFT"] = keyStates[key]; + } + if (key == "S") { + events["SET_MOVING_DOWN"] = keyStates[key]; + } + if (key == "D") { + events["SET_MOVING_RIGHT"] = keyStates[key]; + } + } + } + if (Object.keys(events).length) { + engine.emit("PlayerController:events", events); + this.last = JSON.parse(JSON.stringify(this.keyStates)); + } + engine.emit("PlayerController:mouse", engine.camera.mouseToWorld(this.mouse)); + if (this.fire) { + this.fire = false; + engine.emit("PlayerController:events", {FIRE: true}); + } + }}, {}, $__super); +}(Component); +var $__default = PlayerController; +Object.defineProperties(module.exports, { + default: {get: function() { + return $__default; + }}, + __esModule: {value: true} +}); diff --git a/example/build/js/client/initialize.js b/example/build/js/client/initialize.js new file mode 100644 index 0000000..b39c9a1 --- /dev/null +++ b/example/build/js/client/initialize.js @@ -0,0 +1,51 @@ +"use strict"; +var $__engine_47_Initialize__, + $__engine_47_components_47_Transform2D__, + $___46__46__47_shared_47_PlayerLogic__, + $__PlayerController__, + $___46__46__47_shared_47_GameLogic__, + $__engine_47_components_47_Sprite__, + $__Physics__, + $__engine_47_components_47_Lifetime__, + $___46__46__47_shared_47_constants__; +var Initialize = ($__engine_47_Initialize__ = require("engine/Initialize"), $__engine_47_Initialize__ && $__engine_47_Initialize__.__esModule && $__engine_47_Initialize__ || {default: $__engine_47_Initialize__}).default; +var Transform2D = ($__engine_47_components_47_Transform2D__ = require("engine/components/Transform2D"), $__engine_47_components_47_Transform2D__ && $__engine_47_components_47_Transform2D__.__esModule && $__engine_47_components_47_Transform2D__ || {default: $__engine_47_components_47_Transform2D__}).default; +var PlayerLogic = ($___46__46__47_shared_47_PlayerLogic__ = require("../shared/PlayerLogic"), $___46__46__47_shared_47_PlayerLogic__ && $___46__46__47_shared_47_PlayerLogic__.__esModule && $___46__46__47_shared_47_PlayerLogic__ || {default: $___46__46__47_shared_47_PlayerLogic__}).default; +var PlayerController = ($__PlayerController__ = require("./PlayerController"), $__PlayerController__ && $__PlayerController__.__esModule && $__PlayerController__ || {default: $__PlayerController__}).default; +var GameLogic = ($___46__46__47_shared_47_GameLogic__ = require("../shared/GameLogic"), $___46__46__47_shared_47_GameLogic__ && $___46__46__47_shared_47_GameLogic__.__esModule && $___46__46__47_shared_47_GameLogic__ || {default: $___46__46__47_shared_47_GameLogic__}).default; +var Sprite = ($__engine_47_components_47_Sprite__ = require("engine/components/Sprite"), $__engine_47_components_47_Sprite__ && $__engine_47_components_47_Sprite__.__esModule && $__engine_47_components_47_Sprite__ || {default: $__engine_47_components_47_Sprite__}).default; +var Physics = ($__Physics__ = require("./Physics"), $__Physics__ && $__Physics__.__esModule && $__Physics__ || {default: $__Physics__}).default; +var Lifetime = ($__engine_47_components_47_Lifetime__ = require("engine/components/Lifetime"), $__engine_47_components_47_Lifetime__ && $__engine_47_components_47_Lifetime__.__esModule && $__engine_47_components_47_Lifetime__ || {default: $__engine_47_components_47_Lifetime__}).default; +var PEERJS_API_KEY = ($___46__46__47_shared_47_constants__ = require("../shared/constants"), $___46__46__47_shared_47_constants__ && $___46__46__47_shared_47_constants__.__esModule && $___46__46__47_shared_47_constants__ || {default: $___46__46__47_shared_47_constants__}).PEERJS_API_KEY; +var $__default = function() { + Initialize({ + scene: { + id: 1, + type: "Scene" + }, + scheduler: {deltaMs: 17}, + factory: { + skeletons: { + "assets/entities/client/player.json": "Player", + "assets/entities/client/scene.json": "Scene", + "assets/entities/client/particle.json": "Particle", + "assets/entities/client/boulder.json": "Boulder" + }, + components: { + "Transform2D": Transform2D, + "PlayerLogic": PlayerLogic, + "PlayerController": PlayerController, + "GameLogic": GameLogic, + "Sprite": Sprite, + "Physics": Physics, + "Lifetime": Lifetime + } + } + }); +}; +Object.defineProperties(module.exports, { + default: {get: function() { + return $__default; + }}, + __esModule: {value: true} +}); diff --git a/example/build/js/server/initialize.js b/example/build/js/server/initialize.js new file mode 100644 index 0000000..45ac968 --- /dev/null +++ b/example/build/js/server/initialize.js @@ -0,0 +1,41 @@ +"use strict"; +var $__engine_47_Initialize__, + $__engine_47_components_47_Transform2D__, + $__engine_47_components_47_Synchronizer__, + $___46__46__47_shared_47_constants__, + $___46__46__47_shared_47_PlayerLogic__; +var Initialize = ($__engine_47_Initialize__ = require("engine/Initialize"), $__engine_47_Initialize__ && $__engine_47_Initialize__.__esModule && $__engine_47_Initialize__ || {default: $__engine_47_Initialize__}).default; +var Transform2D = ($__engine_47_components_47_Transform2D__ = require("engine/components/Transform2D"), $__engine_47_components_47_Transform2D__ && $__engine_47_components_47_Transform2D__.__esModule && $__engine_47_components_47_Transform2D__ || {default: $__engine_47_components_47_Transform2D__}).default; +var Synchronizer = ($__engine_47_components_47_Synchronizer__ = require("engine/components/Synchronizer"), $__engine_47_components_47_Synchronizer__ && $__engine_47_components_47_Synchronizer__.__esModule && $__engine_47_components_47_Synchronizer__ || {default: $__engine_47_components_47_Synchronizer__}).default; +var PEERJS_API_KEY = ($___46__46__47_shared_47_constants__ = require("../shared/constants"), $___46__46__47_shared_47_constants__ && $___46__46__47_shared_47_constants__.__esModule && $___46__46__47_shared_47_constants__ || {default: $___46__46__47_shared_47_constants__}).PEERJS_API_KEY; +var PlayerLogic = ($___46__46__47_shared_47_PlayerLogic__ = require("../shared/PlayerLogic"), $___46__46__47_shared_47_PlayerLogic__ && $___46__46__47_shared_47_PlayerLogic__.__esModule && $___46__46__47_shared_47_PlayerLogic__ || {default: $___46__46__47_shared_47_PlayerLogic__}).default; +var $__default = function() { + Initialize({ + network: { + name: "game", + key: PEERJS_API_KEY + }, + scene: { + id: 1, + type: "Scene" + }, + scheduler: {deltaMs: 33}, + factory: { + skeletons: { + "assets/entities/server/player.json": "Player", + "assets/entities/server/scene.json": "Scene" + }, + components: { + "Transform2D": Transform2D, + "Synchronizer": Synchronizer, + "PlayerLogic": PlayerLogic + } + } + }); +}; +Object.defineProperties(module.exports, { + default: {get: function() { + return $__default; + }}, + __esModule: {value: true} +}); diff --git a/example/build/js/shared/GameLogic.js b/example/build/js/shared/GameLogic.js new file mode 100644 index 0000000..b5aca17 --- /dev/null +++ b/example/build/js/shared/GameLogic.js @@ -0,0 +1,31 @@ +"use strict"; +var $__engine_47_core_47_Component__, + $__engine_47_Engine__; +var Component = ($__engine_47_core_47_Component__ = require("engine/core/Component"), $__engine_47_core_47_Component__ && $__engine_47_core_47_Component__.__esModule && $__engine_47_core_47_Component__ || {default: $__engine_47_core_47_Component__}).default; +var engine = ($__engine_47_Engine__ = require("engine/Engine"), $__engine_47_Engine__ && $__engine_47_Engine__.__esModule && $__engine_47_Engine__ || {default: $__engine_47_Engine__}).default; +var GameLogic = function($__super) { + function GameLogic() { + var $__5, + $__6; + $traceurRuntime.superConstructor(GameLogic).call(this, "GameLogic"); + this.player = null; + engine.on("PlayerController:events", ($__5 = this, function(events) { + if ($__5.player) { + $__5.player.getComponent("PlayerLogic").handleEvents(events); + } + })); + engine.on("PlayerController:mouse", ($__6 = this, function(events) { + if ($__6.player) { + $__6.player.getComponent("PlayerLogic").handleMouse(events); + } + })); + } + return ($traceurRuntime.createClass)(GameLogic, {}, {}, $__super); +}(Component); +var $__default = GameLogic; +Object.defineProperties(module.exports, { + default: {get: function() { + return $__default; + }}, + __esModule: {value: true} +}); diff --git a/example/build/js/shared/PlayerLogic.js b/example/build/js/shared/PlayerLogic.js new file mode 100644 index 0000000..f9157ce --- /dev/null +++ b/example/build/js/shared/PlayerLogic.js @@ -0,0 +1,89 @@ +"use strict"; +var $__engine_47_core_47_Component__, + $__engine_47_lib_47_gl_45_matrix__, + $__engine_47_core_47_Actor__, + $__engine_47_processes_47_Interval__, + $__engine_47_math_47_random__; +var Component = ($__engine_47_core_47_Component__ = require("engine/core/Component"), $__engine_47_core_47_Component__ && $__engine_47_core_47_Component__.__esModule && $__engine_47_core_47_Component__ || {default: $__engine_47_core_47_Component__}).default; +var vec2 = ($__engine_47_lib_47_gl_45_matrix__ = require("engine/lib/gl-matrix"), $__engine_47_lib_47_gl_45_matrix__ && $__engine_47_lib_47_gl_45_matrix__.__esModule && $__engine_47_lib_47_gl_45_matrix__ || {default: $__engine_47_lib_47_gl_45_matrix__}).vec2; +var Actor = ($__engine_47_core_47_Actor__ = require("engine/core/Actor"), $__engine_47_core_47_Actor__ && $__engine_47_core_47_Actor__.__esModule && $__engine_47_core_47_Actor__ || {default: $__engine_47_core_47_Actor__}).default; +var Interval = ($__engine_47_processes_47_Interval__ = require("engine/processes/Interval"), $__engine_47_processes_47_Interval__ && $__engine_47_processes_47_Interval__.__esModule && $__engine_47_processes_47_Interval__ || {default: $__engine_47_processes_47_Interval__}).default; +var randomRange = ($__engine_47_math_47_random__ = require("engine/math/random"), $__engine_47_math_47_random__ && $__engine_47_math_47_random__.__esModule && $__engine_47_math_47_random__ || {default: $__engine_47_math_47_random__}).randomRange; +var PlayerLogic = function($__super) { + function PlayerLogic() { + var $__8; + $traceurRuntime.superConstructor(PlayerLogic).call(this, "PlayerLogic"); + this.movingLeft = false; + this.movingRight = false; + this.movingUp = false; + this.movingDown = false; + this.target = [1, 0]; + this.speed = .7; + this.fire = false; + this.processes = new Interval(($__8 = this, function(now, deltaMs) { + var world = $__8.target; + for (var i = 0; i < 10; i++) { + var actor = engine.factory.create(Actor, "Particle", { + Transform2D: {position: world}, + Physics: {velocity: [randomRange(-.5, .5), randomRange(-.5, .5)]} + }); + engine.scene.addChild(actor); + } + }), 500); + engine.scheduler.addChild(this.processes); + } + return ($traceurRuntime.createClass)(PlayerLogic, { + destructor: function() { + $traceurRuntime.superGet(this, PlayerLogic.prototype, "destructor").call(this); + this.processes.succeed(); + }, + update: function(deltaMs) { + var actor = this.actor; + var transform = actor.getComponent("transform"); + var position = transform.position; + var speed = this.speed; + if (this.movingLeft) { + position[0] -= speed * deltaMs; + } + if (this.movingRight) { + position[0] += speed * deltaMs; + } + if (this.movingUp) { + position[1] += speed * deltaMs; + } + if (this.movingDown) { + position[1] -= speed * deltaMs; + } + transform.position = position; + var world = this.actor.getComponent("transform").getWorldPosition(); + var dif = vec2.create(); + vec2.sub(dif, this.target, position); + transform.setDirection(dif); + if (this.fire) { + this.fire = false; + } + }, + handleEvents: function(events) { + if (events["SET_MOVING_UP"] !== undefined) + this.movingUp = events["SET_MOVING_UP"]; + if (events["SET_MOVING_DOWN"] !== undefined) + this.movingDown = events["SET_MOVING_DOWN"]; + if (events["SET_MOVING_LEFT"] !== undefined) + this.movingLeft = events["SET_MOVING_LEFT"]; + if (events["SET_MOVING_RIGHT"] !== undefined) + this.movingRight = events["SET_MOVING_RIGHT"]; + if (events["FIRE"]) + this.fire = true; + }, + handleMouse: function(mouse) { + this.target = mouse; + } + }, {}, $__super); +}(Component); +var $__default = PlayerLogic; +Object.defineProperties(module.exports, { + default: {get: function() { + return $__default; + }}, + __esModule: {value: true} +}); diff --git a/example/build/js/shared/constants.js b/example/build/js/shared/constants.js new file mode 100644 index 0000000..8d9cdfe --- /dev/null +++ b/example/build/js/shared/constants.js @@ -0,0 +1,8 @@ +"use strict"; +var PEERJS_API_KEY = "vu5babwam1tnjyvi"; +Object.defineProperties(module.exports, { + PEERJS_API_KEY: {get: function() { + return PEERJS_API_KEY; + }}, + __esModule: {value: true} +}); diff --git a/example/build/server.js b/example/build/server.js new file mode 100644 index 0000000..cc53ef1 --- /dev/null +++ b/example/build/server.js @@ -0,0 +1,17 @@ +"use strict"; +var $__js_47_server_47_initialize__, + $__engine_47_Engine__; +var initialize = ($__js_47_server_47_initialize__ = require("./js/server/initialize"), $__js_47_server_47_initialize__ && $__js_47_server_47_initialize__.__esModule && $__js_47_server_47_initialize__ || {default: $__js_47_server_47_initialize__}).default; +var engine = ($__engine_47_Engine__ = require("engine/Engine"), $__engine_47_Engine__ && $__engine_47_Engine__.__esModule && $__engine_47_Engine__ || {default: $__engine_47_Engine__}).default; +initialize(); +var main = function() { + console.info("Cruft Running"); +}; +engine.running.then(main); +window.engine = engine; +window.kill = function() { + engine.scheduler.kill(); +}; +window.onbeforeonload = function() { + engine.network.peer.destroy(); +}; diff --git a/example/client.html b/example/client.html deleted file mode 100644 index 111a5d3..0000000 --- a/example/client.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/example/client.js b/example/client.js index 00a86d9..91e9d5f 100644 --- a/example/client.js +++ b/example/client.js @@ -10,7 +10,6 @@ initialize(); //think about map loading in terms of syncing id's of every asset. Like what if a rock needs to be of the sync. - var main = () => { engine.camera = new Camera2D(window.innerWidth, window.innerHeight); //also todo make a real camera class. diff --git a/example/css/style.css b/example/css/style.css deleted file mode 100644 index e69de29..0000000 diff --git a/example/js/client/initialize.js b/example/js/client/initialize.js index 35204fe..cfe2c2b 100644 --- a/example/js/client/initialize.js +++ b/example/js/client/initialize.js @@ -1,14 +1,14 @@ //engine import Initialize from "engine/Initialize"; import Transform2D from "engine/components/Transform2D"; -import PlayerLogic from "../server/PlayerLogic"; +import PlayerLogic from "../shared/PlayerLogic"; import PlayerController from "./PlayerController"; -import GameLogic from "../server/GameLogic" +import GameLogic from "../shared/GameLogic" import Sprite from "engine/components/Sprite"; import Physics from "./Physics"; import Lifetime from "engine/components/Lifetime"; //example -import {PEERJS_API_KEY} from "../constants"; +import {PEERJS_API_KEY} from "../shared/constants"; //maybe include some of this stuff within the Map File? //No reason map file can't be valid javacript //could just have like a //map.get.init() or somthing diff --git a/example/js/server/initialize.js b/example/js/server/initialize.js index 8354731..6eb98d6 100644 --- a/example/js/server/initialize.js +++ b/example/js/server/initialize.js @@ -4,8 +4,8 @@ import Transform2D from "engine/components/Transform2D"; import Synchronizer from "engine/components/Synchronizer"; //example -import {PEERJS_API_KEY} from "../constants"; -import PlayerLogic from "./PlayerLogic"; +import {PEERJS_API_KEY} from "../shared/constants"; +import PlayerLogic from "../shared/PlayerLogic"; export default () =>{ diff --git a/example/js/server/GameLogic.js b/example/js/shared/GameLogic.js similarity index 100% rename from example/js/server/GameLogic.js rename to example/js/shared/GameLogic.js diff --git a/example/js/server/PlayerLogic.js b/example/js/shared/PlayerLogic.js similarity index 100% rename from example/js/server/PlayerLogic.js rename to example/js/shared/PlayerLogic.js diff --git a/example/js/constants.js b/example/js/shared/constants.js similarity index 100% rename from example/js/constants.js rename to example/js/shared/constants.js diff --git a/example/package.json b/example/package.json deleted file mode 100644 index 6957fd1..0000000 --- a/example/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "example", - "version": "0.0.0", - "description": "", - "main": "client.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "start": "node server.js" - }, - "author": "", - "license": "BSD-2-Clause", - "dependencies": { - "express": "~4.13.4", - "socket.io": "~1.4.5" - } -} diff --git a/example/server.html b/example/server.html deleted file mode 100644 index 3da497f..0000000 --- a/example/server.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index 74a9a61..a8259ed 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -6,11 +6,32 @@ var concat = require("gulp-concat"); var del = require("del"); var gls = require('gulp-live-server'); var runSequence = require('run-sequence'); +var cache = require('gulp-cached'); var server = gls.new("server.js"); + var ENGINE_SRC = ["engine/**/*.js"]; -var GAME_SRC = ["example/js/**/**.js", "example/server.js", "example/client.js"]; +var RAW_SRC = [ + "example/js/client/**/*.js", + "example/js/server/**/*.js", + "example/js/shared/**/*.js", + "example/client.js", + "example/server.js" + ]; + +var CLIENT_SRC = [ + "example/build/js/client/**/*.js", + "example/build/js/shared/**/*.js", + "example/build/client.js", + "example/build/node_modules/engine/**/*.js" + ]; +var SERVER_SRC = [ + "example/build/js/server/**/*.js", + "example/build/js/shared/**/*.js", + "example/build/server.js", + "example/build/node_modules/engine/**/*.js" + ]; var onerror = function (e) { console.log("\033[31m WARNING: YOUR STUFF ISNT TRANSPILING") @@ -18,74 +39,63 @@ var onerror = function (e) { this.emit("end"); } -gulp.task("js:clean:tmp", function () { - return del(["tmp/"]); -}) -gulp.task("js:clean:dist", function () { - return del(["example/dist/**.js"]); +gulp.task("js:clean", function () { + return del(["example/build/"]); }) gulp.task("js:engine", function () { return gulp.src(ENGINE_SRC) + .pipe(cache('engine')) .pipe(tracuer()) .on("error", onerror) - .pipe(gulp.dest("tmp/node_modules/engine")) + .pipe(gulp.dest("example/build/node_modules/engine/")) }) -gulp.task("js:game", function () { - return gulp.src(GAME_SRC, {base :"./example"}) +gulp.task("js:tracuer", function () { + return gulp.src(RAW_SRC, {base :"./example"}) + .pipe(cache('source')) .pipe(tracuer()) .on("error", onerror) - .pipe(gulp.dest("tmp/")) + .pipe(gulp.dest("example/build/")) }) -gulp.task("js:browserify:client", function () { - return browserify("tmp/client.js") +gulp.task("js:client", function () { + return browserify("example/build/client.js") .bundle() .on("error", onerror) .pipe(source('client.js')) .pipe(gulp.dest("example/dist/")) }) -gulp.task("js:browserify:server", function () { - return browserify("tmp/server.js") +gulp.task("js:server", function () { + return browserify("example/build/server.js") .bundle() .on("error", onerror) - .pipe(source('server.js')) + .pipe(source("server.js")) .pipe(gulp.dest("example/dist/")) }) -gulp.task("js:build:client", function () { - return gulp.src(["engine/lib/gl-matrix.js", "tmp/dist/client.js"]) - .pipe(concat("client.js")) - .pipe(gulp.dest("example/dist")) -}) - -gulp.task("js:build:server", function () { - return gulp.src(["engine/lib/gl-matrix.js", "tmp/dist/server.js"]) - .pipe(concat("server.js")) - .pipe(gulp.dest("example/dist/")) -}) -gulp.task("js:all", function () { - //server.start(server); - runSequence( - ["js:clean:tmp", "js:clean:dist"], - ["js:engine", "js:game"], - ["js:browserify:client", "js:browserify:server"], - "server" - ); +gulp.task("js:watch", function () { + gulp.watch(ENGINE_SRC, ["js:engine"]); + gulp.watch(RAW_SRC, ["js:tracuer"]); + gulp.watch(CLIENT_SRC, ["js:client"]) + gulp.watch(SERVER_SRC, ["js:server"]); }) gulp.task("server", function () { - server.start.bind(server)(); + var server = gls.static('example/dist', 8888); + server.start(); }) //echo fs.inotify.max_user_watches=582222 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p -gulp.task("default", ["js:all"], function () { - - gulp.watch(ENGINE_SRC, ["js:all"]); - gulp.watch(GAME_SRC, ["js:all"]); - //gulp.watch(SERVER_SRC, ["js:all"]); +gulp.task("default", function () { + runSequence( + "js:clean", + ["js:engine", "js:tracuer"], + ["js:client", "js:server"], + "js:watch", + "server" + ); }) \ No newline at end of file diff --git a/package.json b/package.json index 228f8c2..5d58fb7 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,7 @@ "example": "example" }, "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "start": "node server.js" + "test": "gulp" }, "repository": { "type": "git", @@ -28,9 +27,7 @@ "browserify": "~13.0.0", "gulp-live-server": "0.0.29", "express": "~4.13.4", - "run-sequence": "~1.1.5" - }, - "scripts" : { - "test" : "gulp" + "run-sequence": "~1.1.5", + "gulp-cached": "~1.1.0" } } diff --git a/server.js b/server.js deleted file mode 100644 index c03bff9..0000000 --- a/server.js +++ /dev/null @@ -1,8 +0,0 @@ - -var express = require("express"); - -var app = express(); - app.use(express.static(__dirname + "/example/")); - app.listen(8080); - -console.log("Server listening on Port 8080") \ No newline at end of file