diff --git a/packages/client/package.json b/packages/client/package.json
new file mode 100644
index 00000000..507a09b0
--- /dev/null
+++ b/packages/client/package.json
@@ -0,0 +1,24 @@
+{
+ "name": "client",
+ "version": "0.0.1",
+ "devDependencies": {
+ "cross-env": "^5.0.5",
+ "http-server": "^0.12.3",
+ "nodemon": "^2.0.7",
+ "tsc-watch": "^4.2.9",
+ "tsconfig-paths-webpack-plugin": "^3.5.1"
+ },
+ "peerDependencies": {
+ "shared": "0.0.1"
+ },
+ "dependencies": {
+ "socket.io-client": "^4.0.0",
+ "three": "^0.127.0",
+ "typescript": "^4.2.3"
+ },
+ "scripts": {
+ "build": "tsc --build",
+ "start:dev": "tsc-watch --onSuccess 'http-server'",
+ "start": "node ./dist/index.js"
+ }
+}
diff --git a/client/resources/background-2.jpg b/packages/client/resources/background-2.jpg
similarity index 100%
rename from client/resources/background-2.jpg
rename to packages/client/resources/background-2.jpg
diff --git a/client/resources/background-3.png b/packages/client/resources/background-3.png
similarity index 100%
rename from client/resources/background-3.png
rename to packages/client/resources/background-3.png
diff --git a/client/resources/background.jpg b/packages/client/resources/background.jpg
similarity index 100%
rename from client/resources/background.jpg
rename to packages/client/resources/background.jpg
diff --git a/client/resources/characters/guard.glb b/packages/client/resources/characters/guard.glb
similarity index 100%
rename from client/resources/characters/guard.glb
rename to packages/client/resources/characters/guard.glb
diff --git a/client/resources/characters/paladin.glb b/packages/client/resources/characters/paladin.glb
similarity index 100%
rename from client/resources/characters/paladin.glb
rename to packages/client/resources/characters/paladin.glb
diff --git a/client/resources/characters/readme.txt b/packages/client/resources/characters/readme.txt
similarity index 100%
rename from client/resources/characters/readme.txt
rename to packages/client/resources/characters/readme.txt
diff --git a/client/resources/characters/sorceror.glb b/packages/client/resources/characters/sorceror.glb
similarity index 100%
rename from client/resources/characters/sorceror.glb
rename to packages/client/resources/characters/sorceror.glb
diff --git a/client/resources/characters/warrok.glb b/packages/client/resources/characters/warrok.glb
similarity index 100%
rename from client/resources/characters/warrok.glb
rename to packages/client/resources/characters/warrok.glb
diff --git a/client/resources/characters/zombie-guy.glb b/packages/client/resources/characters/zombie-guy.glb
similarity index 100%
rename from client/resources/characters/zombie-guy.glb
rename to packages/client/resources/characters/zombie-guy.glb
diff --git a/client/resources/characters/zombie.glb b/packages/client/resources/characters/zombie.glb
similarity index 100%
rename from client/resources/characters/zombie.glb
rename to packages/client/resources/characters/zombie.glb
diff --git a/client/resources/icons/readme.txt b/packages/client/resources/icons/readme.txt
similarity index 100%
rename from client/resources/icons/readme.txt
rename to packages/client/resources/icons/readme.txt
diff --git a/client/resources/icons/ui/backpack.png b/packages/client/resources/icons/ui/backpack.png
similarity index 100%
rename from client/resources/icons/ui/backpack.png
rename to packages/client/resources/icons/ui/backpack.png
diff --git a/client/resources/icons/ui/health-bar.png b/packages/client/resources/icons/ui/health-bar.png
similarity index 100%
rename from client/resources/icons/ui/health-bar.png
rename to packages/client/resources/icons/ui/health-bar.png
diff --git a/client/resources/icons/ui/inventory-character.png b/packages/client/resources/icons/ui/inventory-character.png
similarity index 100%
rename from client/resources/icons/ui/inventory-character.png
rename to packages/client/resources/icons/ui/inventory-character.png
diff --git a/client/resources/icons/ui/skills.png b/packages/client/resources/icons/ui/skills.png
similarity index 100%
rename from client/resources/icons/ui/skills.png
rename to packages/client/resources/icons/ui/skills.png
diff --git a/client/resources/icons/ui/tied-scroll.png b/packages/client/resources/icons/ui/tied-scroll.png
similarity index 100%
rename from client/resources/icons/ui/tied-scroll.png
rename to packages/client/resources/icons/ui/tied-scroll.png
diff --git a/client/resources/icons/weapons/hammer-64.png b/packages/client/resources/icons/weapons/hammer-64.png
similarity index 100%
rename from client/resources/icons/weapons/hammer-64.png
rename to packages/client/resources/icons/weapons/hammer-64.png
diff --git a/client/resources/icons/weapons/pointy-sword-64.png b/packages/client/resources/icons/weapons/pointy-sword-64.png
similarity index 100%
rename from client/resources/icons/weapons/pointy-sword-64.png
rename to packages/client/resources/icons/weapons/pointy-sword-64.png
diff --git a/client/resources/icons/weapons/pointy-sword.png b/packages/client/resources/icons/weapons/pointy-sword.png
similarity index 100%
rename from client/resources/icons/weapons/pointy-sword.png
rename to packages/client/resources/icons/weapons/pointy-sword.png
diff --git a/client/resources/icons/weapons/thor-hammer.png b/packages/client/resources/icons/weapons/thor-hammer.png
similarity index 100%
rename from client/resources/icons/weapons/thor-hammer.png
rename to packages/client/resources/icons/weapons/thor-hammer.png
diff --git a/client/resources/icons/weapons/war-axe-64.png b/packages/client/resources/icons/weapons/war-axe-64.png
similarity index 100%
rename from client/resources/icons/weapons/war-axe-64.png
rename to packages/client/resources/icons/weapons/war-axe-64.png
diff --git a/client/resources/icons/weapons/war-axe.png b/packages/client/resources/icons/weapons/war-axe.png
similarity index 100%
rename from client/resources/icons/weapons/war-axe.png
rename to packages/client/resources/icons/weapons/war-axe.png
diff --git a/client/resources/nature/Blends/BirchTree_1.blend b/packages/client/resources/nature/Blends/BirchTree_1.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_1.blend
rename to packages/client/resources/nature/Blends/BirchTree_1.blend
diff --git a/client/resources/nature/Blends/BirchTree_2.blend b/packages/client/resources/nature/Blends/BirchTree_2.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_2.blend
rename to packages/client/resources/nature/Blends/BirchTree_2.blend
diff --git a/client/resources/nature/Blends/BirchTree_3.blend b/packages/client/resources/nature/Blends/BirchTree_3.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_3.blend
rename to packages/client/resources/nature/Blends/BirchTree_3.blend
diff --git a/client/resources/nature/Blends/BirchTree_4.blend b/packages/client/resources/nature/Blends/BirchTree_4.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_4.blend
rename to packages/client/resources/nature/Blends/BirchTree_4.blend
diff --git a/client/resources/nature/Blends/BirchTree_5.blend b/packages/client/resources/nature/Blends/BirchTree_5.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_5.blend
rename to packages/client/resources/nature/Blends/BirchTree_5.blend
diff --git a/client/resources/nature/Blends/BirchTree_Autumn_1.blend b/packages/client/resources/nature/Blends/BirchTree_Autumn_1.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_Autumn_1.blend
rename to packages/client/resources/nature/Blends/BirchTree_Autumn_1.blend
diff --git a/client/resources/nature/Blends/BirchTree_Autumn_2.blend b/packages/client/resources/nature/Blends/BirchTree_Autumn_2.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_Autumn_2.blend
rename to packages/client/resources/nature/Blends/BirchTree_Autumn_2.blend
diff --git a/client/resources/nature/Blends/BirchTree_Autumn_3.blend b/packages/client/resources/nature/Blends/BirchTree_Autumn_3.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_Autumn_3.blend
rename to packages/client/resources/nature/Blends/BirchTree_Autumn_3.blend
diff --git a/client/resources/nature/Blends/BirchTree_Autumn_4.blend b/packages/client/resources/nature/Blends/BirchTree_Autumn_4.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_Autumn_4.blend
rename to packages/client/resources/nature/Blends/BirchTree_Autumn_4.blend
diff --git a/client/resources/nature/Blends/BirchTree_Autumn_5.blend b/packages/client/resources/nature/Blends/BirchTree_Autumn_5.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_Autumn_5.blend
rename to packages/client/resources/nature/Blends/BirchTree_Autumn_5.blend
diff --git a/client/resources/nature/Blends/BirchTree_Dead_1.blend b/packages/client/resources/nature/Blends/BirchTree_Dead_1.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_Dead_1.blend
rename to packages/client/resources/nature/Blends/BirchTree_Dead_1.blend
diff --git a/client/resources/nature/Blends/BirchTree_Dead_2.blend b/packages/client/resources/nature/Blends/BirchTree_Dead_2.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_Dead_2.blend
rename to packages/client/resources/nature/Blends/BirchTree_Dead_2.blend
diff --git a/client/resources/nature/Blends/BirchTree_Dead_3.blend b/packages/client/resources/nature/Blends/BirchTree_Dead_3.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_Dead_3.blend
rename to packages/client/resources/nature/Blends/BirchTree_Dead_3.blend
diff --git a/client/resources/nature/Blends/BirchTree_Dead_4.blend b/packages/client/resources/nature/Blends/BirchTree_Dead_4.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_Dead_4.blend
rename to packages/client/resources/nature/Blends/BirchTree_Dead_4.blend
diff --git a/client/resources/nature/Blends/BirchTree_Dead_5.blend b/packages/client/resources/nature/Blends/BirchTree_Dead_5.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_Dead_5.blend
rename to packages/client/resources/nature/Blends/BirchTree_Dead_5.blend
diff --git a/client/resources/nature/Blends/BirchTree_Dead_Snow_1.blend b/packages/client/resources/nature/Blends/BirchTree_Dead_Snow_1.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_Dead_Snow_1.blend
rename to packages/client/resources/nature/Blends/BirchTree_Dead_Snow_1.blend
diff --git a/client/resources/nature/Blends/BirchTree_Dead_Snow_2.blend b/packages/client/resources/nature/Blends/BirchTree_Dead_Snow_2.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_Dead_Snow_2.blend
rename to packages/client/resources/nature/Blends/BirchTree_Dead_Snow_2.blend
diff --git a/client/resources/nature/Blends/BirchTree_Dead_Snow_3.blend b/packages/client/resources/nature/Blends/BirchTree_Dead_Snow_3.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_Dead_Snow_3.blend
rename to packages/client/resources/nature/Blends/BirchTree_Dead_Snow_3.blend
diff --git a/client/resources/nature/Blends/BirchTree_Dead_Snow_4.blend b/packages/client/resources/nature/Blends/BirchTree_Dead_Snow_4.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_Dead_Snow_4.blend
rename to packages/client/resources/nature/Blends/BirchTree_Dead_Snow_4.blend
diff --git a/client/resources/nature/Blends/BirchTree_Dead_Snow_5.blend b/packages/client/resources/nature/Blends/BirchTree_Dead_Snow_5.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_Dead_Snow_5.blend
rename to packages/client/resources/nature/Blends/BirchTree_Dead_Snow_5.blend
diff --git a/client/resources/nature/Blends/BirchTree_Snow_1.blend b/packages/client/resources/nature/Blends/BirchTree_Snow_1.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_Snow_1.blend
rename to packages/client/resources/nature/Blends/BirchTree_Snow_1.blend
diff --git a/client/resources/nature/Blends/BirchTree_Snow_2.blend b/packages/client/resources/nature/Blends/BirchTree_Snow_2.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_Snow_2.blend
rename to packages/client/resources/nature/Blends/BirchTree_Snow_2.blend
diff --git a/client/resources/nature/Blends/BirchTree_Snow_3.blend b/packages/client/resources/nature/Blends/BirchTree_Snow_3.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_Snow_3.blend
rename to packages/client/resources/nature/Blends/BirchTree_Snow_3.blend
diff --git a/client/resources/nature/Blends/BirchTree_Snow_4.blend b/packages/client/resources/nature/Blends/BirchTree_Snow_4.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_Snow_4.blend
rename to packages/client/resources/nature/Blends/BirchTree_Snow_4.blend
diff --git a/client/resources/nature/Blends/BirchTree_Snow_5.blend b/packages/client/resources/nature/Blends/BirchTree_Snow_5.blend
similarity index 100%
rename from client/resources/nature/Blends/BirchTree_Snow_5.blend
rename to packages/client/resources/nature/Blends/BirchTree_Snow_5.blend
diff --git a/client/resources/nature/Blends/BushBerries_1.blend b/packages/client/resources/nature/Blends/BushBerries_1.blend
similarity index 100%
rename from client/resources/nature/Blends/BushBerries_1.blend
rename to packages/client/resources/nature/Blends/BushBerries_1.blend
diff --git a/client/resources/nature/Blends/BushBerries_2.blend b/packages/client/resources/nature/Blends/BushBerries_2.blend
similarity index 100%
rename from client/resources/nature/Blends/BushBerries_2.blend
rename to packages/client/resources/nature/Blends/BushBerries_2.blend
diff --git a/client/resources/nature/Blends/Bush_1.blend b/packages/client/resources/nature/Blends/Bush_1.blend
similarity index 100%
rename from client/resources/nature/Blends/Bush_1.blend
rename to packages/client/resources/nature/Blends/Bush_1.blend
diff --git a/client/resources/nature/Blends/Bush_2.blend b/packages/client/resources/nature/Blends/Bush_2.blend
similarity index 100%
rename from client/resources/nature/Blends/Bush_2.blend
rename to packages/client/resources/nature/Blends/Bush_2.blend
diff --git a/client/resources/nature/Blends/Bush_Snow_1.blend b/packages/client/resources/nature/Blends/Bush_Snow_1.blend
similarity index 100%
rename from client/resources/nature/Blends/Bush_Snow_1.blend
rename to packages/client/resources/nature/Blends/Bush_Snow_1.blend
diff --git a/client/resources/nature/Blends/Bush_Snow_2.blend b/packages/client/resources/nature/Blends/Bush_Snow_2.blend
similarity index 100%
rename from client/resources/nature/Blends/Bush_Snow_2.blend
rename to packages/client/resources/nature/Blends/Bush_Snow_2.blend
diff --git a/client/resources/nature/Blends/CactusFlower_1.blend b/packages/client/resources/nature/Blends/CactusFlower_1.blend
similarity index 100%
rename from client/resources/nature/Blends/CactusFlower_1.blend
rename to packages/client/resources/nature/Blends/CactusFlower_1.blend
diff --git a/client/resources/nature/Blends/CactusFlowers_2.blend b/packages/client/resources/nature/Blends/CactusFlowers_2.blend
similarity index 100%
rename from client/resources/nature/Blends/CactusFlowers_2.blend
rename to packages/client/resources/nature/Blends/CactusFlowers_2.blend
diff --git a/client/resources/nature/Blends/CactusFlowers_3.blend b/packages/client/resources/nature/Blends/CactusFlowers_3.blend
similarity index 100%
rename from client/resources/nature/Blends/CactusFlowers_3.blend
rename to packages/client/resources/nature/Blends/CactusFlowers_3.blend
diff --git a/client/resources/nature/Blends/CactusFlowers_4.blend b/packages/client/resources/nature/Blends/CactusFlowers_4.blend
similarity index 100%
rename from client/resources/nature/Blends/CactusFlowers_4.blend
rename to packages/client/resources/nature/Blends/CactusFlowers_4.blend
diff --git a/client/resources/nature/Blends/CactusFlowers_5.blend b/packages/client/resources/nature/Blends/CactusFlowers_5.blend
similarity index 100%
rename from client/resources/nature/Blends/CactusFlowers_5.blend
rename to packages/client/resources/nature/Blends/CactusFlowers_5.blend
diff --git a/client/resources/nature/Blends/Cactus_1.blend b/packages/client/resources/nature/Blends/Cactus_1.blend
similarity index 100%
rename from client/resources/nature/Blends/Cactus_1.blend
rename to packages/client/resources/nature/Blends/Cactus_1.blend
diff --git a/client/resources/nature/Blends/Cactus_2.blend b/packages/client/resources/nature/Blends/Cactus_2.blend
similarity index 100%
rename from client/resources/nature/Blends/Cactus_2.blend
rename to packages/client/resources/nature/Blends/Cactus_2.blend
diff --git a/client/resources/nature/Blends/Cactus_3.blend b/packages/client/resources/nature/Blends/Cactus_3.blend
similarity index 100%
rename from client/resources/nature/Blends/Cactus_3.blend
rename to packages/client/resources/nature/Blends/Cactus_3.blend
diff --git a/client/resources/nature/Blends/Cactus_4.blend b/packages/client/resources/nature/Blends/Cactus_4.blend
similarity index 100%
rename from client/resources/nature/Blends/Cactus_4.blend
rename to packages/client/resources/nature/Blends/Cactus_4.blend
diff --git a/client/resources/nature/Blends/Cactus_5.blend b/packages/client/resources/nature/Blends/Cactus_5.blend
similarity index 100%
rename from client/resources/nature/Blends/Cactus_5.blend
rename to packages/client/resources/nature/Blends/Cactus_5.blend
diff --git a/client/resources/nature/Blends/CommonTree_1.blend b/packages/client/resources/nature/Blends/CommonTree_1.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_1.blend
rename to packages/client/resources/nature/Blends/CommonTree_1.blend
diff --git a/client/resources/nature/Blends/CommonTree_2.blend b/packages/client/resources/nature/Blends/CommonTree_2.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_2.blend
rename to packages/client/resources/nature/Blends/CommonTree_2.blend
diff --git a/client/resources/nature/Blends/CommonTree_3.blend b/packages/client/resources/nature/Blends/CommonTree_3.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_3.blend
rename to packages/client/resources/nature/Blends/CommonTree_3.blend
diff --git a/client/resources/nature/Blends/CommonTree_4.blend b/packages/client/resources/nature/Blends/CommonTree_4.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_4.blend
rename to packages/client/resources/nature/Blends/CommonTree_4.blend
diff --git a/client/resources/nature/Blends/CommonTree_5.blend b/packages/client/resources/nature/Blends/CommonTree_5.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_5.blend
rename to packages/client/resources/nature/Blends/CommonTree_5.blend
diff --git a/client/resources/nature/Blends/CommonTree_Autumn_1.blend b/packages/client/resources/nature/Blends/CommonTree_Autumn_1.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_Autumn_1.blend
rename to packages/client/resources/nature/Blends/CommonTree_Autumn_1.blend
diff --git a/client/resources/nature/Blends/CommonTree_Autumn_2.blend b/packages/client/resources/nature/Blends/CommonTree_Autumn_2.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_Autumn_2.blend
rename to packages/client/resources/nature/Blends/CommonTree_Autumn_2.blend
diff --git a/client/resources/nature/Blends/CommonTree_Autumn_3.blend b/packages/client/resources/nature/Blends/CommonTree_Autumn_3.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_Autumn_3.blend
rename to packages/client/resources/nature/Blends/CommonTree_Autumn_3.blend
diff --git a/client/resources/nature/Blends/CommonTree_Autumn_4.blend b/packages/client/resources/nature/Blends/CommonTree_Autumn_4.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_Autumn_4.blend
rename to packages/client/resources/nature/Blends/CommonTree_Autumn_4.blend
diff --git a/client/resources/nature/Blends/CommonTree_Autumn_5.blend b/packages/client/resources/nature/Blends/CommonTree_Autumn_5.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_Autumn_5.blend
rename to packages/client/resources/nature/Blends/CommonTree_Autumn_5.blend
diff --git a/client/resources/nature/Blends/CommonTree_Dead_1.blend b/packages/client/resources/nature/Blends/CommonTree_Dead_1.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_Dead_1.blend
rename to packages/client/resources/nature/Blends/CommonTree_Dead_1.blend
diff --git a/client/resources/nature/Blends/CommonTree_Dead_2.blend b/packages/client/resources/nature/Blends/CommonTree_Dead_2.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_Dead_2.blend
rename to packages/client/resources/nature/Blends/CommonTree_Dead_2.blend
diff --git a/client/resources/nature/Blends/CommonTree_Dead_3.blend b/packages/client/resources/nature/Blends/CommonTree_Dead_3.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_Dead_3.blend
rename to packages/client/resources/nature/Blends/CommonTree_Dead_3.blend
diff --git a/client/resources/nature/Blends/CommonTree_Dead_4.blend b/packages/client/resources/nature/Blends/CommonTree_Dead_4.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_Dead_4.blend
rename to packages/client/resources/nature/Blends/CommonTree_Dead_4.blend
diff --git a/client/resources/nature/Blends/CommonTree_Dead_5.blend b/packages/client/resources/nature/Blends/CommonTree_Dead_5.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_Dead_5.blend
rename to packages/client/resources/nature/Blends/CommonTree_Dead_5.blend
diff --git a/client/resources/nature/Blends/CommonTree_Dead_Snow_1.blend b/packages/client/resources/nature/Blends/CommonTree_Dead_Snow_1.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_Dead_Snow_1.blend
rename to packages/client/resources/nature/Blends/CommonTree_Dead_Snow_1.blend
diff --git a/client/resources/nature/Blends/CommonTree_Dead_Snow_2.blend b/packages/client/resources/nature/Blends/CommonTree_Dead_Snow_2.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_Dead_Snow_2.blend
rename to packages/client/resources/nature/Blends/CommonTree_Dead_Snow_2.blend
diff --git a/client/resources/nature/Blends/CommonTree_Dead_Snow_3.blend b/packages/client/resources/nature/Blends/CommonTree_Dead_Snow_3.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_Dead_Snow_3.blend
rename to packages/client/resources/nature/Blends/CommonTree_Dead_Snow_3.blend
diff --git a/client/resources/nature/Blends/CommonTree_Dead_Snow_4.blend b/packages/client/resources/nature/Blends/CommonTree_Dead_Snow_4.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_Dead_Snow_4.blend
rename to packages/client/resources/nature/Blends/CommonTree_Dead_Snow_4.blend
diff --git a/client/resources/nature/Blends/CommonTree_Dead_Snow_5.blend b/packages/client/resources/nature/Blends/CommonTree_Dead_Snow_5.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_Dead_Snow_5.blend
rename to packages/client/resources/nature/Blends/CommonTree_Dead_Snow_5.blend
diff --git a/client/resources/nature/Blends/CommonTree_Snow_1.blend b/packages/client/resources/nature/Blends/CommonTree_Snow_1.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_Snow_1.blend
rename to packages/client/resources/nature/Blends/CommonTree_Snow_1.blend
diff --git a/client/resources/nature/Blends/CommonTree_Snow_2.blend b/packages/client/resources/nature/Blends/CommonTree_Snow_2.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_Snow_2.blend
rename to packages/client/resources/nature/Blends/CommonTree_Snow_2.blend
diff --git a/client/resources/nature/Blends/CommonTree_Snow_3.blend b/packages/client/resources/nature/Blends/CommonTree_Snow_3.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_Snow_3.blend
rename to packages/client/resources/nature/Blends/CommonTree_Snow_3.blend
diff --git a/client/resources/nature/Blends/CommonTree_Snow_4.blend b/packages/client/resources/nature/Blends/CommonTree_Snow_4.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_Snow_4.blend
rename to packages/client/resources/nature/Blends/CommonTree_Snow_4.blend
diff --git a/client/resources/nature/Blends/CommonTree_Snow_5.blend b/packages/client/resources/nature/Blends/CommonTree_Snow_5.blend
similarity index 100%
rename from client/resources/nature/Blends/CommonTree_Snow_5.blend
rename to packages/client/resources/nature/Blends/CommonTree_Snow_5.blend
diff --git a/client/resources/nature/Blends/Corn_1.blend b/packages/client/resources/nature/Blends/Corn_1.blend
similarity index 100%
rename from client/resources/nature/Blends/Corn_1.blend
rename to packages/client/resources/nature/Blends/Corn_1.blend
diff --git a/client/resources/nature/Blends/Corn_2.blend b/packages/client/resources/nature/Blends/Corn_2.blend
similarity index 100%
rename from client/resources/nature/Blends/Corn_2.blend
rename to packages/client/resources/nature/Blends/Corn_2.blend
diff --git a/client/resources/nature/Blends/Flowers.blend b/packages/client/resources/nature/Blends/Flowers.blend
similarity index 100%
rename from client/resources/nature/Blends/Flowers.blend
rename to packages/client/resources/nature/Blends/Flowers.blend
diff --git a/client/resources/nature/Blends/Grass.blend b/packages/client/resources/nature/Blends/Grass.blend
similarity index 100%
rename from client/resources/nature/Blends/Grass.blend
rename to packages/client/resources/nature/Blends/Grass.blend
diff --git a/client/resources/nature/Blends/Grass_2.blend b/packages/client/resources/nature/Blends/Grass_2.blend
similarity index 100%
rename from client/resources/nature/Blends/Grass_2.blend
rename to packages/client/resources/nature/Blends/Grass_2.blend
diff --git a/client/resources/nature/Blends/Grass_Short.blend b/packages/client/resources/nature/Blends/Grass_Short.blend
similarity index 100%
rename from client/resources/nature/Blends/Grass_Short.blend
rename to packages/client/resources/nature/Blends/Grass_Short.blend
diff --git a/client/resources/nature/Blends/Lilypad.blend b/packages/client/resources/nature/Blends/Lilypad.blend
similarity index 100%
rename from client/resources/nature/Blends/Lilypad.blend
rename to packages/client/resources/nature/Blends/Lilypad.blend
diff --git a/client/resources/nature/Blends/PalmTree_1.blend b/packages/client/resources/nature/Blends/PalmTree_1.blend
similarity index 100%
rename from client/resources/nature/Blends/PalmTree_1.blend
rename to packages/client/resources/nature/Blends/PalmTree_1.blend
diff --git a/client/resources/nature/Blends/PalmTree_2.blend b/packages/client/resources/nature/Blends/PalmTree_2.blend
similarity index 100%
rename from client/resources/nature/Blends/PalmTree_2.blend
rename to packages/client/resources/nature/Blends/PalmTree_2.blend
diff --git a/client/resources/nature/Blends/PalmTree_3.blend b/packages/client/resources/nature/Blends/PalmTree_3.blend
similarity index 100%
rename from client/resources/nature/Blends/PalmTree_3.blend
rename to packages/client/resources/nature/Blends/PalmTree_3.blend
diff --git a/client/resources/nature/Blends/PalmTree_4.blend b/packages/client/resources/nature/Blends/PalmTree_4.blend
similarity index 100%
rename from client/resources/nature/Blends/PalmTree_4.blend
rename to packages/client/resources/nature/Blends/PalmTree_4.blend
diff --git a/client/resources/nature/Blends/PineTree_1.blend b/packages/client/resources/nature/Blends/PineTree_1.blend
similarity index 100%
rename from client/resources/nature/Blends/PineTree_1.blend
rename to packages/client/resources/nature/Blends/PineTree_1.blend
diff --git a/client/resources/nature/Blends/PineTree_2.blend b/packages/client/resources/nature/Blends/PineTree_2.blend
similarity index 100%
rename from client/resources/nature/Blends/PineTree_2.blend
rename to packages/client/resources/nature/Blends/PineTree_2.blend
diff --git a/client/resources/nature/Blends/PineTree_3.blend b/packages/client/resources/nature/Blends/PineTree_3.blend
similarity index 100%
rename from client/resources/nature/Blends/PineTree_3.blend
rename to packages/client/resources/nature/Blends/PineTree_3.blend
diff --git a/client/resources/nature/Blends/PineTree_4.blend b/packages/client/resources/nature/Blends/PineTree_4.blend
similarity index 100%
rename from client/resources/nature/Blends/PineTree_4.blend
rename to packages/client/resources/nature/Blends/PineTree_4.blend
diff --git a/client/resources/nature/Blends/PineTree_5.blend b/packages/client/resources/nature/Blends/PineTree_5.blend
similarity index 100%
rename from client/resources/nature/Blends/PineTree_5.blend
rename to packages/client/resources/nature/Blends/PineTree_5.blend
diff --git a/client/resources/nature/Blends/PineTree_Autumn_1.blend b/packages/client/resources/nature/Blends/PineTree_Autumn_1.blend
similarity index 100%
rename from client/resources/nature/Blends/PineTree_Autumn_1.blend
rename to packages/client/resources/nature/Blends/PineTree_Autumn_1.blend
diff --git a/client/resources/nature/Blends/PineTree_Autumn_2.blend b/packages/client/resources/nature/Blends/PineTree_Autumn_2.blend
similarity index 100%
rename from client/resources/nature/Blends/PineTree_Autumn_2.blend
rename to packages/client/resources/nature/Blends/PineTree_Autumn_2.blend
diff --git a/client/resources/nature/Blends/PineTree_Autumn_3.blend b/packages/client/resources/nature/Blends/PineTree_Autumn_3.blend
similarity index 100%
rename from client/resources/nature/Blends/PineTree_Autumn_3.blend
rename to packages/client/resources/nature/Blends/PineTree_Autumn_3.blend
diff --git a/client/resources/nature/Blends/PineTree_Autumn_4.blend b/packages/client/resources/nature/Blends/PineTree_Autumn_4.blend
similarity index 100%
rename from client/resources/nature/Blends/PineTree_Autumn_4.blend
rename to packages/client/resources/nature/Blends/PineTree_Autumn_4.blend
diff --git a/client/resources/nature/Blends/PineTree_Autumn_5.blend b/packages/client/resources/nature/Blends/PineTree_Autumn_5.blend
similarity index 100%
rename from client/resources/nature/Blends/PineTree_Autumn_5.blend
rename to packages/client/resources/nature/Blends/PineTree_Autumn_5.blend
diff --git a/client/resources/nature/Blends/PineTree_Snow_1.blend b/packages/client/resources/nature/Blends/PineTree_Snow_1.blend
similarity index 100%
rename from client/resources/nature/Blends/PineTree_Snow_1.blend
rename to packages/client/resources/nature/Blends/PineTree_Snow_1.blend
diff --git a/client/resources/nature/Blends/PineTree_Snow_2.blend b/packages/client/resources/nature/Blends/PineTree_Snow_2.blend
similarity index 100%
rename from client/resources/nature/Blends/PineTree_Snow_2.blend
rename to packages/client/resources/nature/Blends/PineTree_Snow_2.blend
diff --git a/client/resources/nature/Blends/PineTree_Snow_3.blend b/packages/client/resources/nature/Blends/PineTree_Snow_3.blend
similarity index 100%
rename from client/resources/nature/Blends/PineTree_Snow_3.blend
rename to packages/client/resources/nature/Blends/PineTree_Snow_3.blend
diff --git a/client/resources/nature/Blends/PineTree_Snow_4.blend b/packages/client/resources/nature/Blends/PineTree_Snow_4.blend
similarity index 100%
rename from client/resources/nature/Blends/PineTree_Snow_4.blend
rename to packages/client/resources/nature/Blends/PineTree_Snow_4.blend
diff --git a/client/resources/nature/Blends/PineTree_Snow_5.blend b/packages/client/resources/nature/Blends/PineTree_Snow_5.blend
similarity index 100%
rename from client/resources/nature/Blends/PineTree_Snow_5.blend
rename to packages/client/resources/nature/Blends/PineTree_Snow_5.blend
diff --git a/client/resources/nature/Blends/Plant_1.blend b/packages/client/resources/nature/Blends/Plant_1.blend
similarity index 100%
rename from client/resources/nature/Blends/Plant_1.blend
rename to packages/client/resources/nature/Blends/Plant_1.blend
diff --git a/client/resources/nature/Blends/Plant_2.blend b/packages/client/resources/nature/Blends/Plant_2.blend
similarity index 100%
rename from client/resources/nature/Blends/Plant_2.blend
rename to packages/client/resources/nature/Blends/Plant_2.blend
diff --git a/client/resources/nature/Blends/Plant_3.blend b/packages/client/resources/nature/Blends/Plant_3.blend
similarity index 100%
rename from client/resources/nature/Blends/Plant_3.blend
rename to packages/client/resources/nature/Blends/Plant_3.blend
diff --git a/client/resources/nature/Blends/Plant_4.blend b/packages/client/resources/nature/Blends/Plant_4.blend
similarity index 100%
rename from client/resources/nature/Blends/Plant_4.blend
rename to packages/client/resources/nature/Blends/Plant_4.blend
diff --git a/client/resources/nature/Blends/Plant_5.blend b/packages/client/resources/nature/Blends/Plant_5.blend
similarity index 100%
rename from client/resources/nature/Blends/Plant_5.blend
rename to packages/client/resources/nature/Blends/Plant_5.blend
diff --git a/client/resources/nature/Blends/Rock_1.blend b/packages/client/resources/nature/Blends/Rock_1.blend
similarity index 100%
rename from client/resources/nature/Blends/Rock_1.blend
rename to packages/client/resources/nature/Blends/Rock_1.blend
diff --git a/client/resources/nature/Blends/Rock_2.blend b/packages/client/resources/nature/Blends/Rock_2.blend
similarity index 100%
rename from client/resources/nature/Blends/Rock_2.blend
rename to packages/client/resources/nature/Blends/Rock_2.blend
diff --git a/client/resources/nature/Blends/Rock_3.blend b/packages/client/resources/nature/Blends/Rock_3.blend
similarity index 100%
rename from client/resources/nature/Blends/Rock_3.blend
rename to packages/client/resources/nature/Blends/Rock_3.blend
diff --git a/client/resources/nature/Blends/Rock_4.blend b/packages/client/resources/nature/Blends/Rock_4.blend
similarity index 100%
rename from client/resources/nature/Blends/Rock_4.blend
rename to packages/client/resources/nature/Blends/Rock_4.blend
diff --git a/client/resources/nature/Blends/Rock_5.blend b/packages/client/resources/nature/Blends/Rock_5.blend
similarity index 100%
rename from client/resources/nature/Blends/Rock_5.blend
rename to packages/client/resources/nature/Blends/Rock_5.blend
diff --git a/client/resources/nature/Blends/Rock_6.blend b/packages/client/resources/nature/Blends/Rock_6.blend
similarity index 100%
rename from client/resources/nature/Blends/Rock_6.blend
rename to packages/client/resources/nature/Blends/Rock_6.blend
diff --git a/client/resources/nature/Blends/Rock_7.blend b/packages/client/resources/nature/Blends/Rock_7.blend
similarity index 100%
rename from client/resources/nature/Blends/Rock_7.blend
rename to packages/client/resources/nature/Blends/Rock_7.blend
diff --git a/client/resources/nature/Blends/Rock_Moss_1.blend b/packages/client/resources/nature/Blends/Rock_Moss_1.blend
similarity index 100%
rename from client/resources/nature/Blends/Rock_Moss_1.blend
rename to packages/client/resources/nature/Blends/Rock_Moss_1.blend
diff --git a/client/resources/nature/Blends/Rock_Moss_2.blend b/packages/client/resources/nature/Blends/Rock_Moss_2.blend
similarity index 100%
rename from client/resources/nature/Blends/Rock_Moss_2.blend
rename to packages/client/resources/nature/Blends/Rock_Moss_2.blend
diff --git a/client/resources/nature/Blends/Rock_Moss_3.blend b/packages/client/resources/nature/Blends/Rock_Moss_3.blend
similarity index 100%
rename from client/resources/nature/Blends/Rock_Moss_3.blend
rename to packages/client/resources/nature/Blends/Rock_Moss_3.blend
diff --git a/client/resources/nature/Blends/Rock_Moss_4.blend b/packages/client/resources/nature/Blends/Rock_Moss_4.blend
similarity index 100%
rename from client/resources/nature/Blends/Rock_Moss_4.blend
rename to packages/client/resources/nature/Blends/Rock_Moss_4.blend
diff --git a/client/resources/nature/Blends/Rock_Moss_5.blend b/packages/client/resources/nature/Blends/Rock_Moss_5.blend
similarity index 100%
rename from client/resources/nature/Blends/Rock_Moss_5.blend
rename to packages/client/resources/nature/Blends/Rock_Moss_5.blend
diff --git a/client/resources/nature/Blends/Rock_Moss_6.blend b/packages/client/resources/nature/Blends/Rock_Moss_6.blend
similarity index 100%
rename from client/resources/nature/Blends/Rock_Moss_6.blend
rename to packages/client/resources/nature/Blends/Rock_Moss_6.blend
diff --git a/client/resources/nature/Blends/Rock_Moss_7.blend b/packages/client/resources/nature/Blends/Rock_Moss_7.blend
similarity index 100%
rename from client/resources/nature/Blends/Rock_Moss_7.blend
rename to packages/client/resources/nature/Blends/Rock_Moss_7.blend
diff --git a/client/resources/nature/Blends/Rock_Snow_1.blend b/packages/client/resources/nature/Blends/Rock_Snow_1.blend
similarity index 100%
rename from client/resources/nature/Blends/Rock_Snow_1.blend
rename to packages/client/resources/nature/Blends/Rock_Snow_1.blend
diff --git a/client/resources/nature/Blends/Rock_Snow_2.blend b/packages/client/resources/nature/Blends/Rock_Snow_2.blend
similarity index 100%
rename from client/resources/nature/Blends/Rock_Snow_2.blend
rename to packages/client/resources/nature/Blends/Rock_Snow_2.blend
diff --git a/client/resources/nature/Blends/Rock_Snow_3.blend b/packages/client/resources/nature/Blends/Rock_Snow_3.blend
similarity index 100%
rename from client/resources/nature/Blends/Rock_Snow_3.blend
rename to packages/client/resources/nature/Blends/Rock_Snow_3.blend
diff --git a/client/resources/nature/Blends/Rock_Snow_4.blend b/packages/client/resources/nature/Blends/Rock_Snow_4.blend
similarity index 100%
rename from client/resources/nature/Blends/Rock_Snow_4.blend
rename to packages/client/resources/nature/Blends/Rock_Snow_4.blend
diff --git a/client/resources/nature/Blends/Rock_Snow_5.blend b/packages/client/resources/nature/Blends/Rock_Snow_5.blend
similarity index 100%
rename from client/resources/nature/Blends/Rock_Snow_5.blend
rename to packages/client/resources/nature/Blends/Rock_Snow_5.blend
diff --git a/client/resources/nature/Blends/Rock_Snow_6.blend b/packages/client/resources/nature/Blends/Rock_Snow_6.blend
similarity index 100%
rename from client/resources/nature/Blends/Rock_Snow_6.blend
rename to packages/client/resources/nature/Blends/Rock_Snow_6.blend
diff --git a/client/resources/nature/Blends/Rock_Snow_7.blend b/packages/client/resources/nature/Blends/Rock_Snow_7.blend
similarity index 100%
rename from client/resources/nature/Blends/Rock_Snow_7.blend
rename to packages/client/resources/nature/Blends/Rock_Snow_7.blend
diff --git a/client/resources/nature/Blends/TreeStump.blend b/packages/client/resources/nature/Blends/TreeStump.blend
similarity index 100%
rename from client/resources/nature/Blends/TreeStump.blend
rename to packages/client/resources/nature/Blends/TreeStump.blend
diff --git a/client/resources/nature/Blends/TreeStump_Moss.blend b/packages/client/resources/nature/Blends/TreeStump_Moss.blend
similarity index 100%
rename from client/resources/nature/Blends/TreeStump_Moss.blend
rename to packages/client/resources/nature/Blends/TreeStump_Moss.blend
diff --git a/client/resources/nature/Blends/TreeStump_Snow.blend b/packages/client/resources/nature/Blends/TreeStump_Snow.blend
similarity index 100%
rename from client/resources/nature/Blends/TreeStump_Snow.blend
rename to packages/client/resources/nature/Blends/TreeStump_Snow.blend
diff --git a/client/resources/nature/Blends/Wheat.blend b/packages/client/resources/nature/Blends/Wheat.blend
similarity index 100%
rename from client/resources/nature/Blends/Wheat.blend
rename to packages/client/resources/nature/Blends/Wheat.blend
diff --git a/client/resources/nature/Blends/Willow_1.blend b/packages/client/resources/nature/Blends/Willow_1.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_1.blend
rename to packages/client/resources/nature/Blends/Willow_1.blend
diff --git a/client/resources/nature/Blends/Willow_2.blend b/packages/client/resources/nature/Blends/Willow_2.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_2.blend
rename to packages/client/resources/nature/Blends/Willow_2.blend
diff --git a/client/resources/nature/Blends/Willow_3.blend b/packages/client/resources/nature/Blends/Willow_3.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_3.blend
rename to packages/client/resources/nature/Blends/Willow_3.blend
diff --git a/client/resources/nature/Blends/Willow_4.blend b/packages/client/resources/nature/Blends/Willow_4.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_4.blend
rename to packages/client/resources/nature/Blends/Willow_4.blend
diff --git a/client/resources/nature/Blends/Willow_5.blend b/packages/client/resources/nature/Blends/Willow_5.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_5.blend
rename to packages/client/resources/nature/Blends/Willow_5.blend
diff --git a/client/resources/nature/Blends/Willow_Autumn_1.blend b/packages/client/resources/nature/Blends/Willow_Autumn_1.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_Autumn_1.blend
rename to packages/client/resources/nature/Blends/Willow_Autumn_1.blend
diff --git a/client/resources/nature/Blends/Willow_Autumn_2.blend b/packages/client/resources/nature/Blends/Willow_Autumn_2.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_Autumn_2.blend
rename to packages/client/resources/nature/Blends/Willow_Autumn_2.blend
diff --git a/client/resources/nature/Blends/Willow_Autumn_3.blend b/packages/client/resources/nature/Blends/Willow_Autumn_3.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_Autumn_3.blend
rename to packages/client/resources/nature/Blends/Willow_Autumn_3.blend
diff --git a/client/resources/nature/Blends/Willow_Autumn_4.blend b/packages/client/resources/nature/Blends/Willow_Autumn_4.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_Autumn_4.blend
rename to packages/client/resources/nature/Blends/Willow_Autumn_4.blend
diff --git a/client/resources/nature/Blends/Willow_Autumn_5.blend b/packages/client/resources/nature/Blends/Willow_Autumn_5.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_Autumn_5.blend
rename to packages/client/resources/nature/Blends/Willow_Autumn_5.blend
diff --git a/client/resources/nature/Blends/Willow_Dead_1.blend b/packages/client/resources/nature/Blends/Willow_Dead_1.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_Dead_1.blend
rename to packages/client/resources/nature/Blends/Willow_Dead_1.blend
diff --git a/client/resources/nature/Blends/Willow_Dead_2.blend b/packages/client/resources/nature/Blends/Willow_Dead_2.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_Dead_2.blend
rename to packages/client/resources/nature/Blends/Willow_Dead_2.blend
diff --git a/client/resources/nature/Blends/Willow_Dead_3.blend b/packages/client/resources/nature/Blends/Willow_Dead_3.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_Dead_3.blend
rename to packages/client/resources/nature/Blends/Willow_Dead_3.blend
diff --git a/client/resources/nature/Blends/Willow_Dead_4.blend b/packages/client/resources/nature/Blends/Willow_Dead_4.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_Dead_4.blend
rename to packages/client/resources/nature/Blends/Willow_Dead_4.blend
diff --git a/client/resources/nature/Blends/Willow_Dead_5.blend b/packages/client/resources/nature/Blends/Willow_Dead_5.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_Dead_5.blend
rename to packages/client/resources/nature/Blends/Willow_Dead_5.blend
diff --git a/client/resources/nature/Blends/Willow_Dead_Snow_1.blend b/packages/client/resources/nature/Blends/Willow_Dead_Snow_1.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_Dead_Snow_1.blend
rename to packages/client/resources/nature/Blends/Willow_Dead_Snow_1.blend
diff --git a/client/resources/nature/Blends/Willow_Dead_Snow_2.blend b/packages/client/resources/nature/Blends/Willow_Dead_Snow_2.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_Dead_Snow_2.blend
rename to packages/client/resources/nature/Blends/Willow_Dead_Snow_2.blend
diff --git a/client/resources/nature/Blends/Willow_Dead_Snow_3.blend b/packages/client/resources/nature/Blends/Willow_Dead_Snow_3.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_Dead_Snow_3.blend
rename to packages/client/resources/nature/Blends/Willow_Dead_Snow_3.blend
diff --git a/client/resources/nature/Blends/Willow_Dead_Snow_4.blend b/packages/client/resources/nature/Blends/Willow_Dead_Snow_4.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_Dead_Snow_4.blend
rename to packages/client/resources/nature/Blends/Willow_Dead_Snow_4.blend
diff --git a/client/resources/nature/Blends/Willow_Dead_Snow_5.blend b/packages/client/resources/nature/Blends/Willow_Dead_Snow_5.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_Dead_Snow_5.blend
rename to packages/client/resources/nature/Blends/Willow_Dead_Snow_5.blend
diff --git a/client/resources/nature/Blends/Willow_Snow_1.blend b/packages/client/resources/nature/Blends/Willow_Snow_1.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_Snow_1.blend
rename to packages/client/resources/nature/Blends/Willow_Snow_1.blend
diff --git a/client/resources/nature/Blends/Willow_Snow_2.blend b/packages/client/resources/nature/Blends/Willow_Snow_2.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_Snow_2.blend
rename to packages/client/resources/nature/Blends/Willow_Snow_2.blend
diff --git a/client/resources/nature/Blends/Willow_Snow_3.blend b/packages/client/resources/nature/Blends/Willow_Snow_3.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_Snow_3.blend
rename to packages/client/resources/nature/Blends/Willow_Snow_3.blend
diff --git a/client/resources/nature/Blends/Willow_Snow_4.blend b/packages/client/resources/nature/Blends/Willow_Snow_4.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_Snow_4.blend
rename to packages/client/resources/nature/Blends/Willow_Snow_4.blend
diff --git a/client/resources/nature/Blends/Willow_Snow_5.blend b/packages/client/resources/nature/Blends/Willow_Snow_5.blend
similarity index 100%
rename from client/resources/nature/Blends/Willow_Snow_5.blend
rename to packages/client/resources/nature/Blends/Willow_Snow_5.blend
diff --git a/client/resources/nature/Blends/WoodLog.blend b/packages/client/resources/nature/Blends/WoodLog.blend
similarity index 100%
rename from client/resources/nature/Blends/WoodLog.blend
rename to packages/client/resources/nature/Blends/WoodLog.blend
diff --git a/client/resources/nature/Blends/WoodLog_Moss.blend b/packages/client/resources/nature/Blends/WoodLog_Moss.blend
similarity index 100%
rename from client/resources/nature/Blends/WoodLog_Moss.blend
rename to packages/client/resources/nature/Blends/WoodLog_Moss.blend
diff --git a/client/resources/nature/Blends/WoodLog_Snow.blend b/packages/client/resources/nature/Blends/WoodLog_Snow.blend
similarity index 100%
rename from client/resources/nature/Blends/WoodLog_Snow.blend
rename to packages/client/resources/nature/Blends/WoodLog_Snow.blend
diff --git a/client/resources/nature/FBX/BirchTree_1.fbx b/packages/client/resources/nature/FBX/BirchTree_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_1.fbx
rename to packages/client/resources/nature/FBX/BirchTree_1.fbx
diff --git a/client/resources/nature/FBX/BirchTree_2.fbx b/packages/client/resources/nature/FBX/BirchTree_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_2.fbx
rename to packages/client/resources/nature/FBX/BirchTree_2.fbx
diff --git a/client/resources/nature/FBX/BirchTree_3.fbx b/packages/client/resources/nature/FBX/BirchTree_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_3.fbx
rename to packages/client/resources/nature/FBX/BirchTree_3.fbx
diff --git a/client/resources/nature/FBX/BirchTree_4.fbx b/packages/client/resources/nature/FBX/BirchTree_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_4.fbx
rename to packages/client/resources/nature/FBX/BirchTree_4.fbx
diff --git a/client/resources/nature/FBX/BirchTree_5.fbx b/packages/client/resources/nature/FBX/BirchTree_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_5.fbx
rename to packages/client/resources/nature/FBX/BirchTree_5.fbx
diff --git a/client/resources/nature/FBX/BirchTree_Autumn_1.fbx b/packages/client/resources/nature/FBX/BirchTree_Autumn_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_Autumn_1.fbx
rename to packages/client/resources/nature/FBX/BirchTree_Autumn_1.fbx
diff --git a/client/resources/nature/FBX/BirchTree_Autumn_2.fbx b/packages/client/resources/nature/FBX/BirchTree_Autumn_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_Autumn_2.fbx
rename to packages/client/resources/nature/FBX/BirchTree_Autumn_2.fbx
diff --git a/client/resources/nature/FBX/BirchTree_Autumn_3.fbx b/packages/client/resources/nature/FBX/BirchTree_Autumn_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_Autumn_3.fbx
rename to packages/client/resources/nature/FBX/BirchTree_Autumn_3.fbx
diff --git a/client/resources/nature/FBX/BirchTree_Autumn_4.fbx b/packages/client/resources/nature/FBX/BirchTree_Autumn_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_Autumn_4.fbx
rename to packages/client/resources/nature/FBX/BirchTree_Autumn_4.fbx
diff --git a/client/resources/nature/FBX/BirchTree_Autumn_5.fbx b/packages/client/resources/nature/FBX/BirchTree_Autumn_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_Autumn_5.fbx
rename to packages/client/resources/nature/FBX/BirchTree_Autumn_5.fbx
diff --git a/client/resources/nature/FBX/BirchTree_Dead_1.fbx b/packages/client/resources/nature/FBX/BirchTree_Dead_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_Dead_1.fbx
rename to packages/client/resources/nature/FBX/BirchTree_Dead_1.fbx
diff --git a/client/resources/nature/FBX/BirchTree_Dead_2.fbx b/packages/client/resources/nature/FBX/BirchTree_Dead_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_Dead_2.fbx
rename to packages/client/resources/nature/FBX/BirchTree_Dead_2.fbx
diff --git a/client/resources/nature/FBX/BirchTree_Dead_3.fbx b/packages/client/resources/nature/FBX/BirchTree_Dead_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_Dead_3.fbx
rename to packages/client/resources/nature/FBX/BirchTree_Dead_3.fbx
diff --git a/client/resources/nature/FBX/BirchTree_Dead_4.fbx b/packages/client/resources/nature/FBX/BirchTree_Dead_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_Dead_4.fbx
rename to packages/client/resources/nature/FBX/BirchTree_Dead_4.fbx
diff --git a/client/resources/nature/FBX/BirchTree_Dead_5.fbx b/packages/client/resources/nature/FBX/BirchTree_Dead_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_Dead_5.fbx
rename to packages/client/resources/nature/FBX/BirchTree_Dead_5.fbx
diff --git a/client/resources/nature/FBX/BirchTree_Dead_Snow_1.fbx b/packages/client/resources/nature/FBX/BirchTree_Dead_Snow_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_Dead_Snow_1.fbx
rename to packages/client/resources/nature/FBX/BirchTree_Dead_Snow_1.fbx
diff --git a/client/resources/nature/FBX/BirchTree_Dead_Snow_2.fbx b/packages/client/resources/nature/FBX/BirchTree_Dead_Snow_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_Dead_Snow_2.fbx
rename to packages/client/resources/nature/FBX/BirchTree_Dead_Snow_2.fbx
diff --git a/client/resources/nature/FBX/BirchTree_Dead_Snow_3.fbx b/packages/client/resources/nature/FBX/BirchTree_Dead_Snow_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_Dead_Snow_3.fbx
rename to packages/client/resources/nature/FBX/BirchTree_Dead_Snow_3.fbx
diff --git a/client/resources/nature/FBX/BirchTree_Dead_Snow_4.fbx b/packages/client/resources/nature/FBX/BirchTree_Dead_Snow_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_Dead_Snow_4.fbx
rename to packages/client/resources/nature/FBX/BirchTree_Dead_Snow_4.fbx
diff --git a/client/resources/nature/FBX/BirchTree_Dead_Snow_5.fbx b/packages/client/resources/nature/FBX/BirchTree_Dead_Snow_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_Dead_Snow_5.fbx
rename to packages/client/resources/nature/FBX/BirchTree_Dead_Snow_5.fbx
diff --git a/client/resources/nature/FBX/BirchTree_Snow_1.fbx b/packages/client/resources/nature/FBX/BirchTree_Snow_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_Snow_1.fbx
rename to packages/client/resources/nature/FBX/BirchTree_Snow_1.fbx
diff --git a/client/resources/nature/FBX/BirchTree_Snow_2.fbx b/packages/client/resources/nature/FBX/BirchTree_Snow_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_Snow_2.fbx
rename to packages/client/resources/nature/FBX/BirchTree_Snow_2.fbx
diff --git a/client/resources/nature/FBX/BirchTree_Snow_3.fbx b/packages/client/resources/nature/FBX/BirchTree_Snow_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_Snow_3.fbx
rename to packages/client/resources/nature/FBX/BirchTree_Snow_3.fbx
diff --git a/client/resources/nature/FBX/BirchTree_Snow_4.fbx b/packages/client/resources/nature/FBX/BirchTree_Snow_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_Snow_4.fbx
rename to packages/client/resources/nature/FBX/BirchTree_Snow_4.fbx
diff --git a/client/resources/nature/FBX/BirchTree_Snow_5.fbx b/packages/client/resources/nature/FBX/BirchTree_Snow_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/BirchTree_Snow_5.fbx
rename to packages/client/resources/nature/FBX/BirchTree_Snow_5.fbx
diff --git a/client/resources/nature/FBX/BushBerries_1.fbx b/packages/client/resources/nature/FBX/BushBerries_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/BushBerries_1.fbx
rename to packages/client/resources/nature/FBX/BushBerries_1.fbx
diff --git a/client/resources/nature/FBX/BushBerries_2.fbx b/packages/client/resources/nature/FBX/BushBerries_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/BushBerries_2.fbx
rename to packages/client/resources/nature/FBX/BushBerries_2.fbx
diff --git a/client/resources/nature/FBX/Bush_1.fbx b/packages/client/resources/nature/FBX/Bush_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/Bush_1.fbx
rename to packages/client/resources/nature/FBX/Bush_1.fbx
diff --git a/client/resources/nature/FBX/Bush_2.fbx b/packages/client/resources/nature/FBX/Bush_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/Bush_2.fbx
rename to packages/client/resources/nature/FBX/Bush_2.fbx
diff --git a/client/resources/nature/FBX/Bush_Snow_1.fbx b/packages/client/resources/nature/FBX/Bush_Snow_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/Bush_Snow_1.fbx
rename to packages/client/resources/nature/FBX/Bush_Snow_1.fbx
diff --git a/client/resources/nature/FBX/Bush_Snow_2.fbx b/packages/client/resources/nature/FBX/Bush_Snow_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/Bush_Snow_2.fbx
rename to packages/client/resources/nature/FBX/Bush_Snow_2.fbx
diff --git a/client/resources/nature/FBX/CactusFlower_1.fbx b/packages/client/resources/nature/FBX/CactusFlower_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/CactusFlower_1.fbx
rename to packages/client/resources/nature/FBX/CactusFlower_1.fbx
diff --git a/client/resources/nature/FBX/CactusFlowers_2.fbx b/packages/client/resources/nature/FBX/CactusFlowers_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/CactusFlowers_2.fbx
rename to packages/client/resources/nature/FBX/CactusFlowers_2.fbx
diff --git a/client/resources/nature/FBX/CactusFlowers_3.fbx b/packages/client/resources/nature/FBX/CactusFlowers_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/CactusFlowers_3.fbx
rename to packages/client/resources/nature/FBX/CactusFlowers_3.fbx
diff --git a/client/resources/nature/FBX/CactusFlowers_4.fbx b/packages/client/resources/nature/FBX/CactusFlowers_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/CactusFlowers_4.fbx
rename to packages/client/resources/nature/FBX/CactusFlowers_4.fbx
diff --git a/client/resources/nature/FBX/CactusFlowers_5.fbx b/packages/client/resources/nature/FBX/CactusFlowers_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/CactusFlowers_5.fbx
rename to packages/client/resources/nature/FBX/CactusFlowers_5.fbx
diff --git a/client/resources/nature/FBX/Cactus_1.fbx b/packages/client/resources/nature/FBX/Cactus_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/Cactus_1.fbx
rename to packages/client/resources/nature/FBX/Cactus_1.fbx
diff --git a/client/resources/nature/FBX/Cactus_2.fbx b/packages/client/resources/nature/FBX/Cactus_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/Cactus_2.fbx
rename to packages/client/resources/nature/FBX/Cactus_2.fbx
diff --git a/client/resources/nature/FBX/Cactus_3.fbx b/packages/client/resources/nature/FBX/Cactus_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/Cactus_3.fbx
rename to packages/client/resources/nature/FBX/Cactus_3.fbx
diff --git a/client/resources/nature/FBX/Cactus_4.fbx b/packages/client/resources/nature/FBX/Cactus_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/Cactus_4.fbx
rename to packages/client/resources/nature/FBX/Cactus_4.fbx
diff --git a/client/resources/nature/FBX/Cactus_5.fbx b/packages/client/resources/nature/FBX/Cactus_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/Cactus_5.fbx
rename to packages/client/resources/nature/FBX/Cactus_5.fbx
diff --git a/client/resources/nature/FBX/CommonTree_1.fbx b/packages/client/resources/nature/FBX/CommonTree_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_1.fbx
rename to packages/client/resources/nature/FBX/CommonTree_1.fbx
diff --git a/client/resources/nature/FBX/CommonTree_2.fbx b/packages/client/resources/nature/FBX/CommonTree_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_2.fbx
rename to packages/client/resources/nature/FBX/CommonTree_2.fbx
diff --git a/client/resources/nature/FBX/CommonTree_3.fbx b/packages/client/resources/nature/FBX/CommonTree_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_3.fbx
rename to packages/client/resources/nature/FBX/CommonTree_3.fbx
diff --git a/client/resources/nature/FBX/CommonTree_4.fbx b/packages/client/resources/nature/FBX/CommonTree_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_4.fbx
rename to packages/client/resources/nature/FBX/CommonTree_4.fbx
diff --git a/client/resources/nature/FBX/CommonTree_5.fbx b/packages/client/resources/nature/FBX/CommonTree_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_5.fbx
rename to packages/client/resources/nature/FBX/CommonTree_5.fbx
diff --git a/client/resources/nature/FBX/CommonTree_Autumn_1.fbx b/packages/client/resources/nature/FBX/CommonTree_Autumn_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_Autumn_1.fbx
rename to packages/client/resources/nature/FBX/CommonTree_Autumn_1.fbx
diff --git a/client/resources/nature/FBX/CommonTree_Autumn_2.fbx b/packages/client/resources/nature/FBX/CommonTree_Autumn_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_Autumn_2.fbx
rename to packages/client/resources/nature/FBX/CommonTree_Autumn_2.fbx
diff --git a/client/resources/nature/FBX/CommonTree_Autumn_3.fbx b/packages/client/resources/nature/FBX/CommonTree_Autumn_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_Autumn_3.fbx
rename to packages/client/resources/nature/FBX/CommonTree_Autumn_3.fbx
diff --git a/client/resources/nature/FBX/CommonTree_Autumn_4.fbx b/packages/client/resources/nature/FBX/CommonTree_Autumn_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_Autumn_4.fbx
rename to packages/client/resources/nature/FBX/CommonTree_Autumn_4.fbx
diff --git a/client/resources/nature/FBX/CommonTree_Autumn_5.fbx b/packages/client/resources/nature/FBX/CommonTree_Autumn_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_Autumn_5.fbx
rename to packages/client/resources/nature/FBX/CommonTree_Autumn_5.fbx
diff --git a/client/resources/nature/FBX/CommonTree_Dead_1.fbx b/packages/client/resources/nature/FBX/CommonTree_Dead_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_Dead_1.fbx
rename to packages/client/resources/nature/FBX/CommonTree_Dead_1.fbx
diff --git a/client/resources/nature/FBX/CommonTree_Dead_2.fbx b/packages/client/resources/nature/FBX/CommonTree_Dead_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_Dead_2.fbx
rename to packages/client/resources/nature/FBX/CommonTree_Dead_2.fbx
diff --git a/client/resources/nature/FBX/CommonTree_Dead_3.fbx b/packages/client/resources/nature/FBX/CommonTree_Dead_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_Dead_3.fbx
rename to packages/client/resources/nature/FBX/CommonTree_Dead_3.fbx
diff --git a/client/resources/nature/FBX/CommonTree_Dead_4.fbx b/packages/client/resources/nature/FBX/CommonTree_Dead_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_Dead_4.fbx
rename to packages/client/resources/nature/FBX/CommonTree_Dead_4.fbx
diff --git a/client/resources/nature/FBX/CommonTree_Dead_5.fbx b/packages/client/resources/nature/FBX/CommonTree_Dead_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_Dead_5.fbx
rename to packages/client/resources/nature/FBX/CommonTree_Dead_5.fbx
diff --git a/client/resources/nature/FBX/CommonTree_Dead_Snow_1.fbx b/packages/client/resources/nature/FBX/CommonTree_Dead_Snow_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_Dead_Snow_1.fbx
rename to packages/client/resources/nature/FBX/CommonTree_Dead_Snow_1.fbx
diff --git a/client/resources/nature/FBX/CommonTree_Dead_Snow_2.fbx b/packages/client/resources/nature/FBX/CommonTree_Dead_Snow_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_Dead_Snow_2.fbx
rename to packages/client/resources/nature/FBX/CommonTree_Dead_Snow_2.fbx
diff --git a/client/resources/nature/FBX/CommonTree_Dead_Snow_3.fbx b/packages/client/resources/nature/FBX/CommonTree_Dead_Snow_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_Dead_Snow_3.fbx
rename to packages/client/resources/nature/FBX/CommonTree_Dead_Snow_3.fbx
diff --git a/client/resources/nature/FBX/CommonTree_Dead_Snow_4.fbx b/packages/client/resources/nature/FBX/CommonTree_Dead_Snow_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_Dead_Snow_4.fbx
rename to packages/client/resources/nature/FBX/CommonTree_Dead_Snow_4.fbx
diff --git a/client/resources/nature/FBX/CommonTree_Dead_Snow_5.fbx b/packages/client/resources/nature/FBX/CommonTree_Dead_Snow_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_Dead_Snow_5.fbx
rename to packages/client/resources/nature/FBX/CommonTree_Dead_Snow_5.fbx
diff --git a/client/resources/nature/FBX/CommonTree_Snow_1.fbx b/packages/client/resources/nature/FBX/CommonTree_Snow_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_Snow_1.fbx
rename to packages/client/resources/nature/FBX/CommonTree_Snow_1.fbx
diff --git a/client/resources/nature/FBX/CommonTree_Snow_2.fbx b/packages/client/resources/nature/FBX/CommonTree_Snow_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_Snow_2.fbx
rename to packages/client/resources/nature/FBX/CommonTree_Snow_2.fbx
diff --git a/client/resources/nature/FBX/CommonTree_Snow_3.fbx b/packages/client/resources/nature/FBX/CommonTree_Snow_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_Snow_3.fbx
rename to packages/client/resources/nature/FBX/CommonTree_Snow_3.fbx
diff --git a/client/resources/nature/FBX/CommonTree_Snow_4.fbx b/packages/client/resources/nature/FBX/CommonTree_Snow_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_Snow_4.fbx
rename to packages/client/resources/nature/FBX/CommonTree_Snow_4.fbx
diff --git a/client/resources/nature/FBX/CommonTree_Snow_5.fbx b/packages/client/resources/nature/FBX/CommonTree_Snow_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/CommonTree_Snow_5.fbx
rename to packages/client/resources/nature/FBX/CommonTree_Snow_5.fbx
diff --git a/client/resources/nature/FBX/Corn_1.fbx b/packages/client/resources/nature/FBX/Corn_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/Corn_1.fbx
rename to packages/client/resources/nature/FBX/Corn_1.fbx
diff --git a/client/resources/nature/FBX/Corn_2.fbx b/packages/client/resources/nature/FBX/Corn_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/Corn_2.fbx
rename to packages/client/resources/nature/FBX/Corn_2.fbx
diff --git a/client/resources/nature/FBX/Flowers.fbx b/packages/client/resources/nature/FBX/Flowers.fbx
similarity index 100%
rename from client/resources/nature/FBX/Flowers.fbx
rename to packages/client/resources/nature/FBX/Flowers.fbx
diff --git a/client/resources/nature/FBX/Grass_1.fbx b/packages/client/resources/nature/FBX/Grass_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/Grass_1.fbx
rename to packages/client/resources/nature/FBX/Grass_1.fbx
diff --git a/client/resources/nature/FBX/Grass_2.fbx b/packages/client/resources/nature/FBX/Grass_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/Grass_2.fbx
rename to packages/client/resources/nature/FBX/Grass_2.fbx
diff --git a/client/resources/nature/FBX/Grass_Short.fbx b/packages/client/resources/nature/FBX/Grass_Short.fbx
similarity index 100%
rename from client/resources/nature/FBX/Grass_Short.fbx
rename to packages/client/resources/nature/FBX/Grass_Short.fbx
diff --git a/client/resources/nature/FBX/Lilypad.fbx b/packages/client/resources/nature/FBX/Lilypad.fbx
similarity index 100%
rename from client/resources/nature/FBX/Lilypad.fbx
rename to packages/client/resources/nature/FBX/Lilypad.fbx
diff --git a/client/resources/nature/FBX/PalmTree_1.fbx b/packages/client/resources/nature/FBX/PalmTree_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/PalmTree_1.fbx
rename to packages/client/resources/nature/FBX/PalmTree_1.fbx
diff --git a/client/resources/nature/FBX/PalmTree_2.fbx b/packages/client/resources/nature/FBX/PalmTree_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/PalmTree_2.fbx
rename to packages/client/resources/nature/FBX/PalmTree_2.fbx
diff --git a/client/resources/nature/FBX/PalmTree_3.fbx b/packages/client/resources/nature/FBX/PalmTree_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/PalmTree_3.fbx
rename to packages/client/resources/nature/FBX/PalmTree_3.fbx
diff --git a/client/resources/nature/FBX/PalmTree_4.fbx b/packages/client/resources/nature/FBX/PalmTree_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/PalmTree_4.fbx
rename to packages/client/resources/nature/FBX/PalmTree_4.fbx
diff --git a/client/resources/nature/FBX/PineTree_1.fbx b/packages/client/resources/nature/FBX/PineTree_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/PineTree_1.fbx
rename to packages/client/resources/nature/FBX/PineTree_1.fbx
diff --git a/client/resources/nature/FBX/PineTree_2.fbx b/packages/client/resources/nature/FBX/PineTree_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/PineTree_2.fbx
rename to packages/client/resources/nature/FBX/PineTree_2.fbx
diff --git a/client/resources/nature/FBX/PineTree_3.fbx b/packages/client/resources/nature/FBX/PineTree_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/PineTree_3.fbx
rename to packages/client/resources/nature/FBX/PineTree_3.fbx
diff --git a/client/resources/nature/FBX/PineTree_4.fbx b/packages/client/resources/nature/FBX/PineTree_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/PineTree_4.fbx
rename to packages/client/resources/nature/FBX/PineTree_4.fbx
diff --git a/client/resources/nature/FBX/PineTree_5.fbx b/packages/client/resources/nature/FBX/PineTree_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/PineTree_5.fbx
rename to packages/client/resources/nature/FBX/PineTree_5.fbx
diff --git a/client/resources/nature/FBX/PineTree_Autumn_1.fbx b/packages/client/resources/nature/FBX/PineTree_Autumn_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/PineTree_Autumn_1.fbx
rename to packages/client/resources/nature/FBX/PineTree_Autumn_1.fbx
diff --git a/client/resources/nature/FBX/PineTree_Autumn_2.fbx b/packages/client/resources/nature/FBX/PineTree_Autumn_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/PineTree_Autumn_2.fbx
rename to packages/client/resources/nature/FBX/PineTree_Autumn_2.fbx
diff --git a/client/resources/nature/FBX/PineTree_Autumn_3.fbx b/packages/client/resources/nature/FBX/PineTree_Autumn_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/PineTree_Autumn_3.fbx
rename to packages/client/resources/nature/FBX/PineTree_Autumn_3.fbx
diff --git a/client/resources/nature/FBX/PineTree_Autumn_4.fbx b/packages/client/resources/nature/FBX/PineTree_Autumn_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/PineTree_Autumn_4.fbx
rename to packages/client/resources/nature/FBX/PineTree_Autumn_4.fbx
diff --git a/client/resources/nature/FBX/PineTree_Autumn_5.fbx b/packages/client/resources/nature/FBX/PineTree_Autumn_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/PineTree_Autumn_5.fbx
rename to packages/client/resources/nature/FBX/PineTree_Autumn_5.fbx
diff --git a/client/resources/nature/FBX/PineTree_Snow_1.fbx b/packages/client/resources/nature/FBX/PineTree_Snow_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/PineTree_Snow_1.fbx
rename to packages/client/resources/nature/FBX/PineTree_Snow_1.fbx
diff --git a/client/resources/nature/FBX/PineTree_Snow_2.fbx b/packages/client/resources/nature/FBX/PineTree_Snow_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/PineTree_Snow_2.fbx
rename to packages/client/resources/nature/FBX/PineTree_Snow_2.fbx
diff --git a/client/resources/nature/FBX/PineTree_Snow_3.fbx b/packages/client/resources/nature/FBX/PineTree_Snow_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/PineTree_Snow_3.fbx
rename to packages/client/resources/nature/FBX/PineTree_Snow_3.fbx
diff --git a/client/resources/nature/FBX/PineTree_Snow_4.fbx b/packages/client/resources/nature/FBX/PineTree_Snow_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/PineTree_Snow_4.fbx
rename to packages/client/resources/nature/FBX/PineTree_Snow_4.fbx
diff --git a/client/resources/nature/FBX/PineTree_Snow_5.fbx b/packages/client/resources/nature/FBX/PineTree_Snow_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/PineTree_Snow_5.fbx
rename to packages/client/resources/nature/FBX/PineTree_Snow_5.fbx
diff --git a/client/resources/nature/FBX/Plant_1.fbx b/packages/client/resources/nature/FBX/Plant_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/Plant_1.fbx
rename to packages/client/resources/nature/FBX/Plant_1.fbx
diff --git a/client/resources/nature/FBX/Plant_2.fbx b/packages/client/resources/nature/FBX/Plant_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/Plant_2.fbx
rename to packages/client/resources/nature/FBX/Plant_2.fbx
diff --git a/client/resources/nature/FBX/Plant_3.fbx b/packages/client/resources/nature/FBX/Plant_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/Plant_3.fbx
rename to packages/client/resources/nature/FBX/Plant_3.fbx
diff --git a/client/resources/nature/FBX/Plant_4.fbx b/packages/client/resources/nature/FBX/Plant_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/Plant_4.fbx
rename to packages/client/resources/nature/FBX/Plant_4.fbx
diff --git a/client/resources/nature/FBX/Plant_5.fbx b/packages/client/resources/nature/FBX/Plant_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/Plant_5.fbx
rename to packages/client/resources/nature/FBX/Plant_5.fbx
diff --git a/client/resources/nature/FBX/Rock_1.fbx b/packages/client/resources/nature/FBX/Rock_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/Rock_1.fbx
rename to packages/client/resources/nature/FBX/Rock_1.fbx
diff --git a/client/resources/nature/FBX/Rock_2.fbx b/packages/client/resources/nature/FBX/Rock_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/Rock_2.fbx
rename to packages/client/resources/nature/FBX/Rock_2.fbx
diff --git a/client/resources/nature/FBX/Rock_3.fbx b/packages/client/resources/nature/FBX/Rock_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/Rock_3.fbx
rename to packages/client/resources/nature/FBX/Rock_3.fbx
diff --git a/client/resources/nature/FBX/Rock_4.fbx b/packages/client/resources/nature/FBX/Rock_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/Rock_4.fbx
rename to packages/client/resources/nature/FBX/Rock_4.fbx
diff --git a/client/resources/nature/FBX/Rock_5.fbx b/packages/client/resources/nature/FBX/Rock_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/Rock_5.fbx
rename to packages/client/resources/nature/FBX/Rock_5.fbx
diff --git a/client/resources/nature/FBX/Rock_6.fbx b/packages/client/resources/nature/FBX/Rock_6.fbx
similarity index 100%
rename from client/resources/nature/FBX/Rock_6.fbx
rename to packages/client/resources/nature/FBX/Rock_6.fbx
diff --git a/client/resources/nature/FBX/Rock_7.fbx b/packages/client/resources/nature/FBX/Rock_7.fbx
similarity index 100%
rename from client/resources/nature/FBX/Rock_7.fbx
rename to packages/client/resources/nature/FBX/Rock_7.fbx
diff --git a/client/resources/nature/FBX/Rock_Moss_1.fbx b/packages/client/resources/nature/FBX/Rock_Moss_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/Rock_Moss_1.fbx
rename to packages/client/resources/nature/FBX/Rock_Moss_1.fbx
diff --git a/client/resources/nature/FBX/Rock_Moss_2.fbx b/packages/client/resources/nature/FBX/Rock_Moss_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/Rock_Moss_2.fbx
rename to packages/client/resources/nature/FBX/Rock_Moss_2.fbx
diff --git a/client/resources/nature/FBX/Rock_Moss_3.fbx b/packages/client/resources/nature/FBX/Rock_Moss_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/Rock_Moss_3.fbx
rename to packages/client/resources/nature/FBX/Rock_Moss_3.fbx
diff --git a/client/resources/nature/FBX/Rock_Moss_4.fbx b/packages/client/resources/nature/FBX/Rock_Moss_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/Rock_Moss_4.fbx
rename to packages/client/resources/nature/FBX/Rock_Moss_4.fbx
diff --git a/client/resources/nature/FBX/Rock_Moss_5.fbx b/packages/client/resources/nature/FBX/Rock_Moss_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/Rock_Moss_5.fbx
rename to packages/client/resources/nature/FBX/Rock_Moss_5.fbx
diff --git a/client/resources/nature/FBX/Rock_Moss_6.fbx b/packages/client/resources/nature/FBX/Rock_Moss_6.fbx
similarity index 100%
rename from client/resources/nature/FBX/Rock_Moss_6.fbx
rename to packages/client/resources/nature/FBX/Rock_Moss_6.fbx
diff --git a/client/resources/nature/FBX/Rock_Moss_7.fbx b/packages/client/resources/nature/FBX/Rock_Moss_7.fbx
similarity index 100%
rename from client/resources/nature/FBX/Rock_Moss_7.fbx
rename to packages/client/resources/nature/FBX/Rock_Moss_7.fbx
diff --git a/client/resources/nature/FBX/Rock_Snow_1.fbx b/packages/client/resources/nature/FBX/Rock_Snow_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/Rock_Snow_1.fbx
rename to packages/client/resources/nature/FBX/Rock_Snow_1.fbx
diff --git a/client/resources/nature/FBX/Rock_Snow_2.fbx b/packages/client/resources/nature/FBX/Rock_Snow_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/Rock_Snow_2.fbx
rename to packages/client/resources/nature/FBX/Rock_Snow_2.fbx
diff --git a/client/resources/nature/FBX/Rock_Snow_3.fbx b/packages/client/resources/nature/FBX/Rock_Snow_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/Rock_Snow_3.fbx
rename to packages/client/resources/nature/FBX/Rock_Snow_3.fbx
diff --git a/client/resources/nature/FBX/Rock_Snow_4.fbx b/packages/client/resources/nature/FBX/Rock_Snow_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/Rock_Snow_4.fbx
rename to packages/client/resources/nature/FBX/Rock_Snow_4.fbx
diff --git a/client/resources/nature/FBX/Rock_Snow_5.fbx b/packages/client/resources/nature/FBX/Rock_Snow_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/Rock_Snow_5.fbx
rename to packages/client/resources/nature/FBX/Rock_Snow_5.fbx
diff --git a/client/resources/nature/FBX/Rock_Snow_6.fbx b/packages/client/resources/nature/FBX/Rock_Snow_6.fbx
similarity index 100%
rename from client/resources/nature/FBX/Rock_Snow_6.fbx
rename to packages/client/resources/nature/FBX/Rock_Snow_6.fbx
diff --git a/client/resources/nature/FBX/Rock_Snow_7.fbx b/packages/client/resources/nature/FBX/Rock_Snow_7.fbx
similarity index 100%
rename from client/resources/nature/FBX/Rock_Snow_7.fbx
rename to packages/client/resources/nature/FBX/Rock_Snow_7.fbx
diff --git a/client/resources/nature/FBX/TreeStump.fbx b/packages/client/resources/nature/FBX/TreeStump.fbx
similarity index 100%
rename from client/resources/nature/FBX/TreeStump.fbx
rename to packages/client/resources/nature/FBX/TreeStump.fbx
diff --git a/client/resources/nature/FBX/TreeStump_Moss.fbx b/packages/client/resources/nature/FBX/TreeStump_Moss.fbx
similarity index 100%
rename from client/resources/nature/FBX/TreeStump_Moss.fbx
rename to packages/client/resources/nature/FBX/TreeStump_Moss.fbx
diff --git a/client/resources/nature/FBX/TreeStump_Snow.fbx b/packages/client/resources/nature/FBX/TreeStump_Snow.fbx
similarity index 100%
rename from client/resources/nature/FBX/TreeStump_Snow.fbx
rename to packages/client/resources/nature/FBX/TreeStump_Snow.fbx
diff --git a/client/resources/nature/FBX/Wheat.fbx b/packages/client/resources/nature/FBX/Wheat.fbx
similarity index 100%
rename from client/resources/nature/FBX/Wheat.fbx
rename to packages/client/resources/nature/FBX/Wheat.fbx
diff --git a/client/resources/nature/FBX/Willow_1.fbx b/packages/client/resources/nature/FBX/Willow_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_1.fbx
rename to packages/client/resources/nature/FBX/Willow_1.fbx
diff --git a/client/resources/nature/FBX/Willow_2.fbx b/packages/client/resources/nature/FBX/Willow_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_2.fbx
rename to packages/client/resources/nature/FBX/Willow_2.fbx
diff --git a/client/resources/nature/FBX/Willow_3.fbx b/packages/client/resources/nature/FBX/Willow_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_3.fbx
rename to packages/client/resources/nature/FBX/Willow_3.fbx
diff --git a/client/resources/nature/FBX/Willow_4.fbx b/packages/client/resources/nature/FBX/Willow_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_4.fbx
rename to packages/client/resources/nature/FBX/Willow_4.fbx
diff --git a/client/resources/nature/FBX/Willow_5.fbx b/packages/client/resources/nature/FBX/Willow_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_5.fbx
rename to packages/client/resources/nature/FBX/Willow_5.fbx
diff --git a/client/resources/nature/FBX/Willow_Autumn_1.fbx b/packages/client/resources/nature/FBX/Willow_Autumn_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_Autumn_1.fbx
rename to packages/client/resources/nature/FBX/Willow_Autumn_1.fbx
diff --git a/client/resources/nature/FBX/Willow_Autumn_2.fbx b/packages/client/resources/nature/FBX/Willow_Autumn_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_Autumn_2.fbx
rename to packages/client/resources/nature/FBX/Willow_Autumn_2.fbx
diff --git a/client/resources/nature/FBX/Willow_Autumn_3.fbx b/packages/client/resources/nature/FBX/Willow_Autumn_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_Autumn_3.fbx
rename to packages/client/resources/nature/FBX/Willow_Autumn_3.fbx
diff --git a/client/resources/nature/FBX/Willow_Autumn_4.fbx b/packages/client/resources/nature/FBX/Willow_Autumn_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_Autumn_4.fbx
rename to packages/client/resources/nature/FBX/Willow_Autumn_4.fbx
diff --git a/client/resources/nature/FBX/Willow_Autumn_5.fbx b/packages/client/resources/nature/FBX/Willow_Autumn_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_Autumn_5.fbx
rename to packages/client/resources/nature/FBX/Willow_Autumn_5.fbx
diff --git a/client/resources/nature/FBX/Willow_Dead_1.fbx b/packages/client/resources/nature/FBX/Willow_Dead_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_Dead_1.fbx
rename to packages/client/resources/nature/FBX/Willow_Dead_1.fbx
diff --git a/client/resources/nature/FBX/Willow_Dead_2.fbx b/packages/client/resources/nature/FBX/Willow_Dead_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_Dead_2.fbx
rename to packages/client/resources/nature/FBX/Willow_Dead_2.fbx
diff --git a/client/resources/nature/FBX/Willow_Dead_3.fbx b/packages/client/resources/nature/FBX/Willow_Dead_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_Dead_3.fbx
rename to packages/client/resources/nature/FBX/Willow_Dead_3.fbx
diff --git a/client/resources/nature/FBX/Willow_Dead_4.fbx b/packages/client/resources/nature/FBX/Willow_Dead_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_Dead_4.fbx
rename to packages/client/resources/nature/FBX/Willow_Dead_4.fbx
diff --git a/client/resources/nature/FBX/Willow_Dead_5.fbx b/packages/client/resources/nature/FBX/Willow_Dead_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_Dead_5.fbx
rename to packages/client/resources/nature/FBX/Willow_Dead_5.fbx
diff --git a/client/resources/nature/FBX/Willow_Dead_Snow_1.fbx b/packages/client/resources/nature/FBX/Willow_Dead_Snow_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_Dead_Snow_1.fbx
rename to packages/client/resources/nature/FBX/Willow_Dead_Snow_1.fbx
diff --git a/client/resources/nature/FBX/Willow_Dead_Snow_2.fbx b/packages/client/resources/nature/FBX/Willow_Dead_Snow_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_Dead_Snow_2.fbx
rename to packages/client/resources/nature/FBX/Willow_Dead_Snow_2.fbx
diff --git a/client/resources/nature/FBX/Willow_Dead_Snow_3.fbx b/packages/client/resources/nature/FBX/Willow_Dead_Snow_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_Dead_Snow_3.fbx
rename to packages/client/resources/nature/FBX/Willow_Dead_Snow_3.fbx
diff --git a/client/resources/nature/FBX/Willow_Dead_Snow_4.fbx b/packages/client/resources/nature/FBX/Willow_Dead_Snow_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_Dead_Snow_4.fbx
rename to packages/client/resources/nature/FBX/Willow_Dead_Snow_4.fbx
diff --git a/client/resources/nature/FBX/Willow_Dead_Snow_5.fbx b/packages/client/resources/nature/FBX/Willow_Dead_Snow_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_Dead_Snow_5.fbx
rename to packages/client/resources/nature/FBX/Willow_Dead_Snow_5.fbx
diff --git a/client/resources/nature/FBX/Willow_Snow_1.fbx b/packages/client/resources/nature/FBX/Willow_Snow_1.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_Snow_1.fbx
rename to packages/client/resources/nature/FBX/Willow_Snow_1.fbx
diff --git a/client/resources/nature/FBX/Willow_Snow_2.fbx b/packages/client/resources/nature/FBX/Willow_Snow_2.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_Snow_2.fbx
rename to packages/client/resources/nature/FBX/Willow_Snow_2.fbx
diff --git a/client/resources/nature/FBX/Willow_Snow_3.fbx b/packages/client/resources/nature/FBX/Willow_Snow_3.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_Snow_3.fbx
rename to packages/client/resources/nature/FBX/Willow_Snow_3.fbx
diff --git a/client/resources/nature/FBX/Willow_Snow_4.fbx b/packages/client/resources/nature/FBX/Willow_Snow_4.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_Snow_4.fbx
rename to packages/client/resources/nature/FBX/Willow_Snow_4.fbx
diff --git a/client/resources/nature/FBX/Willow_Snow_5.fbx b/packages/client/resources/nature/FBX/Willow_Snow_5.fbx
similarity index 100%
rename from client/resources/nature/FBX/Willow_Snow_5.fbx
rename to packages/client/resources/nature/FBX/Willow_Snow_5.fbx
diff --git a/client/resources/nature/FBX/WoodLog.fbx b/packages/client/resources/nature/FBX/WoodLog.fbx
similarity index 100%
rename from client/resources/nature/FBX/WoodLog.fbx
rename to packages/client/resources/nature/FBX/WoodLog.fbx
diff --git a/client/resources/nature/FBX/WoodLog_Moss.fbx b/packages/client/resources/nature/FBX/WoodLog_Moss.fbx
similarity index 100%
rename from client/resources/nature/FBX/WoodLog_Moss.fbx
rename to packages/client/resources/nature/FBX/WoodLog_Moss.fbx
diff --git a/client/resources/nature/FBX/WoodLog_Snow.fbx b/packages/client/resources/nature/FBX/WoodLog_Snow.fbx
similarity index 100%
rename from client/resources/nature/FBX/WoodLog_Snow.fbx
rename to packages/client/resources/nature/FBX/WoodLog_Snow.fbx
diff --git a/client/resources/nature/License.txt b/packages/client/resources/nature/License.txt
similarity index 100%
rename from client/resources/nature/License.txt
rename to packages/client/resources/nature/License.txt
diff --git a/client/resources/nature/OBJ/BirchTree_1.mtl b/packages/client/resources/nature/OBJ/BirchTree_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_1.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_1.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_1.obj b/packages/client/resources/nature/OBJ/BirchTree_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_1.obj
rename to packages/client/resources/nature/OBJ/BirchTree_1.obj
diff --git a/client/resources/nature/OBJ/BirchTree_2.mtl b/packages/client/resources/nature/OBJ/BirchTree_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_2.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_2.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_2.obj b/packages/client/resources/nature/OBJ/BirchTree_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_2.obj
rename to packages/client/resources/nature/OBJ/BirchTree_2.obj
diff --git a/client/resources/nature/OBJ/BirchTree_3.mtl b/packages/client/resources/nature/OBJ/BirchTree_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_3.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_3.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_3.obj b/packages/client/resources/nature/OBJ/BirchTree_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_3.obj
rename to packages/client/resources/nature/OBJ/BirchTree_3.obj
diff --git a/client/resources/nature/OBJ/BirchTree_4.mtl b/packages/client/resources/nature/OBJ/BirchTree_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_4.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_4.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_4.obj b/packages/client/resources/nature/OBJ/BirchTree_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_4.obj
rename to packages/client/resources/nature/OBJ/BirchTree_4.obj
diff --git a/client/resources/nature/OBJ/BirchTree_5.mtl b/packages/client/resources/nature/OBJ/BirchTree_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_5.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_5.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_5.obj b/packages/client/resources/nature/OBJ/BirchTree_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_5.obj
rename to packages/client/resources/nature/OBJ/BirchTree_5.obj
diff --git a/client/resources/nature/OBJ/BirchTree_Autumn_1.mtl b/packages/client/resources/nature/OBJ/BirchTree_Autumn_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Autumn_1.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_Autumn_1.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_Autumn_1.obj b/packages/client/resources/nature/OBJ/BirchTree_Autumn_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Autumn_1.obj
rename to packages/client/resources/nature/OBJ/BirchTree_Autumn_1.obj
diff --git a/client/resources/nature/OBJ/BirchTree_Autumn_2.mtl b/packages/client/resources/nature/OBJ/BirchTree_Autumn_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Autumn_2.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_Autumn_2.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_Autumn_2.obj b/packages/client/resources/nature/OBJ/BirchTree_Autumn_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Autumn_2.obj
rename to packages/client/resources/nature/OBJ/BirchTree_Autumn_2.obj
diff --git a/client/resources/nature/OBJ/BirchTree_Autumn_3.mtl b/packages/client/resources/nature/OBJ/BirchTree_Autumn_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Autumn_3.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_Autumn_3.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_Autumn_3.obj b/packages/client/resources/nature/OBJ/BirchTree_Autumn_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Autumn_3.obj
rename to packages/client/resources/nature/OBJ/BirchTree_Autumn_3.obj
diff --git a/client/resources/nature/OBJ/BirchTree_Autumn_4.mtl b/packages/client/resources/nature/OBJ/BirchTree_Autumn_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Autumn_4.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_Autumn_4.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_Autumn_4.obj b/packages/client/resources/nature/OBJ/BirchTree_Autumn_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Autumn_4.obj
rename to packages/client/resources/nature/OBJ/BirchTree_Autumn_4.obj
diff --git a/client/resources/nature/OBJ/BirchTree_Autumn_5.mtl b/packages/client/resources/nature/OBJ/BirchTree_Autumn_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Autumn_5.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_Autumn_5.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_Autumn_5.obj b/packages/client/resources/nature/OBJ/BirchTree_Autumn_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Autumn_5.obj
rename to packages/client/resources/nature/OBJ/BirchTree_Autumn_5.obj
diff --git a/client/resources/nature/OBJ/BirchTree_Dead_1.mtl b/packages/client/resources/nature/OBJ/BirchTree_Dead_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Dead_1.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_Dead_1.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_Dead_1.obj b/packages/client/resources/nature/OBJ/BirchTree_Dead_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Dead_1.obj
rename to packages/client/resources/nature/OBJ/BirchTree_Dead_1.obj
diff --git a/client/resources/nature/OBJ/BirchTree_Dead_2.mtl b/packages/client/resources/nature/OBJ/BirchTree_Dead_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Dead_2.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_Dead_2.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_Dead_2.obj b/packages/client/resources/nature/OBJ/BirchTree_Dead_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Dead_2.obj
rename to packages/client/resources/nature/OBJ/BirchTree_Dead_2.obj
diff --git a/client/resources/nature/OBJ/BirchTree_Dead_3.mtl b/packages/client/resources/nature/OBJ/BirchTree_Dead_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Dead_3.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_Dead_3.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_Dead_3.obj b/packages/client/resources/nature/OBJ/BirchTree_Dead_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Dead_3.obj
rename to packages/client/resources/nature/OBJ/BirchTree_Dead_3.obj
diff --git a/client/resources/nature/OBJ/BirchTree_Dead_4.mtl b/packages/client/resources/nature/OBJ/BirchTree_Dead_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Dead_4.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_Dead_4.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_Dead_4.obj b/packages/client/resources/nature/OBJ/BirchTree_Dead_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Dead_4.obj
rename to packages/client/resources/nature/OBJ/BirchTree_Dead_4.obj
diff --git a/client/resources/nature/OBJ/BirchTree_Dead_5.mtl b/packages/client/resources/nature/OBJ/BirchTree_Dead_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Dead_5.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_Dead_5.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_Dead_5.obj b/packages/client/resources/nature/OBJ/BirchTree_Dead_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Dead_5.obj
rename to packages/client/resources/nature/OBJ/BirchTree_Dead_5.obj
diff --git a/client/resources/nature/OBJ/BirchTree_Dead_Snow_1.mtl b/packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Dead_Snow_1.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_1.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_Dead_Snow_1.obj b/packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Dead_Snow_1.obj
rename to packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_1.obj
diff --git a/client/resources/nature/OBJ/BirchTree_Dead_Snow_2.mtl b/packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Dead_Snow_2.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_2.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_Dead_Snow_2.obj b/packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Dead_Snow_2.obj
rename to packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_2.obj
diff --git a/client/resources/nature/OBJ/BirchTree_Dead_Snow_3.mtl b/packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Dead_Snow_3.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_3.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_Dead_Snow_3.obj b/packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Dead_Snow_3.obj
rename to packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_3.obj
diff --git a/client/resources/nature/OBJ/BirchTree_Dead_Snow_4.mtl b/packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Dead_Snow_4.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_4.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_Dead_Snow_4.obj b/packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Dead_Snow_4.obj
rename to packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_4.obj
diff --git a/client/resources/nature/OBJ/BirchTree_Dead_Snow_5.mtl b/packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Dead_Snow_5.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_5.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_Dead_Snow_5.obj b/packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Dead_Snow_5.obj
rename to packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_5.obj
diff --git a/client/resources/nature/OBJ/BirchTree_Snow_1.mtl b/packages/client/resources/nature/OBJ/BirchTree_Snow_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Snow_1.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_Snow_1.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_Snow_1.obj b/packages/client/resources/nature/OBJ/BirchTree_Snow_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Snow_1.obj
rename to packages/client/resources/nature/OBJ/BirchTree_Snow_1.obj
diff --git a/client/resources/nature/OBJ/BirchTree_Snow_2.mtl b/packages/client/resources/nature/OBJ/BirchTree_Snow_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Snow_2.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_Snow_2.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_Snow_2.obj b/packages/client/resources/nature/OBJ/BirchTree_Snow_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Snow_2.obj
rename to packages/client/resources/nature/OBJ/BirchTree_Snow_2.obj
diff --git a/client/resources/nature/OBJ/BirchTree_Snow_3.mtl b/packages/client/resources/nature/OBJ/BirchTree_Snow_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Snow_3.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_Snow_3.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_Snow_3.obj b/packages/client/resources/nature/OBJ/BirchTree_Snow_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Snow_3.obj
rename to packages/client/resources/nature/OBJ/BirchTree_Snow_3.obj
diff --git a/client/resources/nature/OBJ/BirchTree_Snow_4.mtl b/packages/client/resources/nature/OBJ/BirchTree_Snow_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Snow_4.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_Snow_4.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_Snow_4.obj b/packages/client/resources/nature/OBJ/BirchTree_Snow_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Snow_4.obj
rename to packages/client/resources/nature/OBJ/BirchTree_Snow_4.obj
diff --git a/client/resources/nature/OBJ/BirchTree_Snow_5.mtl b/packages/client/resources/nature/OBJ/BirchTree_Snow_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Snow_5.mtl
rename to packages/client/resources/nature/OBJ/BirchTree_Snow_5.mtl
diff --git a/client/resources/nature/OBJ/BirchTree_Snow_5.obj b/packages/client/resources/nature/OBJ/BirchTree_Snow_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/BirchTree_Snow_5.obj
rename to packages/client/resources/nature/OBJ/BirchTree_Snow_5.obj
diff --git a/client/resources/nature/OBJ/BushBerries_1.mtl b/packages/client/resources/nature/OBJ/BushBerries_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BushBerries_1.mtl
rename to packages/client/resources/nature/OBJ/BushBerries_1.mtl
diff --git a/client/resources/nature/OBJ/BushBerries_1.obj b/packages/client/resources/nature/OBJ/BushBerries_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/BushBerries_1.obj
rename to packages/client/resources/nature/OBJ/BushBerries_1.obj
diff --git a/client/resources/nature/OBJ/BushBerries_2.mtl b/packages/client/resources/nature/OBJ/BushBerries_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/BushBerries_2.mtl
rename to packages/client/resources/nature/OBJ/BushBerries_2.mtl
diff --git a/client/resources/nature/OBJ/BushBerries_2.obj b/packages/client/resources/nature/OBJ/BushBerries_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/BushBerries_2.obj
rename to packages/client/resources/nature/OBJ/BushBerries_2.obj
diff --git a/client/resources/nature/OBJ/Bush_1.mtl b/packages/client/resources/nature/OBJ/Bush_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Bush_1.mtl
rename to packages/client/resources/nature/OBJ/Bush_1.mtl
diff --git a/client/resources/nature/OBJ/Bush_1.obj b/packages/client/resources/nature/OBJ/Bush_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/Bush_1.obj
rename to packages/client/resources/nature/OBJ/Bush_1.obj
diff --git a/client/resources/nature/OBJ/Bush_2.mtl b/packages/client/resources/nature/OBJ/Bush_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Bush_2.mtl
rename to packages/client/resources/nature/OBJ/Bush_2.mtl
diff --git a/client/resources/nature/OBJ/Bush_2.obj b/packages/client/resources/nature/OBJ/Bush_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/Bush_2.obj
rename to packages/client/resources/nature/OBJ/Bush_2.obj
diff --git a/client/resources/nature/OBJ/Bush_Snow_1.mtl b/packages/client/resources/nature/OBJ/Bush_Snow_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Bush_Snow_1.mtl
rename to packages/client/resources/nature/OBJ/Bush_Snow_1.mtl
diff --git a/client/resources/nature/OBJ/Bush_Snow_1.obj b/packages/client/resources/nature/OBJ/Bush_Snow_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/Bush_Snow_1.obj
rename to packages/client/resources/nature/OBJ/Bush_Snow_1.obj
diff --git a/client/resources/nature/OBJ/Bush_Snow_2.mtl b/packages/client/resources/nature/OBJ/Bush_Snow_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Bush_Snow_2.mtl
rename to packages/client/resources/nature/OBJ/Bush_Snow_2.mtl
diff --git a/client/resources/nature/OBJ/Bush_Snow_2.obj b/packages/client/resources/nature/OBJ/Bush_Snow_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/Bush_Snow_2.obj
rename to packages/client/resources/nature/OBJ/Bush_Snow_2.obj
diff --git a/client/resources/nature/OBJ/CactusFlower_1.mtl b/packages/client/resources/nature/OBJ/CactusFlower_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CactusFlower_1.mtl
rename to packages/client/resources/nature/OBJ/CactusFlower_1.mtl
diff --git a/client/resources/nature/OBJ/CactusFlower_1.obj b/packages/client/resources/nature/OBJ/CactusFlower_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/CactusFlower_1.obj
rename to packages/client/resources/nature/OBJ/CactusFlower_1.obj
diff --git a/client/resources/nature/OBJ/CactusFlowers_2.mtl b/packages/client/resources/nature/OBJ/CactusFlowers_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CactusFlowers_2.mtl
rename to packages/client/resources/nature/OBJ/CactusFlowers_2.mtl
diff --git a/client/resources/nature/OBJ/CactusFlowers_2.obj b/packages/client/resources/nature/OBJ/CactusFlowers_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/CactusFlowers_2.obj
rename to packages/client/resources/nature/OBJ/CactusFlowers_2.obj
diff --git a/client/resources/nature/OBJ/CactusFlowers_3.mtl b/packages/client/resources/nature/OBJ/CactusFlowers_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CactusFlowers_3.mtl
rename to packages/client/resources/nature/OBJ/CactusFlowers_3.mtl
diff --git a/client/resources/nature/OBJ/CactusFlowers_3.obj b/packages/client/resources/nature/OBJ/CactusFlowers_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/CactusFlowers_3.obj
rename to packages/client/resources/nature/OBJ/CactusFlowers_3.obj
diff --git a/client/resources/nature/OBJ/CactusFlowers_4.mtl b/packages/client/resources/nature/OBJ/CactusFlowers_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CactusFlowers_4.mtl
rename to packages/client/resources/nature/OBJ/CactusFlowers_4.mtl
diff --git a/client/resources/nature/OBJ/CactusFlowers_4.obj b/packages/client/resources/nature/OBJ/CactusFlowers_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/CactusFlowers_4.obj
rename to packages/client/resources/nature/OBJ/CactusFlowers_4.obj
diff --git a/client/resources/nature/OBJ/CactusFlowers_5.mtl b/packages/client/resources/nature/OBJ/CactusFlowers_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CactusFlowers_5.mtl
rename to packages/client/resources/nature/OBJ/CactusFlowers_5.mtl
diff --git a/client/resources/nature/OBJ/CactusFlowers_5.obj b/packages/client/resources/nature/OBJ/CactusFlowers_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/CactusFlowers_5.obj
rename to packages/client/resources/nature/OBJ/CactusFlowers_5.obj
diff --git a/client/resources/nature/OBJ/Cactus_1.mtl b/packages/client/resources/nature/OBJ/Cactus_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Cactus_1.mtl
rename to packages/client/resources/nature/OBJ/Cactus_1.mtl
diff --git a/client/resources/nature/OBJ/Cactus_1.obj b/packages/client/resources/nature/OBJ/Cactus_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/Cactus_1.obj
rename to packages/client/resources/nature/OBJ/Cactus_1.obj
diff --git a/client/resources/nature/OBJ/Cactus_2.mtl b/packages/client/resources/nature/OBJ/Cactus_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Cactus_2.mtl
rename to packages/client/resources/nature/OBJ/Cactus_2.mtl
diff --git a/client/resources/nature/OBJ/Cactus_2.obj b/packages/client/resources/nature/OBJ/Cactus_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/Cactus_2.obj
rename to packages/client/resources/nature/OBJ/Cactus_2.obj
diff --git a/client/resources/nature/OBJ/Cactus_3.mtl b/packages/client/resources/nature/OBJ/Cactus_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Cactus_3.mtl
rename to packages/client/resources/nature/OBJ/Cactus_3.mtl
diff --git a/client/resources/nature/OBJ/Cactus_3.obj b/packages/client/resources/nature/OBJ/Cactus_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/Cactus_3.obj
rename to packages/client/resources/nature/OBJ/Cactus_3.obj
diff --git a/client/resources/nature/OBJ/Cactus_4.mtl b/packages/client/resources/nature/OBJ/Cactus_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Cactus_4.mtl
rename to packages/client/resources/nature/OBJ/Cactus_4.mtl
diff --git a/client/resources/nature/OBJ/Cactus_4.obj b/packages/client/resources/nature/OBJ/Cactus_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/Cactus_4.obj
rename to packages/client/resources/nature/OBJ/Cactus_4.obj
diff --git a/client/resources/nature/OBJ/Cactus_5.mtl b/packages/client/resources/nature/OBJ/Cactus_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Cactus_5.mtl
rename to packages/client/resources/nature/OBJ/Cactus_5.mtl
diff --git a/client/resources/nature/OBJ/Cactus_5.obj b/packages/client/resources/nature/OBJ/Cactus_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/Cactus_5.obj
rename to packages/client/resources/nature/OBJ/Cactus_5.obj
diff --git a/client/resources/nature/OBJ/CommonTree_1.mtl b/packages/client/resources/nature/OBJ/CommonTree_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_1.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_1.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_1.obj b/packages/client/resources/nature/OBJ/CommonTree_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_1.obj
rename to packages/client/resources/nature/OBJ/CommonTree_1.obj
diff --git a/client/resources/nature/OBJ/CommonTree_2.mtl b/packages/client/resources/nature/OBJ/CommonTree_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_2.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_2.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_2.obj b/packages/client/resources/nature/OBJ/CommonTree_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_2.obj
rename to packages/client/resources/nature/OBJ/CommonTree_2.obj
diff --git a/client/resources/nature/OBJ/CommonTree_3.mtl b/packages/client/resources/nature/OBJ/CommonTree_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_3.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_3.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_3.obj b/packages/client/resources/nature/OBJ/CommonTree_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_3.obj
rename to packages/client/resources/nature/OBJ/CommonTree_3.obj
diff --git a/client/resources/nature/OBJ/CommonTree_4.mtl b/packages/client/resources/nature/OBJ/CommonTree_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_4.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_4.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_4.obj b/packages/client/resources/nature/OBJ/CommonTree_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_4.obj
rename to packages/client/resources/nature/OBJ/CommonTree_4.obj
diff --git a/client/resources/nature/OBJ/CommonTree_5.mtl b/packages/client/resources/nature/OBJ/CommonTree_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_5.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_5.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_5.obj b/packages/client/resources/nature/OBJ/CommonTree_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_5.obj
rename to packages/client/resources/nature/OBJ/CommonTree_5.obj
diff --git a/client/resources/nature/OBJ/CommonTree_Autumn_1.mtl b/packages/client/resources/nature/OBJ/CommonTree_Autumn_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Autumn_1.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_Autumn_1.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_Autumn_1.obj b/packages/client/resources/nature/OBJ/CommonTree_Autumn_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Autumn_1.obj
rename to packages/client/resources/nature/OBJ/CommonTree_Autumn_1.obj
diff --git a/client/resources/nature/OBJ/CommonTree_Autumn_2.mtl b/packages/client/resources/nature/OBJ/CommonTree_Autumn_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Autumn_2.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_Autumn_2.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_Autumn_2.obj b/packages/client/resources/nature/OBJ/CommonTree_Autumn_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Autumn_2.obj
rename to packages/client/resources/nature/OBJ/CommonTree_Autumn_2.obj
diff --git a/client/resources/nature/OBJ/CommonTree_Autumn_3.mtl b/packages/client/resources/nature/OBJ/CommonTree_Autumn_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Autumn_3.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_Autumn_3.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_Autumn_3.obj b/packages/client/resources/nature/OBJ/CommonTree_Autumn_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Autumn_3.obj
rename to packages/client/resources/nature/OBJ/CommonTree_Autumn_3.obj
diff --git a/client/resources/nature/OBJ/CommonTree_Autumn_4.mtl b/packages/client/resources/nature/OBJ/CommonTree_Autumn_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Autumn_4.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_Autumn_4.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_Autumn_4.obj b/packages/client/resources/nature/OBJ/CommonTree_Autumn_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Autumn_4.obj
rename to packages/client/resources/nature/OBJ/CommonTree_Autumn_4.obj
diff --git a/client/resources/nature/OBJ/CommonTree_Autumn_5.mtl b/packages/client/resources/nature/OBJ/CommonTree_Autumn_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Autumn_5.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_Autumn_5.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_Autumn_5.obj b/packages/client/resources/nature/OBJ/CommonTree_Autumn_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Autumn_5.obj
rename to packages/client/resources/nature/OBJ/CommonTree_Autumn_5.obj
diff --git a/client/resources/nature/OBJ/CommonTree_Dead_1.mtl b/packages/client/resources/nature/OBJ/CommonTree_Dead_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Dead_1.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_Dead_1.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_Dead_1.obj b/packages/client/resources/nature/OBJ/CommonTree_Dead_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Dead_1.obj
rename to packages/client/resources/nature/OBJ/CommonTree_Dead_1.obj
diff --git a/client/resources/nature/OBJ/CommonTree_Dead_2.mtl b/packages/client/resources/nature/OBJ/CommonTree_Dead_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Dead_2.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_Dead_2.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_Dead_2.obj b/packages/client/resources/nature/OBJ/CommonTree_Dead_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Dead_2.obj
rename to packages/client/resources/nature/OBJ/CommonTree_Dead_2.obj
diff --git a/client/resources/nature/OBJ/CommonTree_Dead_3.mtl b/packages/client/resources/nature/OBJ/CommonTree_Dead_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Dead_3.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_Dead_3.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_Dead_3.obj b/packages/client/resources/nature/OBJ/CommonTree_Dead_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Dead_3.obj
rename to packages/client/resources/nature/OBJ/CommonTree_Dead_3.obj
diff --git a/client/resources/nature/OBJ/CommonTree_Dead_4.mtl b/packages/client/resources/nature/OBJ/CommonTree_Dead_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Dead_4.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_Dead_4.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_Dead_4.obj b/packages/client/resources/nature/OBJ/CommonTree_Dead_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Dead_4.obj
rename to packages/client/resources/nature/OBJ/CommonTree_Dead_4.obj
diff --git a/client/resources/nature/OBJ/CommonTree_Dead_5.mtl b/packages/client/resources/nature/OBJ/CommonTree_Dead_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Dead_5.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_Dead_5.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_Dead_5.obj b/packages/client/resources/nature/OBJ/CommonTree_Dead_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Dead_5.obj
rename to packages/client/resources/nature/OBJ/CommonTree_Dead_5.obj
diff --git a/client/resources/nature/OBJ/CommonTree_Dead_Snow_1.mtl b/packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Dead_Snow_1.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_1.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_Dead_Snow_1.obj b/packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Dead_Snow_1.obj
rename to packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_1.obj
diff --git a/client/resources/nature/OBJ/CommonTree_Dead_Snow_2.mtl b/packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Dead_Snow_2.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_2.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_Dead_Snow_2.obj b/packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Dead_Snow_2.obj
rename to packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_2.obj
diff --git a/client/resources/nature/OBJ/CommonTree_Dead_Snow_3.mtl b/packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Dead_Snow_3.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_3.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_Dead_Snow_3.obj b/packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Dead_Snow_3.obj
rename to packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_3.obj
diff --git a/client/resources/nature/OBJ/CommonTree_Dead_Snow_4.mtl b/packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Dead_Snow_4.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_4.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_Dead_Snow_4.obj b/packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Dead_Snow_4.obj
rename to packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_4.obj
diff --git a/client/resources/nature/OBJ/CommonTree_Dead_Snow_5.mtl b/packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Dead_Snow_5.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_5.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_Dead_Snow_5.obj b/packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Dead_Snow_5.obj
rename to packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_5.obj
diff --git a/client/resources/nature/OBJ/CommonTree_Snow_1.mtl b/packages/client/resources/nature/OBJ/CommonTree_Snow_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Snow_1.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_Snow_1.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_Snow_1.obj b/packages/client/resources/nature/OBJ/CommonTree_Snow_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Snow_1.obj
rename to packages/client/resources/nature/OBJ/CommonTree_Snow_1.obj
diff --git a/client/resources/nature/OBJ/CommonTree_Snow_2.mtl b/packages/client/resources/nature/OBJ/CommonTree_Snow_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Snow_2.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_Snow_2.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_Snow_2.obj b/packages/client/resources/nature/OBJ/CommonTree_Snow_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Snow_2.obj
rename to packages/client/resources/nature/OBJ/CommonTree_Snow_2.obj
diff --git a/client/resources/nature/OBJ/CommonTree_Snow_3.mtl b/packages/client/resources/nature/OBJ/CommonTree_Snow_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Snow_3.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_Snow_3.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_Snow_3.obj b/packages/client/resources/nature/OBJ/CommonTree_Snow_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Snow_3.obj
rename to packages/client/resources/nature/OBJ/CommonTree_Snow_3.obj
diff --git a/client/resources/nature/OBJ/CommonTree_Snow_4.mtl b/packages/client/resources/nature/OBJ/CommonTree_Snow_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Snow_4.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_Snow_4.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_Snow_4.obj b/packages/client/resources/nature/OBJ/CommonTree_Snow_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Snow_4.obj
rename to packages/client/resources/nature/OBJ/CommonTree_Snow_4.obj
diff --git a/client/resources/nature/OBJ/CommonTree_Snow_5.mtl b/packages/client/resources/nature/OBJ/CommonTree_Snow_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Snow_5.mtl
rename to packages/client/resources/nature/OBJ/CommonTree_Snow_5.mtl
diff --git a/client/resources/nature/OBJ/CommonTree_Snow_5.obj b/packages/client/resources/nature/OBJ/CommonTree_Snow_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/CommonTree_Snow_5.obj
rename to packages/client/resources/nature/OBJ/CommonTree_Snow_5.obj
diff --git a/client/resources/nature/OBJ/Corn_1.mtl b/packages/client/resources/nature/OBJ/Corn_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Corn_1.mtl
rename to packages/client/resources/nature/OBJ/Corn_1.mtl
diff --git a/client/resources/nature/OBJ/Corn_1.obj b/packages/client/resources/nature/OBJ/Corn_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/Corn_1.obj
rename to packages/client/resources/nature/OBJ/Corn_1.obj
diff --git a/client/resources/nature/OBJ/Corn_2.mtl b/packages/client/resources/nature/OBJ/Corn_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Corn_2.mtl
rename to packages/client/resources/nature/OBJ/Corn_2.mtl
diff --git a/client/resources/nature/OBJ/Corn_2.obj b/packages/client/resources/nature/OBJ/Corn_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/Corn_2.obj
rename to packages/client/resources/nature/OBJ/Corn_2.obj
diff --git a/client/resources/nature/OBJ/Flowers.mtl b/packages/client/resources/nature/OBJ/Flowers.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Flowers.mtl
rename to packages/client/resources/nature/OBJ/Flowers.mtl
diff --git a/client/resources/nature/OBJ/Flowers.obj b/packages/client/resources/nature/OBJ/Flowers.obj
similarity index 100%
rename from client/resources/nature/OBJ/Flowers.obj
rename to packages/client/resources/nature/OBJ/Flowers.obj
diff --git a/client/resources/nature/OBJ/Grass.mtl b/packages/client/resources/nature/OBJ/Grass.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Grass.mtl
rename to packages/client/resources/nature/OBJ/Grass.mtl
diff --git a/client/resources/nature/OBJ/Grass.obj b/packages/client/resources/nature/OBJ/Grass.obj
similarity index 100%
rename from client/resources/nature/OBJ/Grass.obj
rename to packages/client/resources/nature/OBJ/Grass.obj
diff --git a/client/resources/nature/OBJ/Grass_2.mtl b/packages/client/resources/nature/OBJ/Grass_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Grass_2.mtl
rename to packages/client/resources/nature/OBJ/Grass_2.mtl
diff --git a/client/resources/nature/OBJ/Grass_2.obj b/packages/client/resources/nature/OBJ/Grass_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/Grass_2.obj
rename to packages/client/resources/nature/OBJ/Grass_2.obj
diff --git a/client/resources/nature/OBJ/Grass_Short.mtl b/packages/client/resources/nature/OBJ/Grass_Short.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Grass_Short.mtl
rename to packages/client/resources/nature/OBJ/Grass_Short.mtl
diff --git a/client/resources/nature/OBJ/Grass_Short.obj b/packages/client/resources/nature/OBJ/Grass_Short.obj
similarity index 100%
rename from client/resources/nature/OBJ/Grass_Short.obj
rename to packages/client/resources/nature/OBJ/Grass_Short.obj
diff --git a/client/resources/nature/OBJ/Lilypad.mtl b/packages/client/resources/nature/OBJ/Lilypad.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Lilypad.mtl
rename to packages/client/resources/nature/OBJ/Lilypad.mtl
diff --git a/client/resources/nature/OBJ/Lilypad.obj b/packages/client/resources/nature/OBJ/Lilypad.obj
similarity index 100%
rename from client/resources/nature/OBJ/Lilypad.obj
rename to packages/client/resources/nature/OBJ/Lilypad.obj
diff --git a/client/resources/nature/OBJ/PalmTree_1.mtl b/packages/client/resources/nature/OBJ/PalmTree_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/PalmTree_1.mtl
rename to packages/client/resources/nature/OBJ/PalmTree_1.mtl
diff --git a/client/resources/nature/OBJ/PalmTree_1.obj b/packages/client/resources/nature/OBJ/PalmTree_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/PalmTree_1.obj
rename to packages/client/resources/nature/OBJ/PalmTree_1.obj
diff --git a/client/resources/nature/OBJ/PalmTree_2.mtl b/packages/client/resources/nature/OBJ/PalmTree_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/PalmTree_2.mtl
rename to packages/client/resources/nature/OBJ/PalmTree_2.mtl
diff --git a/client/resources/nature/OBJ/PalmTree_2.obj b/packages/client/resources/nature/OBJ/PalmTree_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/PalmTree_2.obj
rename to packages/client/resources/nature/OBJ/PalmTree_2.obj
diff --git a/client/resources/nature/OBJ/PalmTree_3.mtl b/packages/client/resources/nature/OBJ/PalmTree_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/PalmTree_3.mtl
rename to packages/client/resources/nature/OBJ/PalmTree_3.mtl
diff --git a/client/resources/nature/OBJ/PalmTree_3.obj b/packages/client/resources/nature/OBJ/PalmTree_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/PalmTree_3.obj
rename to packages/client/resources/nature/OBJ/PalmTree_3.obj
diff --git a/client/resources/nature/OBJ/PalmTree_4.mtl b/packages/client/resources/nature/OBJ/PalmTree_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/PalmTree_4.mtl
rename to packages/client/resources/nature/OBJ/PalmTree_4.mtl
diff --git a/client/resources/nature/OBJ/PalmTree_4.obj b/packages/client/resources/nature/OBJ/PalmTree_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/PalmTree_4.obj
rename to packages/client/resources/nature/OBJ/PalmTree_4.obj
diff --git a/client/resources/nature/OBJ/PineTree_1.mtl b/packages/client/resources/nature/OBJ/PineTree_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_1.mtl
rename to packages/client/resources/nature/OBJ/PineTree_1.mtl
diff --git a/client/resources/nature/OBJ/PineTree_1.obj b/packages/client/resources/nature/OBJ/PineTree_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_1.obj
rename to packages/client/resources/nature/OBJ/PineTree_1.obj
diff --git a/client/resources/nature/OBJ/PineTree_2.mtl b/packages/client/resources/nature/OBJ/PineTree_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_2.mtl
rename to packages/client/resources/nature/OBJ/PineTree_2.mtl
diff --git a/client/resources/nature/OBJ/PineTree_2.obj b/packages/client/resources/nature/OBJ/PineTree_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_2.obj
rename to packages/client/resources/nature/OBJ/PineTree_2.obj
diff --git a/client/resources/nature/OBJ/PineTree_3.mtl b/packages/client/resources/nature/OBJ/PineTree_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_3.mtl
rename to packages/client/resources/nature/OBJ/PineTree_3.mtl
diff --git a/client/resources/nature/OBJ/PineTree_3.obj b/packages/client/resources/nature/OBJ/PineTree_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_3.obj
rename to packages/client/resources/nature/OBJ/PineTree_3.obj
diff --git a/client/resources/nature/OBJ/PineTree_4.mtl b/packages/client/resources/nature/OBJ/PineTree_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_4.mtl
rename to packages/client/resources/nature/OBJ/PineTree_4.mtl
diff --git a/client/resources/nature/OBJ/PineTree_4.obj b/packages/client/resources/nature/OBJ/PineTree_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_4.obj
rename to packages/client/resources/nature/OBJ/PineTree_4.obj
diff --git a/client/resources/nature/OBJ/PineTree_5.mtl b/packages/client/resources/nature/OBJ/PineTree_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_5.mtl
rename to packages/client/resources/nature/OBJ/PineTree_5.mtl
diff --git a/client/resources/nature/OBJ/PineTree_5.obj b/packages/client/resources/nature/OBJ/PineTree_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_5.obj
rename to packages/client/resources/nature/OBJ/PineTree_5.obj
diff --git a/client/resources/nature/OBJ/PineTree_Autumn_1.mtl b/packages/client/resources/nature/OBJ/PineTree_Autumn_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_Autumn_1.mtl
rename to packages/client/resources/nature/OBJ/PineTree_Autumn_1.mtl
diff --git a/client/resources/nature/OBJ/PineTree_Autumn_1.obj b/packages/client/resources/nature/OBJ/PineTree_Autumn_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_Autumn_1.obj
rename to packages/client/resources/nature/OBJ/PineTree_Autumn_1.obj
diff --git a/client/resources/nature/OBJ/PineTree_Autumn_2.mtl b/packages/client/resources/nature/OBJ/PineTree_Autumn_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_Autumn_2.mtl
rename to packages/client/resources/nature/OBJ/PineTree_Autumn_2.mtl
diff --git a/client/resources/nature/OBJ/PineTree_Autumn_2.obj b/packages/client/resources/nature/OBJ/PineTree_Autumn_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_Autumn_2.obj
rename to packages/client/resources/nature/OBJ/PineTree_Autumn_2.obj
diff --git a/client/resources/nature/OBJ/PineTree_Autumn_3.mtl b/packages/client/resources/nature/OBJ/PineTree_Autumn_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_Autumn_3.mtl
rename to packages/client/resources/nature/OBJ/PineTree_Autumn_3.mtl
diff --git a/client/resources/nature/OBJ/PineTree_Autumn_3.obj b/packages/client/resources/nature/OBJ/PineTree_Autumn_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_Autumn_3.obj
rename to packages/client/resources/nature/OBJ/PineTree_Autumn_3.obj
diff --git a/client/resources/nature/OBJ/PineTree_Autumn_4.mtl b/packages/client/resources/nature/OBJ/PineTree_Autumn_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_Autumn_4.mtl
rename to packages/client/resources/nature/OBJ/PineTree_Autumn_4.mtl
diff --git a/client/resources/nature/OBJ/PineTree_Autumn_4.obj b/packages/client/resources/nature/OBJ/PineTree_Autumn_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_Autumn_4.obj
rename to packages/client/resources/nature/OBJ/PineTree_Autumn_4.obj
diff --git a/client/resources/nature/OBJ/PineTree_Autumn_5.mtl b/packages/client/resources/nature/OBJ/PineTree_Autumn_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_Autumn_5.mtl
rename to packages/client/resources/nature/OBJ/PineTree_Autumn_5.mtl
diff --git a/client/resources/nature/OBJ/PineTree_Autumn_5.obj b/packages/client/resources/nature/OBJ/PineTree_Autumn_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_Autumn_5.obj
rename to packages/client/resources/nature/OBJ/PineTree_Autumn_5.obj
diff --git a/client/resources/nature/OBJ/PineTree_Snow_1.mtl b/packages/client/resources/nature/OBJ/PineTree_Snow_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_Snow_1.mtl
rename to packages/client/resources/nature/OBJ/PineTree_Snow_1.mtl
diff --git a/client/resources/nature/OBJ/PineTree_Snow_1.obj b/packages/client/resources/nature/OBJ/PineTree_Snow_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_Snow_1.obj
rename to packages/client/resources/nature/OBJ/PineTree_Snow_1.obj
diff --git a/client/resources/nature/OBJ/PineTree_Snow_2.mtl b/packages/client/resources/nature/OBJ/PineTree_Snow_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_Snow_2.mtl
rename to packages/client/resources/nature/OBJ/PineTree_Snow_2.mtl
diff --git a/client/resources/nature/OBJ/PineTree_Snow_2.obj b/packages/client/resources/nature/OBJ/PineTree_Snow_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_Snow_2.obj
rename to packages/client/resources/nature/OBJ/PineTree_Snow_2.obj
diff --git a/client/resources/nature/OBJ/PineTree_Snow_3.mtl b/packages/client/resources/nature/OBJ/PineTree_Snow_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_Snow_3.mtl
rename to packages/client/resources/nature/OBJ/PineTree_Snow_3.mtl
diff --git a/client/resources/nature/OBJ/PineTree_Snow_3.obj b/packages/client/resources/nature/OBJ/PineTree_Snow_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_Snow_3.obj
rename to packages/client/resources/nature/OBJ/PineTree_Snow_3.obj
diff --git a/client/resources/nature/OBJ/PineTree_Snow_4.mtl b/packages/client/resources/nature/OBJ/PineTree_Snow_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_Snow_4.mtl
rename to packages/client/resources/nature/OBJ/PineTree_Snow_4.mtl
diff --git a/client/resources/nature/OBJ/PineTree_Snow_4.obj b/packages/client/resources/nature/OBJ/PineTree_Snow_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_Snow_4.obj
rename to packages/client/resources/nature/OBJ/PineTree_Snow_4.obj
diff --git a/client/resources/nature/OBJ/PineTree_Snow_5.mtl b/packages/client/resources/nature/OBJ/PineTree_Snow_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_Snow_5.mtl
rename to packages/client/resources/nature/OBJ/PineTree_Snow_5.mtl
diff --git a/client/resources/nature/OBJ/PineTree_Snow_5.obj b/packages/client/resources/nature/OBJ/PineTree_Snow_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/PineTree_Snow_5.obj
rename to packages/client/resources/nature/OBJ/PineTree_Snow_5.obj
diff --git a/client/resources/nature/OBJ/Plant_1.mtl b/packages/client/resources/nature/OBJ/Plant_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Plant_1.mtl
rename to packages/client/resources/nature/OBJ/Plant_1.mtl
diff --git a/client/resources/nature/OBJ/Plant_1.obj b/packages/client/resources/nature/OBJ/Plant_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/Plant_1.obj
rename to packages/client/resources/nature/OBJ/Plant_1.obj
diff --git a/client/resources/nature/OBJ/Plant_2.mtl b/packages/client/resources/nature/OBJ/Plant_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Plant_2.mtl
rename to packages/client/resources/nature/OBJ/Plant_2.mtl
diff --git a/client/resources/nature/OBJ/Plant_2.obj b/packages/client/resources/nature/OBJ/Plant_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/Plant_2.obj
rename to packages/client/resources/nature/OBJ/Plant_2.obj
diff --git a/client/resources/nature/OBJ/Plant_3.mtl b/packages/client/resources/nature/OBJ/Plant_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Plant_3.mtl
rename to packages/client/resources/nature/OBJ/Plant_3.mtl
diff --git a/client/resources/nature/OBJ/Plant_3.obj b/packages/client/resources/nature/OBJ/Plant_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/Plant_3.obj
rename to packages/client/resources/nature/OBJ/Plant_3.obj
diff --git a/client/resources/nature/OBJ/Plant_4.mtl b/packages/client/resources/nature/OBJ/Plant_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Plant_4.mtl
rename to packages/client/resources/nature/OBJ/Plant_4.mtl
diff --git a/client/resources/nature/OBJ/Plant_4.obj b/packages/client/resources/nature/OBJ/Plant_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/Plant_4.obj
rename to packages/client/resources/nature/OBJ/Plant_4.obj
diff --git a/client/resources/nature/OBJ/Plant_5.mtl b/packages/client/resources/nature/OBJ/Plant_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Plant_5.mtl
rename to packages/client/resources/nature/OBJ/Plant_5.mtl
diff --git a/client/resources/nature/OBJ/Plant_5.obj b/packages/client/resources/nature/OBJ/Plant_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/Plant_5.obj
rename to packages/client/resources/nature/OBJ/Plant_5.obj
diff --git a/client/resources/nature/OBJ/Rock_1.mtl b/packages/client/resources/nature/OBJ/Rock_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Rock_1.mtl
rename to packages/client/resources/nature/OBJ/Rock_1.mtl
diff --git a/client/resources/nature/OBJ/Rock_1.obj b/packages/client/resources/nature/OBJ/Rock_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/Rock_1.obj
rename to packages/client/resources/nature/OBJ/Rock_1.obj
diff --git a/client/resources/nature/OBJ/Rock_2.mtl b/packages/client/resources/nature/OBJ/Rock_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Rock_2.mtl
rename to packages/client/resources/nature/OBJ/Rock_2.mtl
diff --git a/client/resources/nature/OBJ/Rock_2.obj b/packages/client/resources/nature/OBJ/Rock_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/Rock_2.obj
rename to packages/client/resources/nature/OBJ/Rock_2.obj
diff --git a/client/resources/nature/OBJ/Rock_3.mtl b/packages/client/resources/nature/OBJ/Rock_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Rock_3.mtl
rename to packages/client/resources/nature/OBJ/Rock_3.mtl
diff --git a/client/resources/nature/OBJ/Rock_3.obj b/packages/client/resources/nature/OBJ/Rock_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/Rock_3.obj
rename to packages/client/resources/nature/OBJ/Rock_3.obj
diff --git a/client/resources/nature/OBJ/Rock_4.mtl b/packages/client/resources/nature/OBJ/Rock_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Rock_4.mtl
rename to packages/client/resources/nature/OBJ/Rock_4.mtl
diff --git a/client/resources/nature/OBJ/Rock_4.obj b/packages/client/resources/nature/OBJ/Rock_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/Rock_4.obj
rename to packages/client/resources/nature/OBJ/Rock_4.obj
diff --git a/client/resources/nature/OBJ/Rock_5.mtl b/packages/client/resources/nature/OBJ/Rock_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Rock_5.mtl
rename to packages/client/resources/nature/OBJ/Rock_5.mtl
diff --git a/client/resources/nature/OBJ/Rock_5.obj b/packages/client/resources/nature/OBJ/Rock_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/Rock_5.obj
rename to packages/client/resources/nature/OBJ/Rock_5.obj
diff --git a/client/resources/nature/OBJ/Rock_6.mtl b/packages/client/resources/nature/OBJ/Rock_6.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Rock_6.mtl
rename to packages/client/resources/nature/OBJ/Rock_6.mtl
diff --git a/client/resources/nature/OBJ/Rock_6.obj b/packages/client/resources/nature/OBJ/Rock_6.obj
similarity index 100%
rename from client/resources/nature/OBJ/Rock_6.obj
rename to packages/client/resources/nature/OBJ/Rock_6.obj
diff --git a/client/resources/nature/OBJ/Rock_7.mtl b/packages/client/resources/nature/OBJ/Rock_7.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Rock_7.mtl
rename to packages/client/resources/nature/OBJ/Rock_7.mtl
diff --git a/client/resources/nature/OBJ/Rock_7.obj b/packages/client/resources/nature/OBJ/Rock_7.obj
similarity index 100%
rename from client/resources/nature/OBJ/Rock_7.obj
rename to packages/client/resources/nature/OBJ/Rock_7.obj
diff --git a/client/resources/nature/OBJ/Rock_Moss_1.mtl b/packages/client/resources/nature/OBJ/Rock_Moss_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Moss_1.mtl
rename to packages/client/resources/nature/OBJ/Rock_Moss_1.mtl
diff --git a/client/resources/nature/OBJ/Rock_Moss_1.obj b/packages/client/resources/nature/OBJ/Rock_Moss_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Moss_1.obj
rename to packages/client/resources/nature/OBJ/Rock_Moss_1.obj
diff --git a/client/resources/nature/OBJ/Rock_Moss_2.mtl b/packages/client/resources/nature/OBJ/Rock_Moss_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Moss_2.mtl
rename to packages/client/resources/nature/OBJ/Rock_Moss_2.mtl
diff --git a/client/resources/nature/OBJ/Rock_Moss_2.obj b/packages/client/resources/nature/OBJ/Rock_Moss_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Moss_2.obj
rename to packages/client/resources/nature/OBJ/Rock_Moss_2.obj
diff --git a/client/resources/nature/OBJ/Rock_Moss_3.mtl b/packages/client/resources/nature/OBJ/Rock_Moss_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Moss_3.mtl
rename to packages/client/resources/nature/OBJ/Rock_Moss_3.mtl
diff --git a/client/resources/nature/OBJ/Rock_Moss_3.obj b/packages/client/resources/nature/OBJ/Rock_Moss_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Moss_3.obj
rename to packages/client/resources/nature/OBJ/Rock_Moss_3.obj
diff --git a/client/resources/nature/OBJ/Rock_Moss_4.mtl b/packages/client/resources/nature/OBJ/Rock_Moss_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Moss_4.mtl
rename to packages/client/resources/nature/OBJ/Rock_Moss_4.mtl
diff --git a/client/resources/nature/OBJ/Rock_Moss_4.obj b/packages/client/resources/nature/OBJ/Rock_Moss_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Moss_4.obj
rename to packages/client/resources/nature/OBJ/Rock_Moss_4.obj
diff --git a/client/resources/nature/OBJ/Rock_Moss_5.mtl b/packages/client/resources/nature/OBJ/Rock_Moss_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Moss_5.mtl
rename to packages/client/resources/nature/OBJ/Rock_Moss_5.mtl
diff --git a/client/resources/nature/OBJ/Rock_Moss_5.obj b/packages/client/resources/nature/OBJ/Rock_Moss_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Moss_5.obj
rename to packages/client/resources/nature/OBJ/Rock_Moss_5.obj
diff --git a/client/resources/nature/OBJ/Rock_Moss_6.mtl b/packages/client/resources/nature/OBJ/Rock_Moss_6.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Moss_6.mtl
rename to packages/client/resources/nature/OBJ/Rock_Moss_6.mtl
diff --git a/client/resources/nature/OBJ/Rock_Moss_6.obj b/packages/client/resources/nature/OBJ/Rock_Moss_6.obj
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Moss_6.obj
rename to packages/client/resources/nature/OBJ/Rock_Moss_6.obj
diff --git a/client/resources/nature/OBJ/Rock_Moss_7.mtl b/packages/client/resources/nature/OBJ/Rock_Moss_7.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Moss_7.mtl
rename to packages/client/resources/nature/OBJ/Rock_Moss_7.mtl
diff --git a/client/resources/nature/OBJ/Rock_Moss_7.obj b/packages/client/resources/nature/OBJ/Rock_Moss_7.obj
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Moss_7.obj
rename to packages/client/resources/nature/OBJ/Rock_Moss_7.obj
diff --git a/client/resources/nature/OBJ/Rock_Snow_1.mtl b/packages/client/resources/nature/OBJ/Rock_Snow_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Snow_1.mtl
rename to packages/client/resources/nature/OBJ/Rock_Snow_1.mtl
diff --git a/client/resources/nature/OBJ/Rock_Snow_1.obj b/packages/client/resources/nature/OBJ/Rock_Snow_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Snow_1.obj
rename to packages/client/resources/nature/OBJ/Rock_Snow_1.obj
diff --git a/client/resources/nature/OBJ/Rock_Snow_2.mtl b/packages/client/resources/nature/OBJ/Rock_Snow_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Snow_2.mtl
rename to packages/client/resources/nature/OBJ/Rock_Snow_2.mtl
diff --git a/client/resources/nature/OBJ/Rock_Snow_2.obj b/packages/client/resources/nature/OBJ/Rock_Snow_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Snow_2.obj
rename to packages/client/resources/nature/OBJ/Rock_Snow_2.obj
diff --git a/client/resources/nature/OBJ/Rock_Snow_3.mtl b/packages/client/resources/nature/OBJ/Rock_Snow_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Snow_3.mtl
rename to packages/client/resources/nature/OBJ/Rock_Snow_3.mtl
diff --git a/client/resources/nature/OBJ/Rock_Snow_3.obj b/packages/client/resources/nature/OBJ/Rock_Snow_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Snow_3.obj
rename to packages/client/resources/nature/OBJ/Rock_Snow_3.obj
diff --git a/client/resources/nature/OBJ/Rock_Snow_4.mtl b/packages/client/resources/nature/OBJ/Rock_Snow_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Snow_4.mtl
rename to packages/client/resources/nature/OBJ/Rock_Snow_4.mtl
diff --git a/client/resources/nature/OBJ/Rock_Snow_4.obj b/packages/client/resources/nature/OBJ/Rock_Snow_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Snow_4.obj
rename to packages/client/resources/nature/OBJ/Rock_Snow_4.obj
diff --git a/client/resources/nature/OBJ/Rock_Snow_5.mtl b/packages/client/resources/nature/OBJ/Rock_Snow_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Snow_5.mtl
rename to packages/client/resources/nature/OBJ/Rock_Snow_5.mtl
diff --git a/client/resources/nature/OBJ/Rock_Snow_5.obj b/packages/client/resources/nature/OBJ/Rock_Snow_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Snow_5.obj
rename to packages/client/resources/nature/OBJ/Rock_Snow_5.obj
diff --git a/client/resources/nature/OBJ/Rock_Snow_6.mtl b/packages/client/resources/nature/OBJ/Rock_Snow_6.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Snow_6.mtl
rename to packages/client/resources/nature/OBJ/Rock_Snow_6.mtl
diff --git a/client/resources/nature/OBJ/Rock_Snow_6.obj b/packages/client/resources/nature/OBJ/Rock_Snow_6.obj
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Snow_6.obj
rename to packages/client/resources/nature/OBJ/Rock_Snow_6.obj
diff --git a/client/resources/nature/OBJ/Rock_Snow_7.mtl b/packages/client/resources/nature/OBJ/Rock_Snow_7.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Snow_7.mtl
rename to packages/client/resources/nature/OBJ/Rock_Snow_7.mtl
diff --git a/client/resources/nature/OBJ/Rock_Snow_7.obj b/packages/client/resources/nature/OBJ/Rock_Snow_7.obj
similarity index 100%
rename from client/resources/nature/OBJ/Rock_Snow_7.obj
rename to packages/client/resources/nature/OBJ/Rock_Snow_7.obj
diff --git a/client/resources/nature/OBJ/TreeStump.mtl b/packages/client/resources/nature/OBJ/TreeStump.mtl
similarity index 100%
rename from client/resources/nature/OBJ/TreeStump.mtl
rename to packages/client/resources/nature/OBJ/TreeStump.mtl
diff --git a/client/resources/nature/OBJ/TreeStump.obj b/packages/client/resources/nature/OBJ/TreeStump.obj
similarity index 100%
rename from client/resources/nature/OBJ/TreeStump.obj
rename to packages/client/resources/nature/OBJ/TreeStump.obj
diff --git a/client/resources/nature/OBJ/TreeStump_Moss.mtl b/packages/client/resources/nature/OBJ/TreeStump_Moss.mtl
similarity index 100%
rename from client/resources/nature/OBJ/TreeStump_Moss.mtl
rename to packages/client/resources/nature/OBJ/TreeStump_Moss.mtl
diff --git a/client/resources/nature/OBJ/TreeStump_Moss.obj b/packages/client/resources/nature/OBJ/TreeStump_Moss.obj
similarity index 100%
rename from client/resources/nature/OBJ/TreeStump_Moss.obj
rename to packages/client/resources/nature/OBJ/TreeStump_Moss.obj
diff --git a/client/resources/nature/OBJ/TreeStump_Snow.mtl b/packages/client/resources/nature/OBJ/TreeStump_Snow.mtl
similarity index 100%
rename from client/resources/nature/OBJ/TreeStump_Snow.mtl
rename to packages/client/resources/nature/OBJ/TreeStump_Snow.mtl
diff --git a/client/resources/nature/OBJ/TreeStump_Snow.obj b/packages/client/resources/nature/OBJ/TreeStump_Snow.obj
similarity index 100%
rename from client/resources/nature/OBJ/TreeStump_Snow.obj
rename to packages/client/resources/nature/OBJ/TreeStump_Snow.obj
diff --git a/client/resources/nature/OBJ/Wheat.mtl b/packages/client/resources/nature/OBJ/Wheat.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Wheat.mtl
rename to packages/client/resources/nature/OBJ/Wheat.mtl
diff --git a/client/resources/nature/OBJ/Wheat.obj b/packages/client/resources/nature/OBJ/Wheat.obj
similarity index 100%
rename from client/resources/nature/OBJ/Wheat.obj
rename to packages/client/resources/nature/OBJ/Wheat.obj
diff --git a/client/resources/nature/OBJ/Willow_1.mtl b/packages/client/resources/nature/OBJ/Willow_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_1.mtl
rename to packages/client/resources/nature/OBJ/Willow_1.mtl
diff --git a/client/resources/nature/OBJ/Willow_1.obj b/packages/client/resources/nature/OBJ/Willow_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_1.obj
rename to packages/client/resources/nature/OBJ/Willow_1.obj
diff --git a/client/resources/nature/OBJ/Willow_2.mtl b/packages/client/resources/nature/OBJ/Willow_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_2.mtl
rename to packages/client/resources/nature/OBJ/Willow_2.mtl
diff --git a/client/resources/nature/OBJ/Willow_2.obj b/packages/client/resources/nature/OBJ/Willow_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_2.obj
rename to packages/client/resources/nature/OBJ/Willow_2.obj
diff --git a/client/resources/nature/OBJ/Willow_3.mtl b/packages/client/resources/nature/OBJ/Willow_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_3.mtl
rename to packages/client/resources/nature/OBJ/Willow_3.mtl
diff --git a/client/resources/nature/OBJ/Willow_3.obj b/packages/client/resources/nature/OBJ/Willow_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_3.obj
rename to packages/client/resources/nature/OBJ/Willow_3.obj
diff --git a/client/resources/nature/OBJ/Willow_4.mtl b/packages/client/resources/nature/OBJ/Willow_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_4.mtl
rename to packages/client/resources/nature/OBJ/Willow_4.mtl
diff --git a/client/resources/nature/OBJ/Willow_4.obj b/packages/client/resources/nature/OBJ/Willow_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_4.obj
rename to packages/client/resources/nature/OBJ/Willow_4.obj
diff --git a/client/resources/nature/OBJ/Willow_5.mtl b/packages/client/resources/nature/OBJ/Willow_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_5.mtl
rename to packages/client/resources/nature/OBJ/Willow_5.mtl
diff --git a/client/resources/nature/OBJ/Willow_5.obj b/packages/client/resources/nature/OBJ/Willow_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_5.obj
rename to packages/client/resources/nature/OBJ/Willow_5.obj
diff --git a/client/resources/nature/OBJ/Willow_Autumn_1.mtl b/packages/client/resources/nature/OBJ/Willow_Autumn_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Autumn_1.mtl
rename to packages/client/resources/nature/OBJ/Willow_Autumn_1.mtl
diff --git a/client/resources/nature/OBJ/Willow_Autumn_1.obj b/packages/client/resources/nature/OBJ/Willow_Autumn_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Autumn_1.obj
rename to packages/client/resources/nature/OBJ/Willow_Autumn_1.obj
diff --git a/client/resources/nature/OBJ/Willow_Autumn_2.mtl b/packages/client/resources/nature/OBJ/Willow_Autumn_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Autumn_2.mtl
rename to packages/client/resources/nature/OBJ/Willow_Autumn_2.mtl
diff --git a/client/resources/nature/OBJ/Willow_Autumn_2.obj b/packages/client/resources/nature/OBJ/Willow_Autumn_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Autumn_2.obj
rename to packages/client/resources/nature/OBJ/Willow_Autumn_2.obj
diff --git a/client/resources/nature/OBJ/Willow_Autumn_3.mtl b/packages/client/resources/nature/OBJ/Willow_Autumn_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Autumn_3.mtl
rename to packages/client/resources/nature/OBJ/Willow_Autumn_3.mtl
diff --git a/client/resources/nature/OBJ/Willow_Autumn_3.obj b/packages/client/resources/nature/OBJ/Willow_Autumn_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Autumn_3.obj
rename to packages/client/resources/nature/OBJ/Willow_Autumn_3.obj
diff --git a/client/resources/nature/OBJ/Willow_Autumn_4.mtl b/packages/client/resources/nature/OBJ/Willow_Autumn_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Autumn_4.mtl
rename to packages/client/resources/nature/OBJ/Willow_Autumn_4.mtl
diff --git a/client/resources/nature/OBJ/Willow_Autumn_4.obj b/packages/client/resources/nature/OBJ/Willow_Autumn_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Autumn_4.obj
rename to packages/client/resources/nature/OBJ/Willow_Autumn_4.obj
diff --git a/client/resources/nature/OBJ/Willow_Autumn_5.mtl b/packages/client/resources/nature/OBJ/Willow_Autumn_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Autumn_5.mtl
rename to packages/client/resources/nature/OBJ/Willow_Autumn_5.mtl
diff --git a/client/resources/nature/OBJ/Willow_Autumn_5.obj b/packages/client/resources/nature/OBJ/Willow_Autumn_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Autumn_5.obj
rename to packages/client/resources/nature/OBJ/Willow_Autumn_5.obj
diff --git a/client/resources/nature/OBJ/Willow_Dead_1.mtl b/packages/client/resources/nature/OBJ/Willow_Dead_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Dead_1.mtl
rename to packages/client/resources/nature/OBJ/Willow_Dead_1.mtl
diff --git a/client/resources/nature/OBJ/Willow_Dead_1.obj b/packages/client/resources/nature/OBJ/Willow_Dead_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Dead_1.obj
rename to packages/client/resources/nature/OBJ/Willow_Dead_1.obj
diff --git a/client/resources/nature/OBJ/Willow_Dead_2.mtl b/packages/client/resources/nature/OBJ/Willow_Dead_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Dead_2.mtl
rename to packages/client/resources/nature/OBJ/Willow_Dead_2.mtl
diff --git a/client/resources/nature/OBJ/Willow_Dead_2.obj b/packages/client/resources/nature/OBJ/Willow_Dead_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Dead_2.obj
rename to packages/client/resources/nature/OBJ/Willow_Dead_2.obj
diff --git a/client/resources/nature/OBJ/Willow_Dead_3.mtl b/packages/client/resources/nature/OBJ/Willow_Dead_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Dead_3.mtl
rename to packages/client/resources/nature/OBJ/Willow_Dead_3.mtl
diff --git a/client/resources/nature/OBJ/Willow_Dead_3.obj b/packages/client/resources/nature/OBJ/Willow_Dead_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Dead_3.obj
rename to packages/client/resources/nature/OBJ/Willow_Dead_3.obj
diff --git a/client/resources/nature/OBJ/Willow_Dead_4.mtl b/packages/client/resources/nature/OBJ/Willow_Dead_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Dead_4.mtl
rename to packages/client/resources/nature/OBJ/Willow_Dead_4.mtl
diff --git a/client/resources/nature/OBJ/Willow_Dead_4.obj b/packages/client/resources/nature/OBJ/Willow_Dead_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Dead_4.obj
rename to packages/client/resources/nature/OBJ/Willow_Dead_4.obj
diff --git a/client/resources/nature/OBJ/Willow_Dead_5.mtl b/packages/client/resources/nature/OBJ/Willow_Dead_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Dead_5.mtl
rename to packages/client/resources/nature/OBJ/Willow_Dead_5.mtl
diff --git a/client/resources/nature/OBJ/Willow_Dead_5.obj b/packages/client/resources/nature/OBJ/Willow_Dead_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Dead_5.obj
rename to packages/client/resources/nature/OBJ/Willow_Dead_5.obj
diff --git a/client/resources/nature/OBJ/Willow_Dead_Snow_1.mtl b/packages/client/resources/nature/OBJ/Willow_Dead_Snow_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Dead_Snow_1.mtl
rename to packages/client/resources/nature/OBJ/Willow_Dead_Snow_1.mtl
diff --git a/client/resources/nature/OBJ/Willow_Dead_Snow_1.obj b/packages/client/resources/nature/OBJ/Willow_Dead_Snow_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Dead_Snow_1.obj
rename to packages/client/resources/nature/OBJ/Willow_Dead_Snow_1.obj
diff --git a/client/resources/nature/OBJ/Willow_Dead_Snow_2.mtl b/packages/client/resources/nature/OBJ/Willow_Dead_Snow_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Dead_Snow_2.mtl
rename to packages/client/resources/nature/OBJ/Willow_Dead_Snow_2.mtl
diff --git a/client/resources/nature/OBJ/Willow_Dead_Snow_2.obj b/packages/client/resources/nature/OBJ/Willow_Dead_Snow_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Dead_Snow_2.obj
rename to packages/client/resources/nature/OBJ/Willow_Dead_Snow_2.obj
diff --git a/client/resources/nature/OBJ/Willow_Dead_Snow_3.mtl b/packages/client/resources/nature/OBJ/Willow_Dead_Snow_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Dead_Snow_3.mtl
rename to packages/client/resources/nature/OBJ/Willow_Dead_Snow_3.mtl
diff --git a/client/resources/nature/OBJ/Willow_Dead_Snow_3.obj b/packages/client/resources/nature/OBJ/Willow_Dead_Snow_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Dead_Snow_3.obj
rename to packages/client/resources/nature/OBJ/Willow_Dead_Snow_3.obj
diff --git a/client/resources/nature/OBJ/Willow_Dead_Snow_4.mtl b/packages/client/resources/nature/OBJ/Willow_Dead_Snow_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Dead_Snow_4.mtl
rename to packages/client/resources/nature/OBJ/Willow_Dead_Snow_4.mtl
diff --git a/client/resources/nature/OBJ/Willow_Dead_Snow_4.obj b/packages/client/resources/nature/OBJ/Willow_Dead_Snow_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Dead_Snow_4.obj
rename to packages/client/resources/nature/OBJ/Willow_Dead_Snow_4.obj
diff --git a/client/resources/nature/OBJ/Willow_Dead_Snow_5.mtl b/packages/client/resources/nature/OBJ/Willow_Dead_Snow_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Dead_Snow_5.mtl
rename to packages/client/resources/nature/OBJ/Willow_Dead_Snow_5.mtl
diff --git a/client/resources/nature/OBJ/Willow_Dead_Snow_5.obj b/packages/client/resources/nature/OBJ/Willow_Dead_Snow_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Dead_Snow_5.obj
rename to packages/client/resources/nature/OBJ/Willow_Dead_Snow_5.obj
diff --git a/client/resources/nature/OBJ/Willow_Snow_1.mtl b/packages/client/resources/nature/OBJ/Willow_Snow_1.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Snow_1.mtl
rename to packages/client/resources/nature/OBJ/Willow_Snow_1.mtl
diff --git a/client/resources/nature/OBJ/Willow_Snow_1.obj b/packages/client/resources/nature/OBJ/Willow_Snow_1.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Snow_1.obj
rename to packages/client/resources/nature/OBJ/Willow_Snow_1.obj
diff --git a/client/resources/nature/OBJ/Willow_Snow_2.mtl b/packages/client/resources/nature/OBJ/Willow_Snow_2.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Snow_2.mtl
rename to packages/client/resources/nature/OBJ/Willow_Snow_2.mtl
diff --git a/client/resources/nature/OBJ/Willow_Snow_2.obj b/packages/client/resources/nature/OBJ/Willow_Snow_2.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Snow_2.obj
rename to packages/client/resources/nature/OBJ/Willow_Snow_2.obj
diff --git a/client/resources/nature/OBJ/Willow_Snow_3.mtl b/packages/client/resources/nature/OBJ/Willow_Snow_3.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Snow_3.mtl
rename to packages/client/resources/nature/OBJ/Willow_Snow_3.mtl
diff --git a/client/resources/nature/OBJ/Willow_Snow_3.obj b/packages/client/resources/nature/OBJ/Willow_Snow_3.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Snow_3.obj
rename to packages/client/resources/nature/OBJ/Willow_Snow_3.obj
diff --git a/client/resources/nature/OBJ/Willow_Snow_4.mtl b/packages/client/resources/nature/OBJ/Willow_Snow_4.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Snow_4.mtl
rename to packages/client/resources/nature/OBJ/Willow_Snow_4.mtl
diff --git a/client/resources/nature/OBJ/Willow_Snow_4.obj b/packages/client/resources/nature/OBJ/Willow_Snow_4.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Snow_4.obj
rename to packages/client/resources/nature/OBJ/Willow_Snow_4.obj
diff --git a/client/resources/nature/OBJ/Willow_Snow_5.mtl b/packages/client/resources/nature/OBJ/Willow_Snow_5.mtl
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Snow_5.mtl
rename to packages/client/resources/nature/OBJ/Willow_Snow_5.mtl
diff --git a/client/resources/nature/OBJ/Willow_Snow_5.obj b/packages/client/resources/nature/OBJ/Willow_Snow_5.obj
similarity index 100%
rename from client/resources/nature/OBJ/Willow_Snow_5.obj
rename to packages/client/resources/nature/OBJ/Willow_Snow_5.obj
diff --git a/client/resources/nature/OBJ/WoodLog.mtl b/packages/client/resources/nature/OBJ/WoodLog.mtl
similarity index 100%
rename from client/resources/nature/OBJ/WoodLog.mtl
rename to packages/client/resources/nature/OBJ/WoodLog.mtl
diff --git a/client/resources/nature/OBJ/WoodLog.obj b/packages/client/resources/nature/OBJ/WoodLog.obj
similarity index 100%
rename from client/resources/nature/OBJ/WoodLog.obj
rename to packages/client/resources/nature/OBJ/WoodLog.obj
diff --git a/client/resources/nature/OBJ/WoodLog_Moss.mtl b/packages/client/resources/nature/OBJ/WoodLog_Moss.mtl
similarity index 100%
rename from client/resources/nature/OBJ/WoodLog_Moss.mtl
rename to packages/client/resources/nature/OBJ/WoodLog_Moss.mtl
diff --git a/client/resources/nature/OBJ/WoodLog_Moss.obj b/packages/client/resources/nature/OBJ/WoodLog_Moss.obj
similarity index 100%
rename from client/resources/nature/OBJ/WoodLog_Moss.obj
rename to packages/client/resources/nature/OBJ/WoodLog_Moss.obj
diff --git a/client/resources/nature/OBJ/WoodLog_Snow.mtl b/packages/client/resources/nature/OBJ/WoodLog_Snow.mtl
similarity index 100%
rename from client/resources/nature/OBJ/WoodLog_Snow.mtl
rename to packages/client/resources/nature/OBJ/WoodLog_Snow.mtl
diff --git a/client/resources/nature/OBJ/WoodLog_Snow.obj b/packages/client/resources/nature/OBJ/WoodLog_Snow.obj
similarity index 100%
rename from client/resources/nature/OBJ/WoodLog_Snow.obj
rename to packages/client/resources/nature/OBJ/WoodLog_Snow.obj
diff --git a/client/resources/nature/Preview.jpg b/packages/client/resources/nature/Preview.jpg
similarity index 100%
rename from client/resources/nature/Preview.jpg
rename to packages/client/resources/nature/Preview.jpg
diff --git a/client/resources/nature2/Blends/BigBush.blend b/packages/client/resources/nature2/Blends/BigBush.blend
similarity index 100%
rename from client/resources/nature2/Blends/BigBush.blend
rename to packages/client/resources/nature2/Blends/BigBush.blend
diff --git a/client/resources/nature2/Blends/BigTreeWithLeaves.blend b/packages/client/resources/nature2/Blends/BigTreeWithLeaves.blend
similarity index 100%
rename from client/resources/nature2/Blends/BigTreeWithLeaves.blend
rename to packages/client/resources/nature2/Blends/BigTreeWithLeaves.blend
diff --git a/client/resources/nature2/Blends/BushTexture.png b/packages/client/resources/nature2/Blends/BushTexture.png
similarity index 100%
rename from client/resources/nature2/Blends/BushTexture.png
rename to packages/client/resources/nature2/Blends/BushTexture.png
diff --git a/client/resources/nature2/Blends/Cloud1.blend b/packages/client/resources/nature2/Blends/Cloud1.blend
similarity index 100%
rename from client/resources/nature2/Blends/Cloud1.blend
rename to packages/client/resources/nature2/Blends/Cloud1.blend
diff --git a/client/resources/nature2/Blends/Cloud1.blend1 b/packages/client/resources/nature2/Blends/Cloud1.blend1
similarity index 100%
rename from client/resources/nature2/Blends/Cloud1.blend1
rename to packages/client/resources/nature2/Blends/Cloud1.blend1
diff --git a/client/resources/nature2/Blends/Cloud2.blend b/packages/client/resources/nature2/Blends/Cloud2.blend
similarity index 100%
rename from client/resources/nature2/Blends/Cloud2.blend
rename to packages/client/resources/nature2/Blends/Cloud2.blend
diff --git a/client/resources/nature2/Blends/Cloud3.blend b/packages/client/resources/nature2/Blends/Cloud3.blend
similarity index 100%
rename from client/resources/nature2/Blends/Cloud3.blend
rename to packages/client/resources/nature2/Blends/Cloud3.blend
diff --git a/client/resources/nature2/Blends/EveryModel.blend b/packages/client/resources/nature2/Blends/EveryModel.blend
similarity index 100%
rename from client/resources/nature2/Blends/EveryModel.blend
rename to packages/client/resources/nature2/Blends/EveryModel.blend
diff --git a/client/resources/nature2/Blends/MoreNature.blend1 b/packages/client/resources/nature2/Blends/MoreNature.blend1
similarity index 100%
rename from client/resources/nature2/Blends/MoreNature.blend1
rename to packages/client/resources/nature2/Blends/MoreNature.blend1
diff --git a/client/resources/nature2/Blends/SmallBush.blend b/packages/client/resources/nature2/Blends/SmallBush.blend
similarity index 100%
rename from client/resources/nature2/Blends/SmallBush.blend
rename to packages/client/resources/nature2/Blends/SmallBush.blend
diff --git a/client/resources/nature2/Blends/SmallTreeWithLeave.blend b/packages/client/resources/nature2/Blends/SmallTreeWithLeave.blend
similarity index 100%
rename from client/resources/nature2/Blends/SmallTreeWithLeave.blend
rename to packages/client/resources/nature2/Blends/SmallTreeWithLeave.blend
diff --git a/client/resources/nature2/Blends/TreeNoLeavesBig.blend b/packages/client/resources/nature2/Blends/TreeNoLeavesBig.blend
similarity index 100%
rename from client/resources/nature2/Blends/TreeNoLeavesBig.blend
rename to packages/client/resources/nature2/Blends/TreeNoLeavesBig.blend
diff --git a/client/resources/nature2/Blends/TreeNoLeavesBig.blend1 b/packages/client/resources/nature2/Blends/TreeNoLeavesBig.blend1
similarity index 100%
rename from client/resources/nature2/Blends/TreeNoLeavesBig.blend1
rename to packages/client/resources/nature2/Blends/TreeNoLeavesBig.blend1
diff --git a/client/resources/nature2/Blends/TreeNoLeavesSmall.blend b/packages/client/resources/nature2/Blends/TreeNoLeavesSmall.blend
similarity index 100%
rename from client/resources/nature2/Blends/TreeNoLeavesSmall.blend
rename to packages/client/resources/nature2/Blends/TreeNoLeavesSmall.blend
diff --git a/client/resources/nature2/Blends/TreeNoLeavesSmall.blend1 b/packages/client/resources/nature2/Blends/TreeNoLeavesSmall.blend1
similarity index 100%
rename from client/resources/nature2/Blends/TreeNoLeavesSmall.blend1
rename to packages/client/resources/nature2/Blends/TreeNoLeavesSmall.blend1
diff --git a/client/resources/nature2/Blends/TreeTexture.png b/packages/client/resources/nature2/Blends/TreeTexture.png
similarity index 100%
rename from client/resources/nature2/Blends/TreeTexture.png
rename to packages/client/resources/nature2/Blends/TreeTexture.png
diff --git a/client/resources/nature2/GLTF/Cloud1.glb b/packages/client/resources/nature2/GLTF/Cloud1.glb
similarity index 100%
rename from client/resources/nature2/GLTF/Cloud1.glb
rename to packages/client/resources/nature2/GLTF/Cloud1.glb
diff --git a/client/resources/nature2/GLTF/Cloud2.glb b/packages/client/resources/nature2/GLTF/Cloud2.glb
similarity index 100%
rename from client/resources/nature2/GLTF/Cloud2.glb
rename to packages/client/resources/nature2/GLTF/Cloud2.glb
diff --git a/client/resources/nature2/GLTF/Cloud3.glb b/packages/client/resources/nature2/GLTF/Cloud3.glb
similarity index 100%
rename from client/resources/nature2/GLTF/Cloud3.glb
rename to packages/client/resources/nature2/GLTF/Cloud3.glb
diff --git a/client/resources/nature2/License.txt b/packages/client/resources/nature2/License.txt
similarity index 100%
rename from client/resources/nature2/License.txt
rename to packages/client/resources/nature2/License.txt
diff --git a/client/resources/nature2/OBJ/BigBush.mtl b/packages/client/resources/nature2/OBJ/BigBush.mtl
similarity index 100%
rename from client/resources/nature2/OBJ/BigBush.mtl
rename to packages/client/resources/nature2/OBJ/BigBush.mtl
diff --git a/client/resources/nature2/OBJ/BigBush.obj b/packages/client/resources/nature2/OBJ/BigBush.obj
similarity index 100%
rename from client/resources/nature2/OBJ/BigBush.obj
rename to packages/client/resources/nature2/OBJ/BigBush.obj
diff --git a/client/resources/nature2/OBJ/BigTreeWithLeaves.mtl b/packages/client/resources/nature2/OBJ/BigTreeWithLeaves.mtl
similarity index 100%
rename from client/resources/nature2/OBJ/BigTreeWithLeaves.mtl
rename to packages/client/resources/nature2/OBJ/BigTreeWithLeaves.mtl
diff --git a/client/resources/nature2/OBJ/BigTreeWithLeaves.obj b/packages/client/resources/nature2/OBJ/BigTreeWithLeaves.obj
similarity index 100%
rename from client/resources/nature2/OBJ/BigTreeWithLeaves.obj
rename to packages/client/resources/nature2/OBJ/BigTreeWithLeaves.obj
diff --git a/client/resources/nature2/OBJ/Cloud1.mtl b/packages/client/resources/nature2/OBJ/Cloud1.mtl
similarity index 100%
rename from client/resources/nature2/OBJ/Cloud1.mtl
rename to packages/client/resources/nature2/OBJ/Cloud1.mtl
diff --git a/client/resources/nature2/OBJ/Cloud1.obj b/packages/client/resources/nature2/OBJ/Cloud1.obj
similarity index 100%
rename from client/resources/nature2/OBJ/Cloud1.obj
rename to packages/client/resources/nature2/OBJ/Cloud1.obj
diff --git a/client/resources/nature2/OBJ/Cloud2.mtl b/packages/client/resources/nature2/OBJ/Cloud2.mtl
similarity index 100%
rename from client/resources/nature2/OBJ/Cloud2.mtl
rename to packages/client/resources/nature2/OBJ/Cloud2.mtl
diff --git a/client/resources/nature2/OBJ/Cloud2.obj b/packages/client/resources/nature2/OBJ/Cloud2.obj
similarity index 100%
rename from client/resources/nature2/OBJ/Cloud2.obj
rename to packages/client/resources/nature2/OBJ/Cloud2.obj
diff --git a/client/resources/nature2/OBJ/Cloud3.mtl b/packages/client/resources/nature2/OBJ/Cloud3.mtl
similarity index 100%
rename from client/resources/nature2/OBJ/Cloud3.mtl
rename to packages/client/resources/nature2/OBJ/Cloud3.mtl
diff --git a/client/resources/nature2/OBJ/Cloud3.obj b/packages/client/resources/nature2/OBJ/Cloud3.obj
similarity index 100%
rename from client/resources/nature2/OBJ/Cloud3.obj
rename to packages/client/resources/nature2/OBJ/Cloud3.obj
diff --git a/client/resources/nature2/OBJ/EveryModel.mtl b/packages/client/resources/nature2/OBJ/EveryModel.mtl
similarity index 100%
rename from client/resources/nature2/OBJ/EveryModel.mtl
rename to packages/client/resources/nature2/OBJ/EveryModel.mtl
diff --git a/client/resources/nature2/OBJ/EveryModel.obj b/packages/client/resources/nature2/OBJ/EveryModel.obj
similarity index 100%
rename from client/resources/nature2/OBJ/EveryModel.obj
rename to packages/client/resources/nature2/OBJ/EveryModel.obj
diff --git a/client/resources/nature2/OBJ/SmallBush.mtl b/packages/client/resources/nature2/OBJ/SmallBush.mtl
similarity index 100%
rename from client/resources/nature2/OBJ/SmallBush.mtl
rename to packages/client/resources/nature2/OBJ/SmallBush.mtl
diff --git a/client/resources/nature2/OBJ/SmallBush.obj b/packages/client/resources/nature2/OBJ/SmallBush.obj
similarity index 100%
rename from client/resources/nature2/OBJ/SmallBush.obj
rename to packages/client/resources/nature2/OBJ/SmallBush.obj
diff --git a/client/resources/nature2/OBJ/SmallTreeWithLeave.mtl b/packages/client/resources/nature2/OBJ/SmallTreeWithLeave.mtl
similarity index 100%
rename from client/resources/nature2/OBJ/SmallTreeWithLeave.mtl
rename to packages/client/resources/nature2/OBJ/SmallTreeWithLeave.mtl
diff --git a/client/resources/nature2/OBJ/SmallTreeWithLeave.obj b/packages/client/resources/nature2/OBJ/SmallTreeWithLeave.obj
similarity index 100%
rename from client/resources/nature2/OBJ/SmallTreeWithLeave.obj
rename to packages/client/resources/nature2/OBJ/SmallTreeWithLeave.obj
diff --git a/client/resources/nature2/OBJ/TreeNoLeavesBig.mtl b/packages/client/resources/nature2/OBJ/TreeNoLeavesBig.mtl
similarity index 100%
rename from client/resources/nature2/OBJ/TreeNoLeavesBig.mtl
rename to packages/client/resources/nature2/OBJ/TreeNoLeavesBig.mtl
diff --git a/client/resources/nature2/OBJ/TreeNoLeavesBig.obj b/packages/client/resources/nature2/OBJ/TreeNoLeavesBig.obj
similarity index 100%
rename from client/resources/nature2/OBJ/TreeNoLeavesBig.obj
rename to packages/client/resources/nature2/OBJ/TreeNoLeavesBig.obj
diff --git a/client/resources/nature2/OBJ/TreeNoLeavesSmall.mtl b/packages/client/resources/nature2/OBJ/TreeNoLeavesSmall.mtl
similarity index 100%
rename from client/resources/nature2/OBJ/TreeNoLeavesSmall.mtl
rename to packages/client/resources/nature2/OBJ/TreeNoLeavesSmall.mtl
diff --git a/client/resources/nature2/OBJ/TreeNoLeavesSmall.obj b/packages/client/resources/nature2/OBJ/TreeNoLeavesSmall.obj
similarity index 100%
rename from client/resources/nature2/OBJ/TreeNoLeavesSmall.obj
rename to packages/client/resources/nature2/OBJ/TreeNoLeavesSmall.obj
diff --git a/client/resources/terrain/README.txt b/packages/client/resources/terrain/README.txt
similarity index 100%
rename from client/resources/terrain/README.txt
rename to packages/client/resources/terrain/README.txt
diff --git a/client/resources/terrain/bark1-albedo.jpg b/packages/client/resources/terrain/bark1-albedo.jpg
similarity index 100%
rename from client/resources/terrain/bark1-albedo.jpg
rename to packages/client/resources/terrain/bark1-albedo.jpg
diff --git a/client/resources/terrain/bark1-albedo.png b/packages/client/resources/terrain/bark1-albedo.png
similarity index 100%
rename from client/resources/terrain/bark1-albedo.png
rename to packages/client/resources/terrain/bark1-albedo.png
diff --git a/client/resources/terrain/bark1-normal3.jpg b/packages/client/resources/terrain/bark1-normal3.jpg
similarity index 100%
rename from client/resources/terrain/bark1-normal3.jpg
rename to packages/client/resources/terrain/bark1-normal3.jpg
diff --git a/client/resources/terrain/bark1-normal3.png b/packages/client/resources/terrain/bark1-normal3.png
similarity index 100%
rename from client/resources/terrain/bark1-normal3.png
rename to packages/client/resources/terrain/bark1-normal3.png
diff --git a/client/resources/terrain/dirt_01_diffuse-1024.png b/packages/client/resources/terrain/dirt_01_diffuse-1024.png
similarity index 100%
rename from client/resources/terrain/dirt_01_diffuse-1024.png
rename to packages/client/resources/terrain/dirt_01_diffuse-1024.png
diff --git a/client/resources/terrain/dirt_01_normal-1024.jpg b/packages/client/resources/terrain/dirt_01_normal-1024.jpg
similarity index 100%
rename from client/resources/terrain/dirt_01_normal-1024.jpg
rename to packages/client/resources/terrain/dirt_01_normal-1024.jpg
diff --git a/client/resources/terrain/grass1-albedo-512.jpg b/packages/client/resources/terrain/grass1-albedo-512.jpg
similarity index 100%
rename from client/resources/terrain/grass1-albedo-512.jpg
rename to packages/client/resources/terrain/grass1-albedo-512.jpg
diff --git a/client/resources/terrain/grass1-albedo3-1024.png b/packages/client/resources/terrain/grass1-albedo3-1024.png
similarity index 100%
rename from client/resources/terrain/grass1-albedo3-1024.png
rename to packages/client/resources/terrain/grass1-albedo3-1024.png
diff --git a/client/resources/terrain/grass1-normal-1024.jpg b/packages/client/resources/terrain/grass1-normal-1024.jpg
similarity index 100%
rename from client/resources/terrain/grass1-normal-1024.jpg
rename to packages/client/resources/terrain/grass1-normal-1024.jpg
diff --git a/client/resources/terrain/rock-snow-ice-albedo-1024.png b/packages/client/resources/terrain/rock-snow-ice-albedo-1024.png
similarity index 100%
rename from client/resources/terrain/rock-snow-ice-albedo-1024.png
rename to packages/client/resources/terrain/rock-snow-ice-albedo-1024.png
diff --git a/client/resources/terrain/rock-snow-ice-normal-1024.jpg b/packages/client/resources/terrain/rock-snow-ice-normal-1024.jpg
similarity index 100%
rename from client/resources/terrain/rock-snow-ice-normal-1024.jpg
rename to packages/client/resources/terrain/rock-snow-ice-normal-1024.jpg
diff --git a/client/resources/terrain/rough-wet-cobble-albedo-1024.png b/packages/client/resources/terrain/rough-wet-cobble-albedo-1024.png
similarity index 100%
rename from client/resources/terrain/rough-wet-cobble-albedo-1024.png
rename to packages/client/resources/terrain/rough-wet-cobble-albedo-1024.png
diff --git a/client/resources/terrain/rough-wet-cobble-normal-1024.jpg b/packages/client/resources/terrain/rough-wet-cobble-normal-1024.jpg
similarity index 100%
rename from client/resources/terrain/rough-wet-cobble-normal-1024.jpg
rename to packages/client/resources/terrain/rough-wet-cobble-normal-1024.jpg
diff --git a/client/resources/terrain/sandy-rocks1-albedo-1024.png b/packages/client/resources/terrain/sandy-rocks1-albedo-1024.png
similarity index 100%
rename from client/resources/terrain/sandy-rocks1-albedo-1024.png
rename to packages/client/resources/terrain/sandy-rocks1-albedo-1024.png
diff --git a/client/resources/terrain/sandy-rocks1-normal-1024.jpg b/packages/client/resources/terrain/sandy-rocks1-normal-1024.jpg
similarity index 100%
rename from client/resources/terrain/sandy-rocks1-normal-1024.jpg
rename to packages/client/resources/terrain/sandy-rocks1-normal-1024.jpg
diff --git a/client/resources/terrain/sandyground-albedo-1024.png b/packages/client/resources/terrain/sandyground-albedo-1024.png
similarity index 100%
rename from client/resources/terrain/sandyground-albedo-1024.png
rename to packages/client/resources/terrain/sandyground-albedo-1024.png
diff --git a/client/resources/terrain/sandyground-normal-1024.jpg b/packages/client/resources/terrain/sandyground-normal-1024.jpg
similarity index 100%
rename from client/resources/terrain/sandyground-normal-1024.jpg
rename to packages/client/resources/terrain/sandyground-normal-1024.jpg
diff --git a/client/resources/terrain/simplex-noise.png b/packages/client/resources/terrain/simplex-noise.png
similarity index 100%
rename from client/resources/terrain/simplex-noise.png
rename to packages/client/resources/terrain/simplex-noise.png
diff --git a/client/resources/terrain/snow-packed-albedo-1024.png b/packages/client/resources/terrain/snow-packed-albedo-1024.png
similarity index 100%
rename from client/resources/terrain/snow-packed-albedo-1024.png
rename to packages/client/resources/terrain/snow-packed-albedo-1024.png
diff --git a/client/resources/terrain/snow-packed-normal-1024.jpg b/packages/client/resources/terrain/snow-packed-normal-1024.jpg
similarity index 100%
rename from client/resources/terrain/snow-packed-normal-1024.jpg
rename to packages/client/resources/terrain/snow-packed-normal-1024.jpg
diff --git a/client/resources/terrain/space-negx.jpg b/packages/client/resources/terrain/space-negx.jpg
similarity index 100%
rename from client/resources/terrain/space-negx.jpg
rename to packages/client/resources/terrain/space-negx.jpg
diff --git a/client/resources/terrain/space-negy.jpg b/packages/client/resources/terrain/space-negy.jpg
similarity index 100%
rename from client/resources/terrain/space-negy.jpg
rename to packages/client/resources/terrain/space-negy.jpg
diff --git a/client/resources/terrain/space-negz.jpg b/packages/client/resources/terrain/space-negz.jpg
similarity index 100%
rename from client/resources/terrain/space-negz.jpg
rename to packages/client/resources/terrain/space-negz.jpg
diff --git a/client/resources/terrain/space-posx.jpg b/packages/client/resources/terrain/space-posx.jpg
similarity index 100%
rename from client/resources/terrain/space-posx.jpg
rename to packages/client/resources/terrain/space-posx.jpg
diff --git a/client/resources/terrain/space-posy.jpg b/packages/client/resources/terrain/space-posy.jpg
similarity index 100%
rename from client/resources/terrain/space-posy.jpg
rename to packages/client/resources/terrain/space-posy.jpg
diff --git a/client/resources/terrain/space-posz.jpg b/packages/client/resources/terrain/space-posz.jpg
similarity index 100%
rename from client/resources/terrain/space-posz.jpg
rename to packages/client/resources/terrain/space-posz.jpg
diff --git a/client/resources/terrain/worn-bumpy-rock-albedo-1024.png b/packages/client/resources/terrain/worn-bumpy-rock-albedo-1024.png
similarity index 100%
rename from client/resources/terrain/worn-bumpy-rock-albedo-1024.png
rename to packages/client/resources/terrain/worn-bumpy-rock-albedo-1024.png
diff --git a/client/resources/terrain/worn-bumpy-rock-albedo-512.jpg b/packages/client/resources/terrain/worn-bumpy-rock-albedo-512.jpg
similarity index 100%
rename from client/resources/terrain/worn-bumpy-rock-albedo-512.jpg
rename to packages/client/resources/terrain/worn-bumpy-rock-albedo-512.jpg
diff --git a/client/resources/terrain/worn-bumpy-rock-normal-1024.jpg b/packages/client/resources/terrain/worn-bumpy-rock-normal-1024.jpg
similarity index 100%
rename from client/resources/terrain/worn-bumpy-rock-normal-1024.jpg
rename to packages/client/resources/terrain/worn-bumpy-rock-normal-1024.jpg
diff --git a/client/resources/textures/ball.png b/packages/client/resources/textures/ball.png
similarity index 100%
rename from client/resources/textures/ball.png
rename to packages/client/resources/textures/ball.png
diff --git a/client/resources/textures/fire.png b/packages/client/resources/textures/fire.png
similarity index 100%
rename from client/resources/textures/fire.png
rename to packages/client/resources/textures/fire.png
diff --git a/client/resources/textures/whitePuff14.png b/packages/client/resources/textures/whitePuff14.png
similarity index 100%
rename from client/resources/textures/whitePuff14.png
rename to packages/client/resources/textures/whitePuff14.png
diff --git a/client/resources/trees/Blends/Birch_1.blend b/packages/client/resources/trees/Blends/Birch_1.blend
similarity index 100%
rename from client/resources/trees/Blends/Birch_1.blend
rename to packages/client/resources/trees/Blends/Birch_1.blend
diff --git a/client/resources/trees/Blends/Birch_10.blend b/packages/client/resources/trees/Blends/Birch_10.blend
similarity index 100%
rename from client/resources/trees/Blends/Birch_10.blend
rename to packages/client/resources/trees/Blends/Birch_10.blend
diff --git a/client/resources/trees/Blends/Birch_2.blend b/packages/client/resources/trees/Blends/Birch_2.blend
similarity index 100%
rename from client/resources/trees/Blends/Birch_2.blend
rename to packages/client/resources/trees/Blends/Birch_2.blend
diff --git a/client/resources/trees/Blends/Birch_3.blend b/packages/client/resources/trees/Blends/Birch_3.blend
similarity index 100%
rename from client/resources/trees/Blends/Birch_3.blend
rename to packages/client/resources/trees/Blends/Birch_3.blend
diff --git a/client/resources/trees/Blends/Birch_4.blend b/packages/client/resources/trees/Blends/Birch_4.blend
similarity index 100%
rename from client/resources/trees/Blends/Birch_4.blend
rename to packages/client/resources/trees/Blends/Birch_4.blend
diff --git a/client/resources/trees/Blends/Birch_5.blend b/packages/client/resources/trees/Blends/Birch_5.blend
similarity index 100%
rename from client/resources/trees/Blends/Birch_5.blend
rename to packages/client/resources/trees/Blends/Birch_5.blend
diff --git a/client/resources/trees/Blends/Birch_6.blend b/packages/client/resources/trees/Blends/Birch_6.blend
similarity index 100%
rename from client/resources/trees/Blends/Birch_6.blend
rename to packages/client/resources/trees/Blends/Birch_6.blend
diff --git a/client/resources/trees/Blends/Birch_7.blend b/packages/client/resources/trees/Blends/Birch_7.blend
similarity index 100%
rename from client/resources/trees/Blends/Birch_7.blend
rename to packages/client/resources/trees/Blends/Birch_7.blend
diff --git a/client/resources/trees/Blends/Birch_8.blend b/packages/client/resources/trees/Blends/Birch_8.blend
similarity index 100%
rename from client/resources/trees/Blends/Birch_8.blend
rename to packages/client/resources/trees/Blends/Birch_8.blend
diff --git a/client/resources/trees/Blends/Birch_9.blend b/packages/client/resources/trees/Blends/Birch_9.blend
similarity index 100%
rename from client/resources/trees/Blends/Birch_9.blend
rename to packages/client/resources/trees/Blends/Birch_9.blend
diff --git a/client/resources/trees/Blends/DeadBirch_1.blend b/packages/client/resources/trees/Blends/DeadBirch_1.blend
similarity index 100%
rename from client/resources/trees/Blends/DeadBirch_1.blend
rename to packages/client/resources/trees/Blends/DeadBirch_1.blend
diff --git a/client/resources/trees/Blends/DeadBirch_10.blend b/packages/client/resources/trees/Blends/DeadBirch_10.blend
similarity index 100%
rename from client/resources/trees/Blends/DeadBirch_10.blend
rename to packages/client/resources/trees/Blends/DeadBirch_10.blend
diff --git a/client/resources/trees/Blends/DeadBirch_2.blend b/packages/client/resources/trees/Blends/DeadBirch_2.blend
similarity index 100%
rename from client/resources/trees/Blends/DeadBirch_2.blend
rename to packages/client/resources/trees/Blends/DeadBirch_2.blend
diff --git a/client/resources/trees/Blends/DeadBirch_3.blend b/packages/client/resources/trees/Blends/DeadBirch_3.blend
similarity index 100%
rename from client/resources/trees/Blends/DeadBirch_3.blend
rename to packages/client/resources/trees/Blends/DeadBirch_3.blend
diff --git a/client/resources/trees/Blends/DeadBirch_4.blend b/packages/client/resources/trees/Blends/DeadBirch_4.blend
similarity index 100%
rename from client/resources/trees/Blends/DeadBirch_4.blend
rename to packages/client/resources/trees/Blends/DeadBirch_4.blend
diff --git a/client/resources/trees/Blends/DeadBirch_5.blend b/packages/client/resources/trees/Blends/DeadBirch_5.blend
similarity index 100%
rename from client/resources/trees/Blends/DeadBirch_5.blend
rename to packages/client/resources/trees/Blends/DeadBirch_5.blend
diff --git a/client/resources/trees/Blends/DeadBirch_6.blend b/packages/client/resources/trees/Blends/DeadBirch_6.blend
similarity index 100%
rename from client/resources/trees/Blends/DeadBirch_6.blend
rename to packages/client/resources/trees/Blends/DeadBirch_6.blend
diff --git a/client/resources/trees/Blends/DeadBirch_7.blend b/packages/client/resources/trees/Blends/DeadBirch_7.blend
similarity index 100%
rename from client/resources/trees/Blends/DeadBirch_7.blend
rename to packages/client/resources/trees/Blends/DeadBirch_7.blend
diff --git a/client/resources/trees/Blends/DeadBirch_8.blend b/packages/client/resources/trees/Blends/DeadBirch_8.blend
similarity index 100%
rename from client/resources/trees/Blends/DeadBirch_8.blend
rename to packages/client/resources/trees/Blends/DeadBirch_8.blend
diff --git a/client/resources/trees/Blends/DeadBirch_9.blend b/packages/client/resources/trees/Blends/DeadBirch_9.blend
similarity index 100%
rename from client/resources/trees/Blends/DeadBirch_9.blend
rename to packages/client/resources/trees/Blends/DeadBirch_9.blend
diff --git a/client/resources/trees/Blends/DeadTree_1.blend b/packages/client/resources/trees/Blends/DeadTree_1.blend
similarity index 100%
rename from client/resources/trees/Blends/DeadTree_1.blend
rename to packages/client/resources/trees/Blends/DeadTree_1.blend
diff --git a/client/resources/trees/Blends/DeadTree_10.blend b/packages/client/resources/trees/Blends/DeadTree_10.blend
similarity index 100%
rename from client/resources/trees/Blends/DeadTree_10.blend
rename to packages/client/resources/trees/Blends/DeadTree_10.blend
diff --git a/client/resources/trees/Blends/DeadTree_2.blend b/packages/client/resources/trees/Blends/DeadTree_2.blend
similarity index 100%
rename from client/resources/trees/Blends/DeadTree_2.blend
rename to packages/client/resources/trees/Blends/DeadTree_2.blend
diff --git a/client/resources/trees/Blends/DeadTree_3.blend b/packages/client/resources/trees/Blends/DeadTree_3.blend
similarity index 100%
rename from client/resources/trees/Blends/DeadTree_3.blend
rename to packages/client/resources/trees/Blends/DeadTree_3.blend
diff --git a/client/resources/trees/Blends/DeadTree_4.blend b/packages/client/resources/trees/Blends/DeadTree_4.blend
similarity index 100%
rename from client/resources/trees/Blends/DeadTree_4.blend
rename to packages/client/resources/trees/Blends/DeadTree_4.blend
diff --git a/client/resources/trees/Blends/DeadTree_5.blend b/packages/client/resources/trees/Blends/DeadTree_5.blend
similarity index 100%
rename from client/resources/trees/Blends/DeadTree_5.blend
rename to packages/client/resources/trees/Blends/DeadTree_5.blend
diff --git a/client/resources/trees/Blends/DeadTree_6.blend b/packages/client/resources/trees/Blends/DeadTree_6.blend
similarity index 100%
rename from client/resources/trees/Blends/DeadTree_6.blend
rename to packages/client/resources/trees/Blends/DeadTree_6.blend
diff --git a/client/resources/trees/Blends/DeadTree_7.blend b/packages/client/resources/trees/Blends/DeadTree_7.blend
similarity index 100%
rename from client/resources/trees/Blends/DeadTree_7.blend
rename to packages/client/resources/trees/Blends/DeadTree_7.blend
diff --git a/client/resources/trees/Blends/DeadTree_8.blend b/packages/client/resources/trees/Blends/DeadTree_8.blend
similarity index 100%
rename from client/resources/trees/Blends/DeadTree_8.blend
rename to packages/client/resources/trees/Blends/DeadTree_8.blend
diff --git a/client/resources/trees/Blends/DeadTree_9.blend b/packages/client/resources/trees/Blends/DeadTree_9.blend
similarity index 100%
rename from client/resources/trees/Blends/DeadTree_9.blend
rename to packages/client/resources/trees/Blends/DeadTree_9.blend
diff --git a/client/resources/trees/Blends/Pine_1.blend b/packages/client/resources/trees/Blends/Pine_1.blend
similarity index 100%
rename from client/resources/trees/Blends/Pine_1.blend
rename to packages/client/resources/trees/Blends/Pine_1.blend
diff --git a/client/resources/trees/Blends/Pine_2.blend b/packages/client/resources/trees/Blends/Pine_2.blend
similarity index 100%
rename from client/resources/trees/Blends/Pine_2.blend
rename to packages/client/resources/trees/Blends/Pine_2.blend
diff --git a/client/resources/trees/Blends/Pine_3.blend b/packages/client/resources/trees/Blends/Pine_3.blend
similarity index 100%
rename from client/resources/trees/Blends/Pine_3.blend
rename to packages/client/resources/trees/Blends/Pine_3.blend
diff --git a/client/resources/trees/Blends/Pine_4.blend b/packages/client/resources/trees/Blends/Pine_4.blend
similarity index 100%
rename from client/resources/trees/Blends/Pine_4.blend
rename to packages/client/resources/trees/Blends/Pine_4.blend
diff --git a/client/resources/trees/Blends/Pine_5.blend b/packages/client/resources/trees/Blends/Pine_5.blend
similarity index 100%
rename from client/resources/trees/Blends/Pine_5.blend
rename to packages/client/resources/trees/Blends/Pine_5.blend
diff --git a/client/resources/trees/Blends/Tree_1.blend b/packages/client/resources/trees/Blends/Tree_1.blend
similarity index 100%
rename from client/resources/trees/Blends/Tree_1.blend
rename to packages/client/resources/trees/Blends/Tree_1.blend
diff --git a/client/resources/trees/Blends/Tree_10.blend b/packages/client/resources/trees/Blends/Tree_10.blend
similarity index 100%
rename from client/resources/trees/Blends/Tree_10.blend
rename to packages/client/resources/trees/Blends/Tree_10.blend
diff --git a/client/resources/trees/Blends/Tree_2.blend b/packages/client/resources/trees/Blends/Tree_2.blend
similarity index 100%
rename from client/resources/trees/Blends/Tree_2.blend
rename to packages/client/resources/trees/Blends/Tree_2.blend
diff --git a/client/resources/trees/Blends/Tree_3.blend b/packages/client/resources/trees/Blends/Tree_3.blend
similarity index 100%
rename from client/resources/trees/Blends/Tree_3.blend
rename to packages/client/resources/trees/Blends/Tree_3.blend
diff --git a/client/resources/trees/Blends/Tree_4.blend b/packages/client/resources/trees/Blends/Tree_4.blend
similarity index 100%
rename from client/resources/trees/Blends/Tree_4.blend
rename to packages/client/resources/trees/Blends/Tree_4.blend
diff --git a/client/resources/trees/Blends/Tree_5.blend b/packages/client/resources/trees/Blends/Tree_5.blend
similarity index 100%
rename from client/resources/trees/Blends/Tree_5.blend
rename to packages/client/resources/trees/Blends/Tree_5.blend
diff --git a/client/resources/trees/Blends/Tree_6.blend b/packages/client/resources/trees/Blends/Tree_6.blend
similarity index 100%
rename from client/resources/trees/Blends/Tree_6.blend
rename to packages/client/resources/trees/Blends/Tree_6.blend
diff --git a/client/resources/trees/Blends/Tree_7.blend b/packages/client/resources/trees/Blends/Tree_7.blend
similarity index 100%
rename from client/resources/trees/Blends/Tree_7.blend
rename to packages/client/resources/trees/Blends/Tree_7.blend
diff --git a/client/resources/trees/Blends/Tree_8.blend b/packages/client/resources/trees/Blends/Tree_8.blend
similarity index 100%
rename from client/resources/trees/Blends/Tree_8.blend
rename to packages/client/resources/trees/Blends/Tree_8.blend
diff --git a/client/resources/trees/Blends/Tree_9.blend b/packages/client/resources/trees/Blends/Tree_9.blend
similarity index 100%
rename from client/resources/trees/Blends/Tree_9.blend
rename to packages/client/resources/trees/Blends/Tree_9.blend
diff --git a/client/resources/trees/FBX/Birch_1.fbx b/packages/client/resources/trees/FBX/Birch_1.fbx
similarity index 100%
rename from client/resources/trees/FBX/Birch_1.fbx
rename to packages/client/resources/trees/FBX/Birch_1.fbx
diff --git a/client/resources/trees/FBX/Birch_10.fbx b/packages/client/resources/trees/FBX/Birch_10.fbx
similarity index 100%
rename from client/resources/trees/FBX/Birch_10.fbx
rename to packages/client/resources/trees/FBX/Birch_10.fbx
diff --git a/client/resources/trees/FBX/Birch_2.fbx b/packages/client/resources/trees/FBX/Birch_2.fbx
similarity index 100%
rename from client/resources/trees/FBX/Birch_2.fbx
rename to packages/client/resources/trees/FBX/Birch_2.fbx
diff --git a/client/resources/trees/FBX/Birch_3.fbx b/packages/client/resources/trees/FBX/Birch_3.fbx
similarity index 100%
rename from client/resources/trees/FBX/Birch_3.fbx
rename to packages/client/resources/trees/FBX/Birch_3.fbx
diff --git a/client/resources/trees/FBX/Birch_4.fbx b/packages/client/resources/trees/FBX/Birch_4.fbx
similarity index 100%
rename from client/resources/trees/FBX/Birch_4.fbx
rename to packages/client/resources/trees/FBX/Birch_4.fbx
diff --git a/client/resources/trees/FBX/Birch_5.fbx b/packages/client/resources/trees/FBX/Birch_5.fbx
similarity index 100%
rename from client/resources/trees/FBX/Birch_5.fbx
rename to packages/client/resources/trees/FBX/Birch_5.fbx
diff --git a/client/resources/trees/FBX/Birch_6.fbx b/packages/client/resources/trees/FBX/Birch_6.fbx
similarity index 100%
rename from client/resources/trees/FBX/Birch_6.fbx
rename to packages/client/resources/trees/FBX/Birch_6.fbx
diff --git a/client/resources/trees/FBX/Birch_7.fbx b/packages/client/resources/trees/FBX/Birch_7.fbx
similarity index 100%
rename from client/resources/trees/FBX/Birch_7.fbx
rename to packages/client/resources/trees/FBX/Birch_7.fbx
diff --git a/client/resources/trees/FBX/Birch_8.fbx b/packages/client/resources/trees/FBX/Birch_8.fbx
similarity index 100%
rename from client/resources/trees/FBX/Birch_8.fbx
rename to packages/client/resources/trees/FBX/Birch_8.fbx
diff --git a/client/resources/trees/FBX/Birch_9.fbx b/packages/client/resources/trees/FBX/Birch_9.fbx
similarity index 100%
rename from client/resources/trees/FBX/Birch_9.fbx
rename to packages/client/resources/trees/FBX/Birch_9.fbx
diff --git a/client/resources/trees/FBX/DeadBirch_1.fbx b/packages/client/resources/trees/FBX/DeadBirch_1.fbx
similarity index 100%
rename from client/resources/trees/FBX/DeadBirch_1.fbx
rename to packages/client/resources/trees/FBX/DeadBirch_1.fbx
diff --git a/client/resources/trees/FBX/DeadBirch_10.fbx b/packages/client/resources/trees/FBX/DeadBirch_10.fbx
similarity index 100%
rename from client/resources/trees/FBX/DeadBirch_10.fbx
rename to packages/client/resources/trees/FBX/DeadBirch_10.fbx
diff --git a/client/resources/trees/FBX/DeadBirch_2.fbx b/packages/client/resources/trees/FBX/DeadBirch_2.fbx
similarity index 100%
rename from client/resources/trees/FBX/DeadBirch_2.fbx
rename to packages/client/resources/trees/FBX/DeadBirch_2.fbx
diff --git a/client/resources/trees/FBX/DeadBirch_3.fbx b/packages/client/resources/trees/FBX/DeadBirch_3.fbx
similarity index 100%
rename from client/resources/trees/FBX/DeadBirch_3.fbx
rename to packages/client/resources/trees/FBX/DeadBirch_3.fbx
diff --git a/client/resources/trees/FBX/DeadBirch_4.fbx b/packages/client/resources/trees/FBX/DeadBirch_4.fbx
similarity index 100%
rename from client/resources/trees/FBX/DeadBirch_4.fbx
rename to packages/client/resources/trees/FBX/DeadBirch_4.fbx
diff --git a/client/resources/trees/FBX/DeadBirch_5.fbx b/packages/client/resources/trees/FBX/DeadBirch_5.fbx
similarity index 100%
rename from client/resources/trees/FBX/DeadBirch_5.fbx
rename to packages/client/resources/trees/FBX/DeadBirch_5.fbx
diff --git a/client/resources/trees/FBX/DeadBirch_6.fbx b/packages/client/resources/trees/FBX/DeadBirch_6.fbx
similarity index 100%
rename from client/resources/trees/FBX/DeadBirch_6.fbx
rename to packages/client/resources/trees/FBX/DeadBirch_6.fbx
diff --git a/client/resources/trees/FBX/DeadBirch_7.fbx b/packages/client/resources/trees/FBX/DeadBirch_7.fbx
similarity index 100%
rename from client/resources/trees/FBX/DeadBirch_7.fbx
rename to packages/client/resources/trees/FBX/DeadBirch_7.fbx
diff --git a/client/resources/trees/FBX/DeadBirch_8.fbx b/packages/client/resources/trees/FBX/DeadBirch_8.fbx
similarity index 100%
rename from client/resources/trees/FBX/DeadBirch_8.fbx
rename to packages/client/resources/trees/FBX/DeadBirch_8.fbx
diff --git a/client/resources/trees/FBX/DeadBirch_9.fbx b/packages/client/resources/trees/FBX/DeadBirch_9.fbx
similarity index 100%
rename from client/resources/trees/FBX/DeadBirch_9.fbx
rename to packages/client/resources/trees/FBX/DeadBirch_9.fbx
diff --git a/client/resources/trees/FBX/DeadTree_1.fbx b/packages/client/resources/trees/FBX/DeadTree_1.fbx
similarity index 100%
rename from client/resources/trees/FBX/DeadTree_1.fbx
rename to packages/client/resources/trees/FBX/DeadTree_1.fbx
diff --git a/client/resources/trees/FBX/DeadTree_10.fbx b/packages/client/resources/trees/FBX/DeadTree_10.fbx
similarity index 100%
rename from client/resources/trees/FBX/DeadTree_10.fbx
rename to packages/client/resources/trees/FBX/DeadTree_10.fbx
diff --git a/client/resources/trees/FBX/DeadTree_2.fbx b/packages/client/resources/trees/FBX/DeadTree_2.fbx
similarity index 100%
rename from client/resources/trees/FBX/DeadTree_2.fbx
rename to packages/client/resources/trees/FBX/DeadTree_2.fbx
diff --git a/client/resources/trees/FBX/DeadTree_3.fbx b/packages/client/resources/trees/FBX/DeadTree_3.fbx
similarity index 100%
rename from client/resources/trees/FBX/DeadTree_3.fbx
rename to packages/client/resources/trees/FBX/DeadTree_3.fbx
diff --git a/client/resources/trees/FBX/DeadTree_4.fbx b/packages/client/resources/trees/FBX/DeadTree_4.fbx
similarity index 100%
rename from client/resources/trees/FBX/DeadTree_4.fbx
rename to packages/client/resources/trees/FBX/DeadTree_4.fbx
diff --git a/client/resources/trees/FBX/DeadTree_5.fbx b/packages/client/resources/trees/FBX/DeadTree_5.fbx
similarity index 100%
rename from client/resources/trees/FBX/DeadTree_5.fbx
rename to packages/client/resources/trees/FBX/DeadTree_5.fbx
diff --git a/client/resources/trees/FBX/DeadTree_6.fbx b/packages/client/resources/trees/FBX/DeadTree_6.fbx
similarity index 100%
rename from client/resources/trees/FBX/DeadTree_6.fbx
rename to packages/client/resources/trees/FBX/DeadTree_6.fbx
diff --git a/client/resources/trees/FBX/DeadTree_7.fbx b/packages/client/resources/trees/FBX/DeadTree_7.fbx
similarity index 100%
rename from client/resources/trees/FBX/DeadTree_7.fbx
rename to packages/client/resources/trees/FBX/DeadTree_7.fbx
diff --git a/client/resources/trees/FBX/DeadTree_8.fbx b/packages/client/resources/trees/FBX/DeadTree_8.fbx
similarity index 100%
rename from client/resources/trees/FBX/DeadTree_8.fbx
rename to packages/client/resources/trees/FBX/DeadTree_8.fbx
diff --git a/client/resources/trees/FBX/DeadTree_9.fbx b/packages/client/resources/trees/FBX/DeadTree_9.fbx
similarity index 100%
rename from client/resources/trees/FBX/DeadTree_9.fbx
rename to packages/client/resources/trees/FBX/DeadTree_9.fbx
diff --git a/client/resources/trees/FBX/Pine_1.fbx b/packages/client/resources/trees/FBX/Pine_1.fbx
similarity index 100%
rename from client/resources/trees/FBX/Pine_1.fbx
rename to packages/client/resources/trees/FBX/Pine_1.fbx
diff --git a/client/resources/trees/FBX/Pine_2.fbx b/packages/client/resources/trees/FBX/Pine_2.fbx
similarity index 100%
rename from client/resources/trees/FBX/Pine_2.fbx
rename to packages/client/resources/trees/FBX/Pine_2.fbx
diff --git a/client/resources/trees/FBX/Pine_3.fbx b/packages/client/resources/trees/FBX/Pine_3.fbx
similarity index 100%
rename from client/resources/trees/FBX/Pine_3.fbx
rename to packages/client/resources/trees/FBX/Pine_3.fbx
diff --git a/client/resources/trees/FBX/Pine_4.fbx b/packages/client/resources/trees/FBX/Pine_4.fbx
similarity index 100%
rename from client/resources/trees/FBX/Pine_4.fbx
rename to packages/client/resources/trees/FBX/Pine_4.fbx
diff --git a/client/resources/trees/FBX/Pine_5.fbx b/packages/client/resources/trees/FBX/Pine_5.fbx
similarity index 100%
rename from client/resources/trees/FBX/Pine_5.fbx
rename to packages/client/resources/trees/FBX/Pine_5.fbx
diff --git a/client/resources/trees/FBX/Tree_1.fbx b/packages/client/resources/trees/FBX/Tree_1.fbx
similarity index 100%
rename from client/resources/trees/FBX/Tree_1.fbx
rename to packages/client/resources/trees/FBX/Tree_1.fbx
diff --git a/client/resources/trees/FBX/Tree_10.fbx b/packages/client/resources/trees/FBX/Tree_10.fbx
similarity index 100%
rename from client/resources/trees/FBX/Tree_10.fbx
rename to packages/client/resources/trees/FBX/Tree_10.fbx
diff --git a/client/resources/trees/FBX/Tree_2.fbx b/packages/client/resources/trees/FBX/Tree_2.fbx
similarity index 100%
rename from client/resources/trees/FBX/Tree_2.fbx
rename to packages/client/resources/trees/FBX/Tree_2.fbx
diff --git a/client/resources/trees/FBX/Tree_3.fbx b/packages/client/resources/trees/FBX/Tree_3.fbx
similarity index 100%
rename from client/resources/trees/FBX/Tree_3.fbx
rename to packages/client/resources/trees/FBX/Tree_3.fbx
diff --git a/client/resources/trees/FBX/Tree_4.fbx b/packages/client/resources/trees/FBX/Tree_4.fbx
similarity index 100%
rename from client/resources/trees/FBX/Tree_4.fbx
rename to packages/client/resources/trees/FBX/Tree_4.fbx
diff --git a/client/resources/trees/FBX/Tree_5.fbx b/packages/client/resources/trees/FBX/Tree_5.fbx
similarity index 100%
rename from client/resources/trees/FBX/Tree_5.fbx
rename to packages/client/resources/trees/FBX/Tree_5.fbx
diff --git a/client/resources/trees/FBX/Tree_6.fbx b/packages/client/resources/trees/FBX/Tree_6.fbx
similarity index 100%
rename from client/resources/trees/FBX/Tree_6.fbx
rename to packages/client/resources/trees/FBX/Tree_6.fbx
diff --git a/client/resources/trees/FBX/Tree_7.fbx b/packages/client/resources/trees/FBX/Tree_7.fbx
similarity index 100%
rename from client/resources/trees/FBX/Tree_7.fbx
rename to packages/client/resources/trees/FBX/Tree_7.fbx
diff --git a/client/resources/trees/FBX/Tree_8.fbx b/packages/client/resources/trees/FBX/Tree_8.fbx
similarity index 100%
rename from client/resources/trees/FBX/Tree_8.fbx
rename to packages/client/resources/trees/FBX/Tree_8.fbx
diff --git a/client/resources/trees/FBX/Tree_9.fbx b/packages/client/resources/trees/FBX/Tree_9.fbx
similarity index 100%
rename from client/resources/trees/FBX/Tree_9.fbx
rename to packages/client/resources/trees/FBX/Tree_9.fbx
diff --git a/client/resources/trees/License.txt b/packages/client/resources/trees/License.txt
similarity index 100%
rename from client/resources/trees/License.txt
rename to packages/client/resources/trees/License.txt
diff --git a/client/resources/trees/OBJ/Birch_1.mtl b/packages/client/resources/trees/OBJ/Birch_1.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Birch_1.mtl
rename to packages/client/resources/trees/OBJ/Birch_1.mtl
diff --git a/client/resources/trees/OBJ/Birch_1.obj b/packages/client/resources/trees/OBJ/Birch_1.obj
similarity index 100%
rename from client/resources/trees/OBJ/Birch_1.obj
rename to packages/client/resources/trees/OBJ/Birch_1.obj
diff --git a/client/resources/trees/OBJ/Birch_10.mtl b/packages/client/resources/trees/OBJ/Birch_10.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Birch_10.mtl
rename to packages/client/resources/trees/OBJ/Birch_10.mtl
diff --git a/client/resources/trees/OBJ/Birch_10.obj b/packages/client/resources/trees/OBJ/Birch_10.obj
similarity index 100%
rename from client/resources/trees/OBJ/Birch_10.obj
rename to packages/client/resources/trees/OBJ/Birch_10.obj
diff --git a/client/resources/trees/OBJ/Birch_2.mtl b/packages/client/resources/trees/OBJ/Birch_2.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Birch_2.mtl
rename to packages/client/resources/trees/OBJ/Birch_2.mtl
diff --git a/client/resources/trees/OBJ/Birch_2.obj b/packages/client/resources/trees/OBJ/Birch_2.obj
similarity index 100%
rename from client/resources/trees/OBJ/Birch_2.obj
rename to packages/client/resources/trees/OBJ/Birch_2.obj
diff --git a/client/resources/trees/OBJ/Birch_3.mtl b/packages/client/resources/trees/OBJ/Birch_3.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Birch_3.mtl
rename to packages/client/resources/trees/OBJ/Birch_3.mtl
diff --git a/client/resources/trees/OBJ/Birch_3.obj b/packages/client/resources/trees/OBJ/Birch_3.obj
similarity index 100%
rename from client/resources/trees/OBJ/Birch_3.obj
rename to packages/client/resources/trees/OBJ/Birch_3.obj
diff --git a/client/resources/trees/OBJ/Birch_4.mtl b/packages/client/resources/trees/OBJ/Birch_4.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Birch_4.mtl
rename to packages/client/resources/trees/OBJ/Birch_4.mtl
diff --git a/client/resources/trees/OBJ/Birch_4.obj b/packages/client/resources/trees/OBJ/Birch_4.obj
similarity index 100%
rename from client/resources/trees/OBJ/Birch_4.obj
rename to packages/client/resources/trees/OBJ/Birch_4.obj
diff --git a/client/resources/trees/OBJ/Birch_5.mtl b/packages/client/resources/trees/OBJ/Birch_5.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Birch_5.mtl
rename to packages/client/resources/trees/OBJ/Birch_5.mtl
diff --git a/client/resources/trees/OBJ/Birch_5.obj b/packages/client/resources/trees/OBJ/Birch_5.obj
similarity index 100%
rename from client/resources/trees/OBJ/Birch_5.obj
rename to packages/client/resources/trees/OBJ/Birch_5.obj
diff --git a/client/resources/trees/OBJ/Birch_6.mtl b/packages/client/resources/trees/OBJ/Birch_6.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Birch_6.mtl
rename to packages/client/resources/trees/OBJ/Birch_6.mtl
diff --git a/client/resources/trees/OBJ/Birch_6.obj b/packages/client/resources/trees/OBJ/Birch_6.obj
similarity index 100%
rename from client/resources/trees/OBJ/Birch_6.obj
rename to packages/client/resources/trees/OBJ/Birch_6.obj
diff --git a/client/resources/trees/OBJ/Birch_7.mtl b/packages/client/resources/trees/OBJ/Birch_7.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Birch_7.mtl
rename to packages/client/resources/trees/OBJ/Birch_7.mtl
diff --git a/client/resources/trees/OBJ/Birch_7.obj b/packages/client/resources/trees/OBJ/Birch_7.obj
similarity index 100%
rename from client/resources/trees/OBJ/Birch_7.obj
rename to packages/client/resources/trees/OBJ/Birch_7.obj
diff --git a/client/resources/trees/OBJ/Birch_8.mtl b/packages/client/resources/trees/OBJ/Birch_8.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Birch_8.mtl
rename to packages/client/resources/trees/OBJ/Birch_8.mtl
diff --git a/client/resources/trees/OBJ/Birch_8.obj b/packages/client/resources/trees/OBJ/Birch_8.obj
similarity index 100%
rename from client/resources/trees/OBJ/Birch_8.obj
rename to packages/client/resources/trees/OBJ/Birch_8.obj
diff --git a/client/resources/trees/OBJ/Birch_9.mtl b/packages/client/resources/trees/OBJ/Birch_9.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Birch_9.mtl
rename to packages/client/resources/trees/OBJ/Birch_9.mtl
diff --git a/client/resources/trees/OBJ/Birch_9.obj b/packages/client/resources/trees/OBJ/Birch_9.obj
similarity index 100%
rename from client/resources/trees/OBJ/Birch_9.obj
rename to packages/client/resources/trees/OBJ/Birch_9.obj
diff --git a/client/resources/trees/OBJ/DeadBirch_1.mtl b/packages/client/resources/trees/OBJ/DeadBirch_1.mtl
similarity index 100%
rename from client/resources/trees/OBJ/DeadBirch_1.mtl
rename to packages/client/resources/trees/OBJ/DeadBirch_1.mtl
diff --git a/client/resources/trees/OBJ/DeadBirch_1.obj b/packages/client/resources/trees/OBJ/DeadBirch_1.obj
similarity index 100%
rename from client/resources/trees/OBJ/DeadBirch_1.obj
rename to packages/client/resources/trees/OBJ/DeadBirch_1.obj
diff --git a/client/resources/trees/OBJ/DeadBirch_10.mtl b/packages/client/resources/trees/OBJ/DeadBirch_10.mtl
similarity index 100%
rename from client/resources/trees/OBJ/DeadBirch_10.mtl
rename to packages/client/resources/trees/OBJ/DeadBirch_10.mtl
diff --git a/client/resources/trees/OBJ/DeadBirch_10.obj b/packages/client/resources/trees/OBJ/DeadBirch_10.obj
similarity index 100%
rename from client/resources/trees/OBJ/DeadBirch_10.obj
rename to packages/client/resources/trees/OBJ/DeadBirch_10.obj
diff --git a/client/resources/trees/OBJ/DeadBirch_2.mtl b/packages/client/resources/trees/OBJ/DeadBirch_2.mtl
similarity index 100%
rename from client/resources/trees/OBJ/DeadBirch_2.mtl
rename to packages/client/resources/trees/OBJ/DeadBirch_2.mtl
diff --git a/client/resources/trees/OBJ/DeadBirch_2.obj b/packages/client/resources/trees/OBJ/DeadBirch_2.obj
similarity index 100%
rename from client/resources/trees/OBJ/DeadBirch_2.obj
rename to packages/client/resources/trees/OBJ/DeadBirch_2.obj
diff --git a/client/resources/trees/OBJ/DeadBirch_3.mtl b/packages/client/resources/trees/OBJ/DeadBirch_3.mtl
similarity index 100%
rename from client/resources/trees/OBJ/DeadBirch_3.mtl
rename to packages/client/resources/trees/OBJ/DeadBirch_3.mtl
diff --git a/client/resources/trees/OBJ/DeadBirch_3.obj b/packages/client/resources/trees/OBJ/DeadBirch_3.obj
similarity index 100%
rename from client/resources/trees/OBJ/DeadBirch_3.obj
rename to packages/client/resources/trees/OBJ/DeadBirch_3.obj
diff --git a/client/resources/trees/OBJ/DeadBirch_4.mtl b/packages/client/resources/trees/OBJ/DeadBirch_4.mtl
similarity index 100%
rename from client/resources/trees/OBJ/DeadBirch_4.mtl
rename to packages/client/resources/trees/OBJ/DeadBirch_4.mtl
diff --git a/client/resources/trees/OBJ/DeadBirch_4.obj b/packages/client/resources/trees/OBJ/DeadBirch_4.obj
similarity index 100%
rename from client/resources/trees/OBJ/DeadBirch_4.obj
rename to packages/client/resources/trees/OBJ/DeadBirch_4.obj
diff --git a/client/resources/trees/OBJ/DeadBirch_5.mtl b/packages/client/resources/trees/OBJ/DeadBirch_5.mtl
similarity index 100%
rename from client/resources/trees/OBJ/DeadBirch_5.mtl
rename to packages/client/resources/trees/OBJ/DeadBirch_5.mtl
diff --git a/client/resources/trees/OBJ/DeadBirch_5.obj b/packages/client/resources/trees/OBJ/DeadBirch_5.obj
similarity index 100%
rename from client/resources/trees/OBJ/DeadBirch_5.obj
rename to packages/client/resources/trees/OBJ/DeadBirch_5.obj
diff --git a/client/resources/trees/OBJ/DeadBirch_6.mtl b/packages/client/resources/trees/OBJ/DeadBirch_6.mtl
similarity index 100%
rename from client/resources/trees/OBJ/DeadBirch_6.mtl
rename to packages/client/resources/trees/OBJ/DeadBirch_6.mtl
diff --git a/client/resources/trees/OBJ/DeadBirch_6.obj b/packages/client/resources/trees/OBJ/DeadBirch_6.obj
similarity index 100%
rename from client/resources/trees/OBJ/DeadBirch_6.obj
rename to packages/client/resources/trees/OBJ/DeadBirch_6.obj
diff --git a/client/resources/trees/OBJ/DeadBirch_7.mtl b/packages/client/resources/trees/OBJ/DeadBirch_7.mtl
similarity index 100%
rename from client/resources/trees/OBJ/DeadBirch_7.mtl
rename to packages/client/resources/trees/OBJ/DeadBirch_7.mtl
diff --git a/client/resources/trees/OBJ/DeadBirch_7.obj b/packages/client/resources/trees/OBJ/DeadBirch_7.obj
similarity index 100%
rename from client/resources/trees/OBJ/DeadBirch_7.obj
rename to packages/client/resources/trees/OBJ/DeadBirch_7.obj
diff --git a/client/resources/trees/OBJ/DeadBirch_8.mtl b/packages/client/resources/trees/OBJ/DeadBirch_8.mtl
similarity index 100%
rename from client/resources/trees/OBJ/DeadBirch_8.mtl
rename to packages/client/resources/trees/OBJ/DeadBirch_8.mtl
diff --git a/client/resources/trees/OBJ/DeadBirch_8.obj b/packages/client/resources/trees/OBJ/DeadBirch_8.obj
similarity index 100%
rename from client/resources/trees/OBJ/DeadBirch_8.obj
rename to packages/client/resources/trees/OBJ/DeadBirch_8.obj
diff --git a/client/resources/trees/OBJ/DeadBirch_9.mtl b/packages/client/resources/trees/OBJ/DeadBirch_9.mtl
similarity index 100%
rename from client/resources/trees/OBJ/DeadBirch_9.mtl
rename to packages/client/resources/trees/OBJ/DeadBirch_9.mtl
diff --git a/client/resources/trees/OBJ/DeadBirch_9.obj b/packages/client/resources/trees/OBJ/DeadBirch_9.obj
similarity index 100%
rename from client/resources/trees/OBJ/DeadBirch_9.obj
rename to packages/client/resources/trees/OBJ/DeadBirch_9.obj
diff --git a/client/resources/trees/OBJ/DeadTree_1.mtl b/packages/client/resources/trees/OBJ/DeadTree_1.mtl
similarity index 100%
rename from client/resources/trees/OBJ/DeadTree_1.mtl
rename to packages/client/resources/trees/OBJ/DeadTree_1.mtl
diff --git a/client/resources/trees/OBJ/DeadTree_1.obj b/packages/client/resources/trees/OBJ/DeadTree_1.obj
similarity index 100%
rename from client/resources/trees/OBJ/DeadTree_1.obj
rename to packages/client/resources/trees/OBJ/DeadTree_1.obj
diff --git a/client/resources/trees/OBJ/DeadTree_10.mtl b/packages/client/resources/trees/OBJ/DeadTree_10.mtl
similarity index 100%
rename from client/resources/trees/OBJ/DeadTree_10.mtl
rename to packages/client/resources/trees/OBJ/DeadTree_10.mtl
diff --git a/client/resources/trees/OBJ/DeadTree_10.obj b/packages/client/resources/trees/OBJ/DeadTree_10.obj
similarity index 100%
rename from client/resources/trees/OBJ/DeadTree_10.obj
rename to packages/client/resources/trees/OBJ/DeadTree_10.obj
diff --git a/client/resources/trees/OBJ/DeadTree_2.mtl b/packages/client/resources/trees/OBJ/DeadTree_2.mtl
similarity index 100%
rename from client/resources/trees/OBJ/DeadTree_2.mtl
rename to packages/client/resources/trees/OBJ/DeadTree_2.mtl
diff --git a/client/resources/trees/OBJ/DeadTree_2.obj b/packages/client/resources/trees/OBJ/DeadTree_2.obj
similarity index 100%
rename from client/resources/trees/OBJ/DeadTree_2.obj
rename to packages/client/resources/trees/OBJ/DeadTree_2.obj
diff --git a/client/resources/trees/OBJ/DeadTree_3.mtl b/packages/client/resources/trees/OBJ/DeadTree_3.mtl
similarity index 100%
rename from client/resources/trees/OBJ/DeadTree_3.mtl
rename to packages/client/resources/trees/OBJ/DeadTree_3.mtl
diff --git a/client/resources/trees/OBJ/DeadTree_3.obj b/packages/client/resources/trees/OBJ/DeadTree_3.obj
similarity index 100%
rename from client/resources/trees/OBJ/DeadTree_3.obj
rename to packages/client/resources/trees/OBJ/DeadTree_3.obj
diff --git a/client/resources/trees/OBJ/DeadTree_4.mtl b/packages/client/resources/trees/OBJ/DeadTree_4.mtl
similarity index 100%
rename from client/resources/trees/OBJ/DeadTree_4.mtl
rename to packages/client/resources/trees/OBJ/DeadTree_4.mtl
diff --git a/client/resources/trees/OBJ/DeadTree_4.obj b/packages/client/resources/trees/OBJ/DeadTree_4.obj
similarity index 100%
rename from client/resources/trees/OBJ/DeadTree_4.obj
rename to packages/client/resources/trees/OBJ/DeadTree_4.obj
diff --git a/client/resources/trees/OBJ/DeadTree_5.mtl b/packages/client/resources/trees/OBJ/DeadTree_5.mtl
similarity index 100%
rename from client/resources/trees/OBJ/DeadTree_5.mtl
rename to packages/client/resources/trees/OBJ/DeadTree_5.mtl
diff --git a/client/resources/trees/OBJ/DeadTree_5.obj b/packages/client/resources/trees/OBJ/DeadTree_5.obj
similarity index 100%
rename from client/resources/trees/OBJ/DeadTree_5.obj
rename to packages/client/resources/trees/OBJ/DeadTree_5.obj
diff --git a/client/resources/trees/OBJ/DeadTree_6.mtl b/packages/client/resources/trees/OBJ/DeadTree_6.mtl
similarity index 100%
rename from client/resources/trees/OBJ/DeadTree_6.mtl
rename to packages/client/resources/trees/OBJ/DeadTree_6.mtl
diff --git a/client/resources/trees/OBJ/DeadTree_6.obj b/packages/client/resources/trees/OBJ/DeadTree_6.obj
similarity index 100%
rename from client/resources/trees/OBJ/DeadTree_6.obj
rename to packages/client/resources/trees/OBJ/DeadTree_6.obj
diff --git a/client/resources/trees/OBJ/DeadTree_7.mtl b/packages/client/resources/trees/OBJ/DeadTree_7.mtl
similarity index 100%
rename from client/resources/trees/OBJ/DeadTree_7.mtl
rename to packages/client/resources/trees/OBJ/DeadTree_7.mtl
diff --git a/client/resources/trees/OBJ/DeadTree_7.obj b/packages/client/resources/trees/OBJ/DeadTree_7.obj
similarity index 100%
rename from client/resources/trees/OBJ/DeadTree_7.obj
rename to packages/client/resources/trees/OBJ/DeadTree_7.obj
diff --git a/client/resources/trees/OBJ/DeadTree_8.mtl b/packages/client/resources/trees/OBJ/DeadTree_8.mtl
similarity index 100%
rename from client/resources/trees/OBJ/DeadTree_8.mtl
rename to packages/client/resources/trees/OBJ/DeadTree_8.mtl
diff --git a/client/resources/trees/OBJ/DeadTree_8.obj b/packages/client/resources/trees/OBJ/DeadTree_8.obj
similarity index 100%
rename from client/resources/trees/OBJ/DeadTree_8.obj
rename to packages/client/resources/trees/OBJ/DeadTree_8.obj
diff --git a/client/resources/trees/OBJ/DeadTree_9.mtl b/packages/client/resources/trees/OBJ/DeadTree_9.mtl
similarity index 100%
rename from client/resources/trees/OBJ/DeadTree_9.mtl
rename to packages/client/resources/trees/OBJ/DeadTree_9.mtl
diff --git a/client/resources/trees/OBJ/DeadTree_9.obj b/packages/client/resources/trees/OBJ/DeadTree_9.obj
similarity index 100%
rename from client/resources/trees/OBJ/DeadTree_9.obj
rename to packages/client/resources/trees/OBJ/DeadTree_9.obj
diff --git a/client/resources/trees/OBJ/Pine_1.mtl b/packages/client/resources/trees/OBJ/Pine_1.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Pine_1.mtl
rename to packages/client/resources/trees/OBJ/Pine_1.mtl
diff --git a/client/resources/trees/OBJ/Pine_1.obj b/packages/client/resources/trees/OBJ/Pine_1.obj
similarity index 100%
rename from client/resources/trees/OBJ/Pine_1.obj
rename to packages/client/resources/trees/OBJ/Pine_1.obj
diff --git a/client/resources/trees/OBJ/Pine_2.mtl b/packages/client/resources/trees/OBJ/Pine_2.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Pine_2.mtl
rename to packages/client/resources/trees/OBJ/Pine_2.mtl
diff --git a/client/resources/trees/OBJ/Pine_2.obj b/packages/client/resources/trees/OBJ/Pine_2.obj
similarity index 100%
rename from client/resources/trees/OBJ/Pine_2.obj
rename to packages/client/resources/trees/OBJ/Pine_2.obj
diff --git a/client/resources/trees/OBJ/Pine_3.mtl b/packages/client/resources/trees/OBJ/Pine_3.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Pine_3.mtl
rename to packages/client/resources/trees/OBJ/Pine_3.mtl
diff --git a/client/resources/trees/OBJ/Pine_3.obj b/packages/client/resources/trees/OBJ/Pine_3.obj
similarity index 100%
rename from client/resources/trees/OBJ/Pine_3.obj
rename to packages/client/resources/trees/OBJ/Pine_3.obj
diff --git a/client/resources/trees/OBJ/Pine_4.mtl b/packages/client/resources/trees/OBJ/Pine_4.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Pine_4.mtl
rename to packages/client/resources/trees/OBJ/Pine_4.mtl
diff --git a/client/resources/trees/OBJ/Pine_4.obj b/packages/client/resources/trees/OBJ/Pine_4.obj
similarity index 100%
rename from client/resources/trees/OBJ/Pine_4.obj
rename to packages/client/resources/trees/OBJ/Pine_4.obj
diff --git a/client/resources/trees/OBJ/Pine_5.mtl b/packages/client/resources/trees/OBJ/Pine_5.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Pine_5.mtl
rename to packages/client/resources/trees/OBJ/Pine_5.mtl
diff --git a/client/resources/trees/OBJ/Pine_5.obj b/packages/client/resources/trees/OBJ/Pine_5.obj
similarity index 100%
rename from client/resources/trees/OBJ/Pine_5.obj
rename to packages/client/resources/trees/OBJ/Pine_5.obj
diff --git a/client/resources/trees/OBJ/Tree_1.mtl b/packages/client/resources/trees/OBJ/Tree_1.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Tree_1.mtl
rename to packages/client/resources/trees/OBJ/Tree_1.mtl
diff --git a/client/resources/trees/OBJ/Tree_1.obj b/packages/client/resources/trees/OBJ/Tree_1.obj
similarity index 100%
rename from client/resources/trees/OBJ/Tree_1.obj
rename to packages/client/resources/trees/OBJ/Tree_1.obj
diff --git a/client/resources/trees/OBJ/Tree_10.mtl b/packages/client/resources/trees/OBJ/Tree_10.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Tree_10.mtl
rename to packages/client/resources/trees/OBJ/Tree_10.mtl
diff --git a/client/resources/trees/OBJ/Tree_10.obj b/packages/client/resources/trees/OBJ/Tree_10.obj
similarity index 100%
rename from client/resources/trees/OBJ/Tree_10.obj
rename to packages/client/resources/trees/OBJ/Tree_10.obj
diff --git a/client/resources/trees/OBJ/Tree_2.mtl b/packages/client/resources/trees/OBJ/Tree_2.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Tree_2.mtl
rename to packages/client/resources/trees/OBJ/Tree_2.mtl
diff --git a/client/resources/trees/OBJ/Tree_2.obj b/packages/client/resources/trees/OBJ/Tree_2.obj
similarity index 100%
rename from client/resources/trees/OBJ/Tree_2.obj
rename to packages/client/resources/trees/OBJ/Tree_2.obj
diff --git a/client/resources/trees/OBJ/Tree_3.mtl b/packages/client/resources/trees/OBJ/Tree_3.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Tree_3.mtl
rename to packages/client/resources/trees/OBJ/Tree_3.mtl
diff --git a/client/resources/trees/OBJ/Tree_3.obj b/packages/client/resources/trees/OBJ/Tree_3.obj
similarity index 100%
rename from client/resources/trees/OBJ/Tree_3.obj
rename to packages/client/resources/trees/OBJ/Tree_3.obj
diff --git a/client/resources/trees/OBJ/Tree_4.mtl b/packages/client/resources/trees/OBJ/Tree_4.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Tree_4.mtl
rename to packages/client/resources/trees/OBJ/Tree_4.mtl
diff --git a/client/resources/trees/OBJ/Tree_4.obj b/packages/client/resources/trees/OBJ/Tree_4.obj
similarity index 100%
rename from client/resources/trees/OBJ/Tree_4.obj
rename to packages/client/resources/trees/OBJ/Tree_4.obj
diff --git a/client/resources/trees/OBJ/Tree_5.mtl b/packages/client/resources/trees/OBJ/Tree_5.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Tree_5.mtl
rename to packages/client/resources/trees/OBJ/Tree_5.mtl
diff --git a/client/resources/trees/OBJ/Tree_5.obj b/packages/client/resources/trees/OBJ/Tree_5.obj
similarity index 100%
rename from client/resources/trees/OBJ/Tree_5.obj
rename to packages/client/resources/trees/OBJ/Tree_5.obj
diff --git a/client/resources/trees/OBJ/Tree_6.mtl b/packages/client/resources/trees/OBJ/Tree_6.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Tree_6.mtl
rename to packages/client/resources/trees/OBJ/Tree_6.mtl
diff --git a/client/resources/trees/OBJ/Tree_6.obj b/packages/client/resources/trees/OBJ/Tree_6.obj
similarity index 100%
rename from client/resources/trees/OBJ/Tree_6.obj
rename to packages/client/resources/trees/OBJ/Tree_6.obj
diff --git a/client/resources/trees/OBJ/Tree_7.mtl b/packages/client/resources/trees/OBJ/Tree_7.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Tree_7.mtl
rename to packages/client/resources/trees/OBJ/Tree_7.mtl
diff --git a/client/resources/trees/OBJ/Tree_7.obj b/packages/client/resources/trees/OBJ/Tree_7.obj
similarity index 100%
rename from client/resources/trees/OBJ/Tree_7.obj
rename to packages/client/resources/trees/OBJ/Tree_7.obj
diff --git a/client/resources/trees/OBJ/Tree_8.mtl b/packages/client/resources/trees/OBJ/Tree_8.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Tree_8.mtl
rename to packages/client/resources/trees/OBJ/Tree_8.mtl
diff --git a/client/resources/trees/OBJ/Tree_8.obj b/packages/client/resources/trees/OBJ/Tree_8.obj
similarity index 100%
rename from client/resources/trees/OBJ/Tree_8.obj
rename to packages/client/resources/trees/OBJ/Tree_8.obj
diff --git a/client/resources/trees/OBJ/Tree_9.mtl b/packages/client/resources/trees/OBJ/Tree_9.mtl
similarity index 100%
rename from client/resources/trees/OBJ/Tree_9.mtl
rename to packages/client/resources/trees/OBJ/Tree_9.mtl
diff --git a/client/resources/trees/OBJ/Tree_9.obj b/packages/client/resources/trees/OBJ/Tree_9.obj
similarity index 100%
rename from client/resources/trees/OBJ/Tree_9.obj
rename to packages/client/resources/trees/OBJ/Tree_9.obj
diff --git a/client/resources/trees/Preview.jpg b/packages/client/resources/trees/Preview.jpg
similarity index 100%
rename from client/resources/trees/Preview.jpg
rename to packages/client/resources/trees/Preview.jpg
diff --git a/client/resources/trees/Textures/Birch_Bark.png b/packages/client/resources/trees/Textures/Birch_Bark.png
similarity index 100%
rename from client/resources/trees/Textures/Birch_Bark.png
rename to packages/client/resources/trees/Textures/Birch_Bark.png
diff --git a/client/resources/trees/Textures/Birch_Leaves_Green.png b/packages/client/resources/trees/Textures/Birch_Leaves_Green.png
similarity index 100%
rename from client/resources/trees/Textures/Birch_Leaves_Green.png
rename to packages/client/resources/trees/Textures/Birch_Leaves_Green.png
diff --git a/client/resources/trees/Textures/Birch_Leaves_Yellow.png b/packages/client/resources/trees/Textures/Birch_Leaves_Yellow.png
similarity index 100%
rename from client/resources/trees/Textures/Birch_Leaves_Yellow.png
rename to packages/client/resources/trees/Textures/Birch_Leaves_Yellow.png
diff --git a/client/resources/trees/Textures/Color Variations/Bark_Dead.png b/packages/client/resources/trees/Textures/Color Variations/Bark_Dead.png
similarity index 100%
rename from client/resources/trees/Textures/Color Variations/Bark_Dead.png
rename to packages/client/resources/trees/Textures/Color Variations/Bark_Dead.png
diff --git a/client/resources/trees/Textures/Color Variations/Birch_Bark_Dead.png b/packages/client/resources/trees/Textures/Color Variations/Birch_Bark_Dead.png
similarity index 100%
rename from client/resources/trees/Textures/Color Variations/Birch_Bark_Dead.png
rename to packages/client/resources/trees/Textures/Color Variations/Birch_Bark_Dead.png
diff --git a/client/resources/trees/Textures/Color Variations/Leaves_Cyan.png b/packages/client/resources/trees/Textures/Color Variations/Leaves_Cyan.png
similarity index 100%
rename from client/resources/trees/Textures/Color Variations/Leaves_Cyan.png
rename to packages/client/resources/trees/Textures/Color Variations/Leaves_Cyan.png
diff --git a/client/resources/trees/Textures/Color Variations/Leaves_DarkRed.png b/packages/client/resources/trees/Textures/Color Variations/Leaves_DarkRed.png
similarity index 100%
rename from client/resources/trees/Textures/Color Variations/Leaves_DarkRed.png
rename to packages/client/resources/trees/Textures/Color Variations/Leaves_DarkRed.png
diff --git a/client/resources/trees/Textures/Color Variations/Leaves_Light.png b/packages/client/resources/trees/Textures/Color Variations/Leaves_Light.png
similarity index 100%
rename from client/resources/trees/Textures/Color Variations/Leaves_Light.png
rename to packages/client/resources/trees/Textures/Color Variations/Leaves_Light.png
diff --git a/client/resources/trees/Textures/Color Variations/Leaves_Orange.png b/packages/client/resources/trees/Textures/Color Variations/Leaves_Orange.png
similarity index 100%
rename from client/resources/trees/Textures/Color Variations/Leaves_Orange.png
rename to packages/client/resources/trees/Textures/Color Variations/Leaves_Orange.png
diff --git a/client/resources/trees/Textures/Color Variations/Leaves_Pink.png b/packages/client/resources/trees/Textures/Color Variations/Leaves_Pink.png
similarity index 100%
rename from client/resources/trees/Textures/Color Variations/Leaves_Pink.png
rename to packages/client/resources/trees/Textures/Color Variations/Leaves_Pink.png
diff --git a/client/resources/trees/Textures/Color Variations/Leaves_Purple.png b/packages/client/resources/trees/Textures/Color Variations/Leaves_Purple.png
similarity index 100%
rename from client/resources/trees/Textures/Color Variations/Leaves_Purple.png
rename to packages/client/resources/trees/Textures/Color Variations/Leaves_Purple.png
diff --git a/client/resources/trees/Textures/Color Variations/Leaves_Red.png b/packages/client/resources/trees/Textures/Color Variations/Leaves_Red.png
similarity index 100%
rename from client/resources/trees/Textures/Color Variations/Leaves_Red.png
rename to packages/client/resources/trees/Textures/Color Variations/Leaves_Red.png
diff --git a/client/resources/trees/Textures/Color Variations/Pine_Leaves_Light.png b/packages/client/resources/trees/Textures/Color Variations/Pine_Leaves_Light.png
similarity index 100%
rename from client/resources/trees/Textures/Color Variations/Pine_Leaves_Light.png
rename to packages/client/resources/trees/Textures/Color Variations/Pine_Leaves_Light.png
diff --git a/client/resources/trees/Textures/Color Variations/Pine_Leaves_Red.png b/packages/client/resources/trees/Textures/Color Variations/Pine_Leaves_Red.png
similarity index 100%
rename from client/resources/trees/Textures/Color Variations/Pine_Leaves_Red.png
rename to packages/client/resources/trees/Textures/Color Variations/Pine_Leaves_Red.png
diff --git a/client/resources/trees/Textures/Leaves_Blue.png b/packages/client/resources/trees/Textures/Leaves_Blue.png
similarity index 100%
rename from client/resources/trees/Textures/Leaves_Blue.png
rename to packages/client/resources/trees/Textures/Leaves_Blue.png
diff --git a/client/resources/trees/Textures/Pine_Leaves.png b/packages/client/resources/trees/Textures/Pine_Leaves.png
similarity index 100%
rename from client/resources/trees/Textures/Pine_Leaves.png
rename to packages/client/resources/trees/Textures/Pine_Leaves.png
diff --git a/client/resources/trees/Textures/Tree_Bark.jpg b/packages/client/resources/trees/Textures/Tree_Bark.jpg
similarity index 100%
rename from client/resources/trees/Textures/Tree_Bark.jpg
rename to packages/client/resources/trees/Textures/Tree_Bark.jpg
diff --git a/client/resources/trees/Textures/Tree_Leaves.png b/packages/client/resources/trees/Textures/Tree_Leaves.png
similarity index 100%
rename from client/resources/trees/Textures/Tree_Leaves.png
rename to packages/client/resources/trees/Textures/Tree_Leaves.png
diff --git a/client/resources/weapons/Blends/Arrow.blend b/packages/client/resources/weapons/Blends/Arrow.blend
similarity index 100%
rename from client/resources/weapons/Blends/Arrow.blend
rename to packages/client/resources/weapons/Blends/Arrow.blend
diff --git a/client/resources/weapons/Blends/Axe.blend b/packages/client/resources/weapons/Blends/Axe.blend
similarity index 100%
rename from client/resources/weapons/Blends/Axe.blend
rename to packages/client/resources/weapons/Blends/Axe.blend
diff --git a/client/resources/weapons/Blends/Axe_Double.blend b/packages/client/resources/weapons/Blends/Axe_Double.blend
similarity index 100%
rename from client/resources/weapons/Blends/Axe_Double.blend
rename to packages/client/resources/weapons/Blends/Axe_Double.blend
diff --git a/client/resources/weapons/Blends/Axe_Small.blend b/packages/client/resources/weapons/Blends/Axe_Small.blend
similarity index 100%
rename from client/resources/weapons/Blends/Axe_Small.blend
rename to packages/client/resources/weapons/Blends/Axe_Small.blend
diff --git a/client/resources/weapons/Blends/Bow_Evil.blend b/packages/client/resources/weapons/Blends/Bow_Evil.blend
similarity index 100%
rename from client/resources/weapons/Blends/Bow_Evil.blend
rename to packages/client/resources/weapons/Blends/Bow_Evil.blend
diff --git a/client/resources/weapons/Blends/Bow_Golden.blend b/packages/client/resources/weapons/Blends/Bow_Golden.blend
similarity index 100%
rename from client/resources/weapons/Blends/Bow_Golden.blend
rename to packages/client/resources/weapons/Blends/Bow_Golden.blend
diff --git a/client/resources/weapons/Blends/Bow_Wooden.blend b/packages/client/resources/weapons/Blends/Bow_Wooden.blend
similarity index 100%
rename from client/resources/weapons/Blends/Bow_Wooden.blend
rename to packages/client/resources/weapons/Blends/Bow_Wooden.blend
diff --git a/client/resources/weapons/Blends/Bow_Wooden2.blend b/packages/client/resources/weapons/Blends/Bow_Wooden2.blend
similarity index 100%
rename from client/resources/weapons/Blends/Bow_Wooden2.blend
rename to packages/client/resources/weapons/Blends/Bow_Wooden2.blend
diff --git a/client/resources/weapons/Blends/Claymore.blend b/packages/client/resources/weapons/Blends/Claymore.blend
similarity index 100%
rename from client/resources/weapons/Blends/Claymore.blend
rename to packages/client/resources/weapons/Blends/Claymore.blend
diff --git a/client/resources/weapons/Blends/Dagger.blend b/packages/client/resources/weapons/Blends/Dagger.blend
similarity index 100%
rename from client/resources/weapons/Blends/Dagger.blend
rename to packages/client/resources/weapons/Blends/Dagger.blend
diff --git a/client/resources/weapons/Blends/Dagger_2.blend b/packages/client/resources/weapons/Blends/Dagger_2.blend
similarity index 100%
rename from client/resources/weapons/Blends/Dagger_2.blend
rename to packages/client/resources/weapons/Blends/Dagger_2.blend
diff --git a/client/resources/weapons/Blends/Hammer_Double.blend b/packages/client/resources/weapons/Blends/Hammer_Double.blend
similarity index 100%
rename from client/resources/weapons/Blends/Hammer_Double.blend
rename to packages/client/resources/weapons/Blends/Hammer_Double.blend
diff --git a/client/resources/weapons/Blends/Hammer_Small.blend b/packages/client/resources/weapons/Blends/Hammer_Small.blend
similarity index 100%
rename from client/resources/weapons/Blends/Hammer_Small.blend
rename to packages/client/resources/weapons/Blends/Hammer_Small.blend
diff --git a/client/resources/weapons/Blends/Scythe.blend b/packages/client/resources/weapons/Blends/Scythe.blend
similarity index 100%
rename from client/resources/weapons/Blends/Scythe.blend
rename to packages/client/resources/weapons/Blends/Scythe.blend
diff --git a/client/resources/weapons/Blends/Shield_Celtic_Golden.blend b/packages/client/resources/weapons/Blends/Shield_Celtic_Golden.blend
similarity index 100%
rename from client/resources/weapons/Blends/Shield_Celtic_Golden.blend
rename to packages/client/resources/weapons/Blends/Shield_Celtic_Golden.blend
diff --git a/client/resources/weapons/Blends/Shield_Heater.blend b/packages/client/resources/weapons/Blends/Shield_Heater.blend
similarity index 100%
rename from client/resources/weapons/Blends/Shield_Heater.blend
rename to packages/client/resources/weapons/Blends/Shield_Heater.blend
diff --git a/client/resources/weapons/Blends/Shield_Heater_2.blend b/packages/client/resources/weapons/Blends/Shield_Heater_2.blend
similarity index 100%
rename from client/resources/weapons/Blends/Shield_Heater_2.blend
rename to packages/client/resources/weapons/Blends/Shield_Heater_2.blend
diff --git a/client/resources/weapons/Blends/Shield_Round.blend b/packages/client/resources/weapons/Blends/Shield_Round.blend
similarity index 100%
rename from client/resources/weapons/Blends/Shield_Round.blend
rename to packages/client/resources/weapons/Blends/Shield_Round.blend
diff --git a/client/resources/weapons/Blends/Shield_Round_2.blend b/packages/client/resources/weapons/Blends/Shield_Round_2.blend
similarity index 100%
rename from client/resources/weapons/Blends/Shield_Round_2.blend
rename to packages/client/resources/weapons/Blends/Shield_Round_2.blend
diff --git a/client/resources/weapons/Blends/Spear.blend b/packages/client/resources/weapons/Blends/Spear.blend
similarity index 100%
rename from client/resources/weapons/Blends/Spear.blend
rename to packages/client/resources/weapons/Blends/Spear.blend
diff --git a/client/resources/weapons/Blends/Sword.blend b/packages/client/resources/weapons/Blends/Sword.blend
similarity index 100%
rename from client/resources/weapons/Blends/Sword.blend
rename to packages/client/resources/weapons/Blends/Sword.blend
diff --git a/client/resources/weapons/Blends/Sword_2.blend b/packages/client/resources/weapons/Blends/Sword_2.blend
similarity index 100%
rename from client/resources/weapons/Blends/Sword_2.blend
rename to packages/client/resources/weapons/Blends/Sword_2.blend
diff --git a/client/resources/weapons/Blends/Sword_Big.blend b/packages/client/resources/weapons/Blends/Sword_Big.blend
similarity index 100%
rename from client/resources/weapons/Blends/Sword_Big.blend
rename to packages/client/resources/weapons/Blends/Sword_Big.blend
diff --git a/client/resources/weapons/Blends/Sword_Golden.blend b/packages/client/resources/weapons/Blends/Sword_Golden.blend
similarity index 100%
rename from client/resources/weapons/Blends/Sword_Golden.blend
rename to packages/client/resources/weapons/Blends/Sword_Golden.blend
diff --git a/client/resources/weapons/FBX/Arrow.fbx b/packages/client/resources/weapons/FBX/Arrow.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Arrow.fbx
rename to packages/client/resources/weapons/FBX/Arrow.fbx
diff --git a/client/resources/weapons/FBX/Axe.fbx b/packages/client/resources/weapons/FBX/Axe.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Axe.fbx
rename to packages/client/resources/weapons/FBX/Axe.fbx
diff --git a/client/resources/weapons/FBX/Axe_Double.fbx b/packages/client/resources/weapons/FBX/Axe_Double.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Axe_Double.fbx
rename to packages/client/resources/weapons/FBX/Axe_Double.fbx
diff --git a/client/resources/weapons/FBX/Axe_Small.fbx b/packages/client/resources/weapons/FBX/Axe_Small.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Axe_Small.fbx
rename to packages/client/resources/weapons/FBX/Axe_Small.fbx
diff --git a/client/resources/weapons/FBX/Bow_Evil.fbx b/packages/client/resources/weapons/FBX/Bow_Evil.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Bow_Evil.fbx
rename to packages/client/resources/weapons/FBX/Bow_Evil.fbx
diff --git a/client/resources/weapons/FBX/Bow_Golden.fbx b/packages/client/resources/weapons/FBX/Bow_Golden.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Bow_Golden.fbx
rename to packages/client/resources/weapons/FBX/Bow_Golden.fbx
diff --git a/client/resources/weapons/FBX/Bow_Wooden.fbx b/packages/client/resources/weapons/FBX/Bow_Wooden.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Bow_Wooden.fbx
rename to packages/client/resources/weapons/FBX/Bow_Wooden.fbx
diff --git a/client/resources/weapons/FBX/Bow_Wooden2.fbx b/packages/client/resources/weapons/FBX/Bow_Wooden2.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Bow_Wooden2.fbx
rename to packages/client/resources/weapons/FBX/Bow_Wooden2.fbx
diff --git a/client/resources/weapons/FBX/Claymore.fbx b/packages/client/resources/weapons/FBX/Claymore.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Claymore.fbx
rename to packages/client/resources/weapons/FBX/Claymore.fbx
diff --git a/client/resources/weapons/FBX/Dagger.fbx b/packages/client/resources/weapons/FBX/Dagger.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Dagger.fbx
rename to packages/client/resources/weapons/FBX/Dagger.fbx
diff --git a/client/resources/weapons/FBX/Dagger_2.fbx b/packages/client/resources/weapons/FBX/Dagger_2.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Dagger_2.fbx
rename to packages/client/resources/weapons/FBX/Dagger_2.fbx
diff --git a/client/resources/weapons/FBX/Hammer_Double.fbx b/packages/client/resources/weapons/FBX/Hammer_Double.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Hammer_Double.fbx
rename to packages/client/resources/weapons/FBX/Hammer_Double.fbx
diff --git a/client/resources/weapons/FBX/Hammer_Small.fbx b/packages/client/resources/weapons/FBX/Hammer_Small.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Hammer_Small.fbx
rename to packages/client/resources/weapons/FBX/Hammer_Small.fbx
diff --git a/client/resources/weapons/FBX/Scythe.fbx b/packages/client/resources/weapons/FBX/Scythe.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Scythe.fbx
rename to packages/client/resources/weapons/FBX/Scythe.fbx
diff --git a/client/resources/weapons/FBX/Shield_Celtic_Golden.fbx b/packages/client/resources/weapons/FBX/Shield_Celtic_Golden.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Shield_Celtic_Golden.fbx
rename to packages/client/resources/weapons/FBX/Shield_Celtic_Golden.fbx
diff --git a/client/resources/weapons/FBX/Shield_Heater.fbx b/packages/client/resources/weapons/FBX/Shield_Heater.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Shield_Heater.fbx
rename to packages/client/resources/weapons/FBX/Shield_Heater.fbx
diff --git a/client/resources/weapons/FBX/Shield_Heater_2.fbx b/packages/client/resources/weapons/FBX/Shield_Heater_2.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Shield_Heater_2.fbx
rename to packages/client/resources/weapons/FBX/Shield_Heater_2.fbx
diff --git a/client/resources/weapons/FBX/Shield_Round.fbx b/packages/client/resources/weapons/FBX/Shield_Round.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Shield_Round.fbx
rename to packages/client/resources/weapons/FBX/Shield_Round.fbx
diff --git a/client/resources/weapons/FBX/Shield_Round_2.fbx b/packages/client/resources/weapons/FBX/Shield_Round_2.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Shield_Round_2.fbx
rename to packages/client/resources/weapons/FBX/Shield_Round_2.fbx
diff --git a/client/resources/weapons/FBX/Spear.fbx b/packages/client/resources/weapons/FBX/Spear.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Spear.fbx
rename to packages/client/resources/weapons/FBX/Spear.fbx
diff --git a/client/resources/weapons/FBX/Sword.fbx b/packages/client/resources/weapons/FBX/Sword.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Sword.fbx
rename to packages/client/resources/weapons/FBX/Sword.fbx
diff --git a/client/resources/weapons/FBX/Sword_2.fbx b/packages/client/resources/weapons/FBX/Sword_2.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Sword_2.fbx
rename to packages/client/resources/weapons/FBX/Sword_2.fbx
diff --git a/client/resources/weapons/FBX/Sword_Big.fbx b/packages/client/resources/weapons/FBX/Sword_Big.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Sword_Big.fbx
rename to packages/client/resources/weapons/FBX/Sword_Big.fbx
diff --git a/client/resources/weapons/FBX/Sword_Golden.fbx b/packages/client/resources/weapons/FBX/Sword_Golden.fbx
similarity index 100%
rename from client/resources/weapons/FBX/Sword_Golden.fbx
rename to packages/client/resources/weapons/FBX/Sword_Golden.fbx
diff --git a/client/resources/weapons/License.txt b/packages/client/resources/weapons/License.txt
similarity index 100%
rename from client/resources/weapons/License.txt
rename to packages/client/resources/weapons/License.txt
diff --git a/client/resources/weapons/OBJ/Arrow.mtl b/packages/client/resources/weapons/OBJ/Arrow.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Arrow.mtl
rename to packages/client/resources/weapons/OBJ/Arrow.mtl
diff --git a/client/resources/weapons/OBJ/Arrow.obj b/packages/client/resources/weapons/OBJ/Arrow.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Arrow.obj
rename to packages/client/resources/weapons/OBJ/Arrow.obj
diff --git a/client/resources/weapons/OBJ/Axe.mtl b/packages/client/resources/weapons/OBJ/Axe.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Axe.mtl
rename to packages/client/resources/weapons/OBJ/Axe.mtl
diff --git a/client/resources/weapons/OBJ/Axe.obj b/packages/client/resources/weapons/OBJ/Axe.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Axe.obj
rename to packages/client/resources/weapons/OBJ/Axe.obj
diff --git a/client/resources/weapons/OBJ/Axe_Double.mtl b/packages/client/resources/weapons/OBJ/Axe_Double.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Axe_Double.mtl
rename to packages/client/resources/weapons/OBJ/Axe_Double.mtl
diff --git a/client/resources/weapons/OBJ/Axe_Double.obj b/packages/client/resources/weapons/OBJ/Axe_Double.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Axe_Double.obj
rename to packages/client/resources/weapons/OBJ/Axe_Double.obj
diff --git a/client/resources/weapons/OBJ/Axe_Small.mtl b/packages/client/resources/weapons/OBJ/Axe_Small.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Axe_Small.mtl
rename to packages/client/resources/weapons/OBJ/Axe_Small.mtl
diff --git a/client/resources/weapons/OBJ/Axe_Small.obj b/packages/client/resources/weapons/OBJ/Axe_Small.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Axe_Small.obj
rename to packages/client/resources/weapons/OBJ/Axe_Small.obj
diff --git a/client/resources/weapons/OBJ/Bow_Evil.mtl b/packages/client/resources/weapons/OBJ/Bow_Evil.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Bow_Evil.mtl
rename to packages/client/resources/weapons/OBJ/Bow_Evil.mtl
diff --git a/client/resources/weapons/OBJ/Bow_Evil.obj b/packages/client/resources/weapons/OBJ/Bow_Evil.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Bow_Evil.obj
rename to packages/client/resources/weapons/OBJ/Bow_Evil.obj
diff --git a/client/resources/weapons/OBJ/Bow_Golden.mtl b/packages/client/resources/weapons/OBJ/Bow_Golden.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Bow_Golden.mtl
rename to packages/client/resources/weapons/OBJ/Bow_Golden.mtl
diff --git a/client/resources/weapons/OBJ/Bow_Golden.obj b/packages/client/resources/weapons/OBJ/Bow_Golden.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Bow_Golden.obj
rename to packages/client/resources/weapons/OBJ/Bow_Golden.obj
diff --git a/client/resources/weapons/OBJ/Bow_Wooden.mtl b/packages/client/resources/weapons/OBJ/Bow_Wooden.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Bow_Wooden.mtl
rename to packages/client/resources/weapons/OBJ/Bow_Wooden.mtl
diff --git a/client/resources/weapons/OBJ/Bow_Wooden.obj b/packages/client/resources/weapons/OBJ/Bow_Wooden.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Bow_Wooden.obj
rename to packages/client/resources/weapons/OBJ/Bow_Wooden.obj
diff --git a/client/resources/weapons/OBJ/Bow_Wooden2.mtl b/packages/client/resources/weapons/OBJ/Bow_Wooden2.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Bow_Wooden2.mtl
rename to packages/client/resources/weapons/OBJ/Bow_Wooden2.mtl
diff --git a/client/resources/weapons/OBJ/Bow_Wooden2.obj b/packages/client/resources/weapons/OBJ/Bow_Wooden2.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Bow_Wooden2.obj
rename to packages/client/resources/weapons/OBJ/Bow_Wooden2.obj
diff --git a/client/resources/weapons/OBJ/Claymore.mtl b/packages/client/resources/weapons/OBJ/Claymore.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Claymore.mtl
rename to packages/client/resources/weapons/OBJ/Claymore.mtl
diff --git a/client/resources/weapons/OBJ/Claymore.obj b/packages/client/resources/weapons/OBJ/Claymore.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Claymore.obj
rename to packages/client/resources/weapons/OBJ/Claymore.obj
diff --git a/client/resources/weapons/OBJ/Dagger.mtl b/packages/client/resources/weapons/OBJ/Dagger.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Dagger.mtl
rename to packages/client/resources/weapons/OBJ/Dagger.mtl
diff --git a/client/resources/weapons/OBJ/Dagger.obj b/packages/client/resources/weapons/OBJ/Dagger.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Dagger.obj
rename to packages/client/resources/weapons/OBJ/Dagger.obj
diff --git a/client/resources/weapons/OBJ/Dagger_2.mtl b/packages/client/resources/weapons/OBJ/Dagger_2.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Dagger_2.mtl
rename to packages/client/resources/weapons/OBJ/Dagger_2.mtl
diff --git a/client/resources/weapons/OBJ/Dagger_2.obj b/packages/client/resources/weapons/OBJ/Dagger_2.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Dagger_2.obj
rename to packages/client/resources/weapons/OBJ/Dagger_2.obj
diff --git a/client/resources/weapons/OBJ/Hammer_Double.mtl b/packages/client/resources/weapons/OBJ/Hammer_Double.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Hammer_Double.mtl
rename to packages/client/resources/weapons/OBJ/Hammer_Double.mtl
diff --git a/client/resources/weapons/OBJ/Hammer_Double.obj b/packages/client/resources/weapons/OBJ/Hammer_Double.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Hammer_Double.obj
rename to packages/client/resources/weapons/OBJ/Hammer_Double.obj
diff --git a/client/resources/weapons/OBJ/Hammer_Small.mtl b/packages/client/resources/weapons/OBJ/Hammer_Small.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Hammer_Small.mtl
rename to packages/client/resources/weapons/OBJ/Hammer_Small.mtl
diff --git a/client/resources/weapons/OBJ/Hammer_Small.obj b/packages/client/resources/weapons/OBJ/Hammer_Small.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Hammer_Small.obj
rename to packages/client/resources/weapons/OBJ/Hammer_Small.obj
diff --git a/client/resources/weapons/OBJ/Scythe.mtl b/packages/client/resources/weapons/OBJ/Scythe.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Scythe.mtl
rename to packages/client/resources/weapons/OBJ/Scythe.mtl
diff --git a/client/resources/weapons/OBJ/Scythe.obj b/packages/client/resources/weapons/OBJ/Scythe.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Scythe.obj
rename to packages/client/resources/weapons/OBJ/Scythe.obj
diff --git a/client/resources/weapons/OBJ/Shield_Celtic_Golden.mtl b/packages/client/resources/weapons/OBJ/Shield_Celtic_Golden.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Shield_Celtic_Golden.mtl
rename to packages/client/resources/weapons/OBJ/Shield_Celtic_Golden.mtl
diff --git a/client/resources/weapons/OBJ/Shield_Celtic_Golden.obj b/packages/client/resources/weapons/OBJ/Shield_Celtic_Golden.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Shield_Celtic_Golden.obj
rename to packages/client/resources/weapons/OBJ/Shield_Celtic_Golden.obj
diff --git a/client/resources/weapons/OBJ/Shield_Heater.mtl b/packages/client/resources/weapons/OBJ/Shield_Heater.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Shield_Heater.mtl
rename to packages/client/resources/weapons/OBJ/Shield_Heater.mtl
diff --git a/client/resources/weapons/OBJ/Shield_Heater.obj b/packages/client/resources/weapons/OBJ/Shield_Heater.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Shield_Heater.obj
rename to packages/client/resources/weapons/OBJ/Shield_Heater.obj
diff --git a/client/resources/weapons/OBJ/Shield_Heater_2.mtl b/packages/client/resources/weapons/OBJ/Shield_Heater_2.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Shield_Heater_2.mtl
rename to packages/client/resources/weapons/OBJ/Shield_Heater_2.mtl
diff --git a/client/resources/weapons/OBJ/Shield_Heater_2.obj b/packages/client/resources/weapons/OBJ/Shield_Heater_2.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Shield_Heater_2.obj
rename to packages/client/resources/weapons/OBJ/Shield_Heater_2.obj
diff --git a/client/resources/weapons/OBJ/Shield_Round.mtl b/packages/client/resources/weapons/OBJ/Shield_Round.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Shield_Round.mtl
rename to packages/client/resources/weapons/OBJ/Shield_Round.mtl
diff --git a/client/resources/weapons/OBJ/Shield_Round.obj b/packages/client/resources/weapons/OBJ/Shield_Round.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Shield_Round.obj
rename to packages/client/resources/weapons/OBJ/Shield_Round.obj
diff --git a/client/resources/weapons/OBJ/Shield_Round_2.mtl b/packages/client/resources/weapons/OBJ/Shield_Round_2.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Shield_Round_2.mtl
rename to packages/client/resources/weapons/OBJ/Shield_Round_2.mtl
diff --git a/client/resources/weapons/OBJ/Shield_Round_2.obj b/packages/client/resources/weapons/OBJ/Shield_Round_2.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Shield_Round_2.obj
rename to packages/client/resources/weapons/OBJ/Shield_Round_2.obj
diff --git a/client/resources/weapons/OBJ/Spear.mtl b/packages/client/resources/weapons/OBJ/Spear.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Spear.mtl
rename to packages/client/resources/weapons/OBJ/Spear.mtl
diff --git a/client/resources/weapons/OBJ/Spear.obj b/packages/client/resources/weapons/OBJ/Spear.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Spear.obj
rename to packages/client/resources/weapons/OBJ/Spear.obj
diff --git a/client/resources/weapons/OBJ/Sword.mtl b/packages/client/resources/weapons/OBJ/Sword.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Sword.mtl
rename to packages/client/resources/weapons/OBJ/Sword.mtl
diff --git a/client/resources/weapons/OBJ/Sword.obj b/packages/client/resources/weapons/OBJ/Sword.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Sword.obj
rename to packages/client/resources/weapons/OBJ/Sword.obj
diff --git a/client/resources/weapons/OBJ/Sword_2.mtl b/packages/client/resources/weapons/OBJ/Sword_2.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Sword_2.mtl
rename to packages/client/resources/weapons/OBJ/Sword_2.mtl
diff --git a/client/resources/weapons/OBJ/Sword_2.obj b/packages/client/resources/weapons/OBJ/Sword_2.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Sword_2.obj
rename to packages/client/resources/weapons/OBJ/Sword_2.obj
diff --git a/client/resources/weapons/OBJ/Sword_Big.mtl b/packages/client/resources/weapons/OBJ/Sword_Big.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Sword_Big.mtl
rename to packages/client/resources/weapons/OBJ/Sword_Big.mtl
diff --git a/client/resources/weapons/OBJ/Sword_Big.obj b/packages/client/resources/weapons/OBJ/Sword_Big.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Sword_Big.obj
rename to packages/client/resources/weapons/OBJ/Sword_Big.obj
diff --git a/client/resources/weapons/OBJ/Sword_Golden.mtl b/packages/client/resources/weapons/OBJ/Sword_Golden.mtl
similarity index 100%
rename from client/resources/weapons/OBJ/Sword_Golden.mtl
rename to packages/client/resources/weapons/OBJ/Sword_Golden.mtl
diff --git a/client/resources/weapons/OBJ/Sword_Golden.obj b/packages/client/resources/weapons/OBJ/Sword_Golden.obj
similarity index 100%
rename from client/resources/weapons/OBJ/Sword_Golden.obj
rename to packages/client/resources/weapons/OBJ/Sword_Golden.obj
diff --git a/client/resources/weapons/Preview.png b/packages/client/resources/weapons/Preview.png
similarity index 100%
rename from client/resources/weapons/Preview.png
rename to packages/client/resources/weapons/Preview.png
diff --git a/client/src/attacker-controller.ts b/packages/client/src/attacker-controller.ts
similarity index 77%
rename from client/src/attacker-controller.ts
rename to packages/client/src/attacker-controller.ts
index 88f4456c..f18ac8e4 100644
--- a/client/src/attacker-controller.ts
+++ b/packages/client/src/attacker-controller.ts
@@ -1,7 +1,9 @@
import * as THREE from 'three';
import { Component } from './entity';
-import { EVENT_TYPES } from 'shared/src/constants'
+import { Constants } from 'shared'
+const { EVENT_TYPES } = { ...Constants };
+
class AttackController extends Component {
action_: any;
@@ -11,7 +13,7 @@ class AttackController extends Component {
}
InitComponent() {
- this._RegisterHandler(EVENT_TYPES.PLAYER_ACTION, (m: { action: EVENT_TYPES }) => { this._OnAnimAction(m); });
+ this._RegisterHandler(EVENT_TYPES.PLAYER_ACTION, (m: { action: typeof EVENT_TYPES }) => { this._OnAnimAction(m); });
}
_OnAnimAction(m) {
diff --git a/packages/client/src/blood-effect.ts b/packages/client/src/blood-effect.ts
new file mode 100644
index 00000000..4a95cf1f
--- /dev/null
+++ b/packages/client/src/blood-effect.ts
@@ -0,0 +1,244 @@
+import * as THREE from 'three';
+
+import { ParticleEmitter, ParticleSystem } from "./particle-system";
+import { Component } from "./entity";
+import { Constants } from 'shared';
+
+const { CLASS_TYPES_ENUM, EVENT_TYPES, STATE_TYPES } = Constants;
+
+class BloodEffectEmitter extends ParticleEmitter {
+ parent_: any;
+ blend_: number;
+ emitterLife_: number;
+ alphaSpline_: any;
+ colourSpline_: any;
+ sizeSpline_: any;
+ constructor(parent) {
+ super();
+ this.parent_ = parent;
+ this.blend_ = 0.0;
+ }
+
+ OnUpdate_() {
+ this.parent_.updateMatrixWorld(true);
+
+ this.SetEmissionRate(300.0 * (this.emitterLife_ / 3.0));
+ }
+
+ CreateParticle_() {
+ const origin = new THREE.Vector3(0, 0, 0);
+ this.parent_.localToWorld(origin);
+
+ const radius = 1.0;
+ const life = (Math.random() * 0.75 + 0.25) * 0.5;
+ const p = new THREE.Vector3(
+ (Math.random() * 2 - 1) * radius,
+ (Math.random() * 2 - 1) * radius,
+ (Math.random() * 2 - 1) * radius);
+
+ const d = p.clone().normalize();
+ p.copy(d);
+ p.multiplyScalar(radius);
+ p.add(origin);
+ d.multiplyScalar(0.0);
+
+ return {
+ position: p,
+ size: (Math.random() * 0.5 + 0.5) * 1.0,
+ colour: new THREE.Color(),
+ alpha: 1.0,
+ life: life,
+ maxLife: life,
+ rotation: Math.random() * 2.0 * Math.PI,
+ velocity: d,
+ blend: this.blend_,
+ };
+ }
+};
+
+
+class FireFXEmitter extends ParticleEmitter {
+ parent_: any;
+ blend_: number;
+ particles_: any;
+ alphaSpline_: any;
+ colourSpline_: any;
+ sizeSpline_: any;
+ constructor(parent) {
+ super();
+ this.parent_ = parent;
+ this.blend_ = 0.0;
+ }
+
+ OnUpdate_() {
+ this.parent_.updateMatrixWorld(true);
+ }
+
+ AddParticles(num) {
+ for (let i = 0; i < num; ++i) {
+ this.particles_.push(this.CreateParticle_());
+ }
+ }
+
+ CreateParticle_() {
+ const origin = new THREE.Vector3(0, 0, 0);
+ this.parent_.localToWorld(origin);
+
+ const radius = 1.0;
+ const life = (Math.random() * 0.75 + 0.25) * 1.5;
+ const p = new THREE.Vector3(
+ (Math.random() * 2 - 1) * radius,
+ (Math.random() * 2 - 1) * radius,
+ (Math.random() * 2 - 1) * radius);
+
+ const d = p.clone().normalize();
+ p.copy(d);
+ p.multiplyScalar(radius);
+ p.add(origin);
+ d.multiplyScalar(3.0);
+
+ return {
+ position: p,
+ size: (Math.random() * 0.5 + 0.5) * 1.0,
+ colour: new THREE.Color(),
+ alpha: 1.0,
+ life: life,
+ maxLife: life,
+ rotation: Math.random() * 2.0 * Math.PI,
+ velocity: d,
+ blend: this.blend_,
+ };
+ }
+};
+
+
+class BloodEffect extends Component {
+ params_: any;
+ bloodFX_: ParticleSystem;
+ fireFX_: ParticleSystem;
+ bones_: any;
+ constructor(params) {
+ super();
+ this.params_ = params;
+
+ this.bloodFX_ = new ParticleSystem({
+ camera: params.camera,
+ parent: params.scene,
+ texture: './resources/textures/whitePuff14.png',
+ });
+ this.fireFX_ = new ParticleSystem({
+ camera: params.camera,
+ parent: params.scene,
+ texture: './resources/textures/fire.png',
+ });
+ }
+
+ Destroy() {
+ this.bloodFX_.Destroy();
+ this.fireFX_.Destroy();
+ }
+
+ InitComponent() {
+ this._RegisterHandler(EVENT_TYPES.EVENTS_NETWORK, (m) => { this.OnEvents_(m); });
+ this._RegisterHandler(EVENT_TYPES.LOAD_CHARACTER, (m) => this.OnCharacterLoaded_(m));
+ }
+
+ OnCharacterLoaded_(msg) {
+ this.bones_ = msg.bones;
+ }
+
+ OnEvents_(msg) {
+ if (!this.bones_) {
+ return;
+ }
+
+ for (let e of msg.value) {
+ if (e.type != STATE_TYPES.ATTACK) {
+ continue;
+ }
+
+ // Another hack
+ const hc = e.attacker.GetComponent('HealthComponent');
+
+ if (hc.stats_.desc.character.class != CLASS_TYPES_ENUM.SORCEROR) {
+ this.EmitBloodFX_();
+ } else {
+ this.EmitFireFX_();
+ }
+ }
+ }
+
+ EmitFireFX_() {
+ // dem hips
+ const targets = ['Head', 'Hips'];
+ for (let t of targets) {
+ const b = this.bones_[t];
+ let emitter = new FireFXEmitter(b);
+ emitter.alphaSpline_.AddPoint(0.0, 0.0);
+ emitter.alphaSpline_.AddPoint(0.5, 1.0);
+ emitter.alphaSpline_.AddPoint(1.0, 0.0);
+
+ emitter.colourSpline_.AddPoint(0.0, new THREE.Color(0x00FF00));
+ emitter.colourSpline_.AddPoint(0.3, new THREE.Color(0x00FF00));
+ emitter.colourSpline_.AddPoint(0.4, new THREE.Color(0xdeec42));
+ emitter.colourSpline_.AddPoint(1.0, new THREE.Color(0xf4a776));
+
+ emitter.sizeSpline_.AddPoint(0.0, 0.5);
+ emitter.sizeSpline_.AddPoint(0.5, 3.0);
+ emitter.sizeSpline_.AddPoint(1.0, 0.5);
+ emitter.blend_ = 0.0;
+ emitter.AddParticles(200);
+
+ this.fireFX_.AddEmitter(emitter);
+
+ emitter = new FireFXEmitter(b);
+ emitter.alphaSpline_.AddPoint(0.0, 0.0);
+ emitter.alphaSpline_.AddPoint(0.7, 1.0);
+ emitter.alphaSpline_.AddPoint(1.0, 0.0);
+
+ emitter.colourSpline_.AddPoint(0.0, new THREE.Color(0x000000));
+ emitter.colourSpline_.AddPoint(1.0, new THREE.Color(0x000000));
+
+ emitter.sizeSpline_.AddPoint(0.0, 0.5);
+ emitter.sizeSpline_.AddPoint(0.5, 4.0);
+ emitter.sizeSpline_.AddPoint(1.0, 10.0);
+ emitter.blend_ = 1.0;
+ emitter.AddParticles(100);
+
+ this.fireFX_.AddEmitter(emitter);
+ }
+ }
+
+ EmitBloodFX_() {
+ // hack shoudl check if this was legit anything else than damage
+ const targets = ['Head', 'Hips'];
+ for (let t of targets) {
+ const b = this.bones_[t];
+ const emitter = new BloodEffectEmitter(b);
+ emitter.alphaSpline_.AddPoint(0.0, 0.0);
+ emitter.alphaSpline_.AddPoint(0.7, 1.0);
+ emitter.alphaSpline_.AddPoint(1.0, 0.0);
+
+ emitter.colourSpline_.AddPoint(0.0, new THREE.Color(0xbb2909));
+ emitter.colourSpline_.AddPoint(1.0, new THREE.Color(0x701a08));
+
+ emitter.sizeSpline_.AddPoint(0.0, 0.5);
+ emitter.sizeSpline_.AddPoint(0.5, 1.0);
+ emitter.sizeSpline_.AddPoint(1.0, 0.5);
+ emitter.SetLife(0.5);
+ emitter.SetEmissionRate(500);
+ emitter.blend_ = 1.0;
+
+ this.bloodFX_.AddEmitter(emitter);
+ }
+ }
+
+ Update(timeElapsed) {
+ this.bloodFX_.Update(timeElapsed);
+ this.fireFX_.Update(timeElapsed);
+ }
+}
+
+
+
+export { BloodEffect, FireFXEmitter, BloodEffectEmitter }
\ No newline at end of file
diff --git a/client/src/entity.ts b/packages/client/src/entity.ts
similarity index 100%
rename from client/src/entity.ts
rename to packages/client/src/entity.ts
diff --git a/client/src/equip-weapon-component.ts b/packages/client/src/equip-weapon-component.ts
similarity index 92%
rename from client/src/equip-weapon-component.ts
rename to packages/client/src/equip-weapon-component.ts
index 4264a980..ab94284f 100644
--- a/client/src/equip-weapon-component.ts
+++ b/packages/client/src/equip-weapon-component.ts
@@ -1,12 +1,11 @@
import * as THREE from 'three';
import {Component} from './entity';
-
-import {CHARACTER_MODELS} from 'shared/src/defs';
-
+import {Defs, Constants} from 'shared';
import {FBXLoader} from 'three/examples/jsm/loaders/FBXLoader';
-import { EVENT_TYPES, KNOWN_ENTITIES } from 'shared/src/constants';
+const {CHARACTER_MODELS} = Defs;
+const { EVENT_TYPES, KNOWN_ENTITIES } = Constants;
export const equip_weapon_component = (() => {
diff --git a/client/src/finite-state-machine.ts b/packages/client/src/finite-state-machine.ts
similarity index 100%
rename from client/src/finite-state-machine.ts
rename to packages/client/src/finite-state-machine.ts
diff --git a/client/src/floating-name.ts b/packages/client/src/floating-name.ts
similarity index 93%
rename from client/src/floating-name.ts
rename to packages/client/src/floating-name.ts
index d7c0a97d..6f25400b 100644
--- a/client/src/floating-name.ts
+++ b/packages/client/src/floating-name.ts
@@ -2,14 +2,15 @@ import * as THREE from 'three';
import { Component } from './entity';
-import { CHARACTER_MODELS } from 'shared/src/defs';
-import { CLASS_TYPES_ENUM, EVENT_TYPES } from 'shared/src/constants';
+import { Constants, Defs } from 'shared';
+
+const { EVENT_TYPES, CHARACTER_MODELS } = {...Constants, ...Defs};
class FloatingName extends Component {
params_: {
desc: {
character: {
- class: CLASS_TYPES_ENUM
+ class: string
},
account: {
name: string
diff --git a/packages/client/src/gltf-component.ts b/packages/client/src/gltf-component.ts
new file mode 100644
index 00000000..14b11a54
--- /dev/null
+++ b/packages/client/src/gltf-component.ts
@@ -0,0 +1,236 @@
+import * as THREE from 'three';
+
+import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';
+import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader';
+
+import { Component } from './entity';
+import { Constants } from 'shared';
+
+const { EVENT_TYPES } = Constants;
+
+class StaticModelComponent extends Component {
+ _params: any;
+ _target: any;
+ constructor(params) {
+ super();
+ this._Init(params);
+ }
+
+ _Init(params) {
+ this._params = params;
+
+ this._LoadModels();
+ }
+
+ InitComponent() {
+ this._RegisterHandler('update.position', (m) => { this._OnPosition(m); });
+ }
+
+ _OnPosition(m) {
+ if (this._target) {
+ this._target.position.copy(m.value);
+ }
+ }
+
+ _LoadModels() {
+ if (this._params.resourceName.endsWith('glb') || this._params.resourceName.endsWith('gltf')) {
+ this._LoadGLB();
+ } else if (this._params.resourceName.endsWith('fbx')) {
+ this._LoadFBX();
+ }
+ }
+
+ _OnLoaded(obj) {
+ this._target = obj;
+ this._params.scene.add(this._target);
+
+ this._target.scale.setScalar(this._params.scale);
+ this._target.position.copy(this.parent_._position);
+
+ let texture = null;
+ if (this._params.resourceTexture) {
+ const texLoader = new THREE.TextureLoader();
+ texture = texLoader.load(this._params.resourceTexture);
+ texture.encoding = THREE.sRGBEncoding;
+ }
+
+ this._target.traverse(c => {
+ let materials = c.material;
+ if (!(c.material instanceof Array)) {
+ materials = [c.material];
+ }
+
+ for (let m of materials) {
+ if (m) {
+ if (texture) {
+ m.map = texture;
+ }
+ if (this._params.specular) {
+ m.specular = this._params.specular;
+ }
+ if (this._params.emissive) {
+ m.emissive = this._params.emissive;
+ }
+ }
+ }
+ if (this._params.receiveShadow != undefined) {
+ c.receiveShadow = this._params.receiveShadow;
+ }
+ if (this._params.castShadow != undefined) {
+ c.castShadow = this._params.castShadow;
+ }
+ if (this._params.visible != undefined) {
+ c.visible = this._params.visible;
+ }
+ });
+ }
+
+ _LoadGLB() {
+ const loader = new GLTFLoader();
+ loader.setPath(this._params.resourcePath);
+ loader.load(this._params.resourceName, (glb) => {
+ this._OnLoaded(glb.scene);
+ });
+ }
+
+ _LoadFBX() {
+ const loader = new FBXLoader();
+ loader.setPath(this._params.resourcePath);
+ loader.load(this._params.resourceName, (fbx) => {
+ this._OnLoaded(fbx);
+ });
+ }
+
+ Update(timeInSeconds) {
+ }
+};
+
+
+class AnimatedModelComponent extends Component {
+ _target: any;
+ _params: any;
+ _parent: any;
+ _mixer: any;
+ constructor(params) {
+ super();
+ this._Init(params);
+ }
+
+ InitComponent() {
+ this._RegisterHandler('update.position', (m) => { this._OnPosition(m); });
+ }
+
+ _OnPosition(m) {
+ if (this._target) {
+ this._target.position.copy(m.value);
+ this._target.position.y = 0.35;
+ }
+ }
+
+ _Init(params) {
+ this._params = params;
+
+ this._LoadModels();
+ }
+
+ _LoadModels() {
+ if (this._params.resourceName.endsWith('glb') || this._params.resourceName.endsWith('gltf')) {
+ this._LoadGLB();
+ } else if (this._params.resourceName.endsWith('fbx')) {
+ this._LoadFBX();
+ }
+ }
+
+ _OnLoaded(obj, animations) {
+ this._target = obj;
+ this._params.scene.add(this._target);
+
+ this._target.scale.setScalar(this._params.scale);
+ this._target.position.copy(this._parent._position);
+
+ this.Broadcast({
+ topic: 'update.position',
+ value: this._parent._position,
+ });
+
+ let texture = null;
+ if (this._params.resourceTexture) {
+ const texLoader = new THREE.TextureLoader();
+ texture = texLoader.load(this._params.resourceTexture);
+ texture.encoding = THREE.sRGBEncoding;
+ }
+
+ this._target.traverse(c => {
+ let materials = c.material;
+ if (!(c.material instanceof Array)) {
+ materials = [c.material];
+ }
+
+ for (let m of materials) {
+ if (m) {
+ if (texture) {
+ m.map = texture;
+ }
+ if (this._params.specular) {
+ m.specular = this._params.specular;
+ }
+ if (this._params.emissive) {
+ m.emissive = this._params.emissive;
+ }
+ }
+ }
+ if (this._params.receiveShadow != undefined) {
+ c.receiveShadow = this._params.receiveShadow;
+ }
+ if (this._params.castShadow != undefined) {
+ c.castShadow = this._params.castShadow;
+ }
+ if (this._params.visible != undefined) {
+ c.visible = this._params.visible;
+ }
+ });
+
+ const _OnLoad = (anim) => {
+ const clip = anim.animations[0];
+ const action = this._mixer.clipAction(clip);
+
+ action.play();
+ };
+
+ const loader = new FBXLoader();
+ loader.setPath(this._params.resourcePath);
+ loader.load(this._params.resourceAnimation, (a) => { _OnLoad(a); });
+
+ this._mixer = new THREE.AnimationMixer(this._target);
+
+ this._parent._mesh = this._target;
+ this.Broadcast({
+ topic: EVENT_TYPES.LOAD_CHARACTER,
+ model: this._target,
+ });
+ }
+
+ _LoadGLB() {
+ const loader = new GLTFLoader();
+ loader.setPath(this._params.resourcePath);
+ loader.load(this._params.resourceName, (glb) => {
+ this._OnLoaded(glb.scene, glb.animations);
+ });
+ }
+
+ _LoadFBX() {
+ const loader = new FBXLoader();
+ loader.setPath(this._params.resourcePath);
+ loader.load(this._params.resourceName, (fbx) => {
+ this._OnLoaded(fbx, null);
+ });
+ }
+
+ Update(timeInSeconds) {
+ if (this._mixer) {
+ this._mixer.update(timeInSeconds);
+ }
+ }
+};
+
+export { StaticModelComponent, AnimatedModelComponent }
\ No newline at end of file
diff --git a/client/src/health-bar.ts b/packages/client/src/health-bar.ts
similarity index 94%
rename from client/src/health-bar.ts
rename to packages/client/src/health-bar.ts
index 94becf57..60155a99 100644
--- a/client/src/health-bar.ts
+++ b/packages/client/src/health-bar.ts
@@ -2,7 +2,7 @@ import * as THREE from 'three';
import { Component } from './entity';
-import { math } from 'shared/src/math';
+import { Math as math } from 'shared';
const _VS = `
varying vec2 vUV;
diff --git a/packages/client/src/health-component.ts b/packages/client/src/health-component.ts
new file mode 100644
index 00000000..23050bdd
--- /dev/null
+++ b/packages/client/src/health-component.ts
@@ -0,0 +1,131 @@
+import { Constants } from "shared";
+import { Component } from "./entity";
+
+const { DOM_IDS, EVENT_TYPES, KNOWN_ENTITIES, NAMED_COMPONENTS } = Constants;
+
+class HealthComponent extends Component {
+ stats_: {
+ level: number,
+ updateUI: boolean,
+ health: number,
+ maxHealth: number,
+ strength: number,
+ wisdomness: number,
+ benchpress: number,
+ curl: number,
+ experience: number,
+
+ };
+ constructor(params) {
+ super();
+ this.stats_ = params;
+ }
+
+ InitComponent() {
+ this._RegisterHandler(
+ EVENT_TYPES.HEALTH_DAMAGE, (m) => this.OnDamage_(m));
+ this._RegisterHandler(
+ EVENT_TYPES.STATS_NETWORK, (m) => this.OnNetworkUpdate_(m));
+ this._RegisterHandler(
+ EVENT_TYPES.HEALTH_ADD_EXPERIENCE, (m) => this.OnAddExperience_(m));
+
+ this.UpdateUI_();
+ }
+
+ IsAlive() {
+ return this.stats_.health > 0;
+ }
+
+ get Health() {
+ return this.stats_.health;
+ }
+
+ UpdateUI_() {
+ if (!this.stats_.updateUI) {
+ return;
+ }
+
+ const bar = document.getElementById(DOM_IDS.HEALTH_BAR);
+
+ const healthAsPercentage = this.stats_.health / this.stats_.maxHealth;
+ bar.style.width = Math.floor(200 * healthAsPercentage) + 'px';
+
+ document.getElementById(DOM_IDS.STATS_STRENGTH).innerText = this.stats_.strength?.toString?.();
+ document.getElementById(DOM_IDS.STATS_WISDOMNESS).innerText = this.stats_.wisdomness?.toString?.();
+ document.getElementById(DOM_IDS.STATS_BENCHPRESS).innerText = this.stats_.benchpress?.toString?.();
+ document.getElementById(DOM_IDS.STATS_CURL).innerText = this.stats_.curl?.toString?.();
+ document.getElementById(DOM_IDS.STATS_EXPERIENCE).innerText = this.stats_.experience?.toString?.();
+ }
+
+ _ComputeLevelXPRequirement() {
+ const level = this.stats_.level;
+ // Blah just something easy
+ const xpRequired = Math.round(2 ** (level - 1) * 100);
+ return xpRequired;
+ }
+
+ OnAddExperience_(msg) {
+ this.stats_.experience += msg.value;
+ const requiredExperience = this._ComputeLevelXPRequirement();
+ if (this.stats_.experience < requiredExperience) {
+ return;
+ }
+
+ this.stats_.level += 1;
+ this.stats_.strength += 1;
+ this.stats_.wisdomness += 1;
+ this.stats_.benchpress += 1;
+ this.stats_.curl += 2;
+
+ const spawner = this.FindEntity(
+ KNOWN_ENTITIES.LEVEL_UP_SPAWNER).GetComponent(NAMED_COMPONENTS.LEVEL_UP_SPAWNER);
+ spawner.Spawn(this.Parent.Position);
+
+ this.Broadcast({
+ topic: EVENT_TYPES.HEALTH_LEVEL,
+ value: this.stats_.level,
+ });
+
+ this.UpdateUI_();
+ }
+
+ _OnDeath() {
+ this.Broadcast({
+ topic: EVENT_TYPES.HEALTH_DEATH,
+ });
+ }
+
+ OnHealthChanged_() {
+ if (this.stats_.health == 0) {
+ this._OnDeath();
+ }
+
+ this.Broadcast({
+ topic: EVENT_TYPES.HEALTH_UPDATE,
+ health: this.stats_.health,
+ maxHealth: this.stats_.maxHealth,
+ });
+
+ this.UpdateUI_();
+ }
+
+
+ OnNetworkUpdate_(msg) {
+ const newStats = msg.value[1];
+ for (let k in newStats) {
+ this.stats_[k] = newStats[k];
+ }
+
+ this.OnHealthChanged_();
+ }
+
+ OnDamage_(msg: { value: number }) {
+ this.stats_.health = Math.max(0.0, this.stats_.health - msg.value);
+
+ this.OnHealthChanged_();
+ }
+};
+
+export {
+ HealthComponent
+}
\ No newline at end of file
diff --git a/client/src/index.ts b/packages/client/src/index.ts
similarity index 95%
rename from client/src/index.ts
rename to packages/client/src/index.ts
index b66cba71..12db860e 100644
--- a/client/src/index.ts
+++ b/packages/client/src/index.ts
@@ -6,8 +6,10 @@ import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader';
import { io } from 'socket.io-client';
import type { Socket } from 'socket.io-client';
-import { EVENT_TYPES, STATE_TYPES } from 'shared/src/constants';
+import {Constants} from 'shared';
+import type {Constants as IConstants} from 'shared';
+const { EVENT_TYPES, STATE_TYPES } = Constants;
const _CHARACTER_MODELS = {
zombie: {
@@ -1134,7 +1136,7 @@ class BasicMMODemo {
});
// The socket.io TS definition is wrong I think. This is a hack.
- (this.socket_ as { on: (type: EVENT_TYPES, cb: () => void) => void }).on(EVENT_TYPES.CONNECT, () => {
+ (this.socket_ as { on: (type: IConstants.EVENT_TYPES, cb: () => void) => void }).on(EVENT_TYPES.CONNECT, () => {
console.log(this.socket_.id);
const randomName = this.GenerateRandomName_();
this.socket_.emit(EVENT_TYPES.LOGIN_COMMIT, randomName);
diff --git a/client/src/inventory-controller.ts b/packages/client/src/inventory-controller.ts
similarity index 93%
rename from client/src/inventory-controller.ts
rename to packages/client/src/inventory-controller.ts
index 714daf40..a7cc2e29 100644
--- a/client/src/inventory-controller.ts
+++ b/packages/client/src/inventory-controller.ts
@@ -1,6 +1,8 @@
-import { EVENT_TYPES, INVENTORY_TYPES, KNOWN_ENTITIES } from 'shared/src/constants';
+import {Constants} from 'shared';
import { Component } from './entity';
+const { EVENT_TYPES, INVENTORY_TYPES, KNOWN_ENTITIES } = Constants;
+
class InventoryDatabaseController extends Component {
items_: {};
constructor() {
diff --git a/client/src/level-up-component.ts b/packages/client/src/level-up-component.ts
similarity index 100%
rename from client/src/level-up-component.ts
rename to packages/client/src/level-up-component.ts
diff --git a/packages/client/src/load-controller.ts b/packages/client/src/load-controller.ts
new file mode 100644
index 00000000..953fdd9c
--- /dev/null
+++ b/packages/client/src/load-controller.ts
@@ -0,0 +1,106 @@
+import * as THREE from 'three';
+
+
+
+import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';
+import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader';
+import { SkeletonUtils } from 'three/examples/jsm/utils/SkeletonUtils';
+
+import { Component } from "./entity";
+
+
+class LoadController extends Component {
+ textures_: {};
+ models_: {};
+ constructor() {
+ super();
+
+ this.textures_ = {};
+ this.models_ = {};
+ }
+
+ LoadTexture(path, name) {
+ if (!(name in this.textures_)) {
+ const loader = new THREE.TextureLoader();
+ loader.setPath(path);
+
+ this.textures_[name] = { loader: loader, texture: loader.load(name) };
+ this.textures_[name].encoding = THREE.sRGBEncoding;
+ }
+
+ return this.textures_[name].texture;
+ }
+
+ LoadFBX(path, name, onLoad) {
+ if (!(name in this.models_)) {
+ const loader = new FBXLoader();
+ loader.setPath(path);
+
+ this.models_[name] = { loader: loader, asset: null, queue: [onLoad] };
+ this.models_[name].loader.load(name, (fbx) => {
+ this.models_[name].asset = fbx;
+
+ const queue = this.models_[name].queue;
+ this.models_[name].queue = null;
+ for (let q of queue) {
+ const clone = this.models_[name].asset.clone();
+ q(clone);
+ }
+ });
+ } else if (this.models_[name].asset == null) {
+ this.models_[name].queue.push(onLoad);
+ } else {
+ const clone = this.models_[name].asset.clone();
+ onLoad(clone);
+ }
+ }
+
+ LoadSkinnedGLB(path, name, onLoad) {
+ if (!(name in this.models_)) {
+ const loader = new GLTFLoader();
+ loader.setPath(path);
+
+ this.models_[name] = { loader: loader, asset: null, queue: [onLoad] };
+ this.models_[name].loader.load(name, (glb) => {
+ this.models_[name].asset = glb;
+
+ glb.scene.traverse(c => {
+ // HAHAHAH
+ c.frustumCulled = false;
+ // Apparently this doesn't work, so just disable frustum culling.
+ // Bugs... so many bugs...
+
+ // if (c.geometry) {
+ // // Just make our own, super crappy, super big box
+ // c.geometry.boundingBox = new THREE.Box3(
+ // new THREE.Vector3(-50, -50, -50),
+ // new THREE.Vector3(50, 50, 50));
+ // c.geometry.boundingSphere = new THREE.Sphere();
+ // c.geometry.boundingBox.getBoundingSphere(c.geometry.boundingSphere);
+ // }
+ });
+
+ const queue = this.models_[name].queue;
+ this.models_[name].queue = null;
+ for (let q of queue) {
+ const clone = { ...glb };
+ clone.scene = SkeletonUtils.clone(clone.scene);
+
+ q(clone);
+ }
+ });
+ } else if (this.models_[name].asset == null) {
+ this.models_[name].queue.push(onLoad);
+ } else {
+ const clone = { ...this.models_[name].asset };
+ clone.scene = SkeletonUtils.clone(clone.scene);
+
+ onLoad(clone);
+ }
+
+ }
+}
+
+export {
+ LoadController
+}
\ No newline at end of file
diff --git a/client/src/loading-manager.ts b/packages/client/src/loading-manager.ts
similarity index 100%
rename from client/src/loading-manager.ts
rename to packages/client/src/loading-manager.ts
diff --git a/client/src/main.ts b/packages/client/src/main.ts
similarity index 82%
rename from client/src/main.ts
rename to packages/client/src/main.ts
index 7790d7ce..c9b2bec6 100644
--- a/client/src/main.ts
+++ b/packages/client/src/main.ts
@@ -1,25 +1,21 @@
-import { GUI } from 'three/examples/jsm/libs/dat.gui.module';
+import { GUI } from 'shared';
-import { EntityManager } from 'shared/src/entity-manager';
import { Entity } from './entity';
import { UIController } from './ui-controller';
import { LevelUpComponentSpawner } from './level-up-component';
import { NetworkController } from './network-controller';
import { SceneryController } from './scenery-controller';
-import { load_controller } from './load-controller';
+import { LoadController } from './load-controller';
import { PlayerSpawner, NetworkEntitySpawner } from './spawners';
-import { terrain } from './terrain';
+import { TerrainChunkManager } from './terrain';
import { InventoryDatabaseController } from './inventory-controller';
+import { Constants, Defs, EntityManager as aEntityManager, SpatialHashGrid as aSpatialHashGrid } from 'shared';
+import { ThreeJSController } from './threejs_component';
-import { SpatialHashGrid } from 'shared/src/spatial-hash-grid';
-import { WEAPONS_DATA } from 'shared/src/defs';
-import { threejs_component } from './threejs_component';
-import { DOM_IDS, KNOWN_ENTITIES, NAMED_COMPONENTS } from 'shared/src/constants';
-
-
+const { WEAPONS_DATA, DOM_IDS, KNOWN_ENTITIES, NAMED_COMPONENTS, EntityManager, SpatialHashGrid } = { ...Constants, ...Defs, ...aEntityManager, ...aSpatialHashGrid };
class CrappyMMOAttempt {
- entityManager_: EntityManager;
+ entityManager_: any;
grid_: any;
previousRAF_: any;
_guiParams: { general: {}; };
@@ -58,7 +54,7 @@ class CrappyMMOAttempt {
general: {
},
};
- this._gui = new GUI();
+ this._gui = new GUI.GUI(null);
const generalRollup = this._gui.addFolder('General');
this._gui.close();
@@ -66,7 +62,7 @@ class CrappyMMOAttempt {
LoadControllers_() {
const threejs = new Entity();
- threejs.AddComponent(new threejs_component.ThreeJSController());
+ threejs.AddComponent(new ThreeJSController());
this.entityManager_.Add(threejs, null);
// Hack
@@ -83,7 +79,7 @@ class CrappyMMOAttempt {
this.entityManager_.Add(network, KNOWN_ENTITIES.NETWORK);
const t = new Entity();
- t.AddComponent(new terrain.TerrainChunkManager({
+ t.AddComponent(new TerrainChunkManager({
scene: this.scene_,
target: 'player',
gui: this._gui,
@@ -93,7 +89,7 @@ class CrappyMMOAttempt {
this.entityManager_.Add(t, KNOWN_ENTITIES.TERRAIN);
const l = new Entity();
- l.AddComponent(new load_controller.LoadController());
+ l.AddComponent(new LoadController());
this.entityManager_.Add(l, KNOWN_ENTITIES.LOADER);
const scenery = new Entity();
diff --git a/client/src/network-controller.ts b/packages/client/src/network-controller.ts
similarity index 97%
rename from client/src/network-controller.ts
rename to packages/client/src/network-controller.ts
index 05c7fbab..0605c1f3 100644
--- a/client/src/network-controller.ts
+++ b/packages/client/src/network-controller.ts
@@ -1,6 +1,7 @@
-import { EVENT_TYPES, KNOWN_ENTITIES, NAMED_COMPONENTS } from 'shared/src/constants';
+import {Constants} from 'shared';
import { io } from 'socket.io-client';
+const { EVENT_TYPES, KNOWN_ENTITIES, NAMED_COMPONENTS } = Constants;
import { Component } from './entity';
import { UIController } from './ui-controller';
@@ -8,7 +9,7 @@ import { UIController } from './ui-controller';
class NetworkController extends Component {
playerID_: any;
socket_: any;
- constructor(params) {
+ constructor(params?) {
super();
this.playerID_ = null;
diff --git a/client/src/network-entity-controller.ts b/packages/client/src/network-entity-controller.ts
similarity index 97%
rename from client/src/network-entity-controller.ts
rename to packages/client/src/network-entity-controller.ts
index e1ceeee3..3e45efa2 100644
--- a/client/src/network-entity-controller.ts
+++ b/packages/client/src/network-entity-controller.ts
@@ -1,7 +1,9 @@
-import { EVENT_TYPES } from 'shared/src/constants';
import * as THREE from 'three';
import { Component } from './entity';
+import { Constants } from 'shared';
+
+const { EVENT_TYPES } = Constants;
class NetworkEntityController extends Component {
transformUpdates_: any[];
diff --git a/client/src/network-player-controller.ts b/packages/client/src/network-player-controller.ts
similarity index 95%
rename from client/src/network-player-controller.ts
rename to packages/client/src/network-player-controller.ts
index ad0b4d8f..4278aaf4 100644
--- a/client/src/network-player-controller.ts
+++ b/packages/client/src/network-player-controller.ts
@@ -1,7 +1,9 @@
-import { EVENT_TYPES, KNOWN_ENTITIES, NAMED_COMPONENTS } from 'shared/src/constants';
import * as THREE from 'three';
import { Component } from './entity';
+import { Constants } from 'shared';
+
+const { EVENT_TYPES, KNOWN_ENTITIES, NAMED_COMPONENTS } = Constants;
class NetworkEntityController extends Component {
updateTimer_: number;
diff --git a/packages/client/src/npc-entity.ts b/packages/client/src/npc-entity.ts
new file mode 100644
index 00000000..1c682ae1
--- /dev/null
+++ b/packages/client/src/npc-entity.ts
@@ -0,0 +1,180 @@
+import * as THREE from 'three';
+
+import { Component } from './entity';
+import { CharacterFSM, BasicCharacterControllerProxy } from './player-entity'
+import { Constants, Defs } from 'shared';
+
+const { ANIM_TYPES, EVENT_TYPES, KNOWN_ENTITIES, STATE_TYPES, CHARACTER_MODELS } = { ...Constants, ...Defs };
+
+class NPCController extends Component {
+ params_: any;
+ group_: any;
+ animations_: {};
+ queuedState_: any;
+ stateMachine_: any;
+ target_: any;
+ bones_: {};
+ mixer_: THREE.AnimationMixer;
+ constructor(params) {
+ super();
+ this.params_ = params;
+ }
+
+ Destroy() {
+ this.group_.traverse(c => {
+ if (c.material) {
+ let materials = c.material;
+ if (!(c.material instanceof Array)) {
+ materials = [c.material];
+ }
+ for (let m of materials) {
+ m.dispose();
+ }
+ }
+
+ if (c.geometry) {
+ c.geometry.dispose();
+ }
+ });
+ this.params_.scene.remove(this.group_);
+ }
+
+ InitEntity() {
+ this._Init();
+ }
+
+ _Init() {
+ this.animations_ = {};
+ this.group_ = new THREE.Group();
+
+ this.params_.scene.add(this.group_);
+ this.queuedState_ = null;
+
+ this.LoadModels_();
+ }
+
+ InitComponent() {
+ this._RegisterHandler(EVENT_TYPES.HEALTH_DEATH, (m) => { this.OnDeath_(m); });
+ this._RegisterHandler('update.position', (m) => { this.OnPosition_(m); });
+ this._RegisterHandler('update.rotation', (m) => { this.OnRotation_(m); });
+ }
+
+ SetState(s) {
+ if (!this.stateMachine_) {
+ this.queuedState_ = s;
+ return;
+ }
+
+ // hack: should propogate attacks through the events on server
+ // Right now, they're inferred from whatever animation we're running, blech
+ if (s == STATE_TYPES.ATTACK && this.stateMachine_._currentState.Name != STATE_TYPES.ATTACK) {
+ this.Broadcast({
+ topic: EVENT_TYPES.ACTION_ATTACK,
+ });
+ }
+
+ this.stateMachine_.SetState(s);
+ }
+
+ OnDeath_(msg) {
+ this.SetState(STATE_TYPES.DEATH);
+ }
+
+ OnPosition_(m) {
+ this.group_.position.copy(m.value);
+ }
+
+ OnRotation_(m) {
+ this.group_.quaternion.copy(m.value);
+ }
+
+ LoadModels_() {
+ const classType = this.params_.desc.character.class;
+ const modelData = CHARACTER_MODELS[classType];
+
+ const loader = this.FindEntity(KNOWN_ENTITIES.LOADER).GetComponent('LoadController');
+ loader.LoadSkinnedGLB(modelData.path, modelData.base, (glb) => {
+ this.target_ = glb.scene;
+ this.target_.scale.setScalar(modelData.scale);
+ this.target_.visible = false;
+
+ this.group_.add(this.target_);
+
+ this.bones_ = {};
+ this.target_.traverse(c => {
+ if (!c.skeleton) {
+ return;
+ }
+ for (let b of c.skeleton.bones) {
+ this.bones_[b.name] = b;
+ }
+ });
+
+ this.target_.traverse(c => {
+ c.castShadow = true;
+ c.receiveShadow = true;
+ if (c.material && c.material.map) {
+ c.material.map.encoding = THREE.sRGBEncoding;
+ }
+ });
+
+ this.mixer_ = new THREE.AnimationMixer(this.target_);
+
+
+ const _FindAnim = (animName) => {
+ for (let i = 0; i < glb.animations.length; i++) {
+ if (glb.animations[i].name.includes(animName)) {
+ const clip = glb.animations[i];
+ const action = this.mixer_.clipAction(clip);
+ return {
+ clip: clip,
+ action: action
+ }
+ }
+ }
+ return null;
+ };
+
+ this.animations_[STATE_TYPES.IDLE] = _FindAnim(ANIM_TYPES.IDLE);
+ this.animations_[STATE_TYPES.WALK] = _FindAnim(ANIM_TYPES.WALK)
+ this.animations_[STATE_TYPES.RUN] = _FindAnim(ANIM_TYPES.RUN)
+ this.animations_[STATE_TYPES.DEATH] = _FindAnim(ANIM_TYPES.DEATH);
+ this.animations_[STATE_TYPES.ATTACK] = _FindAnim(ANIM_TYPES.ATTACK);
+ this.animations_[STATE_TYPES.DANCE] = _FindAnim(ANIM_TYPES.DANCE);
+
+ this.target_.visible = true;
+
+ this.stateMachine_ = new CharacterFSM(
+ new BasicCharacterControllerProxy(this.animations_));
+
+ if (this.queuedState_) {
+ this.stateMachine_.SetState(this.queuedState_)
+ this.queuedState_ = null;
+ } else {
+ this.stateMachine_.SetState(STATE_TYPES.IDLE);
+ }
+
+ this.Broadcast({
+ topic: EVENT_TYPES.LOAD_CHARACTER,
+ model: this.group_,
+ bones: this.bones_,
+ });
+ });
+ }
+
+ Update(timeInSeconds) {
+ if (!this.stateMachine_) {
+ return;
+ }
+ this.stateMachine_.Update(timeInSeconds, null);
+
+ if (this.mixer_) {
+ this.mixer_.update(timeInSeconds);
+ }
+ }
+};
+
+
+export {
+ NPCController
+}
\ No newline at end of file
diff --git a/client/src/particle-system.ts b/packages/client/src/particle-system.ts
similarity index 100%
rename from client/src/particle-system.ts
rename to packages/client/src/particle-system.ts
diff --git a/client/src/player-entity.ts b/packages/client/src/player-entity.ts
similarity index 97%
rename from client/src/player-entity.ts
rename to packages/client/src/player-entity.ts
index 41802840..8d98ae95 100644
--- a/client/src/player-entity.ts
+++ b/packages/client/src/player-entity.ts
@@ -3,8 +3,9 @@ import * as THREE from 'three';
import { Component } from './entity';
import { FiniteStateMachine } from './finite-state-machine';
import { IdleState, WalkState, RunState, AttackState, DanceState, DeathState } from './player-state';
-import { CHARACTER_MODELS } from 'shared/src/defs';
-import { ANIM_TYPES, EVENT_TYPES, KNOWN_ENTITIES, NAMED_COMPONENTS, STATE_TYPES } from 'shared/src/constants';
+import { Constants, Defs } from 'shared';
+
+const { ANIM_TYPES, EVENT_TYPES, KNOWN_ENTITIES, NAMED_COMPONENTS, STATE_TYPES, CHARACTER_MODELS } = {...Constants, ...Defs};
class CharacterFSM extends FiniteStateMachine {
_proxy: any;
diff --git a/client/src/player-input.ts b/packages/client/src/player-input.ts
similarity index 97%
rename from client/src/player-input.ts
rename to packages/client/src/player-input.ts
index b17316ef..09b8de10 100644
--- a/client/src/player-input.ts
+++ b/packages/client/src/player-input.ts
@@ -1,7 +1,10 @@
-import { DOM_IDS, EVENT_TYPES } from 'shared/src/constants';
import * as THREE from 'three';
+import { Constants } from 'shared';
import { Component } from "./entity";
+
+const { DOM_IDS, EVENT_TYPES } = Constants;
+
class PickableComponent extends Component {
constructor() {
super();
diff --git a/client/src/player-state.ts b/packages/client/src/player-state.ts
similarity index 98%
rename from client/src/player-state.ts
rename to packages/client/src/player-state.ts
index 8c4eabdd..1f9c8f2a 100644
--- a/client/src/player-state.ts
+++ b/packages/client/src/player-state.ts
@@ -1,6 +1,9 @@
-import { STATE_TYPES } from 'shared/src/constants';
import * as THREE from 'three';
+import { Constants } from 'shared';
+
+const { STATE_TYPES } = Constants;
+
class State {
_parent: any;
constructor(parent) {
diff --git a/client/src/quadtree.ts b/packages/client/src/quadtree.ts
similarity index 100%
rename from client/src/quadtree.ts
rename to packages/client/src/quadtree.ts
diff --git a/packages/client/src/quest-component.ts b/packages/client/src/quest-component.ts
new file mode 100644
index 00000000..8f387965
--- /dev/null
+++ b/packages/client/src/quest-component.ts
@@ -0,0 +1,37 @@
+import { Constants } from 'shared';
+import { Component } from "./entity";
+
+const { DOM_IDS, EVENT_TYPES, KNOWN_ENTITIES, NAMED_COMPONENTS } = Constants;
+
+const _TITLE = 'Welcome Adventurer!';
+const _TEXT = `Welcome to Honeywood adventurer, I see you're the chosen one and also the dragon born and whatever else, you're going to save the world! Also bring the rings back to mordor and defeat the evil dragon, and all the other things. But first, I must test you with some meaningless bullshit tasks that every rpg makes you do to waste time. Go kill like uh 30 ghosts and collect their eyeballs or something. Also go get my drycleaning and pick up my kids from daycare.`;
+
+class QuestComponent extends Component {
+ constructor() {
+ super();
+
+ const e = document.getElementById(DOM_IDS.QUEST_UI);
+ e.style.visibility = 'hidden';
+ }
+
+ InitComponent() {
+ this._RegisterHandler(EVENT_TYPES.INPUT_PICKED, (m) => this._OnPicked(m));
+ }
+
+ _OnPicked(msg) {
+ // HARDCODE A QUEST
+ const quest = {
+ id: 'foo',
+ title: _TITLE,
+ text: _TEXT,
+ };
+ this._AddQuestToJournal(quest);
+ }
+
+ _AddQuestToJournal(quest) {
+ const ui = this.FindEntity(KNOWN_ENTITIES.UI).GetComponent(NAMED_COMPONENTS.UI_CONTROLLER);
+ ui.AddQuest(quest);
+ }
+};
+
+export { QuestComponent }
\ No newline at end of file
diff --git a/client/src/render-component.ts b/packages/client/src/render-component.ts
similarity index 96%
rename from client/src/render-component.ts
rename to packages/client/src/render-component.ts
index d63eeb6a..6c6dc740 100644
--- a/client/src/render-component.ts
+++ b/packages/client/src/render-component.ts
@@ -1,10 +1,11 @@
-import { KNOWN_ENTITIES } from 'shared/src/constants';
import * as THREE from 'three';
-
-import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
-import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader.js';
+import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';
+import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader';
import { Component } from './entity';
+import { Constants } from 'shared';
+
+const { KNOWN_ENTITIES } = { ...Constants };
class RenderComponent extends Component {
group_: THREE.Group;
diff --git a/client/src/scenery-controller.ts b/packages/client/src/scenery-controller.ts
similarity index 97%
rename from client/src/scenery-controller.ts
rename to packages/client/src/scenery-controller.ts
index c5b67f92..0dacf28b 100644
--- a/client/src/scenery-controller.ts
+++ b/packages/client/src/scenery-controller.ts
@@ -4,10 +4,11 @@ import { Entity, Component } from './entity';
import { RenderComponent } from './render-component';
import { SpatialGridController } from './spatial-grid-controller.js';
-import { math } from 'shared/src/math';
-import { Noise } from 'shared/src/noise';
-import { KNOWN_ENTITIES } from 'shared/src/constants';
+import { Math as math, Noise as noise, Constants } from 'shared';
+import type {Noise as INoise} from 'shared';
+const {KNOWN_ENTITIES} = Constants;
+const {Noise} = noise;
const _SCENERY = {
birch1: {
@@ -93,7 +94,7 @@ for (let k in multiples) {
class SceneryController extends Component {
params_: any;
- noise_: Noise;
+ noise_: INoise.Noise;
center_: any;
crap_: any[];
constructor(params) {
diff --git a/client/src/sorceror-effect.ts b/packages/client/src/sorceror-effect.ts
similarity index 97%
rename from client/src/sorceror-effect.ts
rename to packages/client/src/sorceror-effect.ts
index 177ca364..e3837aa8 100644
--- a/client/src/sorceror-effect.ts
+++ b/packages/client/src/sorceror-effect.ts
@@ -2,7 +2,9 @@ import * as THREE from 'three';
import { ParticleEmitter, ParticleSystem } from "./particle-system";
import { Component } from "./entity";
-import { EVENT_TYPES } from 'shared/src/constants';
+import { Constants } from 'shared';
+
+const { EVENT_TYPES } = Constants;
class SorcerorEffectEmitter extends ParticleEmitter {
parent_: any;
diff --git a/client/src/spatial-grid-controller.ts b/packages/client/src/spatial-grid-controller.ts
similarity index 100%
rename from client/src/spatial-grid-controller.ts
rename to packages/client/src/spatial-grid-controller.ts
diff --git a/client/src/spawners.ts b/packages/client/src/spawners.ts
similarity index 95%
rename from client/src/spawners.ts
rename to packages/client/src/spawners.ts
index fc605c0e..519ebb05 100644
--- a/client/src/spawners.ts
+++ b/packages/client/src/spawners.ts
@@ -1,6 +1,5 @@
import { Component, Entity } from './entity';
-
-import { third_person_camera } from './third-person-camera';
+import { ThirdPersonCamera } from './third-person-camera';
import { BasicCharacterController } from './player-entity'
import { HealthComponent } from './health-component';
import { BasicCharacterControllerInput } from './player-input';
@@ -8,14 +7,15 @@ import { SpatialGridController } from './spatial-grid-controller';
import { InventoryController, UIInventoryController } from './inventory-controller';
import { equip_weapon_component } from './equip-weapon-component';
import { AttackController } from './attacker-controller';
-
import { NPCController } from './npc-entity';
import { NetworkEntityController } from './network-entity-controller';
import { NetworkEntityController as NetworkPlayerController } from './network-player-controller';
import { FloatingName } from './floating-name';
import { SorcerorEffect } from './sorceror-effect';
import { BloodEffect } from './blood-effect';
-import { CLASS_TYPES_ENUM } from 'shared/src/constants';
+import { Constants } from 'shared';
+
+const { CLASS_TYPES_ENUM } = Constants;
class PlayerSpawner extends Component {
params_: any;
@@ -57,7 +57,7 @@ class PlayerSpawner extends Component {
player.AddComponent(
new AttackController());
player.AddComponent(
- new third_person_camera.ThirdPersonCamera({
+ new ThirdPersonCamera({
camera: this.params_.camera,
target: player
}));
diff --git a/client/src/terrain-builder-threaded-worker.ts b/packages/client/src/terrain-builder-threaded-worker.ts
similarity index 97%
rename from client/src/terrain-builder-threaded-worker.ts
rename to packages/client/src/terrain-builder-threaded-worker.ts
index c42c6daa..a67bc014 100644
--- a/client/src/terrain-builder-threaded-worker.ts
+++ b/packages/client/src/terrain-builder-threaded-worker.ts
@@ -1,10 +1,10 @@
import * as THREE from 'three';
-import { texture_splatter } from './texture-splatter';
+import { TextureSplatter } from './texture-splatter';
-import { math } from 'shared/src/math';
-import { Noise } from 'shared/src/noise';
-import { HeightGenerator } from 'shared/src/terrain-height';
+import { TerrainHeight, Noise as aNoise, Math as math } from 'shared';
+
+const { Noise, HeightGenerator } = { ...TerrainHeight, ...aNoise };
class _TerrainBuilderThreadedWorker {
@@ -21,7 +21,7 @@ class _TerrainBuilderThreadedWorker {
this._params.biomeGenerator = new Noise(params.biomesParams);
this._params.colourNoise = new Noise(params.colourNoiseParams);
- this._params.colourGenerator = new texture_splatter.TextureSplatter(
+ this._params.colourGenerator = new TextureSplatter(
{
biomeGenerator: this._params.biomeGenerator,
colourNoise: this._params.colourNoise
diff --git a/client/src/terrain-builder-threaded.ts b/packages/client/src/terrain-builder-threaded.ts
similarity index 99%
rename from client/src/terrain-builder-threaded.ts
rename to packages/client/src/terrain-builder-threaded.ts
index 10ef27ed..6fff9a18 100644
--- a/client/src/terrain-builder-threaded.ts
+++ b/packages/client/src/terrain-builder-threaded.ts
@@ -1,4 +1,3 @@
-
import { TerrainChunk } from './terrain-chunk';
@@ -174,6 +173,7 @@ class TerrainChunkRebuilder_Threaded {
}
}
}
+
export {
TerrainChunkRebuilder_Threaded
-}
\ No newline at end of file
+}
diff --git a/client/src/terrain-builder.ts b/packages/client/src/terrain-builder.ts
similarity index 99%
rename from client/src/terrain-builder.ts
rename to packages/client/src/terrain-builder.ts
index a4aea110..6fc8c6e9 100644
--- a/client/src/terrain-builder.ts
+++ b/packages/client/src/terrain-builder.ts
@@ -100,4 +100,4 @@ class TerrainChunkRebuilder {
export {
TerrainChunkRebuilder
-}
\ No newline at end of file
+}
diff --git a/client/src/terrain-chunk.ts b/packages/client/src/terrain-chunk.ts
similarity index 99%
rename from client/src/terrain-chunk.ts
rename to packages/client/src/terrain-chunk.ts
index 45c60232..ef2183ca 100644
--- a/client/src/terrain-chunk.ts
+++ b/packages/client/src/terrain-chunk.ts
@@ -1,6 +1,5 @@
import * as THREE from 'three';
-
class TerrainChunk {
_params: any;
_geometry: THREE.BufferGeometry;
@@ -63,4 +62,4 @@ class TerrainChunk {
export {
TerrainChunk
-}
\ No newline at end of file
+}
diff --git a/client/src/terrain-shader.ts b/packages/client/src/terrain-shader.ts
similarity index 98%
rename from client/src/terrain-shader.ts
rename to packages/client/src/terrain-shader.ts
index a69be331..3e42f2ef 100644
--- a/client/src/terrain-shader.ts
+++ b/packages/client/src/terrain-shader.ts
@@ -1,6 +1,5 @@
-export const terrain_shader = (function() {
- const _VS_1 = `
+const VS1 = `
// Triplanar Attributes
in vec4 weights1;
@@ -15,7 +14,7 @@ out vec4 vWeights2;
`;
- const _VS_2 = `
+const VS2 = `
vCoords = transformed.xyz;
vWeights1 = weights1;
@@ -23,7 +22,7 @@ vWeights2 = weights2;
`;
- const _VS = `
+const VS = `
// Attributes
in vec3 coords;
@@ -51,9 +50,9 @@ void main(){
vWeights2 = weights2;
}
`;
-
- const _PS = `
+
+const PS = `
precision highp float;
precision highp int;
@@ -260,7 +259,7 @@ void main() {
`;
- const _PS_1 = `
+const PS1 = `
precision mediump sampler2DArray;
@@ -424,8 +423,8 @@ vec4 _TriplanarN(vec3 pos, vec3 normal, float texSlice, sampler2DArray tex) {
}
`;
-
- const _PS_2 = `
+
+const PS2 = `
{
vec3 worldPosition = vCoords;
@@ -463,13 +462,13 @@ vec4 _TriplanarN(vec3 pos, vec3 normal, float texSlice, sampler2DArray tex) {
`;
- return {
- VS: _VS,
- PS: _PS,
- VS1: _VS_1,
- VS2: _VS_2,
- PS1: _PS_1,
- PS2: _PS_2,
- };
- })();
-
\ No newline at end of file
+
+
+export {
+ VS,
+ PS,
+ VS1,
+ VS2,
+ PS1,
+ PS2,
+}
\ No newline at end of file
diff --git a/packages/client/src/terrain.ts b/packages/client/src/terrain.ts
new file mode 100644
index 00000000..84fd9258
--- /dev/null
+++ b/packages/client/src/terrain.ts
@@ -0,0 +1,303 @@
+import * as THREE from 'three';
+
+import { Component } from './entity';
+import { CubeQuadTree } from './quadtree';
+import { VS1, VS2, PS1, PS2 } from './terrain-shader';
+import { TerrainChunkRebuilder_Threaded } from './terrain-builder-threaded';
+import { TextureSplatter } from './texture-splatter';
+import { TextureAtlas } from './textures';
+import { utils } from './utils';
+import { Noise as aNoise, TerrainHeight, TerrainConstants } from 'shared';
+
+const {
+ QT_MIN_CELL_SIZE,
+ QT_MIN_CELL_RESOLUTION,
+ PLANET_RADIUS,
+ NOISE_PARAMS,
+ HeightGenerator,
+ Noise,
+} = { ...aNoise, ...TerrainHeight, ...TerrainConstants }
+
+class TerrainChunkManager extends Component {
+ _params: any;
+ _material: THREE.MeshStandardMaterial;
+ _builder: TerrainChunkRebuilder_Threaded;
+ heightGenerator_: any;
+ _biomes: any;
+ _biomesParams: any;
+ _colourNoise: any;
+ _colourNoiseParams: { octaves: number; persistence: number; lacunarity: number; exponentiation: number; scale: number; noiseType: string; seed: number; height: number; };
+ _groups: THREE.Group[];
+ _chunks: any;
+
+ constructor(params) {
+ super();
+ this._Init(params);
+ }
+
+ _Init(params) {
+ this._params = params;
+
+ const loader = new THREE.TextureLoader();
+
+ const noiseTexture = loader.load('./resources/terrain/simplex-png');
+ noiseTexture.wrapS = THREE.RepeatWrapping;
+ noiseTexture.wrapT = THREE.RepeatWrapping;
+
+ const diffuse = new TextureAtlas(params);
+ diffuse.Load('diffuse', [
+ './resources/terrain/dirt_01_diffuse-1024.png',
+ './resources/terrain/grass1-albedo3-1024.png',
+ './resources/terrain/sandyground-albedo-1024.png',
+ './resources/terrain/worn-bumpy-rock-albedo-1024.png',
+ './resources/terrain/rock-snow-ice-albedo-1024.png',
+ './resources/terrain/snow-packed-albedo-1024.png',
+ './resources/terrain/rough-wet-cobble-albedo-1024.png',
+ // './resources/terrain/sandy-rocks1-albedo-1024.png',
+ './resources/terrain/bark1-albedo.jpg',
+ ]);
+
+
+ const normal = new TextureAtlas(params);
+ normal.Load('normal', [
+ './resources/terrain/dirt_01_normal-1024.jpg',
+ './resources/terrain/grass1-normal-1024.jpg',
+ './resources/terrain/sandyground-normal-1024.jpg',
+ './resources/terrain/worn-bumpy-rock-normal-1024.jpg',
+ './resources/terrain/rock-snow-ice-normal-1024.jpg',
+ './resources/terrain/snow-packed-normal-1024.jpg',
+ './resources/terrain/rough-wet-cobble-normal-1024.jpg',
+ // './resources/terrain/sandy-rocks1-normal-1024.jpg',
+ './resources/terrain/bark1-normal3.jpg',
+ ]);
+
+ this._material = new THREE.MeshStandardMaterial({
+ side: THREE.BackSide,
+ vertexColors: true,
+ });
+
+ this._material.onBeforeCompile = (s) => {
+ let a = 0;
+ let vsh = s.vertexShader;
+ vsh = VS1 + s.vertexShader;
+ const vi1 = vsh.search('#include ');
+ vsh = [vsh.slice(0, vi1) + VS2 + vsh.slice(vi1)].join('');
+ s.vertexShader = vsh;
+
+ s.fragmentShader = PS1 + s.fragmentShader;
+ const fi1 = s.fragmentShader.search('#include ');
+ s.fragmentShader = [s.fragmentShader.slice(0, fi1) + PS2 + s.fragmentShader.slice(fi1)].join('');
+
+ s.uniforms.TRIPLANAR_normalMap = { value: normal.Info['normal'].atlas };
+ s.uniforms.TRIPLANAR_diffuseMap = { value: diffuse.Info['diffuse'].atlas };
+ s.uniforms.TRIPLANAR_noiseMap = { value: noiseTexture };
+
+ diffuse.onLoad = () => {
+ s.uniforms.TRIPLANAR_diffuseMap.value = diffuse.Info['diffuse'].atlas;
+ };
+ normal.onLoad = () => {
+ s.uniforms.TRIPLANAR_normalMap.value = normal.Info['normal'].atlas;
+ };
+
+ // s.fragmentShader += 'poop';
+ };
+
+ this._builder = new TerrainChunkRebuilder_Threaded(null);
+ // this._builder = new terrain_builder.TerrainChunkRebuilder();
+
+ this._InitNoise();
+ this._InitBiomes(params);
+ this._InitTerrain(params);
+ }
+
+ _InitNoise() {
+ this.heightGenerator_ = new HeightGenerator();
+ }
+
+ _InitBiomes(params) {
+ params.guiParams.biomes = {
+ octaves: 2,
+ persistence: 0.5,
+ lacunarity: 2.0,
+ scale: 1024.0,
+ noiseType: 'simplex',
+ seed: 2,
+ exponentiation: 2,
+ height: 1.0
+ };
+
+ const onNoiseChanged = () => {
+ this._builder.Rebuild(this._chunks);
+ };
+
+ const noiseRollup = params.gui.addFolder('Terrain.Biomes');
+ noiseRollup.add(params.guiParams.biomes, "scale", 64.0, 4096.0).onChange(
+ onNoiseChanged);
+ noiseRollup.add(params.guiParams.biomes, "octaves", 1, 20, 1).onChange(
+ onNoiseChanged);
+ noiseRollup.add(params.guiParams.biomes, "persistence", 0.01, 1.0).onChange(
+ onNoiseChanged);
+ noiseRollup.add(params.guiParams.biomes, "lacunarity", 0.01, 4.0).onChange(
+ onNoiseChanged);
+ noiseRollup.add(params.guiParams.biomes, "exponentiation", 0.1, 10.0).onChange(
+ onNoiseChanged);
+
+ this._biomes = new Noise(params.guiParams.biomes);
+ this._biomesParams = params.guiParams.biomes;
+
+ const colourParams = {
+ octaves: 1,
+ persistence: 0.5,
+ lacunarity: 2.0,
+ exponentiation: 1.0,
+ scale: 256.0,
+ noiseType: 'simplex',
+ seed: 2,
+ height: 1.0,
+ };
+ this._colourNoise = new Noise(colourParams);
+ this._colourNoiseParams = colourParams;
+ }
+
+ _InitTerrain(params) {
+ params.guiParams.terrain = {
+ wireframe: false,
+ };
+
+ this._groups = [...new Array(6)].map(_ => new THREE.Group());
+ params.scene.add(...this._groups);
+
+ const terrainRollup = params.gui.addFolder('Terrain');
+ terrainRollup.add(params.guiParams.terrain, "wireframe").onChange(() => {
+ for (let k in this._chunks) {
+ this._chunks[k].chunk._plane.material.wireframe = params.guiParams.terrain.wireframe;
+ }
+ });
+
+ this._chunks = {};
+ this._params = params;
+ }
+
+ _CreateTerrainChunk(group, groupTransform, offset, width, resolution) {
+ const params = {
+ group: group,
+ transform: groupTransform,
+ material: this._material,
+ width: width,
+ offset: offset,
+ // origin: this._params.camera.position.clone(),
+ radius: PLANET_RADIUS,
+ resolution: resolution,
+ biomeGenerator: this._biomes,
+ colourGenerator: new TextureSplatter(
+ { biomeGenerator: this._biomes, colourNoise: this._colourNoise }),
+ heightGenerators: [this.heightGenerator_],
+ noiseParams: NOISE_PARAMS,
+ colourNoiseParams: this._colourNoiseParams,
+ biomesParams: this._biomesParams,
+ colourGeneratorParams: {
+ biomeGeneratorParams: this._biomesParams,
+ colourNoiseParams: this._colourNoiseParams,
+ },
+ heightGeneratorsParams: {
+ min: 100000,
+ max: 100000 + 1,
+ }
+ };
+
+ return this._builder.AllocateChunk(params);
+ }
+
+ GetHeight(pos) {
+ return this.heightGenerator_.Get(pos.x, 0.0, pos.z);
+ }
+
+ GetBiomeAt(pos) {
+ return this._biomes.Get(pos.x, 0.0, pos.z);
+ }
+
+ Update(_) {
+ const target = this.FindEntity(this._params.target);
+ if (!target) {
+ return;
+ }
+
+ this._builder.Update();
+ if (!this._builder.Busy) {
+ this._UpdateVisibleChunks_Quadtree(target);
+ }
+
+ for (let k in this._chunks) {
+ this._chunks[k].chunk.Update(target.Position);
+ }
+ for (let c of this._builder._old) {
+ c.chunk.Update(target.Position);
+ }
+
+ // this._params.scattering.uniforms.planetRadius.value = PLANET_RADIUS;
+ // this._params.scattering.uniforms.atmosphereRadius.value = PLANET_RADIUS * 1.01;
+ }
+
+ _UpdateVisibleChunks_Quadtree(target) {
+ function _Key(c) {
+ return c.position[0] + '/' + c.position[2] + ' [' + c.size + ']';
+ }
+
+ const q = new CubeQuadTree({
+ radius: PLANET_RADIUS,
+ min_node_size: QT_MIN_CELL_SIZE,
+ });
+ q.Insert(target.Position);
+
+ const sides = q.GetChildren();
+
+ let newTerrainChunks = {};
+ const center = new THREE.Vector3();
+ const dimensions = new THREE.Vector3();
+ for (let i = 0; i < sides.length; i++) {
+ for (let c of sides[i].children) {
+ c.bounds.getCenter(center);
+ c.bounds.getSize(dimensions);
+
+ const child = {
+ index: i,
+ group: this._groups[i],
+ transform: sides[i].transform,
+ position: [center.x, center.y, center.z],
+ bounds: c.bounds,
+ size: dimensions.x,
+ };
+
+ const k = _Key(child);
+ newTerrainChunks[k] = child;
+ }
+ }
+
+ const intersection = utils.DictIntersection(this._chunks, newTerrainChunks);
+ const difference = utils.DictDifference(newTerrainChunks, this._chunks);
+ const recycle = Object.values(utils.DictDifference(this._chunks, newTerrainChunks));
+
+ this._builder.RetireChunks(recycle);
+
+ newTerrainChunks = intersection;
+
+ for (let k in difference) {
+ const [xp, yp, zp] = difference[k].position;
+
+ const offset = new THREE.Vector3(xp, yp, zp);
+ newTerrainChunks[k] = {
+ position: [xp, zp],
+ chunk: this._CreateTerrainChunk(
+ difference[k].group, difference[k].transform,
+ offset, difference[k].size,
+ QT_MIN_CELL_RESOLUTION),
+ };
+ }
+
+ this._chunks = newTerrainChunks;
+ }
+}
+
+export {
+ TerrainChunkManager
+}
\ No newline at end of file
diff --git a/packages/client/src/test.ts b/packages/client/src/test.ts
new file mode 100644
index 00000000..b7f4c892
--- /dev/null
+++ b/packages/client/src/test.ts
@@ -0,0 +1,5 @@
+
+
+
+// We got nothing.
+// lol nope. from: Jeremy
\ No newline at end of file
diff --git a/packages/client/src/texture-splatter.ts b/packages/client/src/texture-splatter.ts
new file mode 100644
index 00000000..b8b27aae
--- /dev/null
+++ b/packages/client/src/texture-splatter.ts
@@ -0,0 +1,155 @@
+import * as THREE from 'three';
+
+import { Spline, TerrainConstants, Math as math } from 'shared';
+
+const { LinearSpline, NOISE_HEIGHT } = { ...Spline, ...TerrainConstants };
+
+const _HEIGHT_NORMALIZATION = NOISE_HEIGHT / 10.0;
+
+const _WHITE = new THREE.Color(0x808080);
+
+const _DEEP_OCEAN = new THREE.Color(0x20020FF);
+const _SHALLOW_OCEAN = new THREE.Color(0x8080FF);
+const _BEACH = new THREE.Color(0xd9d592);
+const _SNOW = new THREE.Color(0xFFFFFF);
+const _FOREST_BOREAL = new THREE.Color(0x29c100);
+
+const _GREEN = new THREE.Color(0x80FF80);
+const _RED = new THREE.Color(0xFF8080);
+const _BLACK = new THREE.Color(0x000000);
+
+
+class TextureSplatter {
+ _colourSpline: InstanceType[];
+ _oceanSpline: InstanceType;
+ _params: any;
+ constructor(params) {
+ const _colourLerp = (t, p0, p1) => {
+ const c = p0.clone();
+
+ return c.lerp(p1, t);
+ };
+ this._colourSpline = [
+ new LinearSpline(_colourLerp),
+ new LinearSpline(_colourLerp)
+ ];
+
+ // Arid
+ this._colourSpline[0].AddPoint(0.0, new THREE.Color(0xb7a67d));
+ this._colourSpline[0].AddPoint(0.5, new THREE.Color(0xf1e1bc));
+ this._colourSpline[0].AddPoint(1.0, _SNOW);
+
+ // Humid
+ this._colourSpline[1].AddPoint(0.0, _FOREST_BOREAL);
+ this._colourSpline[1].AddPoint(0.5, new THREE.Color(0x8a9343));
+ this._colourSpline[1].AddPoint(1.0, _SNOW);
+ // this._colourSpline[1].AddPoint(0.5, new THREE.Color(0x8a9343));
+ // this._colourSpline[1].AddPoint(1.0, _SNOW);
+
+ this._oceanSpline = new LinearSpline(_colourLerp);
+ this._oceanSpline.AddPoint(0, _DEEP_OCEAN);
+ this._oceanSpline.AddPoint(0.03, _SHALLOW_OCEAN);
+ this._oceanSpline.AddPoint(0.05, _SHALLOW_OCEAN);
+
+ this._params = params;
+ }
+
+ _BaseColour(x, y, z) {
+ const m = this._params.biomeGenerator.Get(x, y, z);
+ const h = math.sat(z / 100.0);
+
+ const c1 = this._colourSpline[0].Get(h);
+ const c2 = this._colourSpline[1].Get(h);
+
+ let c = c1.lerp(c2, m);
+
+ if (h < 0.1) {
+ c = c.lerp(new THREE.Color(0x54380e), 1.0 - math.sat(h / 0.05));
+ }
+ return c;
+ }
+
+ _Colour(x: number, y: number, z: number) {
+ const c = this._BaseColour(x, y, z);
+ const r = this._params.colourNoise.Get(x, y, z) * 2.0 - 1.0;
+
+ c.offsetHSL(0.0, 0.0, r * 0.2);
+ return c;
+ }
+
+ _GetTextureWeights(p, n, up) {
+ const m = this._params.biomeGenerator.Get(p.x, p.y, p.z);
+ const h = p.z / _HEIGHT_NORMALIZATION;
+
+ const types = {
+ dirt: { index: 0, strength: 0.0 },
+ grass: { index: 1, strength: 0.0 },
+ gravel: { index: 2, strength: 0.0 },
+ rock: { index: 3, strength: 0.0 },
+ snow: { index: 4, strength: 0.0 },
+ snowrock: { index: 5, strength: 0.0 },
+ cobble: { index: 6, strength: 0.0 },
+ sandyrock: { index: 7, strength: 0.0 },
+ };
+
+ function _ApplyWeights(dst, v, m) {
+ for (let k in types) {
+ types[k].strength *= m;
+ }
+ types[dst].strength = v;
+ };
+
+ types.grass.strength = 1.0;
+ _ApplyWeights('gravel', 1.0 - m, m);
+
+ if (h < 0.2) {
+ const s = 1.0 - math.sat((h - 0.1) / 0.05);
+ _ApplyWeights('cobble', s, 1.0 - s);
+
+ if (h < 0.1) {
+ const s = 1.0 - math.sat((h - 0.05) / 0.05);
+ _ApplyWeights('sandyrock', s, 1.0 - s);
+ }
+ } else {
+ if (h > 0.125) {
+ const s = (math.sat((h - 0.125) / 1.25));
+ _ApplyWeights('rock', s, 1.0 - s);
+ }
+
+ if (h > 1.5) {
+ const s = math.sat((h - 0.75) / 2.0);
+ _ApplyWeights('snow', s, 1.0 - s);
+ }
+ }
+
+ // In case nothing gets set.
+ types.dirt.strength = 0.01;
+
+ let total = 0.0;
+ for (let k in types) {
+ total += types[k].strength;
+ }
+ if (total < 0.01) {
+ const a = 0;
+ }
+ const normalization = 1.0 / total;
+
+ for (let k in types) {
+ types[k].strength / normalization;
+ }
+
+ return types;
+ }
+
+ GetColour(position) {
+ return this._Colour(position.x, position.y, position.z);
+ }
+
+ GetSplat(position, normal, up) {
+ return this._GetTextureWeights(position, normal, up);
+ }
+}
+
+export {
+ TextureSplatter
+}
\ No newline at end of file
diff --git a/packages/client/src/textures.ts b/packages/client/src/textures.ts
new file mode 100644
index 00000000..b69d89ed
--- /dev/null
+++ b/packages/client/src/textures.ts
@@ -0,0 +1,95 @@
+import * as THREE from 'three';
+
+
+// Taken from https://github.com/mrdoob/three.js/issues/758
+function _GetImageData(image) {
+ var canvas = document.createElement('canvas');
+ canvas.width = image.width;
+ canvas.height = image.height;
+
+ var context = canvas.getContext('2d');
+ context.drawImage(image, 0, 0);
+
+ return context.getImageData(0, 0, image.width, image.height);
+}
+
+class TextureAtlas {
+ onLoad: () => void;
+ _threejs: any;
+ _manager: THREE.LoadingManager;
+ _loader: THREE.TextureLoader;
+ _textures: {};
+ constructor(params) {
+ this._threejs = params.threejs;
+ this._Create();
+ this.onLoad = () => { };
+ }
+
+ Load(atlas, names) {
+ this._LoadAtlas(atlas, names);
+ }
+
+ _Create() {
+ this._manager = new THREE.LoadingManager();
+ this._loader = new THREE.TextureLoader(this._manager);
+ this._textures = {};
+
+ this._manager.onLoad = () => {
+ this._OnLoad();
+ };
+ }
+
+ get Info() {
+ return this._textures;
+ }
+
+ _LoadTexture(n) {
+ const t = this._loader.load(n);
+ t.encoding = THREE.sRGBEncoding;
+ return t;
+ }
+
+ _OnLoad() {
+ for (let k in this._textures) {
+ const atlas = this._textures[k];
+ const data = new Uint8Array(atlas.textures.length * 4 * 1024 * 1024);
+
+ for (let t = 0; t < atlas.textures.length; t++) {
+ const curTexture = atlas.textures[t];
+ const curData = _GetImageData(curTexture.image);
+ const offset = t * (4 * 1024 * 1024);
+
+ data.set(curData.data, offset);
+ }
+
+ const diffuse = new THREE.DataTexture2DArray(data, 1024, 1024, atlas.textures.length);
+ diffuse.format = THREE.RGBAFormat;
+ diffuse.type = THREE.UnsignedByteType;
+ diffuse.minFilter = THREE.LinearMipMapLinearFilter;
+ diffuse.magFilter = THREE.LinearFilter;
+ diffuse.wrapS = THREE.RepeatWrapping;
+ diffuse.wrapT = THREE.RepeatWrapping;
+ diffuse.generateMipmaps = true;
+
+ const caps = this._threejs.capabilities;
+ const aniso = caps.getMaxAnisotropy();
+
+ diffuse.anisotropy = 4;
+
+ atlas.atlas = diffuse;
+ }
+
+ this.onLoad();
+ }
+
+ _LoadAtlas(atlas, names) {
+ this._textures[atlas] = {
+ textures: names.map(n => this._LoadTexture(n)),
+ atlas: null,
+ };
+ }
+}
+
+export {
+ TextureAtlas
+}
\ No newline at end of file
diff --git a/packages/client/src/third-person-camera.ts b/packages/client/src/third-person-camera.ts
new file mode 100644
index 00000000..e88839e8
--- /dev/null
+++ b/packages/client/src/third-person-camera.ts
@@ -0,0 +1,58 @@
+import * as THREE from 'three';
+import { Component } from './entity';
+import { Constants } from 'shared';
+
+const { KNOWN_ENTITIES } = Constants;
+
+class ThirdPersonCamera extends Component {
+ _params: any;
+ _camera: any;
+ _currentPosition: THREE.Vector3;
+ _currentLookat: THREE.Vector3;
+ constructor(params) {
+ super();
+
+ this._params = params;
+ this._camera = params.camera;
+
+ this._currentPosition = new THREE.Vector3();
+ this._currentLookat = new THREE.Vector3();
+ }
+
+ _CalculateIdealOffset() {
+ const idealOffset = new THREE.Vector3(-0, 10, -15);
+ idealOffset.applyQuaternion(this._params.target._rotation);
+ idealOffset.add(this._params.target._position);
+
+ const terrain = this.FindEntity(KNOWN_ENTITIES.TERRAIN).GetComponent('TerrainChunkManager');
+ idealOffset.y = Math.max(idealOffset.y, terrain.GetHeight(idealOffset)[0] + 5.0);
+
+ return idealOffset;
+ }
+
+ _CalculateIdealLookat() {
+ const idealLookat = new THREE.Vector3(0, 5, 20);
+ idealLookat.applyQuaternion(this._params.target._rotation);
+ idealLookat.add(this._params.target._position);
+ return idealLookat;
+ }
+
+ Update(timeElapsed) {
+ const idealOffset = this._CalculateIdealOffset();
+ const idealLookat = this._CalculateIdealLookat();
+
+ // const t = 0.05;
+ // const t = 4.0 * timeElapsed;
+ const t = 1.0 - Math.pow(0.01, timeElapsed);
+
+ this._currentPosition.lerp(idealOffset, t);
+ this._currentLookat.lerp(idealLookat, t);
+
+ this._camera.position.copy(this._currentPosition);
+ this._camera.lookAt(this._currentLookat);
+ }
+}
+
+export {
+ ThirdPersonCamera
+}
\ No newline at end of file
diff --git a/packages/client/src/threejs_component.ts b/packages/client/src/threejs_component.ts
new file mode 100644
index 00000000..f7b830aa
--- /dev/null
+++ b/packages/client/src/threejs_component.ts
@@ -0,0 +1,199 @@
+import * as THREE from 'three';
+
+import { Constants } from 'shared';
+import { Component } from "./entity";
+
+const { DOM_IDS } = Constants;
+
+const _VS = `
+ varying vec3 vWorldPosition;
+
+ void main() {
+ vec4 worldPosition = modelMatrix * vec4( position, 1.0 );
+ vWorldPosition = worldPosition.xyz;
+
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
+ }`;
+
+
+const _FS = `
+ uniform vec3 topColor;
+ uniform vec3 bottomColor;
+ uniform float offset;
+ uniform float exponent;
+ uniform samplerCube background;
+
+ varying vec3 vWorldPosition;
+
+ void main() {
+ vec3 viewDirection = normalize(vWorldPosition - cameraPosition);
+ vec3 stars = textureCube(background, viewDirection).xyz;
+
+ float h = normalize(vWorldPosition + offset).y;
+ float t = max(pow(max(h, 0.0), exponent), 0.0);
+
+ float f = exp(min(0.0, -vWorldPosition.y * 0.00125));
+
+ vec3 sky = mix(stars, bottomColor, f);
+ gl_FragColor = vec4(sky, 1.0);
+ }`;
+
+class ThreeJSController extends Component {
+ threejs_: THREE.WebGLRenderer;
+ camera_: THREE.PerspectiveCamera;
+ scene_: THREE.Scene;
+ sun_: THREE.DirectionalLight;
+ constructor() {
+ super();
+ }
+
+ InitEntity() {
+ THREE.ShaderChunk.fog_fragment = `
+ #ifdef USE_FOG
+ vec3 fogOrigin = cameraPosition;
+ vec3 fogDirection = normalize(vWorldPosition - fogOrigin);
+ float fogDepth = distance(vWorldPosition, fogOrigin);
+
+ fogDepth *= fogDepth;
+
+ float heightFactor = 0.05;
+ float fogFactor = heightFactor * exp(-fogOrigin.y * fogDensity) * (
+ 1.0 - exp(-fogDepth * fogDirection.y * fogDensity)) / fogDirection.y;
+ fogFactor = saturate(fogFactor);
+
+ gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );
+ #endif`;
+
+ THREE.ShaderChunk.fog_pars_fragment = `
+ #ifdef USE_FOG
+ uniform float fogTime;
+ uniform vec3 fogColor;
+ varying vec3 vWorldPosition;
+ #ifdef FOG_EXP2
+ uniform float fogDensity;
+ #else
+ uniform float fogNear;
+ uniform float fogFar;
+ #endif
+ #endif`;
+
+ THREE.ShaderChunk.fog_vertex = `
+ #ifdef USE_FOG
+ vWorldPosition = (modelMatrix * vec4(transformed, 1.0 )).xyz;
+ #endif`;
+
+ THREE.ShaderChunk.fog_pars_vertex = `
+ #ifdef USE_FOG
+ varying vec3 vWorldPosition;
+ #endif`;
+
+ this.threejs_ = new THREE.WebGLRenderer({
+ antialias: false,
+ });
+ this.threejs_.outputEncoding = THREE.sRGBEncoding;
+ this.threejs_.gammaFactor = 2.2;
+ this.threejs_.shadowMap.enabled = true;
+ this.threejs_.shadowMap.type = THREE.PCFSoftShadowMap;
+ this.threejs_.setPixelRatio(window.devicePixelRatio);
+ this.threejs_.setSize(window.innerWidth, window.innerHeight);
+ this.threejs_.domElement.id = DOM_IDS.THREEJS;
+
+ document.getElementById('container').appendChild(this.threejs_.domElement);
+
+ window.addEventListener('resize', () => {
+ this._OnWindowResize();
+ }, false);
+
+ const fov = 60;
+ const aspect = 1920 / 1080;
+ const near = 1.0;
+ const far = 10000.0;
+ this.camera_ = new THREE.PerspectiveCamera(fov, aspect, near, far);
+ this.camera_.position.set(25, 10, 25);
+
+ this.scene_ = new THREE.Scene();
+ this.scene_.fog = new THREE.FogExp2(0x89b2eb, 0.00002);
+
+ let light = new THREE.DirectionalLight(0x8088b3, 0.7);
+ light.position.set(-10, 500, 10);
+ light.target.position.set(0, 0, 0);
+ light.castShadow = true;
+ light.shadow.bias = -0.001;
+ light.shadow.mapSize.width = 4096;
+ light.shadow.mapSize.height = 4096;
+ light.shadow.camera.near = 0.1;
+ light.shadow.camera.far = 1000.0;
+ light.shadow.camera.left = 100;
+ light.shadow.camera.right = -100;
+ light.shadow.camera.top = 100;
+ light.shadow.camera.bottom = -100;
+ this.scene_.add(light);
+
+ this.sun_ = light;
+
+ this.LoadSky_();
+ }
+ _OnWindowResize() {
+ throw new Error('Method not implemented.');
+ }
+
+ LoadSky_() {
+ const hemiLight = new THREE.HemisphereLight(0x424a75, 0x6a88b5, 0.7);
+ // hemiLight.color.setHSL(0.6, 1, 0.4);
+ // hemiLight.groundColor.setHSL(0.095, 1, 0.5);
+ this.scene_.add(hemiLight);
+
+
+ const loader = new THREE.CubeTextureLoader();
+ const texture = loader.load([
+ './resources/terrain/space-posx.jpg',
+ './resources/terrain/space-negx.jpg',
+ './resources/terrain/space-posy.jpg',
+ './resources/terrain/space-negy.jpg',
+ './resources/terrain/space-posz.jpg',
+ './resources/terrain/space-negz.jpg',
+ ]);
+ texture.encoding = THREE.sRGBEncoding;
+
+ const uniforms = {
+ "topColor": { value: new THREE.Color(0x000000) },
+ "bottomColor": { value: new THREE.Color(0x5d679e) },
+ "offset": { value: -500 },
+ "exponent": { value: 0.3 },
+ "background": { value: texture },
+ };
+ // uniforms["topColor"].value.copy(hemiLight.color);
+
+ this.scene_.fog.color.copy(uniforms["bottomColor"].value);
+
+
+ const skyGeo = new THREE.SphereBufferGeometry(5000, 32, 15);
+ const skyMat = new THREE.ShaderMaterial({
+ uniforms: uniforms,
+ vertexShader: _VS,
+ fragmentShader: _FS,
+ side: THREE.BackSide
+ });
+
+ const sky = new THREE.Mesh(skyGeo, skyMat);
+ this.scene_.add(sky);
+ }
+
+ Update(_) {
+ const player = this.FindEntity('player');
+ if (!player) {
+ return;
+ }
+ const pos = player._position;
+
+ this.sun_.position.copy(pos);
+ this.sun_.position.add(new THREE.Vector3(-50, 200, -10));
+ this.sun_.target.position.copy(pos);
+ this.sun_.updateMatrixWorld();
+ this.sun_.target.updateMatrixWorld();
+ }
+}
+
+export {
+ ThreeJSController
+}
\ No newline at end of file
diff --git a/client/src/ui-controller.ts b/packages/client/src/ui-controller.ts
similarity index 94%
rename from client/src/ui-controller.ts
rename to packages/client/src/ui-controller.ts
index 74b7bcb8..7b6a53f7 100644
--- a/client/src/ui-controller.ts
+++ b/packages/client/src/ui-controller.ts
@@ -1,5 +1,8 @@
+import { Constants } from 'shared';
import { Component } from './entity';
+const { DOM_IDS, KNOWN_ENTITIES, NAMED_COMPONENTS, STATE_TYPES } = Constants;
+
class UIController extends Component {
_params: any;
_quests: {};
diff --git a/client/src/utils.ts b/packages/client/src/utils.ts
similarity index 100%
rename from client/src/utils.ts
rename to packages/client/src/utils.ts
diff --git a/client/styles/base.css b/packages/client/styles/base.css
similarity index 100%
rename from client/styles/base.css
rename to packages/client/styles/base.css
diff --git a/client/tsconfig.json b/packages/client/tsconfig.json
similarity index 56%
rename from client/tsconfig.json
rename to packages/client/tsconfig.json
index 2e0e5d9e..c2c0b34c 100644
--- a/client/tsconfig.json
+++ b/packages/client/tsconfig.json
@@ -1,10 +1,12 @@
{
- "extends": "../tsconfig.packages.json",
+ "extends": "../../tsconfig.packages.json",
"compilerOptions": {
"rootDir": "src",
"outDir": "dist",
"target": "ES6",
- "lib": ["ESNext", "dom"]
+ "lib": ["ESNext", "DOM"],
+ "module": "ESNext",
+ "moduleResolution": "Node"
},
"include": ["./src/*.ts"],
"exclude": ["./dist", "node_modules"]
diff --git a/server/dist/index.js b/packages/server/dist/index.js
similarity index 100%
rename from server/dist/index.js
rename to packages/server/dist/index.js
diff --git a/server/dist/scripts/login-queue.js b/packages/server/dist/scripts/login-queue.js
similarity index 100%
rename from server/dist/scripts/login-queue.js
rename to packages/server/dist/scripts/login-queue.js
diff --git a/server/dist/scripts/world-client.js b/packages/server/dist/scripts/world-client.js
similarity index 100%
rename from server/dist/scripts/world-client.js
rename to packages/server/dist/scripts/world-client.js
diff --git a/server/dist/scripts/world-entity.js b/packages/server/dist/scripts/world-entity.js
similarity index 100%
rename from server/dist/scripts/world-entity.js
rename to packages/server/dist/scripts/world-entity.js
diff --git a/server/dist/scripts/world-manager.js b/packages/server/dist/scripts/world-manager.js
similarity index 100%
rename from server/dist/scripts/world-manager.js
rename to packages/server/dist/scripts/world-manager.js
diff --git a/server/dist/scripts/world-server.js b/packages/server/dist/scripts/world-server.js
similarity index 100%
rename from server/dist/scripts/world-server.js
rename to packages/server/dist/scripts/world-server.js
diff --git a/server/package-lock.json b/packages/server/package-lock.json
similarity index 100%
rename from server/package-lock.json
rename to packages/server/package-lock.json
diff --git a/server/package.json b/packages/server/package.json
similarity index 100%
rename from server/package.json
rename to packages/server/package.json
diff --git a/server/src/index.ts b/packages/server/src/index.ts
similarity index 100%
rename from server/src/index.ts
rename to packages/server/src/index.ts
diff --git a/server/src/scripts/login-queue.ts b/packages/server/src/scripts/login-queue.ts
similarity index 90%
rename from server/src/scripts/login-queue.ts
rename to packages/server/src/scripts/login-queue.ts
index 5cf46adb..97ac4caa 100644
--- a/server/src/scripts/login-queue.ts
+++ b/packages/server/src/scripts/login-queue.ts
@@ -1,6 +1,7 @@
-import { EVENT_TYPES, STATE_TYPES } from "shared/src/constants";
-import type {IOnMessageArgs, TEvt} from "shared/src/globaltypes";
+import {Constants} from 'shared';
+import type {GlobalTypes} from "shared";
+const { EVENT_TYPES, STATE_TYPES } = Constants;
interface IState {}
interface IOnEvent {
@@ -9,7 +10,7 @@ interface IOnEvent {
interface IFiniteStateMachine {
_currentState: IState,
- onEvent(evt: TEvt, data?: any): any;
+ onEvent(evt: GlobalTypes.TEvt, data?: any): any;
Broadcast(evt: string): void,
OnMessage: IOnEvent
}
@@ -58,7 +59,9 @@ interface IFiniteStateMachine {
this.params = params;
}
- Broadcast(evt: {topic: EVENT_TYPES, params: any}) {
+
+
+ Broadcast(evt: {topic: any, params: any}) {
this.#parent.Broadcast(evt);
}
@@ -134,11 +137,11 @@ interface IFiniteStateMachine {
client.onMessage = (e: string, d: any) => this.OnMessage_(e, d);
- this.#fsm = new FiniteStateMachine((e: TEvt) => { this.OnEvent(e); });
+ this.#fsm = new FiniteStateMachine((e: any) => { this.OnEvent(e); });
this.#fsm.SetState(new Login_Await({}));
}
- OnEvent(evt: TEvt) {
+ OnEvent(evt: any) {
this.#onLogin?.(evt.params);
}
diff --git a/server/src/scripts/world-client.ts b/packages/server/src/scripts/world-client.ts
similarity index 91%
rename from server/src/scripts/world-client.ts
rename to packages/server/src/scripts/world-client.ts
index 9e1d32bb..4b932514 100644
--- a/server/src/scripts/world-client.ts
+++ b/packages/server/src/scripts/world-client.ts
@@ -1,8 +1,12 @@
import { quat, vec3 } from 'gl-matrix';
-import { _TIMEOUT, EVENT_TYPES } from 'shared/src/constants';
+
import type { WorldEntity } from './world-entity';
-import {SocketWrapper} from './world-server';
-import type {EntityManager} from 'shared/src/entity-manager'
+import { SocketWrapper } from './world-server';
+
+import { Constants, EntityManager as aEntityManager } from 'shared';
+
+const { _TIMEOUT, EVENT_TYPES, EntityManager, STATE_TYPES } = { ...Constants, ...aEntityManager };
+
class WorldClient {
entity: WorldEntity;
client: SocketWrapper;
@@ -18,10 +22,10 @@ class WorldClient {
this.entity = entity;
// Hack
- this.entity.onEvent_ = (t: EVENT_TYPES, d?: any) => this.OnEntityEvent_(t, d);
+ this.entity.onEvent_ = (t: any, d?: any) => this.OnEntityEvent_(t, d);
this.client = client;
- this.client.onMessage = (e: EVENT_TYPES, d: any) => this.OnMessage_(e, d);
+ this.client.onMessage = (e: any, d: any) => this.OnMessage_(e, d);
this.client.Send(EVENT_TYPES.WORLD_PLAYER, this.entity.CreatePlayerPacket_());
this.client.Send(EVENT_TYPES.WORLD_STATS, this.entity.CreateStatsPacket_());
@@ -43,13 +47,13 @@ class WorldClient {
OnDeath() { }
- OnEntityEvent_(t: EVENT_TYPES, d: any) {
+ OnEntityEvent_(t: any, d: any) {
if (t == EVENT_TYPES.ATTACK_DAMAGE) {
this.OnDamageEvent_(d);
}
}
- OnMessage_(evt: EVENT_TYPES, data: any) {
+ OnMessage_(evt: string, data: any) {
this.#timeout = _TIMEOUT;
if (evt == EVENT_TYPES.WORLD_UPDATE) {
@@ -183,8 +187,8 @@ class WorldNetworkClient extends WorldClient {
class AIStateMachine {
currentState_: any;
entity: any;
- terrain_: EntityManager;
- constructor(entity: WorldEntity, terrain: EntityManager) {
+ terrain_: InstanceType;
+ constructor(entity: WorldEntity, terrain: InstanceType) {
this.currentState_ = null;
this.entity = entity;
this.terrain_ = terrain;
@@ -322,7 +326,7 @@ class AIState_WaitAttackDone extends AIState {
class FakeClient extends SocketWrapper {
constructor() {
super(null)
- }
+ }
Send(msg, data) { }
@@ -330,7 +334,7 @@ class FakeClient extends SocketWrapper {
};
class WorldAIClient extends WorldClient {
- constructor(entity: WorldEntity, terrain: EntityManager, onDeath) {
+ constructor(entity: WorldEntity, terrain: InstanceType, onDeath) {
super(new FakeClient(), entity);
this.terrain_ = terrain;
this.onDeath_ = onDeath;
diff --git a/server/src/scripts/world-entity.ts b/packages/server/src/scripts/world-entity.ts
similarity index 96%
rename from server/src/scripts/world-entity.ts
rename to packages/server/src/scripts/world-entity.ts
index 22ec86fd..df54f5b7 100644
--- a/server/src/scripts/world-entity.ts
+++ b/packages/server/src/scripts/world-entity.ts
@@ -1,9 +1,10 @@
import { quat, vec3 } from 'gl-matrix';
-import { WEAPONS_DATA } from 'shared/src/defs';
-import { STATE_TYPES, EVENT_TYPES, ATTACK_TYPES } from 'shared/src/constants'
+import { Constants, Defs } from 'shared';
// import { IWorldEntity } from 'shared/src/globaltypes';
-import type {WorldClient} from "./world-client";
+import type { WorldClient } from "./world-client";
+
+const { STATE_TYPES, EVENT_TYPES, ATTACK_TYPES, WEAPONS_DATA } = { ...Constants, ...Defs };
class Action_Attack {
#onAction: any;
@@ -136,7 +137,7 @@ class WorldEntity {
];
}
- UpdateTransform(transformData: [STATE_TYPES, vec3, quat]) {
+ UpdateTransform(transformData: [string, vec3, quat]) {
const newState = transformData[0];
const [vecX, vecY, vecZ] = transformData[1];
const [quatX, quatY, quatZ, quatW] = transformData[2]
@@ -255,7 +256,7 @@ class WorldEntity {
}
// this seems wrong to me. TS doesn't have a typeof ENUM it seems.
- SetState(s: STATE_TYPES) {
+ SetState(s: string) {
if (this.state_ != STATE_TYPES.DEATH) {
this.state_ = s;
}
diff --git a/server/src/scripts/world-manager.ts b/packages/server/src/scripts/world-manager.ts
similarity index 96%
rename from server/src/scripts/world-manager.ts
rename to packages/server/src/scripts/world-manager.ts
index 732919b7..46723024 100644
--- a/server/src/scripts/world-manager.ts
+++ b/packages/server/src/scripts/world-manager.ts
@@ -4,9 +4,9 @@ import { WorldAIClient, WorldNetworkClient } from './world-client';
import { WorldEntity } from './world-entity';
import { SpatialHashGrid } from 'shared/src/spatial-hash-grid';
-import { HeightGenerator } from 'shared/src/terrain-height';
-import { CHARACTER_MODELS } from 'shared/src/defs';
-import {CLASS_TYPES} from 'shared/src/constants'
+import { HeightGenerator } from 'shared';
+import { CHARACTER_MODELS } from 'shared';
+import {CLASS_TYPES} from 'shared'
class MonsterSpawner {
parent_: any;
diff --git a/server/src/scripts/world-server.ts b/packages/server/src/scripts/world-server.ts
similarity index 97%
rename from server/src/scripts/world-server.ts
rename to packages/server/src/scripts/world-server.ts
index 31041626..882d385d 100644
--- a/server/src/scripts/world-server.ts
+++ b/packages/server/src/scripts/world-server.ts
@@ -1,5 +1,5 @@
import { performance } from 'perf_hooks';
-import {EVENT_TYPES} from 'shared/src/constants'
+import {EVENT_TYPES} from 'shared'
import { WorldManager } from './world-manager';
import { LoginQueue } from './login-queue';
diff --git a/server/tsconfig.json b/packages/server/tsconfig.json
similarity index 57%
rename from server/tsconfig.json
rename to packages/server/tsconfig.json
index 692edb0a..af521dca 100644
--- a/server/tsconfig.json
+++ b/packages/server/tsconfig.json
@@ -1,8 +1,10 @@
{
- "extends": "../tsconfig.packages.json",
+ "extends": "../../tsconfig.packages.json",
"compilerOptions": {
"rootDir": "src",
- "outDir": "dist"
+ "outDir": "dist",
+ "target": "ES6",
+ "moduleResolution": "Node"
},
"include": ["./src/*.ts"],
"exclude": ["./dist", "node_modules"],
diff --git a/shared/package.json b/packages/shared/package.json
similarity index 87%
rename from shared/package.json
rename to packages/shared/package.json
index 3daf9629..cc049af1 100644
--- a/shared/package.json
+++ b/packages/shared/package.json
@@ -7,5 +7,5 @@
"tsc-watch": "^4.2.9",
"typescript": "^4.2.3"
},
- "main": "dist/index.js"
+ "main": "src/index.ts"
}
diff --git a/shared/src/OrbitControls.ts b/packages/shared/src/OrbitControls.ts
similarity index 100%
rename from shared/src/OrbitControls.ts
rename to packages/shared/src/OrbitControls.ts
diff --git a/shared/src/constants.ts b/packages/shared/src/constants.ts
similarity index 98%
rename from shared/src/constants.ts
rename to packages/shared/src/constants.ts
index 1b4c1db8..e3dcecf8 100644
--- a/shared/src/constants.ts
+++ b/packages/shared/src/constants.ts
@@ -42,6 +42,7 @@ enum EVENT_TYPES {
CONNECT = 'connect',
NETWORK_UPDATE = 'network.update',
EVENTS_NETWORK = 'events.network',
+ INPUT_PICKED = 'input.picked',
}
enum KNOWN_ENTITIES {
@@ -119,4 +120,4 @@ export {
STATE_TYPES,
WEAPON_TYPES_ENUM,
ANIM_TYPES,
-}
\ No newline at end of file
+};
\ No newline at end of file
diff --git a/packages/shared/src/dat.gui.module.ts b/packages/shared/src/dat.gui.module.ts
new file mode 100644
index 00000000..b545c77a
--- /dev/null
+++ b/packages/shared/src/dat.gui.module.ts
@@ -0,0 +1,3576 @@
+// @ts-nocheck
+/**
+ * dat-gui JavaScript Controller Library
+ * http://code.google.com/p/dat-gui
+ *
+ * Copyright 2011 Data Arts Team, Google Creative Lab
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+function ___$insertStyle(css) {
+
+ if (!css) {
+
+ return;
+
+ }
+ if (typeof window === 'undefined') {
+
+ return;
+
+ }
+
+ var style = document.createElement('style');
+
+ style.setAttribute('type', 'text/css');
+ style.innerHTML = css;
+ document.head.appendChild(style);
+
+ return css;
+
+}
+
+function colorToString(color, forceCSSHex) {
+
+ var colorFormat = color.__state.conversionName.toString();
+ var r = Math.round(color.r);
+ var g = Math.round(color.g);
+ var b = Math.round(color.b);
+ var a = color.a;
+ var h = Math.round(color.h);
+ var s = color.s.toFixed(1);
+ var v = color.v.toFixed(1);
+ if (forceCSSHex || colorFormat === 'THREE_CHAR_HEX' || colorFormat === 'SIX_CHAR_HEX') {
+
+ var str = color.hex.toString(16);
+ while (str.length < 6) {
+
+ str = '0' + str;
+
+ }
+ return '#' + str;
+
+ } else if (colorFormat === 'CSS_RGB') {
+
+ return 'rgb(' + r + ',' + g + ',' + b + ')';
+
+ } else if (colorFormat === 'CSS_RGBA') {
+
+ return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';
+
+ } else if (colorFormat === 'HEX') {
+
+ return '0x' + color.hex.toString(16);
+
+ } else if (colorFormat === 'RGB_ARRAY') {
+
+ return '[' + r + ',' + g + ',' + b + ']';
+
+ } else if (colorFormat === 'RGBA_ARRAY') {
+
+ return '[' + r + ',' + g + ',' + b + ',' + a + ']';
+
+ } else if (colorFormat === 'RGB_OBJ') {
+
+ return '{r:' + r + ',g:' + g + ',b:' + b + '}';
+
+ } else if (colorFormat === 'RGBA_OBJ') {
+
+ return '{r:' + r + ',g:' + g + ',b:' + b + ',a:' + a + '}';
+
+ } else if (colorFormat === 'HSV_OBJ') {
+
+ return '{h:' + h + ',s:' + s + ',v:' + v + '}';
+
+ } else if (colorFormat === 'HSVA_OBJ') {
+
+ return '{h:' + h + ',s:' + s + ',v:' + v + ',a:' + a + '}';
+
+ }
+ return 'unknown format';
+
+}
+
+var ARR_EACH = Array.prototype.forEach;
+var ARR_SLICE = Array.prototype.slice;
+var Common = {
+ BREAK: {},
+ extend: function extend(target) {
+
+ this.each(ARR_SLICE.call(arguments, 1), function (obj) {
+
+ var keys = this.isObject(obj) ? Object.keys(obj) : [];
+ keys.forEach(function (key) {
+
+ if (!this.isUndefined(obj[key])) {
+
+ target[key] = obj[key];
+
+ }
+
+ }.bind(this));
+
+ }, this);
+ return target;
+
+ },
+ defaults: function defaults(target) {
+
+ this.each(ARR_SLICE.call(arguments, 1), function (obj) {
+
+ var keys = this.isObject(obj) ? Object.keys(obj) : [];
+ keys.forEach(function (key) {
+
+ if (this.isUndefined(target[key])) {
+
+ target[key] = obj[key];
+
+ }
+
+ }.bind(this));
+
+ }, this);
+ return target;
+
+ },
+ compose: function compose() {
+
+ var toCall = ARR_SLICE.call(arguments);
+ return function () {
+
+ var args = ARR_SLICE.call(arguments);
+ for (var i = toCall.length - 1; i >= 0; i--) {
+
+ args = [toCall[i].apply(this, args)];
+
+ }
+ return args[0];
+
+ };
+
+ },
+ each: function each(obj, itr, scope) {
+
+ if (!obj) {
+
+ return;
+
+ }
+ if (ARR_EACH && obj.forEach && obj.forEach === ARR_EACH) {
+
+ obj.forEach(itr, scope);
+
+ } else if (obj.length === obj.length + 0) {
+
+ var key = void 0;
+ var l = void 0;
+ for (key = 0, l = obj.length; key < l; key++) {
+
+ if (key in obj && itr.call(scope, obj[key], key) === this.BREAK) {
+
+ return;
+
+ }
+
+ }
+
+ } else {
+
+ for (var _key in obj) {
+
+ if (itr.call(scope, obj[_key], _key) === this.BREAK) {
+
+ return;
+
+ }
+
+ }
+
+ }
+
+ },
+ defer: function defer(fnc) {
+
+ setTimeout(fnc, 0);
+
+ },
+ debounce: function debounce(func, threshold, callImmediately) {
+
+ var timeout = void 0;
+ return function () {
+
+ var obj = this;
+ var args = arguments;
+ function delayed() {
+
+ timeout = null;
+ if (!callImmediately) func.apply(obj, args);
+
+ }
+ var callNow = callImmediately || !timeout;
+ clearTimeout(timeout);
+ timeout = setTimeout(delayed, threshold);
+ if (callNow) {
+
+ func.apply(obj, args);
+
+ }
+
+ };
+
+ },
+ toArray: function toArray(obj) {
+
+ if (obj.toArray) return obj.toArray();
+ return ARR_SLICE.call(obj);
+
+ },
+ isUndefined: function isUndefined(obj) {
+
+ return obj === undefined;
+
+ },
+ isNull: function isNull(obj) {
+
+ return obj === null;
+
+ },
+ isNaN: function (_isNaN) {
+
+ function isNaN() {
+
+ return _isNaN.apply(this, arguments);
+
+ }
+ isNaN.toString = function () {
+
+ return _isNaN.toString();
+
+ };
+ return isNaN;
+
+ }(function (obj) {
+
+ return isNaN(obj);
+
+ }),
+ isArray: Array.isArray || function (obj) {
+
+ return obj.constructor === Array;
+
+ },
+ isObject: function isObject(obj) {
+
+ return obj === Object(obj);
+
+ },
+ isNumber: function isNumber(obj) {
+
+ return obj === obj + 0;
+
+ },
+ isString: function isString(obj) {
+
+ return obj === obj + '';
+
+ },
+ isBoolean: function isBoolean(obj) {
+
+ return obj === false || obj === true;
+
+ },
+ isFunction: function isFunction(obj) {
+
+ return obj instanceof Function;
+
+ }
+};
+
+var INTERPRETATIONS = [
+ {
+ litmus: Common.isString,
+ conversions: {
+ THREE_CHAR_HEX: {
+ read: function read(original) {
+
+ var test = original.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);
+ if (test === null) {
+
+ return false;
+
+ }
+ return {
+ space: 'HEX',
+ hex: parseInt('0x' + test[1].toString() + test[1].toString() + test[2].toString() + test[2].toString() + test[3].toString() + test[3].toString(), 0)
+ };
+
+ },
+ write: colorToString
+ },
+ SIX_CHAR_HEX: {
+ read: function read(original) {
+
+ var test = original.match(/^#([A-F0-9]{6})$/i);
+ if (test === null) {
+
+ return false;
+
+ }
+ return {
+ space: 'HEX',
+ hex: parseInt('0x' + test[1].toString(), 0)
+ };
+
+ },
+ write: colorToString
+ },
+ CSS_RGB: {
+ read: function read(original) {
+
+ var test = original.match(/^rgb\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/);
+ if (test === null) {
+
+ return false;
+
+ }
+ return {
+ space: 'RGB',
+ r: parseFloat(test[1]),
+ g: parseFloat(test[2]),
+ b: parseFloat(test[3])
+ };
+
+ },
+ write: colorToString
+ },
+ CSS_RGBA: {
+ read: function read(original) {
+
+ var test = original.match(/^rgba\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/);
+ if (test === null) {
+
+ return false;
+
+ }
+ return {
+ space: 'RGB',
+ r: parseFloat(test[1]),
+ g: parseFloat(test[2]),
+ b: parseFloat(test[3]),
+ a: parseFloat(test[4])
+ };
+
+ },
+ write: colorToString
+ }
+ }
+ },
+ {
+ litmus: Common.isNumber,
+ conversions: {
+ HEX: {
+ read: function read(original) {
+
+ return {
+ space: 'HEX',
+ hex: original,
+ conversionName: 'HEX'
+ };
+
+ },
+ write: function write(color) {
+
+ return color.hex;
+
+ }
+ }
+ }
+ },
+ {
+ litmus: Common.isArray,
+ conversions: {
+ RGB_ARRAY: {
+ read: function read(original) {
+
+ if (original.length !== 3) {
+
+ return false;
+
+ }
+ return {
+ space: 'RGB',
+ r: original[0],
+ g: original[1],
+ b: original[2]
+ };
+
+ },
+ write: function write(color) {
+
+ return [color.r, color.g, color.b];
+
+ }
+ },
+ RGBA_ARRAY: {
+ read: function read(original) {
+
+ if (original.length !== 4) return false;
+ return {
+ space: 'RGB',
+ r: original[0],
+ g: original[1],
+ b: original[2],
+ a: original[3]
+ };
+
+ },
+ write: function write(color) {
+
+ return [color.r, color.g, color.b, color.a];
+
+ }
+ }
+ }
+ },
+ {
+ litmus: Common.isObject,
+ conversions: {
+ RGBA_OBJ: {
+ read: function read(original) {
+
+ if (Common.isNumber(original.r) && Common.isNumber(original.g) && Common.isNumber(original.b) && Common.isNumber(original.a)) {
+
+ return {
+ space: 'RGB',
+ r: original.r,
+ g: original.g,
+ b: original.b,
+ a: original.a
+ };
+
+ }
+ return false;
+
+ },
+ write: function write(color) {
+
+ return {
+ r: color.r,
+ g: color.g,
+ b: color.b,
+ a: color.a
+ };
+
+ }
+ },
+ RGB_OBJ: {
+ read: function read(original) {
+
+ if (Common.isNumber(original.r) && Common.isNumber(original.g) && Common.isNumber(original.b)) {
+
+ return {
+ space: 'RGB',
+ r: original.r,
+ g: original.g,
+ b: original.b
+ };
+
+ }
+ return false;
+
+ },
+ write: function write(color) {
+
+ return {
+ r: color.r,
+ g: color.g,
+ b: color.b
+ };
+
+ }
+ },
+ HSVA_OBJ: {
+ read: function read(original) {
+
+ if (Common.isNumber(original.h) && Common.isNumber(original.s) && Common.isNumber(original.v) && Common.isNumber(original.a)) {
+
+ return {
+ space: 'HSV',
+ h: original.h,
+ s: original.s,
+ v: original.v,
+ a: original.a
+ };
+
+ }
+ return false;
+
+ },
+ write: function write(color) {
+
+ return {
+ h: color.h,
+ s: color.s,
+ v: color.v,
+ a: color.a
+ };
+
+ }
+ },
+ HSV_OBJ: {
+ read: function read(original) {
+
+ if (Common.isNumber(original.h) && Common.isNumber(original.s) && Common.isNumber(original.v)) {
+
+ return {
+ space: 'HSV',
+ h: original.h,
+ s: original.s,
+ v: original.v
+ };
+
+ }
+ return false;
+
+ },
+ write: function write(color) {
+
+ return {
+ h: color.h,
+ s: color.s,
+ v: color.v
+ };
+
+ }
+ }
+ }
+ }];
+var result = void 0;
+var toReturn = void 0;
+var interpret = function interpret() {
+
+ toReturn = false;
+ var original = arguments.length > 1 ? Common.toArray(arguments) : arguments[0];
+ Common.each(INTERPRETATIONS, function (family) {
+
+ if (family.litmus(original)) {
+
+ Common.each(family.conversions, function (conversion, conversionName) {
+
+ result = conversion.read(original);
+ if (toReturn === false && result !== false) {
+
+ toReturn = result;
+ result.conversionName = conversionName;
+ result.conversion = conversion;
+ return Common.BREAK;
+
+ }
+
+ }, null);
+ return Common.BREAK;
+
+ }
+
+ });
+ return toReturn;
+
+};
+
+var tmpComponent = void 0;
+var ColorMath = {
+ hsv_to_rgb: function hsv_to_rgb(h, s, v) {
+
+ var hi = Math.floor(h / 60) % 6;
+ var f = h / 60 - Math.floor(h / 60);
+ var p = v * (1.0 - s);
+ var q = v * (1.0 - f * s);
+ var t = v * (1.0 - (1.0 - f) * s);
+ var c = [[v, t, p], [q, v, p], [p, v, t], [p, q, v], [t, p, v], [v, p, q]][hi];
+ return {
+ r: c[0] * 255,
+ g: c[1] * 255,
+ b: c[2] * 255
+ };
+
+ },
+ rgb_to_hsv: function rgb_to_hsv(r, g, b) {
+
+ var min = Math.min(r, g, b);
+ var max = Math.max(r, g, b);
+ var delta = max - min;
+ var h = void 0;
+ var s = void 0;
+ if (max !== 0) {
+
+ s = delta / max;
+
+ } else {
+
+ return {
+ h: NaN,
+ s: 0,
+ v: 0
+ };
+
+ }
+ if (r === max) {
+
+ h = (g - b) / delta;
+
+ } else if (g === max) {
+
+ h = 2 + (b - r) / delta;
+
+ } else {
+
+ h = 4 + (r - g) / delta;
+
+ }
+ h /= 6;
+ if (h < 0) {
+
+ h += 1;
+
+ }
+ return {
+ h: h * 360,
+ s: s,
+ v: max / 255
+ };
+
+ },
+ rgb_to_hex: function rgb_to_hex(r, g, b) {
+
+ var hex = this.hex_with_component(0, 2, r);
+ hex = this.hex_with_component(hex, 1, g);
+ hex = this.hex_with_component(hex, 0, b);
+ return hex;
+
+ },
+ component_from_hex: function component_from_hex(hex, componentIndex) {
+
+ return hex >> componentIndex * 8 & 0xFF;
+
+ },
+ hex_with_component: function hex_with_component(hex, componentIndex, value) {
+
+ return value << (tmpComponent = componentIndex * 8) | hex & ~(0xFF << tmpComponent);
+
+ }
+};
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
+
+ return typeof obj;
+
+} : function (obj) {
+
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+
+};
+
+
+
+
+
+
+
+
+
+
+
+var classCallCheck = function (instance, Constructor) {
+
+ if (!(instance instanceof Constructor)) {
+
+ throw new TypeError("Cannot call a class as a function");
+
+ }
+
+};
+
+var createClass = function () {
+
+ function defineProperties(target, props) {
+
+ for (var i = 0; i < props.length; i++) {
+
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+
+ }
+
+ }
+
+ return function (Constructor, protoProps, staticProps) {
+
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+
+ };
+
+}();
+
+
+
+
+
+
+
+var get = function get(object, property, receiver) {
+
+ if (object === null) object = Function.prototype;
+ var desc = Object.getOwnPropertyDescriptor(object, property);
+
+ if (desc === undefined) {
+
+ var parent = Object.getPrototypeOf(object);
+
+ if (parent === null) {
+
+ return undefined;
+
+ } else {
+
+ return get(parent, property, receiver);
+
+ }
+
+ } else if ("value" in desc) {
+
+ return desc.value;
+
+ } else {
+
+ var getter = desc.get;
+
+ if (getter === undefined) {
+
+ return undefined;
+
+ }
+
+ return getter.call(receiver);
+
+ }
+
+};
+
+var inherits = function (subClass, superClass) {
+
+ if (typeof superClass !== "function" && superClass !== null) {
+
+ throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
+
+ }
+
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
+
+};
+
+
+
+
+
+
+
+
+
+
+
+var possibleConstructorReturn = function (self, call) {
+
+ if (!self) {
+
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+
+ }
+
+ return call && (typeof call === "object" || typeof call === "function") ? call : self;
+
+};
+
+var Color = function () {
+
+ function Color() {
+
+ classCallCheck(this, Color);
+ this.__state = interpret.apply(this, arguments);
+ if (this.__state === false) {
+
+ throw new Error('Failed to interpret color arguments');
+
+ }
+ this.__state.a = this.__state.a || 1;
+
+ }
+ createClass(Color, [{
+ key: 'toString',
+ value: function toString() {
+
+ return colorToString(this);
+
+ }
+ }, {
+ key: 'toHexString',
+ value: function toHexString() {
+
+ return colorToString(this, true);
+
+ }
+ }, {
+ key: 'toOriginal',
+ value: function toOriginal() {
+
+ return this.__state.conversion.write(this);
+
+ }
+ }]);
+ return Color;
+
+}();
+function defineRGBComponent(target, component, componentHexIndex) {
+
+ Object.defineProperty(target, component, {
+ get: function get$$1() {
+
+ if (this.__state.space === 'RGB') {
+
+ return this.__state[component];
+
+ }
+ Color.recalculateRGB(this, component, componentHexIndex);
+ return this.__state[component];
+
+ },
+ set: function set$$1(v) {
+
+ if (this.__state.space !== 'RGB') {
+
+ Color.recalculateRGB(this, component, componentHexIndex);
+ this.__state.space = 'RGB';
+
+ }
+ this.__state[component] = v;
+
+ }
+ });
+
+}
+function defineHSVComponent(target, component) {
+
+ Object.defineProperty(target, component, {
+ get: function get$$1() {
+
+ if (this.__state.space === 'HSV') {
+
+ return this.__state[component];
+
+ }
+ Color.recalculateHSV(this);
+ return this.__state[component];
+
+ },
+ set: function set$$1(v) {
+
+ if (this.__state.space !== 'HSV') {
+
+ Color.recalculateHSV(this);
+ this.__state.space = 'HSV';
+
+ }
+ this.__state[component] = v;
+
+ }
+ });
+
+}
+Color.recalculateRGB = function (color, component, componentHexIndex) {
+
+ if (color.__state.space === 'HEX') {
+
+ color.__state[component] = ColorMath.component_from_hex(color.__state.hex, componentHexIndex);
+
+ } else if (color.__state.space === 'HSV') {
+
+ Common.extend(color.__state, ColorMath.hsv_to_rgb(color.__state.h, color.__state.s, color.__state.v));
+
+ } else {
+
+ throw new Error('Corrupted color state');
+
+ }
+
+};
+Color.recalculateHSV = function (color) {
+
+ var result = ColorMath.rgb_to_hsv(color.r, color.g, color.b);
+ Common.extend(color.__state, {
+ s: result.s,
+ v: result.v
+ });
+ if (!Common.isNaN(result.h)) {
+
+ color.__state.h = result.h;
+
+ } else if (Common.isUndefined(color.__state.h)) {
+
+ color.__state.h = 0;
+
+ }
+
+};
+Color.COMPONENTS = ['r', 'g', 'b', 'h', 's', 'v', 'hex', 'a'];
+defineRGBComponent(Color.prototype, 'r', 2);
+defineRGBComponent(Color.prototype, 'g', 1);
+defineRGBComponent(Color.prototype, 'b', 0);
+defineHSVComponent(Color.prototype, 'h');
+defineHSVComponent(Color.prototype, 's');
+defineHSVComponent(Color.prototype, 'v');
+Object.defineProperty(Color.prototype, 'a', {
+ get: function get$$1() {
+
+ return this.__state.a;
+
+ },
+ set: function set$$1(v) {
+
+ this.__state.a = v;
+
+ }
+});
+Object.defineProperty(Color.prototype, 'hex', {
+ get: function get$$1() {
+
+ if (this.__state.space !== 'HEX') {
+
+ this.__state.hex = ColorMath.rgb_to_hex(this.r, this.g, this.b);
+ this.__state.space = 'HEX';
+
+ }
+ return this.__state.hex;
+
+ },
+ set: function set$$1(v) {
+
+ this.__state.space = 'HEX';
+ this.__state.hex = v;
+
+ }
+});
+
+var Controller = function () {
+
+ function Controller(object, property) {
+
+ classCallCheck(this, Controller);
+ this.initialValue = object[property];
+ this.domElement = document.createElement('div');
+ this.object = object;
+ this.property = property;
+ this.__onChange = undefined;
+ this.__onFinishChange = undefined;
+
+ }
+ createClass(Controller, [{
+ key: 'onChange',
+ value: function onChange(fnc) {
+
+ this.__onChange = fnc;
+ return this;
+
+ }
+ }, {
+ key: 'onFinishChange',
+ value: function onFinishChange(fnc) {
+
+ this.__onFinishChange = fnc;
+ return this;
+
+ }
+ }, {
+ key: 'setValue',
+ value: function setValue(newValue) {
+
+ this.object[this.property] = newValue;
+ if (this.__onChange) {
+
+ this.__onChange.call(this, newValue);
+
+ }
+ this.updateDisplay();
+ return this;
+
+ }
+ }, {
+ key: 'getValue',
+ value: function getValue() {
+
+ return this.object[this.property];
+
+ }
+ }, {
+ key: 'updateDisplay',
+ value: function updateDisplay() {
+
+ return this;
+
+ }
+ }, {
+ key: 'isModified',
+ value: function isModified() {
+
+ return this.initialValue !== this.getValue();
+
+ }
+ }]);
+ return Controller;
+
+}();
+
+var EVENT_MAP = {
+ HTMLEvents: ['change'],
+ MouseEvents: ['click', 'mousemove', 'mousedown', 'mouseup', 'mouseover'],
+ KeyboardEvents: ['keydown']
+};
+var EVENT_MAP_INV = {};
+Common.each(EVENT_MAP, function (v, k) {
+
+ Common.each(v, function (e) {
+
+ EVENT_MAP_INV[e] = k;
+
+ });
+
+});
+var CSS_VALUE_PIXELS = /(\d+(\.\d+)?)px/;
+function cssValueToPixels(val) {
+
+ if (val === '0' || Common.isUndefined(val)) {
+
+ return 0;
+
+ }
+ var match = val.match(CSS_VALUE_PIXELS);
+ if (!Common.isNull(match)) {
+
+ return parseFloat(match[1]);
+
+ }
+ return 0;
+
+}
+var dom = {
+ makeSelectable: function makeSelectable(elem, selectable) {
+
+ if (elem === undefined || elem.style === undefined) return;
+ elem.onselectstart = selectable ? function () {
+
+ return false;
+
+ } : function () { };
+ elem.style.MozUserSelect = selectable ? 'auto' : 'none';
+ elem.style.KhtmlUserSelect = selectable ? 'auto' : 'none';
+ elem.unselectable = selectable ? 'on' : 'off';
+
+ },
+ makeFullscreen: function makeFullscreen(elem, hor, vert) {
+
+ var vertical = vert;
+ var horizontal = hor;
+ if (Common.isUndefined(horizontal)) {
+
+ horizontal = true;
+
+ }
+ if (Common.isUndefined(vertical)) {
+
+ vertical = true;
+
+ }
+ elem.style.position = 'absolute';
+ if (horizontal) {
+
+ elem.style.left = 0;
+ elem.style.right = 0;
+
+ }
+ if (vertical) {
+
+ elem.style.top = 0;
+ elem.style.bottom = 0;
+
+ }
+
+ },
+ fakeEvent: function fakeEvent(elem, eventType, pars, aux) {
+
+ var params = pars || {};
+ var className = EVENT_MAP_INV[eventType];
+ if (!className) {
+
+ throw new Error('Event type ' + eventType + ' not supported.');
+
+ }
+ var evt = document.createEvent(className);
+ switch (className) {
+
+ case 'MouseEvents':
+ {
+
+ var clientX = params.x || params.clientX || 0;
+ var clientY = params.y || params.clientY || 0;
+ evt.initMouseEvent(eventType, params.bubbles || false, params.cancelable || true, window, params.clickCount || 1, 0,
+ 0,
+ clientX,
+ clientY,
+ false, false, false, false, 0, null);
+ break;
+
+ }
+ case 'KeyboardEvents':
+ {
+
+ var init = evt.initKeyboardEvent || evt.initKeyEvent;
+ Common.defaults(params, {
+ cancelable: true,
+ ctrlKey: false,
+ altKey: false,
+ shiftKey: false,
+ metaKey: false,
+ keyCode: undefined,
+ charCode: undefined
+ });
+ init(eventType, params.bubbles || false, params.cancelable, window, params.ctrlKey, params.altKey, params.shiftKey, params.metaKey, params.keyCode, params.charCode);
+ break;
+
+ }
+ default:
+ {
+
+ evt.initEvent(eventType, params.bubbles || false, params.cancelable || true);
+ break;
+
+ }
+
+ }
+ Common.defaults(evt, aux);
+ elem.dispatchEvent(evt);
+
+ },
+ bind: function bind(elem, event, func, newBool) {
+
+ var bool = newBool || false;
+ if (elem.addEventListener) {
+
+ elem.addEventListener(event, func, bool);
+
+ } else if (elem.attachEvent) {
+
+ elem.attachEvent('on' + event, func);
+
+ }
+ return dom;
+
+ },
+ unbind: function unbind(elem, event, func, newBool) {
+
+ var bool = newBool || false;
+ if (elem.removeEventListener) {
+
+ elem.removeEventListener(event, func, bool);
+
+ } else if (elem.detachEvent) {
+
+ elem.detachEvent('on' + event, func);
+
+ }
+ return dom;
+
+ },
+ addClass: function addClass(elem, className) {
+
+ if (elem.className === undefined) {
+
+ elem.className = className;
+
+ } else if (elem.className !== className) {
+
+ var classes = elem.className.split(/ +/);
+ if (classes.indexOf(className) === - 1) {
+
+ classes.push(className);
+ elem.className = classes.join(' ').replace(/^\s+/, '').replace(/\s+$/, '');
+
+ }
+
+ }
+ return dom;
+
+ },
+ removeClass: function removeClass(elem, className) {
+
+ if (className) {
+
+ if (elem.className === className) {
+
+ elem.removeAttribute('class');
+
+ } else {
+
+ var classes = elem.className.split(/ +/);
+ var index = classes.indexOf(className);
+ if (index !== - 1) {
+
+ classes.splice(index, 1);
+ elem.className = classes.join(' ');
+
+ }
+
+ }
+
+ } else {
+
+ elem.className = undefined;
+
+ }
+ return dom;
+
+ },
+ hasClass: function hasClass(elem, className) {
+
+ return new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)').test(elem.className) || false;
+
+ },
+ getWidth: function getWidth(elem) {
+
+ var style = getComputedStyle(elem);
+ return cssValueToPixels(style['border-left-width']) + cssValueToPixels(style['border-right-width']) + cssValueToPixels(style['padding-left']) + cssValueToPixels(style['padding-right']) + cssValueToPixels(style.width);
+
+ },
+ getHeight: function getHeight(elem) {
+
+ var style = getComputedStyle(elem);
+ return cssValueToPixels(style['border-top-width']) + cssValueToPixels(style['border-bottom-width']) + cssValueToPixels(style['padding-top']) + cssValueToPixels(style['padding-bottom']) + cssValueToPixels(style.height);
+
+ },
+ getOffset: function getOffset(el) {
+
+ var elem = el;
+ var offset = { left: 0, top: 0 };
+ if (elem.offsetParent) {
+
+ do {
+
+ offset.left += elem.offsetLeft;
+ offset.top += elem.offsetTop;
+ elem = elem.offsetParent;
+
+ } while (elem);
+
+ }
+ return offset;
+
+ },
+ isActive: function isActive(elem) {
+
+ return elem === document.activeElement && (elem.type || elem.href);
+
+ }
+};
+
+var BooleanController = function (_Controller) {
+
+ inherits(BooleanController, _Controller);
+ function BooleanController(object, property) {
+
+ classCallCheck(this, BooleanController);
+ var _this2 = possibleConstructorReturn(this, (BooleanController.__proto__ || Object.getPrototypeOf(BooleanController)).call(this, object, property));
+ var _this = _this2;
+ _this2.__prev = _this2.getValue();
+ _this2.__checkbox = document.createElement('input');
+ _this2.__checkbox.setAttribute('type', 'checkbox');
+ function onChange() {
+
+ _this.setValue(!_this.__prev);
+
+ }
+ dom.bind(_this2.__checkbox, 'change', onChange, false);
+ _this2.domElement.appendChild(_this2.__checkbox);
+ _this2.updateDisplay();
+ return _this2;
+
+ }
+ createClass(BooleanController, [{
+ key: 'setValue',
+ value: function setValue(v) {
+
+ var toReturn = get(BooleanController.prototype.__proto__ || Object.getPrototypeOf(BooleanController.prototype), 'setValue', this).call(this, v);
+ if (this.__onFinishChange) {
+
+ this.__onFinishChange.call(this, this.getValue());
+
+ }
+ this.__prev = this.getValue();
+ return toReturn;
+
+ }
+ }, {
+ key: 'updateDisplay',
+ value: function updateDisplay() {
+
+ if (this.getValue() === true) {
+
+ this.__checkbox.setAttribute('checked', 'checked');
+ this.__checkbox.checked = true;
+ this.__prev = true;
+
+ } else {
+
+ this.__checkbox.checked = false;
+ this.__prev = false;
+
+ }
+ return get(BooleanController.prototype.__proto__ || Object.getPrototypeOf(BooleanController.prototype), 'updateDisplay', this).call(this);
+
+ }
+ }]);
+ return BooleanController;
+
+}(Controller);
+
+var OptionController = function (_Controller) {
+
+ inherits(OptionController, _Controller);
+ function OptionController(object, property, opts) {
+
+ classCallCheck(this, OptionController);
+ var _this2 = possibleConstructorReturn(this, (OptionController.__proto__ || Object.getPrototypeOf(OptionController)).call(this, object, property));
+ var options = opts;
+ var _this = _this2;
+ _this2.__select = document.createElement('select');
+ if (Common.isArray(options)) {
+
+ var map = {};
+ Common.each(options, function (element) {
+
+ map[element] = element;
+
+ });
+ options = map;
+
+ }
+ Common.each(options, function (value, key) {
+
+ var opt = document.createElement('option');
+ opt.innerHTML = key;
+ opt.setAttribute('value', value);
+ _this.__select.appendChild(opt);
+
+ });
+ _this2.updateDisplay();
+ dom.bind(_this2.__select, 'change', function () {
+
+ var desiredValue = this.options[this.selectedIndex].value;
+ _this.setValue(desiredValue);
+
+ });
+ _this2.domElement.appendChild(_this2.__select);
+ return _this2;
+
+ }
+ createClass(OptionController, [{
+ key: 'setValue',
+ value: function setValue(v) {
+
+ var toReturn = get(OptionController.prototype.__proto__ || Object.getPrototypeOf(OptionController.prototype), 'setValue', this).call(this, v);
+ if (this.__onFinishChange) {
+
+ this.__onFinishChange.call(this, this.getValue());
+
+ }
+ return toReturn;
+
+ }
+ }, {
+ key: 'updateDisplay',
+ value: function updateDisplay() {
+
+ if (dom.isActive(this.__select)) return this;
+ this.__select.value = this.getValue();
+ return get(OptionController.prototype.__proto__ || Object.getPrototypeOf(OptionController.prototype), 'updateDisplay', this).call(this);
+
+ }
+ }]);
+ return OptionController;
+
+}(Controller);
+
+var StringController = function (_Controller) {
+
+ inherits(StringController, _Controller);
+ function StringController(object, property) {
+
+ classCallCheck(this, StringController);
+ var _this2 = possibleConstructorReturn(this, (StringController.__proto__ || Object.getPrototypeOf(StringController)).call(this, object, property));
+ var _this = _this2;
+ function onChange() {
+
+ _this.setValue(_this.__input.value);
+
+ }
+ function onBlur() {
+
+ if (_this.__onFinishChange) {
+
+ _this.__onFinishChange.call(_this, _this.getValue());
+
+ }
+
+ }
+ _this2.__input = document.createElement('input');
+ _this2.__input.setAttribute('type', 'text');
+ dom.bind(_this2.__input, 'keyup', onChange);
+ dom.bind(_this2.__input, 'change', onChange);
+ dom.bind(_this2.__input, 'blur', onBlur);
+ dom.bind(_this2.__input, 'keydown', function (e) {
+
+ if (e.keyCode === 13) {
+
+ this.blur();
+
+ }
+
+ });
+ _this2.updateDisplay();
+ _this2.domElement.appendChild(_this2.__input);
+ return _this2;
+
+ }
+ createClass(StringController, [{
+ key: 'updateDisplay',
+ value: function updateDisplay() {
+
+ if (!dom.isActive(this.__input)) {
+
+ this.__input.value = this.getValue();
+
+ }
+ return get(StringController.prototype.__proto__ || Object.getPrototypeOf(StringController.prototype), 'updateDisplay', this).call(this);
+
+ }
+ }]);
+ return StringController;
+
+}(Controller);
+
+function numDecimals(x) {
+
+ var _x = x.toString();
+ if (_x.indexOf('.') > - 1) {
+
+ return _x.length - _x.indexOf('.') - 1;
+
+ }
+ return 0;
+
+}
+var NumberController = function (_Controller) {
+
+ inherits(NumberController, _Controller);
+ function NumberController(object, property, params) {
+
+ classCallCheck(this, NumberController);
+ var _this = possibleConstructorReturn(this, (NumberController.__proto__ || Object.getPrototypeOf(NumberController)).call(this, object, property));
+ var _params = params || {};
+ _this.__min = _params.min;
+ _this.__max = _params.max;
+ _this.__step = _params.step;
+ if (Common.isUndefined(_this.__step)) {
+
+ if (_this.initialValue === 0) {
+
+ _this.__impliedStep = 1;
+
+ } else {
+
+ _this.__impliedStep = Math.pow(10, Math.floor(Math.log(Math.abs(_this.initialValue)) / Math.LN10)) / 10;
+
+ }
+
+ } else {
+
+ _this.__impliedStep = _this.__step;
+
+ }
+ _this.__precision = numDecimals(_this.__impliedStep);
+ return _this;
+
+ }
+ createClass(NumberController, [{
+ key: 'setValue',
+ value: function setValue(v) {
+
+ var _v = v;
+ if (this.__min !== undefined && _v < this.__min) {
+
+ _v = this.__min;
+
+ } else if (this.__max !== undefined && _v > this.__max) {
+
+ _v = this.__max;
+
+ }
+ if (this.__step !== undefined && _v % this.__step !== 0) {
+
+ _v = Math.round(_v / this.__step) * this.__step;
+
+ }
+ return get(NumberController.prototype.__proto__ || Object.getPrototypeOf(NumberController.prototype), 'setValue', this).call(this, _v);
+
+ }
+ }, {
+ key: 'min',
+ value: function min(minValue) {
+
+ this.__min = minValue;
+ return this;
+
+ }
+ }, {
+ key: 'max',
+ value: function max(maxValue) {
+
+ this.__max = maxValue;
+ return this;
+
+ }
+ }, {
+ key: 'step',
+ value: function step(stepValue) {
+
+ this.__step = stepValue;
+ this.__impliedStep = stepValue;
+ this.__precision = numDecimals(stepValue);
+ return this;
+
+ }
+ }]);
+ return NumberController;
+
+}(Controller);
+
+function roundToDecimal(value, decimals) {
+
+ var tenTo = Math.pow(10, decimals);
+ return Math.round(value * tenTo) / tenTo;
+
+}
+var NumberControllerBox = function (_NumberController) {
+
+ inherits(NumberControllerBox, _NumberController);
+ function NumberControllerBox(object, property, params) {
+
+ classCallCheck(this, NumberControllerBox);
+ var _this2 = possibleConstructorReturn(this, (NumberControllerBox.__proto__ || Object.getPrototypeOf(NumberControllerBox)).call(this, object, property, params));
+ _this2.__truncationSuspended = false;
+ var _this = _this2;
+ var prevY = void 0;
+ function onChange() {
+
+ var attempted = parseFloat(_this.__input.value);
+ if (!Common.isNaN(attempted)) {
+
+ _this.setValue(attempted);
+
+ }
+
+ }
+ function onFinish() {
+
+ if (_this.__onFinishChange) {
+
+ _this.__onFinishChange.call(_this, _this.getValue());
+
+ }
+
+ }
+ function onBlur() {
+
+ onFinish();
+
+ }
+ function onMouseDrag(e) {
+
+ var diff = prevY - e.clientY;
+ _this.setValue(_this.getValue() + diff * _this.__impliedStep);
+ prevY = e.clientY;
+
+ }
+ function onMouseUp() {
+
+ dom.unbind(window, 'mousemove', onMouseDrag);
+ dom.unbind(window, 'mouseup', onMouseUp);
+ onFinish();
+
+ }
+ function onMouseDown(e) {
+
+ dom.bind(window, 'mousemove', onMouseDrag);
+ dom.bind(window, 'mouseup', onMouseUp);
+ prevY = e.clientY;
+
+ }
+ _this2.__input = document.createElement('input');
+ _this2.__input.setAttribute('type', 'text');
+ dom.bind(_this2.__input, 'change', onChange);
+ dom.bind(_this2.__input, 'blur', onBlur);
+ dom.bind(_this2.__input, 'mousedown', onMouseDown);
+ dom.bind(_this2.__input, 'keydown', function (e) {
+
+ if (e.keyCode === 13) {
+
+ _this.__truncationSuspended = true;
+ this.blur();
+ _this.__truncationSuspended = false;
+ onFinish();
+
+ }
+
+ });
+ _this2.updateDisplay();
+ _this2.domElement.appendChild(_this2.__input);
+ return _this2;
+
+ }
+ createClass(NumberControllerBox, [{
+ key: 'updateDisplay',
+ value: function updateDisplay() {
+
+ this.__input.value = this.__truncationSuspended ? this.getValue() : roundToDecimal(this.getValue(), this.__precision);
+ return get(NumberControllerBox.prototype.__proto__ || Object.getPrototypeOf(NumberControllerBox.prototype), 'updateDisplay', this).call(this);
+
+ }
+ }]);
+ return NumberControllerBox;
+
+}(NumberController);
+
+function map(v, i1, i2, o1, o2) {
+
+ return o1 + (o2 - o1) * ((v - i1) / (i2 - i1));
+
+}
+var NumberControllerSlider = function (_NumberController) {
+
+ inherits(NumberControllerSlider, _NumberController);
+ function NumberControllerSlider(object, property, min, max, step) {
+
+ classCallCheck(this, NumberControllerSlider);
+ var _this2 = possibleConstructorReturn(this, (NumberControllerSlider.__proto__ || Object.getPrototypeOf(NumberControllerSlider)).call(this, object, property, { min: min, max: max, step: step }));
+ var _this = _this2;
+ _this2.__background = document.createElement('div');
+ _this2.__foreground = document.createElement('div');
+ dom.bind(_this2.__background, 'mousedown', onMouseDown);
+ dom.bind(_this2.__background, 'touchstart', onTouchStart);
+ dom.addClass(_this2.__background, 'slider');
+ dom.addClass(_this2.__foreground, 'slider-fg');
+ function onMouseDown(e) {
+
+ document.activeElement.blur();
+ dom.bind(window, 'mousemove', onMouseDrag);
+ dom.bind(window, 'mouseup', onMouseUp);
+ onMouseDrag(e);
+
+ }
+ function onMouseDrag(e) {
+
+ e.preventDefault();
+ var bgRect = _this.__background.getBoundingClientRect();
+ _this.setValue(map(e.clientX, bgRect.left, bgRect.right, _this.__min, _this.__max));
+ return false;
+
+ }
+ function onMouseUp() {
+
+ dom.unbind(window, 'mousemove', onMouseDrag);
+ dom.unbind(window, 'mouseup', onMouseUp);
+ if (_this.__onFinishChange) {
+
+ _this.__onFinishChange.call(_this, _this.getValue());
+
+ }
+
+ }
+ function onTouchStart(e) {
+
+ if (e.touches.length !== 1) {
+
+ return;
+
+ }
+ dom.bind(window, 'touchmove', onTouchMove);
+ dom.bind(window, 'touchend', onTouchEnd);
+ onTouchMove(e);
+
+ }
+ function onTouchMove(e) {
+
+ var clientX = e.touches[0].clientX;
+ var bgRect = _this.__background.getBoundingClientRect();
+ _this.setValue(map(clientX, bgRect.left, bgRect.right, _this.__min, _this.__max));
+
+ }
+ function onTouchEnd() {
+
+ dom.unbind(window, 'touchmove', onTouchMove);
+ dom.unbind(window, 'touchend', onTouchEnd);
+ if (_this.__onFinishChange) {
+
+ _this.__onFinishChange.call(_this, _this.getValue());
+
+ }
+
+ }
+ _this2.updateDisplay();
+ _this2.__background.appendChild(_this2.__foreground);
+ _this2.domElement.appendChild(_this2.__background);
+ return _this2;
+
+ }
+ createClass(NumberControllerSlider, [{
+ key: 'updateDisplay',
+ value: function updateDisplay() {
+
+ var pct = (this.getValue() - this.__min) / (this.__max - this.__min);
+ this.__foreground.style.width = pct * 100 + '%';
+ return get(NumberControllerSlider.prototype.__proto__ || Object.getPrototypeOf(NumberControllerSlider.prototype), 'updateDisplay', this).call(this);
+
+ }
+ }]);
+ return NumberControllerSlider;
+
+}(NumberController);
+
+var FunctionController = function (_Controller) {
+
+ inherits(FunctionController, _Controller);
+ function FunctionController(object, property, text) {
+
+ classCallCheck(this, FunctionController);
+ var _this2 = possibleConstructorReturn(this, (FunctionController.__proto__ || Object.getPrototypeOf(FunctionController)).call(this, object, property));
+ var _this = _this2;
+ _this2.__button = document.createElement('div');
+ _this2.__button.innerHTML = text === undefined ? 'Fire' : text;
+ dom.bind(_this2.__button, 'click', function (e) {
+
+ e.preventDefault();
+ _this.fire();
+ return false;
+
+ });
+ dom.addClass(_this2.__button, 'button');
+ _this2.domElement.appendChild(_this2.__button);
+ return _this2;
+
+ }
+ createClass(FunctionController, [{
+ key: 'fire',
+ value: function fire() {
+
+ if (this.__onChange) {
+
+ this.__onChange.call(this);
+
+ }
+ this.getValue().call(this.object);
+ if (this.__onFinishChange) {
+
+ this.__onFinishChange.call(this, this.getValue());
+
+ }
+
+ }
+ }]);
+ return FunctionController;
+
+}(Controller);
+
+var ColorController = function (_Controller) {
+
+ inherits(ColorController, _Controller);
+ function ColorController(object, property) {
+
+ classCallCheck(this, ColorController);
+ var _this2 = possibleConstructorReturn(this, (ColorController.__proto__ || Object.getPrototypeOf(ColorController)).call(this, object, property));
+ _this2.__color = new Color(_this2.getValue());
+ _this2.__temp = new Color(0);
+ var _this = _this2;
+ _this2.domElement = document.createElement('div');
+ dom.makeSelectable(_this2.domElement, false);
+ _this2.__selector = document.createElement('div');
+ _this2.__selector.className = 'selector';
+ _this2.__saturation_field = document.createElement('div');
+ _this2.__saturation_field.className = 'saturation-field';
+ _this2.__field_knob = document.createElement('div');
+ _this2.__field_knob.className = 'field-knob';
+ _this2.__field_knob_border = '2px solid ';
+ _this2.__hue_knob = document.createElement('div');
+ _this2.__hue_knob.className = 'hue-knob';
+ _this2.__hue_field = document.createElement('div');
+ _this2.__hue_field.className = 'hue-field';
+ _this2.__input = document.createElement('input');
+ _this2.__input.type = 'text';
+ _this2.__input_textShadow = '0 1px 1px ';
+ dom.bind(_this2.__input, 'keydown', function (e) {
+
+ if (e.keyCode === 13) {
+
+ onBlur.call(this);
+
+ }
+
+ });
+ dom.bind(_this2.__input, 'blur', onBlur);
+ dom.bind(_this2.__selector, 'mousedown', function () {
+
+ dom.addClass(this, 'drag').bind(window, 'mouseup', function () {
+
+ dom.removeClass(_this.__selector, 'drag');
+
+ });
+
+ });
+ dom.bind(_this2.__selector, 'touchstart', function () {
+
+ dom.addClass(this, 'drag').bind(window, 'touchend', function () {
+
+ dom.removeClass(_this.__selector, 'drag');
+
+ });
+
+ });
+ var valueField = document.createElement('div');
+ Common.extend(_this2.__selector.style, {
+ width: '122px',
+ height: '102px',
+ padding: '3px',
+ backgroundColor: '#222',
+ boxShadow: '0px 1px 3px rgba(0,0,0,0.3)'
+ });
+ Common.extend(_this2.__field_knob.style, {
+ position: 'absolute',
+ width: '12px',
+ height: '12px',
+ border: _this2.__field_knob_border + (_this2.__color.v < 0.5 ? '#fff' : '#000'),
+ boxShadow: '0px 1px 3px rgba(0,0,0,0.5)',
+ borderRadius: '12px',
+ zIndex: 1
+ });
+ Common.extend(_this2.__hue_knob.style, {
+ position: 'absolute',
+ width: '15px',
+ height: '2px',
+ borderRight: '4px solid #fff',
+ zIndex: 1
+ });
+ Common.extend(_this2.__saturation_field.style, {
+ width: '100px',
+ height: '100px',
+ border: '1px solid #555',
+ marginRight: '3px',
+ display: 'inline-block',
+ cursor: 'pointer'
+ });
+ Common.extend(valueField.style, {
+ width: '100%',
+ height: '100%',
+ background: 'none'
+ });
+ linearGradient(valueField, 'top', 'rgba(0,0,0,0)', '#000');
+ Common.extend(_this2.__hue_field.style, {
+ width: '15px',
+ height: '100px',
+ border: '1px solid #555',
+ cursor: 'ns-resize',
+ position: 'absolute',
+ top: '3px',
+ right: '3px'
+ });
+ hueGradient(_this2.__hue_field);
+ Common.extend(_this2.__input.style, {
+ outline: 'none',
+ textAlign: 'center',
+ color: '#fff',
+ border: 0,
+ fontWeight: 'bold',
+ textShadow: _this2.__input_textShadow + 'rgba(0,0,0,0.7)'
+ });
+ dom.bind(_this2.__saturation_field, 'mousedown', fieldDown);
+ dom.bind(_this2.__saturation_field, 'touchstart', fieldDown);
+ dom.bind(_this2.__field_knob, 'mousedown', fieldDown);
+ dom.bind(_this2.__field_knob, 'touchstart', fieldDown);
+ dom.bind(_this2.__hue_field, 'mousedown', fieldDownH);
+ dom.bind(_this2.__hue_field, 'touchstart', fieldDownH);
+ function fieldDown(e) {
+
+ setSV(e);
+ dom.bind(window, 'mousemove', setSV);
+ dom.bind(window, 'touchmove', setSV);
+ dom.bind(window, 'mouseup', fieldUpSV);
+ dom.bind(window, 'touchend', fieldUpSV);
+
+ }
+ function fieldDownH(e) {
+
+ setH(e);
+ dom.bind(window, 'mousemove', setH);
+ dom.bind(window, 'touchmove', setH);
+ dom.bind(window, 'mouseup', fieldUpH);
+ dom.bind(window, 'touchend', fieldUpH);
+
+ }
+ function fieldUpSV() {
+
+ dom.unbind(window, 'mousemove', setSV);
+ dom.unbind(window, 'touchmove', setSV);
+ dom.unbind(window, 'mouseup', fieldUpSV);
+ dom.unbind(window, 'touchend', fieldUpSV);
+ onFinish();
+
+ }
+ function fieldUpH() {
+
+ dom.unbind(window, 'mousemove', setH);
+ dom.unbind(window, 'touchmove', setH);
+ dom.unbind(window, 'mouseup', fieldUpH);
+ dom.unbind(window, 'touchend', fieldUpH);
+ onFinish();
+
+ }
+ function onBlur() {
+
+ var i = interpret(this.value);
+ if (i !== false) {
+
+ _this.__color.__state = i;
+ _this.setValue(_this.__color.toOriginal());
+
+ } else {
+
+ this.value = _this.__color.toString();
+
+ }
+
+ }
+ function onFinish() {
+
+ if (_this.__onFinishChange) {
+
+ _this.__onFinishChange.call(_this, _this.__color.toOriginal());
+
+ }
+
+ }
+ _this2.__saturation_field.appendChild(valueField);
+ _this2.__selector.appendChild(_this2.__field_knob);
+ _this2.__selector.appendChild(_this2.__saturation_field);
+ _this2.__selector.appendChild(_this2.__hue_field);
+ _this2.__hue_field.appendChild(_this2.__hue_knob);
+ _this2.domElement.appendChild(_this2.__input);
+ _this2.domElement.appendChild(_this2.__selector);
+ _this2.updateDisplay();
+ function setSV(e) {
+
+ if (e.type.indexOf('touch') === - 1) {
+
+ e.preventDefault();
+
+ }
+ var fieldRect = _this.__saturation_field.getBoundingClientRect();
+ var _ref = e.touches && e.touches[0] || e,
+ clientX = _ref.clientX,
+ clientY = _ref.clientY;
+ var s = (clientX - fieldRect.left) / (fieldRect.right - fieldRect.left);
+ var v = 1 - (clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);
+ if (v > 1) {
+
+ v = 1;
+
+ } else if (v < 0) {
+
+ v = 0;
+
+ }
+ if (s > 1) {
+
+ s = 1;
+
+ } else if (s < 0) {
+
+ s = 0;
+
+ }
+ _this.__color.v = v;
+ _this.__color.s = s;
+ _this.setValue(_this.__color.toOriginal());
+ return false;
+
+ }
+ function setH(e) {
+
+ if (e.type.indexOf('touch') === - 1) {
+
+ e.preventDefault();
+
+ }
+ var fieldRect = _this.__hue_field.getBoundingClientRect();
+ var _ref2 = e.touches && e.touches[0] || e,
+ clientY = _ref2.clientY;
+ var h = 1 - (clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);
+ if (h > 1) {
+
+ h = 1;
+
+ } else if (h < 0) {
+
+ h = 0;
+
+ }
+ _this.__color.h = h * 360;
+ _this.setValue(_this.__color.toOriginal());
+ return false;
+
+ }
+ return _this2;
+
+ }
+ createClass(ColorController, [{
+ key: 'updateDisplay',
+ value: function updateDisplay() {
+
+ var i = interpret(this.getValue());
+ if (i !== false) {
+
+ var mismatch = false;
+ Common.each(Color.COMPONENTS, function (component) {
+
+ if (!Common.isUndefined(i[component]) && !Common.isUndefined(this.__color.__state[component]) && i[component] !== this.__color.__state[component]) {
+
+ mismatch = true;
+ return {};
+
+ }
+
+ }, this);
+ if (mismatch) {
+
+ Common.extend(this.__color.__state, i);
+
+ }
+
+ }
+ Common.extend(this.__temp.__state, this.__color.__state);
+ this.__temp.a = 1;
+ var flip = this.__color.v < 0.5 || this.__color.s > 0.5 ? 255 : 0;
+ var _flip = 255 - flip;
+ Common.extend(this.__field_knob.style, {
+ marginLeft: 100 * this.__color.s - 7 + 'px',
+ marginTop: 100 * (1 - this.__color.v) - 7 + 'px',
+ backgroundColor: this.__temp.toHexString(),
+ border: this.__field_knob_border + 'rgb(' + flip + ',' + flip + ',' + flip + ')'
+ });
+ this.__hue_knob.style.marginTop = (1 - this.__color.h / 360) * 100 + 'px';
+ this.__temp.s = 1;
+ this.__temp.v = 1;
+ linearGradient(this.__saturation_field, 'left', '#fff', this.__temp.toHexString());
+ this.__input.value = this.__color.toString();
+ Common.extend(this.__input.style, {
+ backgroundColor: this.__color.toHexString(),
+ color: 'rgb(' + flip + ',' + flip + ',' + flip + ')',
+ textShadow: this.__input_textShadow + 'rgba(' + _flip + ',' + _flip + ',' + _flip + ',.7)'
+ });
+
+ }
+ }]);
+ return ColorController;
+
+}(Controller);
+var vendors = ['-moz-', '-o-', '-webkit-', '-ms-', ''];
+function linearGradient(elem, x, a, b) {
+
+ elem.style.background = '';
+ Common.each(vendors, function (vendor) {
+
+ elem.style.cssText += 'background: ' + vendor + 'linear-gradient(' + x + ', ' + a + ' 0%, ' + b + ' 100%); ';
+
+ });
+
+}
+function hueGradient(elem) {
+
+ elem.style.background = '';
+ elem.style.cssText += 'background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);';
+ elem.style.cssText += 'background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';
+ elem.style.cssText += 'background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';
+ elem.style.cssText += 'background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';
+ elem.style.cssText += 'background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';
+
+}
+
+var css = {
+ load: function load(url, indoc) {
+
+ var doc = indoc || document;
+ var link = doc.createElement('link');
+ link.type = 'text/css';
+ link.rel = 'stylesheet';
+ link.href = url;
+ doc.getElementsByTagName('head')[0].appendChild(link);
+
+ },
+ inject: function inject(cssContent, indoc) {
+
+ var doc = indoc || document;
+ var injected = document.createElement('style');
+ injected.type = 'text/css';
+ injected.innerHTML = cssContent;
+ var head = doc.getElementsByTagName('head')[0];
+ try {
+
+ head.appendChild(injected);
+
+ } catch (e) {
+ }
+
+ }
+};
+
+var saveDialogContents = "
\n\n Here's the new load parameter for your GUI's constructor:\n\n \n\n
\n\n Automatically save\n values to localStorage on exit.\n\n
The values saved to localStorage will\n override those passed to dat.GUI's constructor. This makes it\n easier to work incrementally, but localStorage is fragile,\n and your friends may not see the same values you do.\n\n
How strong you are, affects how much damage you do. So blah blah if you're doing stuff then its stronger or whatever, the damage is up. This is text to show the tooltip.
+
How strong you are, affects how much damage you do. So blah blah if you're
+ doing stuff then its stronger or whatever, the damage is up. This is text to show the tooltip.
0
Wisdomness
-
Wisdom is the guage of something to do with wisdom in the game because wisdom is important and wisdom is wise to wisdoming.
+
Wisdom is the guage of something to do with wisdom in the game because
+ wisdom is important and wisdom is wise to wisdoming.
0
@@ -62,13 +68,15 @@
Curl
-
The ultimate expression of strength, this affects literally everything in your life.
+
The ultimate expression of strength, this affects literally everything in
+ your life.
0
XP
-
How much xp you've accumulated by killing things for xp. Get enough and you'll gain a level or something.
+
How much xp you've accumulated by killing things for xp. Get enough and
+ you'll gain a level or something.
0
@@ -134,4 +142,5 @@
-
+
+
\ No newline at end of file
diff --git a/packages/client/resources/background-2.jpg b/packages/quick-3d-mmo-client/src/resources/background-2.jpg
similarity index 100%
rename from packages/client/resources/background-2.jpg
rename to packages/quick-3d-mmo-client/src/resources/background-2.jpg
diff --git a/packages/client/resources/background-3.png b/packages/quick-3d-mmo-client/src/resources/background-3.png
similarity index 100%
rename from packages/client/resources/background-3.png
rename to packages/quick-3d-mmo-client/src/resources/background-3.png
diff --git a/packages/client/resources/background.jpg b/packages/quick-3d-mmo-client/src/resources/background.jpg
similarity index 100%
rename from packages/client/resources/background.jpg
rename to packages/quick-3d-mmo-client/src/resources/background.jpg
diff --git a/packages/client/resources/characters/guard.glb b/packages/quick-3d-mmo-client/src/resources/characters/guard.glb
similarity index 100%
rename from packages/client/resources/characters/guard.glb
rename to packages/quick-3d-mmo-client/src/resources/characters/guard.glb
diff --git a/packages/client/resources/characters/paladin.glb b/packages/quick-3d-mmo-client/src/resources/characters/paladin.glb
similarity index 100%
rename from packages/client/resources/characters/paladin.glb
rename to packages/quick-3d-mmo-client/src/resources/characters/paladin.glb
diff --git a/packages/client/resources/characters/readme.txt b/packages/quick-3d-mmo-client/src/resources/characters/readme.txt
similarity index 100%
rename from packages/client/resources/characters/readme.txt
rename to packages/quick-3d-mmo-client/src/resources/characters/readme.txt
diff --git a/packages/client/resources/characters/sorceror.glb b/packages/quick-3d-mmo-client/src/resources/characters/sorceror.glb
similarity index 100%
rename from packages/client/resources/characters/sorceror.glb
rename to packages/quick-3d-mmo-client/src/resources/characters/sorceror.glb
diff --git a/packages/client/resources/characters/warrok.glb b/packages/quick-3d-mmo-client/src/resources/characters/warrok.glb
similarity index 100%
rename from packages/client/resources/characters/warrok.glb
rename to packages/quick-3d-mmo-client/src/resources/characters/warrok.glb
diff --git a/packages/client/resources/characters/zombie-guy.glb b/packages/quick-3d-mmo-client/src/resources/characters/zombie-guy.glb
similarity index 100%
rename from packages/client/resources/characters/zombie-guy.glb
rename to packages/quick-3d-mmo-client/src/resources/characters/zombie-guy.glb
diff --git a/packages/client/resources/characters/zombie.glb b/packages/quick-3d-mmo-client/src/resources/characters/zombie.glb
similarity index 100%
rename from packages/client/resources/characters/zombie.glb
rename to packages/quick-3d-mmo-client/src/resources/characters/zombie.glb
diff --git a/packages/client/resources/icons/readme.txt b/packages/quick-3d-mmo-client/src/resources/icons/readme.txt
similarity index 100%
rename from packages/client/resources/icons/readme.txt
rename to packages/quick-3d-mmo-client/src/resources/icons/readme.txt
diff --git a/packages/client/resources/icons/ui/backpack.png b/packages/quick-3d-mmo-client/src/resources/icons/ui/backpack.png
similarity index 100%
rename from packages/client/resources/icons/ui/backpack.png
rename to packages/quick-3d-mmo-client/src/resources/icons/ui/backpack.png
diff --git a/packages/client/resources/icons/ui/health-bar.png b/packages/quick-3d-mmo-client/src/resources/icons/ui/health-bar.png
similarity index 100%
rename from packages/client/resources/icons/ui/health-bar.png
rename to packages/quick-3d-mmo-client/src/resources/icons/ui/health-bar.png
diff --git a/packages/client/resources/icons/ui/inventory-character.png b/packages/quick-3d-mmo-client/src/resources/icons/ui/inventory-character.png
similarity index 100%
rename from packages/client/resources/icons/ui/inventory-character.png
rename to packages/quick-3d-mmo-client/src/resources/icons/ui/inventory-character.png
diff --git a/packages/client/resources/icons/ui/skills.png b/packages/quick-3d-mmo-client/src/resources/icons/ui/skills.png
similarity index 100%
rename from packages/client/resources/icons/ui/skills.png
rename to packages/quick-3d-mmo-client/src/resources/icons/ui/skills.png
diff --git a/packages/client/resources/icons/ui/tied-scroll.png b/packages/quick-3d-mmo-client/src/resources/icons/ui/tied-scroll.png
similarity index 100%
rename from packages/client/resources/icons/ui/tied-scroll.png
rename to packages/quick-3d-mmo-client/src/resources/icons/ui/tied-scroll.png
diff --git a/packages/client/resources/icons/weapons/hammer-64.png b/packages/quick-3d-mmo-client/src/resources/icons/weapons/hammer-64.png
similarity index 100%
rename from packages/client/resources/icons/weapons/hammer-64.png
rename to packages/quick-3d-mmo-client/src/resources/icons/weapons/hammer-64.png
diff --git a/packages/client/resources/icons/weapons/pointy-sword-64.png b/packages/quick-3d-mmo-client/src/resources/icons/weapons/pointy-sword-64.png
similarity index 100%
rename from packages/client/resources/icons/weapons/pointy-sword-64.png
rename to packages/quick-3d-mmo-client/src/resources/icons/weapons/pointy-sword-64.png
diff --git a/packages/client/resources/icons/weapons/pointy-sword.png b/packages/quick-3d-mmo-client/src/resources/icons/weapons/pointy-sword.png
similarity index 100%
rename from packages/client/resources/icons/weapons/pointy-sword.png
rename to packages/quick-3d-mmo-client/src/resources/icons/weapons/pointy-sword.png
diff --git a/packages/client/resources/icons/weapons/thor-hammer.png b/packages/quick-3d-mmo-client/src/resources/icons/weapons/thor-hammer.png
similarity index 100%
rename from packages/client/resources/icons/weapons/thor-hammer.png
rename to packages/quick-3d-mmo-client/src/resources/icons/weapons/thor-hammer.png
diff --git a/packages/client/resources/icons/weapons/war-axe-64.png b/packages/quick-3d-mmo-client/src/resources/icons/weapons/war-axe-64.png
similarity index 100%
rename from packages/client/resources/icons/weapons/war-axe-64.png
rename to packages/quick-3d-mmo-client/src/resources/icons/weapons/war-axe-64.png
diff --git a/packages/client/resources/icons/weapons/war-axe.png b/packages/quick-3d-mmo-client/src/resources/icons/weapons/war-axe.png
similarity index 100%
rename from packages/client/resources/icons/weapons/war-axe.png
rename to packages/quick-3d-mmo-client/src/resources/icons/weapons/war-axe.png
diff --git a/packages/client/resources/nature/Blends/BirchTree_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_1.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_2.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_3.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_4.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_5.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_Autumn_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Autumn_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_Autumn_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Autumn_1.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_Autumn_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Autumn_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_Autumn_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Autumn_2.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_Autumn_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Autumn_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_Autumn_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Autumn_3.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_Autumn_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Autumn_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_Autumn_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Autumn_4.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_Autumn_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Autumn_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_Autumn_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Autumn_5.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_Dead_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Dead_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_Dead_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Dead_1.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_Dead_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Dead_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_Dead_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Dead_2.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_Dead_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Dead_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_Dead_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Dead_3.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_Dead_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Dead_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_Dead_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Dead_4.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_Dead_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Dead_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_Dead_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Dead_5.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_Dead_Snow_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Dead_Snow_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_Dead_Snow_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Dead_Snow_1.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_Dead_Snow_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Dead_Snow_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_Dead_Snow_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Dead_Snow_2.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_Dead_Snow_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Dead_Snow_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_Dead_Snow_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Dead_Snow_3.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_Dead_Snow_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Dead_Snow_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_Dead_Snow_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Dead_Snow_4.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_Dead_Snow_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Dead_Snow_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_Dead_Snow_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Dead_Snow_5.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_Snow_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Snow_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_Snow_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Snow_1.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_Snow_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Snow_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_Snow_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Snow_2.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_Snow_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Snow_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_Snow_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Snow_3.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_Snow_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Snow_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_Snow_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Snow_4.blend
diff --git a/packages/client/resources/nature/Blends/BirchTree_Snow_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Snow_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BirchTree_Snow_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BirchTree_Snow_5.blend
diff --git a/packages/client/resources/nature/Blends/BushBerries_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BushBerries_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BushBerries_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BushBerries_1.blend
diff --git a/packages/client/resources/nature/Blends/BushBerries_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/BushBerries_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/BushBerries_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/BushBerries_2.blend
diff --git a/packages/client/resources/nature/Blends/Bush_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Bush_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Bush_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Bush_1.blend
diff --git a/packages/client/resources/nature/Blends/Bush_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Bush_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Bush_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Bush_2.blend
diff --git a/packages/client/resources/nature/Blends/Bush_Snow_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Bush_Snow_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Bush_Snow_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Bush_Snow_1.blend
diff --git a/packages/client/resources/nature/Blends/Bush_Snow_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Bush_Snow_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Bush_Snow_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Bush_Snow_2.blend
diff --git a/packages/client/resources/nature/Blends/CactusFlower_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CactusFlower_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CactusFlower_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CactusFlower_1.blend
diff --git a/packages/client/resources/nature/Blends/CactusFlowers_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CactusFlowers_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CactusFlowers_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CactusFlowers_2.blend
diff --git a/packages/client/resources/nature/Blends/CactusFlowers_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CactusFlowers_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CactusFlowers_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CactusFlowers_3.blend
diff --git a/packages/client/resources/nature/Blends/CactusFlowers_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CactusFlowers_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CactusFlowers_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CactusFlowers_4.blend
diff --git a/packages/client/resources/nature/Blends/CactusFlowers_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CactusFlowers_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CactusFlowers_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CactusFlowers_5.blend
diff --git a/packages/client/resources/nature/Blends/Cactus_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Cactus_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Cactus_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Cactus_1.blend
diff --git a/packages/client/resources/nature/Blends/Cactus_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Cactus_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Cactus_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Cactus_2.blend
diff --git a/packages/client/resources/nature/Blends/Cactus_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Cactus_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Cactus_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Cactus_3.blend
diff --git a/packages/client/resources/nature/Blends/Cactus_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Cactus_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Cactus_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Cactus_4.blend
diff --git a/packages/client/resources/nature/Blends/Cactus_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Cactus_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Cactus_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Cactus_5.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_1.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_2.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_3.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_4.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_5.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_Autumn_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Autumn_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_Autumn_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Autumn_1.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_Autumn_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Autumn_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_Autumn_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Autumn_2.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_Autumn_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Autumn_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_Autumn_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Autumn_3.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_Autumn_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Autumn_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_Autumn_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Autumn_4.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_Autumn_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Autumn_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_Autumn_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Autumn_5.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_Dead_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Dead_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_Dead_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Dead_1.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_Dead_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Dead_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_Dead_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Dead_2.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_Dead_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Dead_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_Dead_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Dead_3.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_Dead_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Dead_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_Dead_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Dead_4.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_Dead_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Dead_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_Dead_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Dead_5.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_Dead_Snow_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Dead_Snow_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_Dead_Snow_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Dead_Snow_1.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_Dead_Snow_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Dead_Snow_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_Dead_Snow_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Dead_Snow_2.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_Dead_Snow_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Dead_Snow_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_Dead_Snow_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Dead_Snow_3.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_Dead_Snow_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Dead_Snow_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_Dead_Snow_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Dead_Snow_4.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_Dead_Snow_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Dead_Snow_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_Dead_Snow_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Dead_Snow_5.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_Snow_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Snow_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_Snow_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Snow_1.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_Snow_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Snow_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_Snow_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Snow_2.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_Snow_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Snow_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_Snow_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Snow_3.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_Snow_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Snow_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_Snow_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Snow_4.blend
diff --git a/packages/client/resources/nature/Blends/CommonTree_Snow_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Snow_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/CommonTree_Snow_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/CommonTree_Snow_5.blend
diff --git a/packages/client/resources/nature/Blends/Corn_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Corn_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Corn_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Corn_1.blend
diff --git a/packages/client/resources/nature/Blends/Corn_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Corn_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Corn_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Corn_2.blend
diff --git a/packages/client/resources/nature/Blends/Flowers.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Flowers.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Flowers.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Flowers.blend
diff --git a/packages/client/resources/nature/Blends/Grass.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Grass.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Grass.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Grass.blend
diff --git a/packages/client/resources/nature/Blends/Grass_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Grass_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Grass_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Grass_2.blend
diff --git a/packages/client/resources/nature/Blends/Grass_Short.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Grass_Short.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Grass_Short.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Grass_Short.blend
diff --git a/packages/client/resources/nature/Blends/Lilypad.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Lilypad.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Lilypad.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Lilypad.blend
diff --git a/packages/client/resources/nature/Blends/PalmTree_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/PalmTree_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/PalmTree_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/PalmTree_1.blend
diff --git a/packages/client/resources/nature/Blends/PalmTree_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/PalmTree_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/PalmTree_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/PalmTree_2.blend
diff --git a/packages/client/resources/nature/Blends/PalmTree_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/PalmTree_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/PalmTree_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/PalmTree_3.blend
diff --git a/packages/client/resources/nature/Blends/PalmTree_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/PalmTree_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/PalmTree_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/PalmTree_4.blend
diff --git a/packages/client/resources/nature/Blends/PineTree_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/PineTree_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_1.blend
diff --git a/packages/client/resources/nature/Blends/PineTree_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/PineTree_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_2.blend
diff --git a/packages/client/resources/nature/Blends/PineTree_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/PineTree_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_3.blend
diff --git a/packages/client/resources/nature/Blends/PineTree_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/PineTree_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_4.blend
diff --git a/packages/client/resources/nature/Blends/PineTree_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/PineTree_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_5.blend
diff --git a/packages/client/resources/nature/Blends/PineTree_Autumn_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_Autumn_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/PineTree_Autumn_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_Autumn_1.blend
diff --git a/packages/client/resources/nature/Blends/PineTree_Autumn_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_Autumn_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/PineTree_Autumn_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_Autumn_2.blend
diff --git a/packages/client/resources/nature/Blends/PineTree_Autumn_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_Autumn_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/PineTree_Autumn_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_Autumn_3.blend
diff --git a/packages/client/resources/nature/Blends/PineTree_Autumn_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_Autumn_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/PineTree_Autumn_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_Autumn_4.blend
diff --git a/packages/client/resources/nature/Blends/PineTree_Autumn_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_Autumn_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/PineTree_Autumn_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_Autumn_5.blend
diff --git a/packages/client/resources/nature/Blends/PineTree_Snow_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_Snow_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/PineTree_Snow_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_Snow_1.blend
diff --git a/packages/client/resources/nature/Blends/PineTree_Snow_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_Snow_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/PineTree_Snow_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_Snow_2.blend
diff --git a/packages/client/resources/nature/Blends/PineTree_Snow_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_Snow_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/PineTree_Snow_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_Snow_3.blend
diff --git a/packages/client/resources/nature/Blends/PineTree_Snow_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_Snow_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/PineTree_Snow_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_Snow_4.blend
diff --git a/packages/client/resources/nature/Blends/PineTree_Snow_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_Snow_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/PineTree_Snow_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/PineTree_Snow_5.blend
diff --git a/packages/client/resources/nature/Blends/Plant_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Plant_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Plant_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Plant_1.blend
diff --git a/packages/client/resources/nature/Blends/Plant_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Plant_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Plant_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Plant_2.blend
diff --git a/packages/client/resources/nature/Blends/Plant_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Plant_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Plant_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Plant_3.blend
diff --git a/packages/client/resources/nature/Blends/Plant_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Plant_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Plant_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Plant_4.blend
diff --git a/packages/client/resources/nature/Blends/Plant_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Plant_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Plant_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Plant_5.blend
diff --git a/packages/client/resources/nature/Blends/Rock_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Rock_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_1.blend
diff --git a/packages/client/resources/nature/Blends/Rock_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Rock_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_2.blend
diff --git a/packages/client/resources/nature/Blends/Rock_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Rock_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_3.blend
diff --git a/packages/client/resources/nature/Blends/Rock_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Rock_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_4.blend
diff --git a/packages/client/resources/nature/Blends/Rock_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Rock_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_5.blend
diff --git a/packages/client/resources/nature/Blends/Rock_6.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_6.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Rock_6.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_6.blend
diff --git a/packages/client/resources/nature/Blends/Rock_7.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_7.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Rock_7.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_7.blend
diff --git a/packages/client/resources/nature/Blends/Rock_Moss_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Moss_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Rock_Moss_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Moss_1.blend
diff --git a/packages/client/resources/nature/Blends/Rock_Moss_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Moss_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Rock_Moss_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Moss_2.blend
diff --git a/packages/client/resources/nature/Blends/Rock_Moss_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Moss_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Rock_Moss_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Moss_3.blend
diff --git a/packages/client/resources/nature/Blends/Rock_Moss_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Moss_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Rock_Moss_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Moss_4.blend
diff --git a/packages/client/resources/nature/Blends/Rock_Moss_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Moss_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Rock_Moss_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Moss_5.blend
diff --git a/packages/client/resources/nature/Blends/Rock_Moss_6.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Moss_6.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Rock_Moss_6.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Moss_6.blend
diff --git a/packages/client/resources/nature/Blends/Rock_Moss_7.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Moss_7.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Rock_Moss_7.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Moss_7.blend
diff --git a/packages/client/resources/nature/Blends/Rock_Snow_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Snow_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Rock_Snow_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Snow_1.blend
diff --git a/packages/client/resources/nature/Blends/Rock_Snow_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Snow_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Rock_Snow_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Snow_2.blend
diff --git a/packages/client/resources/nature/Blends/Rock_Snow_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Snow_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Rock_Snow_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Snow_3.blend
diff --git a/packages/client/resources/nature/Blends/Rock_Snow_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Snow_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Rock_Snow_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Snow_4.blend
diff --git a/packages/client/resources/nature/Blends/Rock_Snow_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Snow_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Rock_Snow_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Snow_5.blend
diff --git a/packages/client/resources/nature/Blends/Rock_Snow_6.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Snow_6.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Rock_Snow_6.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Snow_6.blend
diff --git a/packages/client/resources/nature/Blends/Rock_Snow_7.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Snow_7.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Rock_Snow_7.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Rock_Snow_7.blend
diff --git a/packages/client/resources/nature/Blends/TreeStump.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/TreeStump.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/TreeStump.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/TreeStump.blend
diff --git a/packages/client/resources/nature/Blends/TreeStump_Moss.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/TreeStump_Moss.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/TreeStump_Moss.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/TreeStump_Moss.blend
diff --git a/packages/client/resources/nature/Blends/TreeStump_Snow.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/TreeStump_Snow.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/TreeStump_Snow.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/TreeStump_Snow.blend
diff --git a/packages/client/resources/nature/Blends/Wheat.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Wheat.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Wheat.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Wheat.blend
diff --git a/packages/client/resources/nature/Blends/Willow_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_1.blend
diff --git a/packages/client/resources/nature/Blends/Willow_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_2.blend
diff --git a/packages/client/resources/nature/Blends/Willow_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_3.blend
diff --git a/packages/client/resources/nature/Blends/Willow_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_4.blend
diff --git a/packages/client/resources/nature/Blends/Willow_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_5.blend
diff --git a/packages/client/resources/nature/Blends/Willow_Autumn_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Autumn_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_Autumn_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Autumn_1.blend
diff --git a/packages/client/resources/nature/Blends/Willow_Autumn_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Autumn_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_Autumn_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Autumn_2.blend
diff --git a/packages/client/resources/nature/Blends/Willow_Autumn_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Autumn_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_Autumn_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Autumn_3.blend
diff --git a/packages/client/resources/nature/Blends/Willow_Autumn_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Autumn_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_Autumn_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Autumn_4.blend
diff --git a/packages/client/resources/nature/Blends/Willow_Autumn_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Autumn_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_Autumn_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Autumn_5.blend
diff --git a/packages/client/resources/nature/Blends/Willow_Dead_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Dead_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_Dead_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Dead_1.blend
diff --git a/packages/client/resources/nature/Blends/Willow_Dead_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Dead_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_Dead_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Dead_2.blend
diff --git a/packages/client/resources/nature/Blends/Willow_Dead_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Dead_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_Dead_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Dead_3.blend
diff --git a/packages/client/resources/nature/Blends/Willow_Dead_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Dead_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_Dead_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Dead_4.blend
diff --git a/packages/client/resources/nature/Blends/Willow_Dead_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Dead_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_Dead_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Dead_5.blend
diff --git a/packages/client/resources/nature/Blends/Willow_Dead_Snow_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Dead_Snow_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_Dead_Snow_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Dead_Snow_1.blend
diff --git a/packages/client/resources/nature/Blends/Willow_Dead_Snow_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Dead_Snow_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_Dead_Snow_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Dead_Snow_2.blend
diff --git a/packages/client/resources/nature/Blends/Willow_Dead_Snow_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Dead_Snow_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_Dead_Snow_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Dead_Snow_3.blend
diff --git a/packages/client/resources/nature/Blends/Willow_Dead_Snow_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Dead_Snow_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_Dead_Snow_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Dead_Snow_4.blend
diff --git a/packages/client/resources/nature/Blends/Willow_Dead_Snow_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Dead_Snow_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_Dead_Snow_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Dead_Snow_5.blend
diff --git a/packages/client/resources/nature/Blends/Willow_Snow_1.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Snow_1.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_Snow_1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Snow_1.blend
diff --git a/packages/client/resources/nature/Blends/Willow_Snow_2.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Snow_2.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_Snow_2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Snow_2.blend
diff --git a/packages/client/resources/nature/Blends/Willow_Snow_3.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Snow_3.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_Snow_3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Snow_3.blend
diff --git a/packages/client/resources/nature/Blends/Willow_Snow_4.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Snow_4.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_Snow_4.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Snow_4.blend
diff --git a/packages/client/resources/nature/Blends/Willow_Snow_5.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Snow_5.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/Willow_Snow_5.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/Willow_Snow_5.blend
diff --git a/packages/client/resources/nature/Blends/WoodLog.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/WoodLog.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/WoodLog.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/WoodLog.blend
diff --git a/packages/client/resources/nature/Blends/WoodLog_Moss.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/WoodLog_Moss.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/WoodLog_Moss.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/WoodLog_Moss.blend
diff --git a/packages/client/resources/nature/Blends/WoodLog_Snow.blend b/packages/quick-3d-mmo-client/src/resources/nature/Blends/WoodLog_Snow.blend
similarity index 100%
rename from packages/client/resources/nature/Blends/WoodLog_Snow.blend
rename to packages/quick-3d-mmo-client/src/resources/nature/Blends/WoodLog_Snow.blend
diff --git a/packages/client/resources/nature/FBX/BirchTree_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_1.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_2.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_3.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_4.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_5.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_Autumn_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Autumn_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_Autumn_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Autumn_1.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_Autumn_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Autumn_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_Autumn_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Autumn_2.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_Autumn_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Autumn_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_Autumn_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Autumn_3.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_Autumn_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Autumn_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_Autumn_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Autumn_4.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_Autumn_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Autumn_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_Autumn_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Autumn_5.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_Dead_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Dead_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_Dead_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Dead_1.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_Dead_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Dead_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_Dead_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Dead_2.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_Dead_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Dead_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_Dead_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Dead_3.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_Dead_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Dead_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_Dead_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Dead_4.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_Dead_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Dead_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_Dead_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Dead_5.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_Dead_Snow_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Dead_Snow_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_Dead_Snow_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Dead_Snow_1.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_Dead_Snow_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Dead_Snow_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_Dead_Snow_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Dead_Snow_2.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_Dead_Snow_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Dead_Snow_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_Dead_Snow_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Dead_Snow_3.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_Dead_Snow_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Dead_Snow_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_Dead_Snow_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Dead_Snow_4.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_Dead_Snow_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Dead_Snow_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_Dead_Snow_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Dead_Snow_5.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_Snow_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Snow_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_Snow_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Snow_1.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_Snow_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Snow_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_Snow_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Snow_2.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_Snow_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Snow_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_Snow_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Snow_3.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_Snow_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Snow_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_Snow_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Snow_4.fbx
diff --git a/packages/client/resources/nature/FBX/BirchTree_Snow_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Snow_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BirchTree_Snow_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BirchTree_Snow_5.fbx
diff --git a/packages/client/resources/nature/FBX/BushBerries_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BushBerries_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BushBerries_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BushBerries_1.fbx
diff --git a/packages/client/resources/nature/FBX/BushBerries_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/BushBerries_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/BushBerries_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/BushBerries_2.fbx
diff --git a/packages/client/resources/nature/FBX/Bush_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Bush_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Bush_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Bush_1.fbx
diff --git a/packages/client/resources/nature/FBX/Bush_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Bush_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Bush_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Bush_2.fbx
diff --git a/packages/client/resources/nature/FBX/Bush_Snow_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Bush_Snow_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Bush_Snow_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Bush_Snow_1.fbx
diff --git a/packages/client/resources/nature/FBX/Bush_Snow_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Bush_Snow_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Bush_Snow_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Bush_Snow_2.fbx
diff --git a/packages/client/resources/nature/FBX/CactusFlower_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CactusFlower_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CactusFlower_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CactusFlower_1.fbx
diff --git a/packages/client/resources/nature/FBX/CactusFlowers_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CactusFlowers_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CactusFlowers_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CactusFlowers_2.fbx
diff --git a/packages/client/resources/nature/FBX/CactusFlowers_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CactusFlowers_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CactusFlowers_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CactusFlowers_3.fbx
diff --git a/packages/client/resources/nature/FBX/CactusFlowers_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CactusFlowers_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CactusFlowers_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CactusFlowers_4.fbx
diff --git a/packages/client/resources/nature/FBX/CactusFlowers_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CactusFlowers_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CactusFlowers_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CactusFlowers_5.fbx
diff --git a/packages/client/resources/nature/FBX/Cactus_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Cactus_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Cactus_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Cactus_1.fbx
diff --git a/packages/client/resources/nature/FBX/Cactus_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Cactus_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Cactus_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Cactus_2.fbx
diff --git a/packages/client/resources/nature/FBX/Cactus_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Cactus_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Cactus_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Cactus_3.fbx
diff --git a/packages/client/resources/nature/FBX/Cactus_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Cactus_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Cactus_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Cactus_4.fbx
diff --git a/packages/client/resources/nature/FBX/Cactus_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Cactus_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Cactus_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Cactus_5.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_1.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_2.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_3.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_4.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_5.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_Autumn_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Autumn_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_Autumn_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Autumn_1.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_Autumn_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Autumn_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_Autumn_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Autumn_2.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_Autumn_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Autumn_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_Autumn_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Autumn_3.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_Autumn_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Autumn_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_Autumn_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Autumn_4.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_Autumn_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Autumn_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_Autumn_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Autumn_5.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_Dead_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Dead_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_Dead_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Dead_1.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_Dead_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Dead_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_Dead_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Dead_2.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_Dead_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Dead_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_Dead_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Dead_3.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_Dead_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Dead_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_Dead_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Dead_4.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_Dead_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Dead_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_Dead_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Dead_5.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_Dead_Snow_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Dead_Snow_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_Dead_Snow_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Dead_Snow_1.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_Dead_Snow_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Dead_Snow_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_Dead_Snow_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Dead_Snow_2.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_Dead_Snow_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Dead_Snow_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_Dead_Snow_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Dead_Snow_3.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_Dead_Snow_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Dead_Snow_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_Dead_Snow_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Dead_Snow_4.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_Dead_Snow_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Dead_Snow_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_Dead_Snow_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Dead_Snow_5.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_Snow_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Snow_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_Snow_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Snow_1.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_Snow_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Snow_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_Snow_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Snow_2.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_Snow_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Snow_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_Snow_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Snow_3.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_Snow_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Snow_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_Snow_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Snow_4.fbx
diff --git a/packages/client/resources/nature/FBX/CommonTree_Snow_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Snow_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/CommonTree_Snow_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/CommonTree_Snow_5.fbx
diff --git a/packages/client/resources/nature/FBX/Corn_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Corn_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Corn_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Corn_1.fbx
diff --git a/packages/client/resources/nature/FBX/Corn_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Corn_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Corn_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Corn_2.fbx
diff --git a/packages/client/resources/nature/FBX/Flowers.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Flowers.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Flowers.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Flowers.fbx
diff --git a/packages/client/resources/nature/FBX/Grass_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Grass_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Grass_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Grass_1.fbx
diff --git a/packages/client/resources/nature/FBX/Grass_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Grass_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Grass_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Grass_2.fbx
diff --git a/packages/client/resources/nature/FBX/Grass_Short.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Grass_Short.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Grass_Short.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Grass_Short.fbx
diff --git a/packages/client/resources/nature/FBX/Lilypad.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Lilypad.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Lilypad.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Lilypad.fbx
diff --git a/packages/client/resources/nature/FBX/PalmTree_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/PalmTree_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/PalmTree_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/PalmTree_1.fbx
diff --git a/packages/client/resources/nature/FBX/PalmTree_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/PalmTree_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/PalmTree_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/PalmTree_2.fbx
diff --git a/packages/client/resources/nature/FBX/PalmTree_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/PalmTree_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/PalmTree_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/PalmTree_3.fbx
diff --git a/packages/client/resources/nature/FBX/PalmTree_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/PalmTree_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/PalmTree_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/PalmTree_4.fbx
diff --git a/packages/client/resources/nature/FBX/PineTree_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/PineTree_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_1.fbx
diff --git a/packages/client/resources/nature/FBX/PineTree_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/PineTree_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_2.fbx
diff --git a/packages/client/resources/nature/FBX/PineTree_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/PineTree_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_3.fbx
diff --git a/packages/client/resources/nature/FBX/PineTree_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/PineTree_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_4.fbx
diff --git a/packages/client/resources/nature/FBX/PineTree_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/PineTree_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_5.fbx
diff --git a/packages/client/resources/nature/FBX/PineTree_Autumn_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_Autumn_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/PineTree_Autumn_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_Autumn_1.fbx
diff --git a/packages/client/resources/nature/FBX/PineTree_Autumn_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_Autumn_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/PineTree_Autumn_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_Autumn_2.fbx
diff --git a/packages/client/resources/nature/FBX/PineTree_Autumn_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_Autumn_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/PineTree_Autumn_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_Autumn_3.fbx
diff --git a/packages/client/resources/nature/FBX/PineTree_Autumn_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_Autumn_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/PineTree_Autumn_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_Autumn_4.fbx
diff --git a/packages/client/resources/nature/FBX/PineTree_Autumn_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_Autumn_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/PineTree_Autumn_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_Autumn_5.fbx
diff --git a/packages/client/resources/nature/FBX/PineTree_Snow_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_Snow_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/PineTree_Snow_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_Snow_1.fbx
diff --git a/packages/client/resources/nature/FBX/PineTree_Snow_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_Snow_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/PineTree_Snow_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_Snow_2.fbx
diff --git a/packages/client/resources/nature/FBX/PineTree_Snow_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_Snow_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/PineTree_Snow_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_Snow_3.fbx
diff --git a/packages/client/resources/nature/FBX/PineTree_Snow_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_Snow_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/PineTree_Snow_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_Snow_4.fbx
diff --git a/packages/client/resources/nature/FBX/PineTree_Snow_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_Snow_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/PineTree_Snow_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/PineTree_Snow_5.fbx
diff --git a/packages/client/resources/nature/FBX/Plant_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Plant_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Plant_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Plant_1.fbx
diff --git a/packages/client/resources/nature/FBX/Plant_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Plant_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Plant_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Plant_2.fbx
diff --git a/packages/client/resources/nature/FBX/Plant_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Plant_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Plant_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Plant_3.fbx
diff --git a/packages/client/resources/nature/FBX/Plant_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Plant_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Plant_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Plant_4.fbx
diff --git a/packages/client/resources/nature/FBX/Plant_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Plant_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Plant_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Plant_5.fbx
diff --git a/packages/client/resources/nature/FBX/Rock_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Rock_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_1.fbx
diff --git a/packages/client/resources/nature/FBX/Rock_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Rock_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_2.fbx
diff --git a/packages/client/resources/nature/FBX/Rock_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Rock_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_3.fbx
diff --git a/packages/client/resources/nature/FBX/Rock_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Rock_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_4.fbx
diff --git a/packages/client/resources/nature/FBX/Rock_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Rock_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_5.fbx
diff --git a/packages/client/resources/nature/FBX/Rock_6.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_6.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Rock_6.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_6.fbx
diff --git a/packages/client/resources/nature/FBX/Rock_7.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_7.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Rock_7.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_7.fbx
diff --git a/packages/client/resources/nature/FBX/Rock_Moss_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Moss_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Rock_Moss_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Moss_1.fbx
diff --git a/packages/client/resources/nature/FBX/Rock_Moss_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Moss_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Rock_Moss_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Moss_2.fbx
diff --git a/packages/client/resources/nature/FBX/Rock_Moss_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Moss_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Rock_Moss_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Moss_3.fbx
diff --git a/packages/client/resources/nature/FBX/Rock_Moss_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Moss_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Rock_Moss_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Moss_4.fbx
diff --git a/packages/client/resources/nature/FBX/Rock_Moss_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Moss_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Rock_Moss_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Moss_5.fbx
diff --git a/packages/client/resources/nature/FBX/Rock_Moss_6.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Moss_6.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Rock_Moss_6.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Moss_6.fbx
diff --git a/packages/client/resources/nature/FBX/Rock_Moss_7.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Moss_7.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Rock_Moss_7.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Moss_7.fbx
diff --git a/packages/client/resources/nature/FBX/Rock_Snow_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Snow_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Rock_Snow_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Snow_1.fbx
diff --git a/packages/client/resources/nature/FBX/Rock_Snow_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Snow_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Rock_Snow_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Snow_2.fbx
diff --git a/packages/client/resources/nature/FBX/Rock_Snow_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Snow_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Rock_Snow_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Snow_3.fbx
diff --git a/packages/client/resources/nature/FBX/Rock_Snow_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Snow_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Rock_Snow_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Snow_4.fbx
diff --git a/packages/client/resources/nature/FBX/Rock_Snow_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Snow_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Rock_Snow_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Snow_5.fbx
diff --git a/packages/client/resources/nature/FBX/Rock_Snow_6.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Snow_6.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Rock_Snow_6.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Snow_6.fbx
diff --git a/packages/client/resources/nature/FBX/Rock_Snow_7.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Snow_7.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Rock_Snow_7.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Rock_Snow_7.fbx
diff --git a/packages/client/resources/nature/FBX/TreeStump.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/TreeStump.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/TreeStump.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/TreeStump.fbx
diff --git a/packages/client/resources/nature/FBX/TreeStump_Moss.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/TreeStump_Moss.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/TreeStump_Moss.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/TreeStump_Moss.fbx
diff --git a/packages/client/resources/nature/FBX/TreeStump_Snow.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/TreeStump_Snow.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/TreeStump_Snow.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/TreeStump_Snow.fbx
diff --git a/packages/client/resources/nature/FBX/Wheat.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Wheat.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Wheat.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Wheat.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_1.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_2.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_3.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_4.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_5.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_Autumn_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Autumn_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_Autumn_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Autumn_1.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_Autumn_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Autumn_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_Autumn_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Autumn_2.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_Autumn_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Autumn_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_Autumn_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Autumn_3.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_Autumn_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Autumn_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_Autumn_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Autumn_4.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_Autumn_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Autumn_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_Autumn_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Autumn_5.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_Dead_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Dead_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_Dead_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Dead_1.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_Dead_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Dead_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_Dead_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Dead_2.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_Dead_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Dead_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_Dead_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Dead_3.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_Dead_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Dead_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_Dead_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Dead_4.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_Dead_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Dead_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_Dead_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Dead_5.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_Dead_Snow_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Dead_Snow_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_Dead_Snow_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Dead_Snow_1.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_Dead_Snow_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Dead_Snow_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_Dead_Snow_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Dead_Snow_2.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_Dead_Snow_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Dead_Snow_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_Dead_Snow_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Dead_Snow_3.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_Dead_Snow_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Dead_Snow_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_Dead_Snow_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Dead_Snow_4.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_Dead_Snow_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Dead_Snow_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_Dead_Snow_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Dead_Snow_5.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_Snow_1.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Snow_1.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_Snow_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Snow_1.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_Snow_2.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Snow_2.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_Snow_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Snow_2.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_Snow_3.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Snow_3.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_Snow_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Snow_3.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_Snow_4.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Snow_4.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_Snow_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Snow_4.fbx
diff --git a/packages/client/resources/nature/FBX/Willow_Snow_5.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Snow_5.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/Willow_Snow_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/Willow_Snow_5.fbx
diff --git a/packages/client/resources/nature/FBX/WoodLog.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/WoodLog.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/WoodLog.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/WoodLog.fbx
diff --git a/packages/client/resources/nature/FBX/WoodLog_Moss.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/WoodLog_Moss.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/WoodLog_Moss.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/WoodLog_Moss.fbx
diff --git a/packages/client/resources/nature/FBX/WoodLog_Snow.fbx b/packages/quick-3d-mmo-client/src/resources/nature/FBX/WoodLog_Snow.fbx
similarity index 100%
rename from packages/client/resources/nature/FBX/WoodLog_Snow.fbx
rename to packages/quick-3d-mmo-client/src/resources/nature/FBX/WoodLog_Snow.fbx
diff --git a/packages/client/resources/nature/License.txt b/packages/quick-3d-mmo-client/src/resources/nature/License.txt
similarity index 100%
rename from packages/client/resources/nature/License.txt
rename to packages/quick-3d-mmo-client/src/resources/nature/License.txt
diff --git a/packages/client/resources/nature/OBJ/BirchTree_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_1.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_1.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_2.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_2.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_3.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_3.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_4.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_4.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_5.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_5.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Autumn_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Autumn_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Autumn_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Autumn_1.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Autumn_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Autumn_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Autumn_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Autumn_1.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Autumn_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Autumn_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Autumn_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Autumn_2.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Autumn_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Autumn_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Autumn_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Autumn_2.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Autumn_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Autumn_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Autumn_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Autumn_3.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Autumn_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Autumn_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Autumn_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Autumn_3.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Autumn_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Autumn_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Autumn_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Autumn_4.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Autumn_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Autumn_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Autumn_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Autumn_4.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Autumn_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Autumn_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Autumn_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Autumn_5.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Autumn_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Autumn_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Autumn_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Autumn_5.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Dead_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Dead_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_1.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Dead_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Dead_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_1.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Dead_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Dead_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_2.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Dead_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Dead_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_2.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Dead_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Dead_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_3.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Dead_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Dead_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_3.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Dead_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Dead_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_4.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Dead_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Dead_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_4.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Dead_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Dead_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_5.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Dead_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Dead_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_5.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_Snow_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_Snow_1.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_Snow_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_Snow_1.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_Snow_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_Snow_2.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_Snow_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_Snow_2.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_Snow_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_Snow_3.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_Snow_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_Snow_3.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_Snow_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_Snow_4.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_Snow_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_Snow_4.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_Snow_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_Snow_5.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_Snow_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Dead_Snow_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Dead_Snow_5.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Snow_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Snow_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Snow_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Snow_1.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Snow_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Snow_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Snow_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Snow_1.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Snow_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Snow_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Snow_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Snow_2.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Snow_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Snow_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Snow_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Snow_2.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Snow_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Snow_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Snow_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Snow_3.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Snow_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Snow_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Snow_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Snow_3.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Snow_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Snow_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Snow_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Snow_4.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Snow_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Snow_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Snow_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Snow_4.obj
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Snow_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Snow_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Snow_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Snow_5.mtl
diff --git a/packages/client/resources/nature/OBJ/BirchTree_Snow_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Snow_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BirchTree_Snow_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BirchTree_Snow_5.obj
diff --git a/packages/client/resources/nature/OBJ/BushBerries_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BushBerries_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BushBerries_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BushBerries_1.mtl
diff --git a/packages/client/resources/nature/OBJ/BushBerries_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BushBerries_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BushBerries_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BushBerries_1.obj
diff --git a/packages/client/resources/nature/OBJ/BushBerries_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BushBerries_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/BushBerries_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BushBerries_2.mtl
diff --git a/packages/client/resources/nature/OBJ/BushBerries_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/BushBerries_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/BushBerries_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/BushBerries_2.obj
diff --git a/packages/client/resources/nature/OBJ/Bush_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Bush_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Bush_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Bush_1.mtl
diff --git a/packages/client/resources/nature/OBJ/Bush_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Bush_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Bush_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Bush_1.obj
diff --git a/packages/client/resources/nature/OBJ/Bush_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Bush_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Bush_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Bush_2.mtl
diff --git a/packages/client/resources/nature/OBJ/Bush_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Bush_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Bush_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Bush_2.obj
diff --git a/packages/client/resources/nature/OBJ/Bush_Snow_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Bush_Snow_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Bush_Snow_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Bush_Snow_1.mtl
diff --git a/packages/client/resources/nature/OBJ/Bush_Snow_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Bush_Snow_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Bush_Snow_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Bush_Snow_1.obj
diff --git a/packages/client/resources/nature/OBJ/Bush_Snow_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Bush_Snow_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Bush_Snow_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Bush_Snow_2.mtl
diff --git a/packages/client/resources/nature/OBJ/Bush_Snow_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Bush_Snow_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Bush_Snow_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Bush_Snow_2.obj
diff --git a/packages/client/resources/nature/OBJ/CactusFlower_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CactusFlower_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CactusFlower_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CactusFlower_1.mtl
diff --git a/packages/client/resources/nature/OBJ/CactusFlower_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CactusFlower_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CactusFlower_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CactusFlower_1.obj
diff --git a/packages/client/resources/nature/OBJ/CactusFlowers_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CactusFlowers_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CactusFlowers_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CactusFlowers_2.mtl
diff --git a/packages/client/resources/nature/OBJ/CactusFlowers_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CactusFlowers_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CactusFlowers_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CactusFlowers_2.obj
diff --git a/packages/client/resources/nature/OBJ/CactusFlowers_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CactusFlowers_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CactusFlowers_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CactusFlowers_3.mtl
diff --git a/packages/client/resources/nature/OBJ/CactusFlowers_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CactusFlowers_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CactusFlowers_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CactusFlowers_3.obj
diff --git a/packages/client/resources/nature/OBJ/CactusFlowers_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CactusFlowers_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CactusFlowers_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CactusFlowers_4.mtl
diff --git a/packages/client/resources/nature/OBJ/CactusFlowers_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CactusFlowers_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CactusFlowers_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CactusFlowers_4.obj
diff --git a/packages/client/resources/nature/OBJ/CactusFlowers_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CactusFlowers_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CactusFlowers_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CactusFlowers_5.mtl
diff --git a/packages/client/resources/nature/OBJ/CactusFlowers_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CactusFlowers_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CactusFlowers_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CactusFlowers_5.obj
diff --git a/packages/client/resources/nature/OBJ/Cactus_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Cactus_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Cactus_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Cactus_1.mtl
diff --git a/packages/client/resources/nature/OBJ/Cactus_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Cactus_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Cactus_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Cactus_1.obj
diff --git a/packages/client/resources/nature/OBJ/Cactus_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Cactus_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Cactus_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Cactus_2.mtl
diff --git a/packages/client/resources/nature/OBJ/Cactus_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Cactus_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Cactus_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Cactus_2.obj
diff --git a/packages/client/resources/nature/OBJ/Cactus_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Cactus_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Cactus_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Cactus_3.mtl
diff --git a/packages/client/resources/nature/OBJ/Cactus_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Cactus_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Cactus_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Cactus_3.obj
diff --git a/packages/client/resources/nature/OBJ/Cactus_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Cactus_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Cactus_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Cactus_4.mtl
diff --git a/packages/client/resources/nature/OBJ/Cactus_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Cactus_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Cactus_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Cactus_4.obj
diff --git a/packages/client/resources/nature/OBJ/Cactus_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Cactus_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Cactus_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Cactus_5.mtl
diff --git a/packages/client/resources/nature/OBJ/Cactus_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Cactus_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Cactus_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Cactus_5.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_1.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_1.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_2.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_2.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_3.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_3.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_4.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_4.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_5.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_5.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Autumn_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Autumn_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Autumn_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Autumn_1.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Autumn_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Autumn_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Autumn_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Autumn_1.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Autumn_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Autumn_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Autumn_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Autumn_2.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Autumn_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Autumn_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Autumn_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Autumn_2.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Autumn_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Autumn_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Autumn_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Autumn_3.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Autumn_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Autumn_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Autumn_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Autumn_3.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Autumn_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Autumn_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Autumn_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Autumn_4.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Autumn_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Autumn_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Autumn_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Autumn_4.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Autumn_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Autumn_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Autumn_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Autumn_5.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Autumn_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Autumn_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Autumn_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Autumn_5.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Dead_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Dead_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_1.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Dead_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Dead_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_1.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Dead_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Dead_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_2.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Dead_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Dead_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_2.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Dead_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Dead_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_3.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Dead_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Dead_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_3.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Dead_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Dead_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_4.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Dead_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Dead_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_4.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Dead_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Dead_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_5.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Dead_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Dead_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_5.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_Snow_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_Snow_1.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_Snow_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_Snow_1.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_Snow_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_Snow_2.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_Snow_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_Snow_2.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_Snow_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_Snow_3.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_Snow_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_Snow_3.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_Snow_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_Snow_4.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_Snow_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_Snow_4.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_Snow_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_Snow_5.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_Snow_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Dead_Snow_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Dead_Snow_5.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Snow_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Snow_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Snow_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Snow_1.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Snow_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Snow_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Snow_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Snow_1.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Snow_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Snow_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Snow_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Snow_2.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Snow_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Snow_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Snow_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Snow_2.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Snow_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Snow_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Snow_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Snow_3.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Snow_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Snow_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Snow_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Snow_3.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Snow_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Snow_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Snow_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Snow_4.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Snow_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Snow_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Snow_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Snow_4.obj
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Snow_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Snow_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Snow_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Snow_5.mtl
diff --git a/packages/client/resources/nature/OBJ/CommonTree_Snow_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Snow_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/CommonTree_Snow_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/CommonTree_Snow_5.obj
diff --git a/packages/client/resources/nature/OBJ/Corn_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Corn_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Corn_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Corn_1.mtl
diff --git a/packages/client/resources/nature/OBJ/Corn_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Corn_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Corn_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Corn_1.obj
diff --git a/packages/client/resources/nature/OBJ/Corn_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Corn_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Corn_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Corn_2.mtl
diff --git a/packages/client/resources/nature/OBJ/Corn_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Corn_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Corn_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Corn_2.obj
diff --git a/packages/client/resources/nature/OBJ/Flowers.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Flowers.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Flowers.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Flowers.mtl
diff --git a/packages/client/resources/nature/OBJ/Flowers.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Flowers.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Flowers.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Flowers.obj
diff --git a/packages/client/resources/nature/OBJ/Grass.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Grass.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Grass.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Grass.mtl
diff --git a/packages/client/resources/nature/OBJ/Grass.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Grass.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Grass.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Grass.obj
diff --git a/packages/client/resources/nature/OBJ/Grass_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Grass_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Grass_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Grass_2.mtl
diff --git a/packages/client/resources/nature/OBJ/Grass_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Grass_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Grass_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Grass_2.obj
diff --git a/packages/client/resources/nature/OBJ/Grass_Short.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Grass_Short.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Grass_Short.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Grass_Short.mtl
diff --git a/packages/client/resources/nature/OBJ/Grass_Short.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Grass_Short.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Grass_Short.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Grass_Short.obj
diff --git a/packages/client/resources/nature/OBJ/Lilypad.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Lilypad.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Lilypad.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Lilypad.mtl
diff --git a/packages/client/resources/nature/OBJ/Lilypad.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Lilypad.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Lilypad.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Lilypad.obj
diff --git a/packages/client/resources/nature/OBJ/PalmTree_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PalmTree_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/PalmTree_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PalmTree_1.mtl
diff --git a/packages/client/resources/nature/OBJ/PalmTree_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PalmTree_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/PalmTree_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PalmTree_1.obj
diff --git a/packages/client/resources/nature/OBJ/PalmTree_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PalmTree_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/PalmTree_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PalmTree_2.mtl
diff --git a/packages/client/resources/nature/OBJ/PalmTree_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PalmTree_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/PalmTree_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PalmTree_2.obj
diff --git a/packages/client/resources/nature/OBJ/PalmTree_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PalmTree_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/PalmTree_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PalmTree_3.mtl
diff --git a/packages/client/resources/nature/OBJ/PalmTree_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PalmTree_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/PalmTree_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PalmTree_3.obj
diff --git a/packages/client/resources/nature/OBJ/PalmTree_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PalmTree_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/PalmTree_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PalmTree_4.mtl
diff --git a/packages/client/resources/nature/OBJ/PalmTree_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PalmTree_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/PalmTree_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PalmTree_4.obj
diff --git a/packages/client/resources/nature/OBJ/PineTree_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_1.mtl
diff --git a/packages/client/resources/nature/OBJ/PineTree_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_1.obj
diff --git a/packages/client/resources/nature/OBJ/PineTree_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_2.mtl
diff --git a/packages/client/resources/nature/OBJ/PineTree_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_2.obj
diff --git a/packages/client/resources/nature/OBJ/PineTree_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_3.mtl
diff --git a/packages/client/resources/nature/OBJ/PineTree_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_3.obj
diff --git a/packages/client/resources/nature/OBJ/PineTree_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_4.mtl
diff --git a/packages/client/resources/nature/OBJ/PineTree_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_4.obj
diff --git a/packages/client/resources/nature/OBJ/PineTree_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_5.mtl
diff --git a/packages/client/resources/nature/OBJ/PineTree_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_5.obj
diff --git a/packages/client/resources/nature/OBJ/PineTree_Autumn_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Autumn_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_Autumn_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Autumn_1.mtl
diff --git a/packages/client/resources/nature/OBJ/PineTree_Autumn_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Autumn_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_Autumn_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Autumn_1.obj
diff --git a/packages/client/resources/nature/OBJ/PineTree_Autumn_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Autumn_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_Autumn_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Autumn_2.mtl
diff --git a/packages/client/resources/nature/OBJ/PineTree_Autumn_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Autumn_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_Autumn_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Autumn_2.obj
diff --git a/packages/client/resources/nature/OBJ/PineTree_Autumn_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Autumn_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_Autumn_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Autumn_3.mtl
diff --git a/packages/client/resources/nature/OBJ/PineTree_Autumn_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Autumn_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_Autumn_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Autumn_3.obj
diff --git a/packages/client/resources/nature/OBJ/PineTree_Autumn_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Autumn_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_Autumn_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Autumn_4.mtl
diff --git a/packages/client/resources/nature/OBJ/PineTree_Autumn_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Autumn_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_Autumn_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Autumn_4.obj
diff --git a/packages/client/resources/nature/OBJ/PineTree_Autumn_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Autumn_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_Autumn_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Autumn_5.mtl
diff --git a/packages/client/resources/nature/OBJ/PineTree_Autumn_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Autumn_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_Autumn_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Autumn_5.obj
diff --git a/packages/client/resources/nature/OBJ/PineTree_Snow_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Snow_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_Snow_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Snow_1.mtl
diff --git a/packages/client/resources/nature/OBJ/PineTree_Snow_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Snow_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_Snow_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Snow_1.obj
diff --git a/packages/client/resources/nature/OBJ/PineTree_Snow_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Snow_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_Snow_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Snow_2.mtl
diff --git a/packages/client/resources/nature/OBJ/PineTree_Snow_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Snow_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_Snow_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Snow_2.obj
diff --git a/packages/client/resources/nature/OBJ/PineTree_Snow_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Snow_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_Snow_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Snow_3.mtl
diff --git a/packages/client/resources/nature/OBJ/PineTree_Snow_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Snow_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_Snow_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Snow_3.obj
diff --git a/packages/client/resources/nature/OBJ/PineTree_Snow_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Snow_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_Snow_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Snow_4.mtl
diff --git a/packages/client/resources/nature/OBJ/PineTree_Snow_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Snow_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_Snow_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Snow_4.obj
diff --git a/packages/client/resources/nature/OBJ/PineTree_Snow_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Snow_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_Snow_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Snow_5.mtl
diff --git a/packages/client/resources/nature/OBJ/PineTree_Snow_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Snow_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/PineTree_Snow_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/PineTree_Snow_5.obj
diff --git a/packages/client/resources/nature/OBJ/Plant_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Plant_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Plant_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Plant_1.mtl
diff --git a/packages/client/resources/nature/OBJ/Plant_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Plant_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Plant_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Plant_1.obj
diff --git a/packages/client/resources/nature/OBJ/Plant_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Plant_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Plant_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Plant_2.mtl
diff --git a/packages/client/resources/nature/OBJ/Plant_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Plant_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Plant_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Plant_2.obj
diff --git a/packages/client/resources/nature/OBJ/Plant_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Plant_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Plant_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Plant_3.mtl
diff --git a/packages/client/resources/nature/OBJ/Plant_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Plant_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Plant_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Plant_3.obj
diff --git a/packages/client/resources/nature/OBJ/Plant_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Plant_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Plant_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Plant_4.mtl
diff --git a/packages/client/resources/nature/OBJ/Plant_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Plant_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Plant_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Plant_4.obj
diff --git a/packages/client/resources/nature/OBJ/Plant_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Plant_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Plant_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Plant_5.mtl
diff --git a/packages/client/resources/nature/OBJ/Plant_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Plant_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Plant_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Plant_5.obj
diff --git a/packages/client/resources/nature/OBJ/Rock_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_1.mtl
diff --git a/packages/client/resources/nature/OBJ/Rock_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_1.obj
diff --git a/packages/client/resources/nature/OBJ/Rock_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_2.mtl
diff --git a/packages/client/resources/nature/OBJ/Rock_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_2.obj
diff --git a/packages/client/resources/nature/OBJ/Rock_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_3.mtl
diff --git a/packages/client/resources/nature/OBJ/Rock_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_3.obj
diff --git a/packages/client/resources/nature/OBJ/Rock_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_4.mtl
diff --git a/packages/client/resources/nature/OBJ/Rock_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_4.obj
diff --git a/packages/client/resources/nature/OBJ/Rock_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_5.mtl
diff --git a/packages/client/resources/nature/OBJ/Rock_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_5.obj
diff --git a/packages/client/resources/nature/OBJ/Rock_6.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_6.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_6.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_6.mtl
diff --git a/packages/client/resources/nature/OBJ/Rock_6.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_6.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_6.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_6.obj
diff --git a/packages/client/resources/nature/OBJ/Rock_7.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_7.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_7.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_7.mtl
diff --git a/packages/client/resources/nature/OBJ/Rock_7.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_7.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_7.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_7.obj
diff --git a/packages/client/resources/nature/OBJ/Rock_Moss_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Moss_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_1.mtl
diff --git a/packages/client/resources/nature/OBJ/Rock_Moss_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Moss_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_1.obj
diff --git a/packages/client/resources/nature/OBJ/Rock_Moss_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Moss_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_2.mtl
diff --git a/packages/client/resources/nature/OBJ/Rock_Moss_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Moss_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_2.obj
diff --git a/packages/client/resources/nature/OBJ/Rock_Moss_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Moss_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_3.mtl
diff --git a/packages/client/resources/nature/OBJ/Rock_Moss_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Moss_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_3.obj
diff --git a/packages/client/resources/nature/OBJ/Rock_Moss_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Moss_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_4.mtl
diff --git a/packages/client/resources/nature/OBJ/Rock_Moss_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Moss_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_4.obj
diff --git a/packages/client/resources/nature/OBJ/Rock_Moss_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Moss_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_5.mtl
diff --git a/packages/client/resources/nature/OBJ/Rock_Moss_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Moss_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_5.obj
diff --git a/packages/client/resources/nature/OBJ/Rock_Moss_6.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_6.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Moss_6.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_6.mtl
diff --git a/packages/client/resources/nature/OBJ/Rock_Moss_6.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_6.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Moss_6.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_6.obj
diff --git a/packages/client/resources/nature/OBJ/Rock_Moss_7.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_7.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Moss_7.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_7.mtl
diff --git a/packages/client/resources/nature/OBJ/Rock_Moss_7.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_7.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Moss_7.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Moss_7.obj
diff --git a/packages/client/resources/nature/OBJ/Rock_Snow_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Snow_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_1.mtl
diff --git a/packages/client/resources/nature/OBJ/Rock_Snow_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Snow_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_1.obj
diff --git a/packages/client/resources/nature/OBJ/Rock_Snow_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Snow_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_2.mtl
diff --git a/packages/client/resources/nature/OBJ/Rock_Snow_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Snow_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_2.obj
diff --git a/packages/client/resources/nature/OBJ/Rock_Snow_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Snow_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_3.mtl
diff --git a/packages/client/resources/nature/OBJ/Rock_Snow_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Snow_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_3.obj
diff --git a/packages/client/resources/nature/OBJ/Rock_Snow_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Snow_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_4.mtl
diff --git a/packages/client/resources/nature/OBJ/Rock_Snow_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Snow_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_4.obj
diff --git a/packages/client/resources/nature/OBJ/Rock_Snow_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Snow_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_5.mtl
diff --git a/packages/client/resources/nature/OBJ/Rock_Snow_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Snow_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_5.obj
diff --git a/packages/client/resources/nature/OBJ/Rock_Snow_6.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_6.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Snow_6.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_6.mtl
diff --git a/packages/client/resources/nature/OBJ/Rock_Snow_6.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_6.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Snow_6.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_6.obj
diff --git a/packages/client/resources/nature/OBJ/Rock_Snow_7.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_7.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Snow_7.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_7.mtl
diff --git a/packages/client/resources/nature/OBJ/Rock_Snow_7.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_7.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Rock_Snow_7.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Rock_Snow_7.obj
diff --git a/packages/client/resources/nature/OBJ/TreeStump.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/TreeStump.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/TreeStump.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/TreeStump.mtl
diff --git a/packages/client/resources/nature/OBJ/TreeStump.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/TreeStump.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/TreeStump.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/TreeStump.obj
diff --git a/packages/client/resources/nature/OBJ/TreeStump_Moss.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/TreeStump_Moss.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/TreeStump_Moss.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/TreeStump_Moss.mtl
diff --git a/packages/client/resources/nature/OBJ/TreeStump_Moss.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/TreeStump_Moss.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/TreeStump_Moss.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/TreeStump_Moss.obj
diff --git a/packages/client/resources/nature/OBJ/TreeStump_Snow.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/TreeStump_Snow.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/TreeStump_Snow.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/TreeStump_Snow.mtl
diff --git a/packages/client/resources/nature/OBJ/TreeStump_Snow.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/TreeStump_Snow.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/TreeStump_Snow.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/TreeStump_Snow.obj
diff --git a/packages/client/resources/nature/OBJ/Wheat.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Wheat.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Wheat.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Wheat.mtl
diff --git a/packages/client/resources/nature/OBJ/Wheat.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Wheat.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Wheat.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Wheat.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_1.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_1.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_2.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_2.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_3.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_3.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_4.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_4.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_5.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_5.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_Autumn_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Autumn_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Autumn_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Autumn_1.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_Autumn_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Autumn_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Autumn_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Autumn_1.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_Autumn_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Autumn_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Autumn_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Autumn_2.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_Autumn_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Autumn_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Autumn_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Autumn_2.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_Autumn_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Autumn_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Autumn_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Autumn_3.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_Autumn_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Autumn_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Autumn_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Autumn_3.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_Autumn_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Autumn_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Autumn_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Autumn_4.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_Autumn_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Autumn_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Autumn_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Autumn_4.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_Autumn_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Autumn_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Autumn_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Autumn_5.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_Autumn_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Autumn_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Autumn_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Autumn_5.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_Dead_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Dead_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_1.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_Dead_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Dead_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_1.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_Dead_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Dead_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_2.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_Dead_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Dead_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_2.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_Dead_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Dead_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_3.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_Dead_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Dead_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_3.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_Dead_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Dead_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_4.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_Dead_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Dead_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_4.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_Dead_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Dead_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_5.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_Dead_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Dead_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_5.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_Dead_Snow_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_Snow_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Dead_Snow_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_Snow_1.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_Dead_Snow_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_Snow_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Dead_Snow_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_Snow_1.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_Dead_Snow_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_Snow_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Dead_Snow_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_Snow_2.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_Dead_Snow_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_Snow_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Dead_Snow_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_Snow_2.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_Dead_Snow_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_Snow_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Dead_Snow_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_Snow_3.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_Dead_Snow_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_Snow_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Dead_Snow_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_Snow_3.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_Dead_Snow_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_Snow_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Dead_Snow_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_Snow_4.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_Dead_Snow_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_Snow_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Dead_Snow_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_Snow_4.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_Dead_Snow_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_Snow_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Dead_Snow_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_Snow_5.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_Dead_Snow_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_Snow_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Dead_Snow_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Dead_Snow_5.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_Snow_1.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Snow_1.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Snow_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Snow_1.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_Snow_1.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Snow_1.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Snow_1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Snow_1.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_Snow_2.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Snow_2.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Snow_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Snow_2.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_Snow_2.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Snow_2.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Snow_2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Snow_2.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_Snow_3.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Snow_3.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Snow_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Snow_3.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_Snow_3.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Snow_3.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Snow_3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Snow_3.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_Snow_4.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Snow_4.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Snow_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Snow_4.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_Snow_4.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Snow_4.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Snow_4.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Snow_4.obj
diff --git a/packages/client/resources/nature/OBJ/Willow_Snow_5.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Snow_5.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Snow_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Snow_5.mtl
diff --git a/packages/client/resources/nature/OBJ/Willow_Snow_5.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Snow_5.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/Willow_Snow_5.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/Willow_Snow_5.obj
diff --git a/packages/client/resources/nature/OBJ/WoodLog.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/WoodLog.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/WoodLog.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/WoodLog.mtl
diff --git a/packages/client/resources/nature/OBJ/WoodLog.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/WoodLog.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/WoodLog.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/WoodLog.obj
diff --git a/packages/client/resources/nature/OBJ/WoodLog_Moss.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/WoodLog_Moss.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/WoodLog_Moss.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/WoodLog_Moss.mtl
diff --git a/packages/client/resources/nature/OBJ/WoodLog_Moss.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/WoodLog_Moss.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/WoodLog_Moss.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/WoodLog_Moss.obj
diff --git a/packages/client/resources/nature/OBJ/WoodLog_Snow.mtl b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/WoodLog_Snow.mtl
similarity index 100%
rename from packages/client/resources/nature/OBJ/WoodLog_Snow.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/WoodLog_Snow.mtl
diff --git a/packages/client/resources/nature/OBJ/WoodLog_Snow.obj b/packages/quick-3d-mmo-client/src/resources/nature/OBJ/WoodLog_Snow.obj
similarity index 100%
rename from packages/client/resources/nature/OBJ/WoodLog_Snow.obj
rename to packages/quick-3d-mmo-client/src/resources/nature/OBJ/WoodLog_Snow.obj
diff --git a/packages/client/resources/nature/Preview.jpg b/packages/quick-3d-mmo-client/src/resources/nature/Preview.jpg
similarity index 100%
rename from packages/client/resources/nature/Preview.jpg
rename to packages/quick-3d-mmo-client/src/resources/nature/Preview.jpg
diff --git a/packages/client/resources/nature2/Blends/BigBush.blend b/packages/quick-3d-mmo-client/src/resources/nature2/Blends/BigBush.blend
similarity index 100%
rename from packages/client/resources/nature2/Blends/BigBush.blend
rename to packages/quick-3d-mmo-client/src/resources/nature2/Blends/BigBush.blend
diff --git a/packages/client/resources/nature2/Blends/BigTreeWithLeaves.blend b/packages/quick-3d-mmo-client/src/resources/nature2/Blends/BigTreeWithLeaves.blend
similarity index 100%
rename from packages/client/resources/nature2/Blends/BigTreeWithLeaves.blend
rename to packages/quick-3d-mmo-client/src/resources/nature2/Blends/BigTreeWithLeaves.blend
diff --git a/packages/client/resources/nature2/Blends/BushTexture.png b/packages/quick-3d-mmo-client/src/resources/nature2/Blends/BushTexture.png
similarity index 100%
rename from packages/client/resources/nature2/Blends/BushTexture.png
rename to packages/quick-3d-mmo-client/src/resources/nature2/Blends/BushTexture.png
diff --git a/packages/client/resources/nature2/Blends/Cloud1.blend b/packages/quick-3d-mmo-client/src/resources/nature2/Blends/Cloud1.blend
similarity index 100%
rename from packages/client/resources/nature2/Blends/Cloud1.blend
rename to packages/quick-3d-mmo-client/src/resources/nature2/Blends/Cloud1.blend
diff --git a/packages/client/resources/nature2/Blends/Cloud1.blend1 b/packages/quick-3d-mmo-client/src/resources/nature2/Blends/Cloud1.blend1
similarity index 100%
rename from packages/client/resources/nature2/Blends/Cloud1.blend1
rename to packages/quick-3d-mmo-client/src/resources/nature2/Blends/Cloud1.blend1
diff --git a/packages/client/resources/nature2/Blends/Cloud2.blend b/packages/quick-3d-mmo-client/src/resources/nature2/Blends/Cloud2.blend
similarity index 100%
rename from packages/client/resources/nature2/Blends/Cloud2.blend
rename to packages/quick-3d-mmo-client/src/resources/nature2/Blends/Cloud2.blend
diff --git a/packages/client/resources/nature2/Blends/Cloud3.blend b/packages/quick-3d-mmo-client/src/resources/nature2/Blends/Cloud3.blend
similarity index 100%
rename from packages/client/resources/nature2/Blends/Cloud3.blend
rename to packages/quick-3d-mmo-client/src/resources/nature2/Blends/Cloud3.blend
diff --git a/packages/client/resources/nature2/Blends/EveryModel.blend b/packages/quick-3d-mmo-client/src/resources/nature2/Blends/EveryModel.blend
similarity index 100%
rename from packages/client/resources/nature2/Blends/EveryModel.blend
rename to packages/quick-3d-mmo-client/src/resources/nature2/Blends/EveryModel.blend
diff --git a/packages/client/resources/nature2/Blends/MoreNature.blend1 b/packages/quick-3d-mmo-client/src/resources/nature2/Blends/MoreNature.blend1
similarity index 100%
rename from packages/client/resources/nature2/Blends/MoreNature.blend1
rename to packages/quick-3d-mmo-client/src/resources/nature2/Blends/MoreNature.blend1
diff --git a/packages/client/resources/nature2/Blends/SmallBush.blend b/packages/quick-3d-mmo-client/src/resources/nature2/Blends/SmallBush.blend
similarity index 100%
rename from packages/client/resources/nature2/Blends/SmallBush.blend
rename to packages/quick-3d-mmo-client/src/resources/nature2/Blends/SmallBush.blend
diff --git a/packages/client/resources/nature2/Blends/SmallTreeWithLeave.blend b/packages/quick-3d-mmo-client/src/resources/nature2/Blends/SmallTreeWithLeave.blend
similarity index 100%
rename from packages/client/resources/nature2/Blends/SmallTreeWithLeave.blend
rename to packages/quick-3d-mmo-client/src/resources/nature2/Blends/SmallTreeWithLeave.blend
diff --git a/packages/client/resources/nature2/Blends/TreeNoLeavesBig.blend b/packages/quick-3d-mmo-client/src/resources/nature2/Blends/TreeNoLeavesBig.blend
similarity index 100%
rename from packages/client/resources/nature2/Blends/TreeNoLeavesBig.blend
rename to packages/quick-3d-mmo-client/src/resources/nature2/Blends/TreeNoLeavesBig.blend
diff --git a/packages/client/resources/nature2/Blends/TreeNoLeavesBig.blend1 b/packages/quick-3d-mmo-client/src/resources/nature2/Blends/TreeNoLeavesBig.blend1
similarity index 100%
rename from packages/client/resources/nature2/Blends/TreeNoLeavesBig.blend1
rename to packages/quick-3d-mmo-client/src/resources/nature2/Blends/TreeNoLeavesBig.blend1
diff --git a/packages/client/resources/nature2/Blends/TreeNoLeavesSmall.blend b/packages/quick-3d-mmo-client/src/resources/nature2/Blends/TreeNoLeavesSmall.blend
similarity index 100%
rename from packages/client/resources/nature2/Blends/TreeNoLeavesSmall.blend
rename to packages/quick-3d-mmo-client/src/resources/nature2/Blends/TreeNoLeavesSmall.blend
diff --git a/packages/client/resources/nature2/Blends/TreeNoLeavesSmall.blend1 b/packages/quick-3d-mmo-client/src/resources/nature2/Blends/TreeNoLeavesSmall.blend1
similarity index 100%
rename from packages/client/resources/nature2/Blends/TreeNoLeavesSmall.blend1
rename to packages/quick-3d-mmo-client/src/resources/nature2/Blends/TreeNoLeavesSmall.blend1
diff --git a/packages/client/resources/nature2/Blends/TreeTexture.png b/packages/quick-3d-mmo-client/src/resources/nature2/Blends/TreeTexture.png
similarity index 100%
rename from packages/client/resources/nature2/Blends/TreeTexture.png
rename to packages/quick-3d-mmo-client/src/resources/nature2/Blends/TreeTexture.png
diff --git a/packages/client/resources/nature2/GLTF/Cloud1.glb b/packages/quick-3d-mmo-client/src/resources/nature2/GLTF/Cloud1.glb
similarity index 100%
rename from packages/client/resources/nature2/GLTF/Cloud1.glb
rename to packages/quick-3d-mmo-client/src/resources/nature2/GLTF/Cloud1.glb
diff --git a/packages/client/resources/nature2/GLTF/Cloud2.glb b/packages/quick-3d-mmo-client/src/resources/nature2/GLTF/Cloud2.glb
similarity index 100%
rename from packages/client/resources/nature2/GLTF/Cloud2.glb
rename to packages/quick-3d-mmo-client/src/resources/nature2/GLTF/Cloud2.glb
diff --git a/packages/client/resources/nature2/GLTF/Cloud3.glb b/packages/quick-3d-mmo-client/src/resources/nature2/GLTF/Cloud3.glb
similarity index 100%
rename from packages/client/resources/nature2/GLTF/Cloud3.glb
rename to packages/quick-3d-mmo-client/src/resources/nature2/GLTF/Cloud3.glb
diff --git a/packages/client/resources/nature2/License.txt b/packages/quick-3d-mmo-client/src/resources/nature2/License.txt
similarity index 100%
rename from packages/client/resources/nature2/License.txt
rename to packages/quick-3d-mmo-client/src/resources/nature2/License.txt
diff --git a/packages/client/resources/nature2/OBJ/BigBush.mtl b/packages/quick-3d-mmo-client/src/resources/nature2/OBJ/BigBush.mtl
similarity index 100%
rename from packages/client/resources/nature2/OBJ/BigBush.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature2/OBJ/BigBush.mtl
diff --git a/packages/client/resources/nature2/OBJ/BigBush.obj b/packages/quick-3d-mmo-client/src/resources/nature2/OBJ/BigBush.obj
similarity index 100%
rename from packages/client/resources/nature2/OBJ/BigBush.obj
rename to packages/quick-3d-mmo-client/src/resources/nature2/OBJ/BigBush.obj
diff --git a/packages/client/resources/nature2/OBJ/BigTreeWithLeaves.mtl b/packages/quick-3d-mmo-client/src/resources/nature2/OBJ/BigTreeWithLeaves.mtl
similarity index 100%
rename from packages/client/resources/nature2/OBJ/BigTreeWithLeaves.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature2/OBJ/BigTreeWithLeaves.mtl
diff --git a/packages/client/resources/nature2/OBJ/BigTreeWithLeaves.obj b/packages/quick-3d-mmo-client/src/resources/nature2/OBJ/BigTreeWithLeaves.obj
similarity index 100%
rename from packages/client/resources/nature2/OBJ/BigTreeWithLeaves.obj
rename to packages/quick-3d-mmo-client/src/resources/nature2/OBJ/BigTreeWithLeaves.obj
diff --git a/packages/client/resources/nature2/OBJ/Cloud1.mtl b/packages/quick-3d-mmo-client/src/resources/nature2/OBJ/Cloud1.mtl
similarity index 100%
rename from packages/client/resources/nature2/OBJ/Cloud1.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature2/OBJ/Cloud1.mtl
diff --git a/packages/client/resources/nature2/OBJ/Cloud1.obj b/packages/quick-3d-mmo-client/src/resources/nature2/OBJ/Cloud1.obj
similarity index 100%
rename from packages/client/resources/nature2/OBJ/Cloud1.obj
rename to packages/quick-3d-mmo-client/src/resources/nature2/OBJ/Cloud1.obj
diff --git a/packages/client/resources/nature2/OBJ/Cloud2.mtl b/packages/quick-3d-mmo-client/src/resources/nature2/OBJ/Cloud2.mtl
similarity index 100%
rename from packages/client/resources/nature2/OBJ/Cloud2.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature2/OBJ/Cloud2.mtl
diff --git a/packages/client/resources/nature2/OBJ/Cloud2.obj b/packages/quick-3d-mmo-client/src/resources/nature2/OBJ/Cloud2.obj
similarity index 100%
rename from packages/client/resources/nature2/OBJ/Cloud2.obj
rename to packages/quick-3d-mmo-client/src/resources/nature2/OBJ/Cloud2.obj
diff --git a/packages/client/resources/nature2/OBJ/Cloud3.mtl b/packages/quick-3d-mmo-client/src/resources/nature2/OBJ/Cloud3.mtl
similarity index 100%
rename from packages/client/resources/nature2/OBJ/Cloud3.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature2/OBJ/Cloud3.mtl
diff --git a/packages/client/resources/nature2/OBJ/Cloud3.obj b/packages/quick-3d-mmo-client/src/resources/nature2/OBJ/Cloud3.obj
similarity index 100%
rename from packages/client/resources/nature2/OBJ/Cloud3.obj
rename to packages/quick-3d-mmo-client/src/resources/nature2/OBJ/Cloud3.obj
diff --git a/packages/client/resources/nature2/OBJ/EveryModel.mtl b/packages/quick-3d-mmo-client/src/resources/nature2/OBJ/EveryModel.mtl
similarity index 100%
rename from packages/client/resources/nature2/OBJ/EveryModel.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature2/OBJ/EveryModel.mtl
diff --git a/packages/client/resources/nature2/OBJ/EveryModel.obj b/packages/quick-3d-mmo-client/src/resources/nature2/OBJ/EveryModel.obj
similarity index 100%
rename from packages/client/resources/nature2/OBJ/EveryModel.obj
rename to packages/quick-3d-mmo-client/src/resources/nature2/OBJ/EveryModel.obj
diff --git a/packages/client/resources/nature2/OBJ/SmallBush.mtl b/packages/quick-3d-mmo-client/src/resources/nature2/OBJ/SmallBush.mtl
similarity index 100%
rename from packages/client/resources/nature2/OBJ/SmallBush.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature2/OBJ/SmallBush.mtl
diff --git a/packages/client/resources/nature2/OBJ/SmallBush.obj b/packages/quick-3d-mmo-client/src/resources/nature2/OBJ/SmallBush.obj
similarity index 100%
rename from packages/client/resources/nature2/OBJ/SmallBush.obj
rename to packages/quick-3d-mmo-client/src/resources/nature2/OBJ/SmallBush.obj
diff --git a/packages/client/resources/nature2/OBJ/SmallTreeWithLeave.mtl b/packages/quick-3d-mmo-client/src/resources/nature2/OBJ/SmallTreeWithLeave.mtl
similarity index 100%
rename from packages/client/resources/nature2/OBJ/SmallTreeWithLeave.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature2/OBJ/SmallTreeWithLeave.mtl
diff --git a/packages/client/resources/nature2/OBJ/SmallTreeWithLeave.obj b/packages/quick-3d-mmo-client/src/resources/nature2/OBJ/SmallTreeWithLeave.obj
similarity index 100%
rename from packages/client/resources/nature2/OBJ/SmallTreeWithLeave.obj
rename to packages/quick-3d-mmo-client/src/resources/nature2/OBJ/SmallTreeWithLeave.obj
diff --git a/packages/client/resources/nature2/OBJ/TreeNoLeavesBig.mtl b/packages/quick-3d-mmo-client/src/resources/nature2/OBJ/TreeNoLeavesBig.mtl
similarity index 100%
rename from packages/client/resources/nature2/OBJ/TreeNoLeavesBig.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature2/OBJ/TreeNoLeavesBig.mtl
diff --git a/packages/client/resources/nature2/OBJ/TreeNoLeavesBig.obj b/packages/quick-3d-mmo-client/src/resources/nature2/OBJ/TreeNoLeavesBig.obj
similarity index 100%
rename from packages/client/resources/nature2/OBJ/TreeNoLeavesBig.obj
rename to packages/quick-3d-mmo-client/src/resources/nature2/OBJ/TreeNoLeavesBig.obj
diff --git a/packages/client/resources/nature2/OBJ/TreeNoLeavesSmall.mtl b/packages/quick-3d-mmo-client/src/resources/nature2/OBJ/TreeNoLeavesSmall.mtl
similarity index 100%
rename from packages/client/resources/nature2/OBJ/TreeNoLeavesSmall.mtl
rename to packages/quick-3d-mmo-client/src/resources/nature2/OBJ/TreeNoLeavesSmall.mtl
diff --git a/packages/client/resources/nature2/OBJ/TreeNoLeavesSmall.obj b/packages/quick-3d-mmo-client/src/resources/nature2/OBJ/TreeNoLeavesSmall.obj
similarity index 100%
rename from packages/client/resources/nature2/OBJ/TreeNoLeavesSmall.obj
rename to packages/quick-3d-mmo-client/src/resources/nature2/OBJ/TreeNoLeavesSmall.obj
diff --git a/packages/client/resources/terrain/README.txt b/packages/quick-3d-mmo-client/src/resources/terrain/README.txt
similarity index 100%
rename from packages/client/resources/terrain/README.txt
rename to packages/quick-3d-mmo-client/src/resources/terrain/README.txt
diff --git a/packages/client/resources/terrain/bark1-albedo.jpg b/packages/quick-3d-mmo-client/src/resources/terrain/bark1-albedo.jpg
similarity index 100%
rename from packages/client/resources/terrain/bark1-albedo.jpg
rename to packages/quick-3d-mmo-client/src/resources/terrain/bark1-albedo.jpg
diff --git a/packages/client/resources/terrain/bark1-albedo.png b/packages/quick-3d-mmo-client/src/resources/terrain/bark1-albedo.png
similarity index 100%
rename from packages/client/resources/terrain/bark1-albedo.png
rename to packages/quick-3d-mmo-client/src/resources/terrain/bark1-albedo.png
diff --git a/packages/client/resources/terrain/bark1-normal3.jpg b/packages/quick-3d-mmo-client/src/resources/terrain/bark1-normal3.jpg
similarity index 100%
rename from packages/client/resources/terrain/bark1-normal3.jpg
rename to packages/quick-3d-mmo-client/src/resources/terrain/bark1-normal3.jpg
diff --git a/packages/client/resources/terrain/bark1-normal3.png b/packages/quick-3d-mmo-client/src/resources/terrain/bark1-normal3.png
similarity index 100%
rename from packages/client/resources/terrain/bark1-normal3.png
rename to packages/quick-3d-mmo-client/src/resources/terrain/bark1-normal3.png
diff --git a/packages/client/resources/terrain/dirt_01_diffuse-1024.png b/packages/quick-3d-mmo-client/src/resources/terrain/dirt_01_diffuse-1024.png
similarity index 100%
rename from packages/client/resources/terrain/dirt_01_diffuse-1024.png
rename to packages/quick-3d-mmo-client/src/resources/terrain/dirt_01_diffuse-1024.png
diff --git a/packages/client/resources/terrain/dirt_01_normal-1024.jpg b/packages/quick-3d-mmo-client/src/resources/terrain/dirt_01_normal-1024.jpg
similarity index 100%
rename from packages/client/resources/terrain/dirt_01_normal-1024.jpg
rename to packages/quick-3d-mmo-client/src/resources/terrain/dirt_01_normal-1024.jpg
diff --git a/packages/client/resources/terrain/grass1-albedo-512.jpg b/packages/quick-3d-mmo-client/src/resources/terrain/grass1-albedo-512.jpg
similarity index 100%
rename from packages/client/resources/terrain/grass1-albedo-512.jpg
rename to packages/quick-3d-mmo-client/src/resources/terrain/grass1-albedo-512.jpg
diff --git a/packages/client/resources/terrain/grass1-albedo3-1024.png b/packages/quick-3d-mmo-client/src/resources/terrain/grass1-albedo3-1024.png
similarity index 100%
rename from packages/client/resources/terrain/grass1-albedo3-1024.png
rename to packages/quick-3d-mmo-client/src/resources/terrain/grass1-albedo3-1024.png
diff --git a/packages/client/resources/terrain/grass1-normal-1024.jpg b/packages/quick-3d-mmo-client/src/resources/terrain/grass1-normal-1024.jpg
similarity index 100%
rename from packages/client/resources/terrain/grass1-normal-1024.jpg
rename to packages/quick-3d-mmo-client/src/resources/terrain/grass1-normal-1024.jpg
diff --git a/packages/client/resources/terrain/rock-snow-ice-albedo-1024.png b/packages/quick-3d-mmo-client/src/resources/terrain/rock-snow-ice-albedo-1024.png
similarity index 100%
rename from packages/client/resources/terrain/rock-snow-ice-albedo-1024.png
rename to packages/quick-3d-mmo-client/src/resources/terrain/rock-snow-ice-albedo-1024.png
diff --git a/packages/client/resources/terrain/rock-snow-ice-normal-1024.jpg b/packages/quick-3d-mmo-client/src/resources/terrain/rock-snow-ice-normal-1024.jpg
similarity index 100%
rename from packages/client/resources/terrain/rock-snow-ice-normal-1024.jpg
rename to packages/quick-3d-mmo-client/src/resources/terrain/rock-snow-ice-normal-1024.jpg
diff --git a/packages/client/resources/terrain/rough-wet-cobble-albedo-1024.png b/packages/quick-3d-mmo-client/src/resources/terrain/rough-wet-cobble-albedo-1024.png
similarity index 100%
rename from packages/client/resources/terrain/rough-wet-cobble-albedo-1024.png
rename to packages/quick-3d-mmo-client/src/resources/terrain/rough-wet-cobble-albedo-1024.png
diff --git a/packages/client/resources/terrain/rough-wet-cobble-normal-1024.jpg b/packages/quick-3d-mmo-client/src/resources/terrain/rough-wet-cobble-normal-1024.jpg
similarity index 100%
rename from packages/client/resources/terrain/rough-wet-cobble-normal-1024.jpg
rename to packages/quick-3d-mmo-client/src/resources/terrain/rough-wet-cobble-normal-1024.jpg
diff --git a/packages/client/resources/terrain/sandy-rocks1-albedo-1024.png b/packages/quick-3d-mmo-client/src/resources/terrain/sandy-rocks1-albedo-1024.png
similarity index 100%
rename from packages/client/resources/terrain/sandy-rocks1-albedo-1024.png
rename to packages/quick-3d-mmo-client/src/resources/terrain/sandy-rocks1-albedo-1024.png
diff --git a/packages/client/resources/terrain/sandy-rocks1-normal-1024.jpg b/packages/quick-3d-mmo-client/src/resources/terrain/sandy-rocks1-normal-1024.jpg
similarity index 100%
rename from packages/client/resources/terrain/sandy-rocks1-normal-1024.jpg
rename to packages/quick-3d-mmo-client/src/resources/terrain/sandy-rocks1-normal-1024.jpg
diff --git a/packages/client/resources/terrain/sandyground-albedo-1024.png b/packages/quick-3d-mmo-client/src/resources/terrain/sandyground-albedo-1024.png
similarity index 100%
rename from packages/client/resources/terrain/sandyground-albedo-1024.png
rename to packages/quick-3d-mmo-client/src/resources/terrain/sandyground-albedo-1024.png
diff --git a/packages/client/resources/terrain/sandyground-normal-1024.jpg b/packages/quick-3d-mmo-client/src/resources/terrain/sandyground-normal-1024.jpg
similarity index 100%
rename from packages/client/resources/terrain/sandyground-normal-1024.jpg
rename to packages/quick-3d-mmo-client/src/resources/terrain/sandyground-normal-1024.jpg
diff --git a/packages/client/resources/terrain/simplex-noise.png b/packages/quick-3d-mmo-client/src/resources/terrain/simplex-noise.png
similarity index 100%
rename from packages/client/resources/terrain/simplex-noise.png
rename to packages/quick-3d-mmo-client/src/resources/terrain/simplex-noise.png
diff --git a/packages/client/resources/terrain/snow-packed-albedo-1024.png b/packages/quick-3d-mmo-client/src/resources/terrain/snow-packed-albedo-1024.png
similarity index 100%
rename from packages/client/resources/terrain/snow-packed-albedo-1024.png
rename to packages/quick-3d-mmo-client/src/resources/terrain/snow-packed-albedo-1024.png
diff --git a/packages/client/resources/terrain/snow-packed-normal-1024.jpg b/packages/quick-3d-mmo-client/src/resources/terrain/snow-packed-normal-1024.jpg
similarity index 100%
rename from packages/client/resources/terrain/snow-packed-normal-1024.jpg
rename to packages/quick-3d-mmo-client/src/resources/terrain/snow-packed-normal-1024.jpg
diff --git a/packages/client/resources/terrain/space-negx.jpg b/packages/quick-3d-mmo-client/src/resources/terrain/space-negx.jpg
similarity index 100%
rename from packages/client/resources/terrain/space-negx.jpg
rename to packages/quick-3d-mmo-client/src/resources/terrain/space-negx.jpg
diff --git a/packages/client/resources/terrain/space-negy.jpg b/packages/quick-3d-mmo-client/src/resources/terrain/space-negy.jpg
similarity index 100%
rename from packages/client/resources/terrain/space-negy.jpg
rename to packages/quick-3d-mmo-client/src/resources/terrain/space-negy.jpg
diff --git a/packages/client/resources/terrain/space-negz.jpg b/packages/quick-3d-mmo-client/src/resources/terrain/space-negz.jpg
similarity index 100%
rename from packages/client/resources/terrain/space-negz.jpg
rename to packages/quick-3d-mmo-client/src/resources/terrain/space-negz.jpg
diff --git a/packages/client/resources/terrain/space-posx.jpg b/packages/quick-3d-mmo-client/src/resources/terrain/space-posx.jpg
similarity index 100%
rename from packages/client/resources/terrain/space-posx.jpg
rename to packages/quick-3d-mmo-client/src/resources/terrain/space-posx.jpg
diff --git a/packages/client/resources/terrain/space-posy.jpg b/packages/quick-3d-mmo-client/src/resources/terrain/space-posy.jpg
similarity index 100%
rename from packages/client/resources/terrain/space-posy.jpg
rename to packages/quick-3d-mmo-client/src/resources/terrain/space-posy.jpg
diff --git a/packages/client/resources/terrain/space-posz.jpg b/packages/quick-3d-mmo-client/src/resources/terrain/space-posz.jpg
similarity index 100%
rename from packages/client/resources/terrain/space-posz.jpg
rename to packages/quick-3d-mmo-client/src/resources/terrain/space-posz.jpg
diff --git a/packages/client/resources/terrain/worn-bumpy-rock-albedo-1024.png b/packages/quick-3d-mmo-client/src/resources/terrain/worn-bumpy-rock-albedo-1024.png
similarity index 100%
rename from packages/client/resources/terrain/worn-bumpy-rock-albedo-1024.png
rename to packages/quick-3d-mmo-client/src/resources/terrain/worn-bumpy-rock-albedo-1024.png
diff --git a/packages/client/resources/terrain/worn-bumpy-rock-albedo-512.jpg b/packages/quick-3d-mmo-client/src/resources/terrain/worn-bumpy-rock-albedo-512.jpg
similarity index 100%
rename from packages/client/resources/terrain/worn-bumpy-rock-albedo-512.jpg
rename to packages/quick-3d-mmo-client/src/resources/terrain/worn-bumpy-rock-albedo-512.jpg
diff --git a/packages/client/resources/terrain/worn-bumpy-rock-normal-1024.jpg b/packages/quick-3d-mmo-client/src/resources/terrain/worn-bumpy-rock-normal-1024.jpg
similarity index 100%
rename from packages/client/resources/terrain/worn-bumpy-rock-normal-1024.jpg
rename to packages/quick-3d-mmo-client/src/resources/terrain/worn-bumpy-rock-normal-1024.jpg
diff --git a/packages/client/resources/textures/ball.png b/packages/quick-3d-mmo-client/src/resources/textures/ball.png
similarity index 100%
rename from packages/client/resources/textures/ball.png
rename to packages/quick-3d-mmo-client/src/resources/textures/ball.png
diff --git a/packages/client/resources/textures/fire.png b/packages/quick-3d-mmo-client/src/resources/textures/fire.png
similarity index 100%
rename from packages/client/resources/textures/fire.png
rename to packages/quick-3d-mmo-client/src/resources/textures/fire.png
diff --git a/packages/client/resources/textures/whitePuff14.png b/packages/quick-3d-mmo-client/src/resources/textures/whitePuff14.png
similarity index 100%
rename from packages/client/resources/textures/whitePuff14.png
rename to packages/quick-3d-mmo-client/src/resources/textures/whitePuff14.png
diff --git a/packages/client/resources/trees/Blends/Birch_1.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Birch_1.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Birch_1.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Birch_1.blend
diff --git a/packages/client/resources/trees/Blends/Birch_10.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Birch_10.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Birch_10.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Birch_10.blend
diff --git a/packages/client/resources/trees/Blends/Birch_2.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Birch_2.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Birch_2.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Birch_2.blend
diff --git a/packages/client/resources/trees/Blends/Birch_3.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Birch_3.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Birch_3.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Birch_3.blend
diff --git a/packages/client/resources/trees/Blends/Birch_4.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Birch_4.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Birch_4.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Birch_4.blend
diff --git a/packages/client/resources/trees/Blends/Birch_5.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Birch_5.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Birch_5.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Birch_5.blend
diff --git a/packages/client/resources/trees/Blends/Birch_6.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Birch_6.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Birch_6.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Birch_6.blend
diff --git a/packages/client/resources/trees/Blends/Birch_7.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Birch_7.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Birch_7.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Birch_7.blend
diff --git a/packages/client/resources/trees/Blends/Birch_8.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Birch_8.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Birch_8.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Birch_8.blend
diff --git a/packages/client/resources/trees/Blends/Birch_9.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Birch_9.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Birch_9.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Birch_9.blend
diff --git a/packages/client/resources/trees/Blends/DeadBirch_1.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadBirch_1.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/DeadBirch_1.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadBirch_1.blend
diff --git a/packages/client/resources/trees/Blends/DeadBirch_10.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadBirch_10.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/DeadBirch_10.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadBirch_10.blend
diff --git a/packages/client/resources/trees/Blends/DeadBirch_2.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadBirch_2.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/DeadBirch_2.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadBirch_2.blend
diff --git a/packages/client/resources/trees/Blends/DeadBirch_3.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadBirch_3.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/DeadBirch_3.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadBirch_3.blend
diff --git a/packages/client/resources/trees/Blends/DeadBirch_4.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadBirch_4.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/DeadBirch_4.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadBirch_4.blend
diff --git a/packages/client/resources/trees/Blends/DeadBirch_5.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadBirch_5.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/DeadBirch_5.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadBirch_5.blend
diff --git a/packages/client/resources/trees/Blends/DeadBirch_6.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadBirch_6.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/DeadBirch_6.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadBirch_6.blend
diff --git a/packages/client/resources/trees/Blends/DeadBirch_7.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadBirch_7.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/DeadBirch_7.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadBirch_7.blend
diff --git a/packages/client/resources/trees/Blends/DeadBirch_8.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadBirch_8.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/DeadBirch_8.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadBirch_8.blend
diff --git a/packages/client/resources/trees/Blends/DeadBirch_9.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadBirch_9.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/DeadBirch_9.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadBirch_9.blend
diff --git a/packages/client/resources/trees/Blends/DeadTree_1.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadTree_1.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/DeadTree_1.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadTree_1.blend
diff --git a/packages/client/resources/trees/Blends/DeadTree_10.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadTree_10.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/DeadTree_10.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadTree_10.blend
diff --git a/packages/client/resources/trees/Blends/DeadTree_2.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadTree_2.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/DeadTree_2.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadTree_2.blend
diff --git a/packages/client/resources/trees/Blends/DeadTree_3.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadTree_3.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/DeadTree_3.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadTree_3.blend
diff --git a/packages/client/resources/trees/Blends/DeadTree_4.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadTree_4.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/DeadTree_4.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadTree_4.blend
diff --git a/packages/client/resources/trees/Blends/DeadTree_5.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadTree_5.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/DeadTree_5.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadTree_5.blend
diff --git a/packages/client/resources/trees/Blends/DeadTree_6.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadTree_6.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/DeadTree_6.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadTree_6.blend
diff --git a/packages/client/resources/trees/Blends/DeadTree_7.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadTree_7.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/DeadTree_7.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadTree_7.blend
diff --git a/packages/client/resources/trees/Blends/DeadTree_8.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadTree_8.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/DeadTree_8.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadTree_8.blend
diff --git a/packages/client/resources/trees/Blends/DeadTree_9.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadTree_9.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/DeadTree_9.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/DeadTree_9.blend
diff --git a/packages/client/resources/trees/Blends/Pine_1.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Pine_1.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Pine_1.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Pine_1.blend
diff --git a/packages/client/resources/trees/Blends/Pine_2.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Pine_2.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Pine_2.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Pine_2.blend
diff --git a/packages/client/resources/trees/Blends/Pine_3.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Pine_3.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Pine_3.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Pine_3.blend
diff --git a/packages/client/resources/trees/Blends/Pine_4.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Pine_4.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Pine_4.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Pine_4.blend
diff --git a/packages/client/resources/trees/Blends/Pine_5.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Pine_5.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Pine_5.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Pine_5.blend
diff --git a/packages/client/resources/trees/Blends/Tree_1.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Tree_1.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Tree_1.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Tree_1.blend
diff --git a/packages/client/resources/trees/Blends/Tree_10.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Tree_10.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Tree_10.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Tree_10.blend
diff --git a/packages/client/resources/trees/Blends/Tree_2.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Tree_2.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Tree_2.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Tree_2.blend
diff --git a/packages/client/resources/trees/Blends/Tree_3.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Tree_3.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Tree_3.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Tree_3.blend
diff --git a/packages/client/resources/trees/Blends/Tree_4.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Tree_4.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Tree_4.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Tree_4.blend
diff --git a/packages/client/resources/trees/Blends/Tree_5.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Tree_5.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Tree_5.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Tree_5.blend
diff --git a/packages/client/resources/trees/Blends/Tree_6.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Tree_6.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Tree_6.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Tree_6.blend
diff --git a/packages/client/resources/trees/Blends/Tree_7.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Tree_7.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Tree_7.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Tree_7.blend
diff --git a/packages/client/resources/trees/Blends/Tree_8.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Tree_8.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Tree_8.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Tree_8.blend
diff --git a/packages/client/resources/trees/Blends/Tree_9.blend b/packages/quick-3d-mmo-client/src/resources/trees/Blends/Tree_9.blend
similarity index 100%
rename from packages/client/resources/trees/Blends/Tree_9.blend
rename to packages/quick-3d-mmo-client/src/resources/trees/Blends/Tree_9.blend
diff --git a/packages/client/resources/trees/FBX/Birch_1.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Birch_1.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Birch_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Birch_1.fbx
diff --git a/packages/client/resources/trees/FBX/Birch_10.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Birch_10.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Birch_10.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Birch_10.fbx
diff --git a/packages/client/resources/trees/FBX/Birch_2.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Birch_2.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Birch_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Birch_2.fbx
diff --git a/packages/client/resources/trees/FBX/Birch_3.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Birch_3.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Birch_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Birch_3.fbx
diff --git a/packages/client/resources/trees/FBX/Birch_4.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Birch_4.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Birch_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Birch_4.fbx
diff --git a/packages/client/resources/trees/FBX/Birch_5.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Birch_5.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Birch_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Birch_5.fbx
diff --git a/packages/client/resources/trees/FBX/Birch_6.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Birch_6.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Birch_6.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Birch_6.fbx
diff --git a/packages/client/resources/trees/FBX/Birch_7.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Birch_7.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Birch_7.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Birch_7.fbx
diff --git a/packages/client/resources/trees/FBX/Birch_8.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Birch_8.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Birch_8.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Birch_8.fbx
diff --git a/packages/client/resources/trees/FBX/Birch_9.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Birch_9.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Birch_9.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Birch_9.fbx
diff --git a/packages/client/resources/trees/FBX/DeadBirch_1.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadBirch_1.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/DeadBirch_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadBirch_1.fbx
diff --git a/packages/client/resources/trees/FBX/DeadBirch_10.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadBirch_10.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/DeadBirch_10.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadBirch_10.fbx
diff --git a/packages/client/resources/trees/FBX/DeadBirch_2.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadBirch_2.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/DeadBirch_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadBirch_2.fbx
diff --git a/packages/client/resources/trees/FBX/DeadBirch_3.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadBirch_3.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/DeadBirch_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadBirch_3.fbx
diff --git a/packages/client/resources/trees/FBX/DeadBirch_4.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadBirch_4.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/DeadBirch_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadBirch_4.fbx
diff --git a/packages/client/resources/trees/FBX/DeadBirch_5.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadBirch_5.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/DeadBirch_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadBirch_5.fbx
diff --git a/packages/client/resources/trees/FBX/DeadBirch_6.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadBirch_6.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/DeadBirch_6.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadBirch_6.fbx
diff --git a/packages/client/resources/trees/FBX/DeadBirch_7.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadBirch_7.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/DeadBirch_7.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadBirch_7.fbx
diff --git a/packages/client/resources/trees/FBX/DeadBirch_8.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadBirch_8.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/DeadBirch_8.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadBirch_8.fbx
diff --git a/packages/client/resources/trees/FBX/DeadBirch_9.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadBirch_9.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/DeadBirch_9.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadBirch_9.fbx
diff --git a/packages/client/resources/trees/FBX/DeadTree_1.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadTree_1.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/DeadTree_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadTree_1.fbx
diff --git a/packages/client/resources/trees/FBX/DeadTree_10.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadTree_10.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/DeadTree_10.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadTree_10.fbx
diff --git a/packages/client/resources/trees/FBX/DeadTree_2.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadTree_2.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/DeadTree_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadTree_2.fbx
diff --git a/packages/client/resources/trees/FBX/DeadTree_3.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadTree_3.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/DeadTree_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadTree_3.fbx
diff --git a/packages/client/resources/trees/FBX/DeadTree_4.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadTree_4.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/DeadTree_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadTree_4.fbx
diff --git a/packages/client/resources/trees/FBX/DeadTree_5.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadTree_5.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/DeadTree_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadTree_5.fbx
diff --git a/packages/client/resources/trees/FBX/DeadTree_6.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadTree_6.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/DeadTree_6.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadTree_6.fbx
diff --git a/packages/client/resources/trees/FBX/DeadTree_7.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadTree_7.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/DeadTree_7.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadTree_7.fbx
diff --git a/packages/client/resources/trees/FBX/DeadTree_8.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadTree_8.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/DeadTree_8.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadTree_8.fbx
diff --git a/packages/client/resources/trees/FBX/DeadTree_9.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadTree_9.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/DeadTree_9.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/DeadTree_9.fbx
diff --git a/packages/client/resources/trees/FBX/Pine_1.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Pine_1.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Pine_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Pine_1.fbx
diff --git a/packages/client/resources/trees/FBX/Pine_2.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Pine_2.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Pine_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Pine_2.fbx
diff --git a/packages/client/resources/trees/FBX/Pine_3.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Pine_3.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Pine_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Pine_3.fbx
diff --git a/packages/client/resources/trees/FBX/Pine_4.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Pine_4.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Pine_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Pine_4.fbx
diff --git a/packages/client/resources/trees/FBX/Pine_5.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Pine_5.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Pine_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Pine_5.fbx
diff --git a/packages/client/resources/trees/FBX/Tree_1.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Tree_1.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Tree_1.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Tree_1.fbx
diff --git a/packages/client/resources/trees/FBX/Tree_10.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Tree_10.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Tree_10.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Tree_10.fbx
diff --git a/packages/client/resources/trees/FBX/Tree_2.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Tree_2.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Tree_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Tree_2.fbx
diff --git a/packages/client/resources/trees/FBX/Tree_3.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Tree_3.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Tree_3.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Tree_3.fbx
diff --git a/packages/client/resources/trees/FBX/Tree_4.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Tree_4.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Tree_4.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Tree_4.fbx
diff --git a/packages/client/resources/trees/FBX/Tree_5.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Tree_5.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Tree_5.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Tree_5.fbx
diff --git a/packages/client/resources/trees/FBX/Tree_6.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Tree_6.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Tree_6.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Tree_6.fbx
diff --git a/packages/client/resources/trees/FBX/Tree_7.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Tree_7.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Tree_7.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Tree_7.fbx
diff --git a/packages/client/resources/trees/FBX/Tree_8.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Tree_8.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Tree_8.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Tree_8.fbx
diff --git a/packages/client/resources/trees/FBX/Tree_9.fbx b/packages/quick-3d-mmo-client/src/resources/trees/FBX/Tree_9.fbx
similarity index 100%
rename from packages/client/resources/trees/FBX/Tree_9.fbx
rename to packages/quick-3d-mmo-client/src/resources/trees/FBX/Tree_9.fbx
diff --git a/packages/client/resources/trees/License.txt b/packages/quick-3d-mmo-client/src/resources/trees/License.txt
similarity index 100%
rename from packages/client/resources/trees/License.txt
rename to packages/quick-3d-mmo-client/src/resources/trees/License.txt
diff --git a/packages/client/resources/trees/OBJ/Birch_1.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_1.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Birch_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_1.mtl
diff --git a/packages/client/resources/trees/OBJ/Birch_1.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_1.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Birch_1.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_1.obj
diff --git a/packages/client/resources/trees/OBJ/Birch_10.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_10.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Birch_10.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_10.mtl
diff --git a/packages/client/resources/trees/OBJ/Birch_10.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_10.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Birch_10.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_10.obj
diff --git a/packages/client/resources/trees/OBJ/Birch_2.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_2.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Birch_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_2.mtl
diff --git a/packages/client/resources/trees/OBJ/Birch_2.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_2.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Birch_2.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_2.obj
diff --git a/packages/client/resources/trees/OBJ/Birch_3.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_3.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Birch_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_3.mtl
diff --git a/packages/client/resources/trees/OBJ/Birch_3.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_3.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Birch_3.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_3.obj
diff --git a/packages/client/resources/trees/OBJ/Birch_4.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_4.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Birch_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_4.mtl
diff --git a/packages/client/resources/trees/OBJ/Birch_4.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_4.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Birch_4.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_4.obj
diff --git a/packages/client/resources/trees/OBJ/Birch_5.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_5.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Birch_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_5.mtl
diff --git a/packages/client/resources/trees/OBJ/Birch_5.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_5.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Birch_5.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_5.obj
diff --git a/packages/client/resources/trees/OBJ/Birch_6.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_6.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Birch_6.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_6.mtl
diff --git a/packages/client/resources/trees/OBJ/Birch_6.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_6.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Birch_6.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_6.obj
diff --git a/packages/client/resources/trees/OBJ/Birch_7.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_7.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Birch_7.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_7.mtl
diff --git a/packages/client/resources/trees/OBJ/Birch_7.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_7.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Birch_7.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_7.obj
diff --git a/packages/client/resources/trees/OBJ/Birch_8.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_8.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Birch_8.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_8.mtl
diff --git a/packages/client/resources/trees/OBJ/Birch_8.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_8.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Birch_8.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_8.obj
diff --git a/packages/client/resources/trees/OBJ/Birch_9.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_9.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Birch_9.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_9.mtl
diff --git a/packages/client/resources/trees/OBJ/Birch_9.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_9.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Birch_9.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Birch_9.obj
diff --git a/packages/client/resources/trees/OBJ/DeadBirch_1.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_1.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadBirch_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_1.mtl
diff --git a/packages/client/resources/trees/OBJ/DeadBirch_1.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_1.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadBirch_1.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_1.obj
diff --git a/packages/client/resources/trees/OBJ/DeadBirch_10.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_10.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadBirch_10.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_10.mtl
diff --git a/packages/client/resources/trees/OBJ/DeadBirch_10.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_10.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadBirch_10.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_10.obj
diff --git a/packages/client/resources/trees/OBJ/DeadBirch_2.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_2.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadBirch_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_2.mtl
diff --git a/packages/client/resources/trees/OBJ/DeadBirch_2.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_2.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadBirch_2.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_2.obj
diff --git a/packages/client/resources/trees/OBJ/DeadBirch_3.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_3.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadBirch_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_3.mtl
diff --git a/packages/client/resources/trees/OBJ/DeadBirch_3.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_3.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadBirch_3.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_3.obj
diff --git a/packages/client/resources/trees/OBJ/DeadBirch_4.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_4.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadBirch_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_4.mtl
diff --git a/packages/client/resources/trees/OBJ/DeadBirch_4.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_4.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadBirch_4.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_4.obj
diff --git a/packages/client/resources/trees/OBJ/DeadBirch_5.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_5.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadBirch_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_5.mtl
diff --git a/packages/client/resources/trees/OBJ/DeadBirch_5.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_5.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadBirch_5.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_5.obj
diff --git a/packages/client/resources/trees/OBJ/DeadBirch_6.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_6.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadBirch_6.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_6.mtl
diff --git a/packages/client/resources/trees/OBJ/DeadBirch_6.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_6.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadBirch_6.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_6.obj
diff --git a/packages/client/resources/trees/OBJ/DeadBirch_7.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_7.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadBirch_7.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_7.mtl
diff --git a/packages/client/resources/trees/OBJ/DeadBirch_7.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_7.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadBirch_7.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_7.obj
diff --git a/packages/client/resources/trees/OBJ/DeadBirch_8.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_8.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadBirch_8.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_8.mtl
diff --git a/packages/client/resources/trees/OBJ/DeadBirch_8.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_8.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadBirch_8.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_8.obj
diff --git a/packages/client/resources/trees/OBJ/DeadBirch_9.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_9.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadBirch_9.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_9.mtl
diff --git a/packages/client/resources/trees/OBJ/DeadBirch_9.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_9.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadBirch_9.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadBirch_9.obj
diff --git a/packages/client/resources/trees/OBJ/DeadTree_1.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_1.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadTree_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_1.mtl
diff --git a/packages/client/resources/trees/OBJ/DeadTree_1.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_1.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadTree_1.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_1.obj
diff --git a/packages/client/resources/trees/OBJ/DeadTree_10.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_10.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadTree_10.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_10.mtl
diff --git a/packages/client/resources/trees/OBJ/DeadTree_10.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_10.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadTree_10.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_10.obj
diff --git a/packages/client/resources/trees/OBJ/DeadTree_2.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_2.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadTree_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_2.mtl
diff --git a/packages/client/resources/trees/OBJ/DeadTree_2.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_2.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadTree_2.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_2.obj
diff --git a/packages/client/resources/trees/OBJ/DeadTree_3.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_3.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadTree_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_3.mtl
diff --git a/packages/client/resources/trees/OBJ/DeadTree_3.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_3.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadTree_3.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_3.obj
diff --git a/packages/client/resources/trees/OBJ/DeadTree_4.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_4.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadTree_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_4.mtl
diff --git a/packages/client/resources/trees/OBJ/DeadTree_4.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_4.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadTree_4.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_4.obj
diff --git a/packages/client/resources/trees/OBJ/DeadTree_5.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_5.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadTree_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_5.mtl
diff --git a/packages/client/resources/trees/OBJ/DeadTree_5.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_5.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadTree_5.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_5.obj
diff --git a/packages/client/resources/trees/OBJ/DeadTree_6.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_6.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadTree_6.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_6.mtl
diff --git a/packages/client/resources/trees/OBJ/DeadTree_6.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_6.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadTree_6.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_6.obj
diff --git a/packages/client/resources/trees/OBJ/DeadTree_7.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_7.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadTree_7.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_7.mtl
diff --git a/packages/client/resources/trees/OBJ/DeadTree_7.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_7.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadTree_7.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_7.obj
diff --git a/packages/client/resources/trees/OBJ/DeadTree_8.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_8.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadTree_8.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_8.mtl
diff --git a/packages/client/resources/trees/OBJ/DeadTree_8.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_8.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadTree_8.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_8.obj
diff --git a/packages/client/resources/trees/OBJ/DeadTree_9.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_9.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadTree_9.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_9.mtl
diff --git a/packages/client/resources/trees/OBJ/DeadTree_9.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_9.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/DeadTree_9.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/DeadTree_9.obj
diff --git a/packages/client/resources/trees/OBJ/Pine_1.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Pine_1.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Pine_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Pine_1.mtl
diff --git a/packages/client/resources/trees/OBJ/Pine_1.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Pine_1.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Pine_1.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Pine_1.obj
diff --git a/packages/client/resources/trees/OBJ/Pine_2.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Pine_2.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Pine_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Pine_2.mtl
diff --git a/packages/client/resources/trees/OBJ/Pine_2.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Pine_2.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Pine_2.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Pine_2.obj
diff --git a/packages/client/resources/trees/OBJ/Pine_3.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Pine_3.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Pine_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Pine_3.mtl
diff --git a/packages/client/resources/trees/OBJ/Pine_3.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Pine_3.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Pine_3.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Pine_3.obj
diff --git a/packages/client/resources/trees/OBJ/Pine_4.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Pine_4.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Pine_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Pine_4.mtl
diff --git a/packages/client/resources/trees/OBJ/Pine_4.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Pine_4.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Pine_4.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Pine_4.obj
diff --git a/packages/client/resources/trees/OBJ/Pine_5.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Pine_5.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Pine_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Pine_5.mtl
diff --git a/packages/client/resources/trees/OBJ/Pine_5.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Pine_5.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Pine_5.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Pine_5.obj
diff --git a/packages/client/resources/trees/OBJ/Tree_1.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_1.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Tree_1.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_1.mtl
diff --git a/packages/client/resources/trees/OBJ/Tree_1.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_1.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Tree_1.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_1.obj
diff --git a/packages/client/resources/trees/OBJ/Tree_10.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_10.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Tree_10.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_10.mtl
diff --git a/packages/client/resources/trees/OBJ/Tree_10.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_10.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Tree_10.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_10.obj
diff --git a/packages/client/resources/trees/OBJ/Tree_2.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_2.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Tree_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_2.mtl
diff --git a/packages/client/resources/trees/OBJ/Tree_2.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_2.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Tree_2.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_2.obj
diff --git a/packages/client/resources/trees/OBJ/Tree_3.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_3.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Tree_3.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_3.mtl
diff --git a/packages/client/resources/trees/OBJ/Tree_3.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_3.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Tree_3.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_3.obj
diff --git a/packages/client/resources/trees/OBJ/Tree_4.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_4.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Tree_4.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_4.mtl
diff --git a/packages/client/resources/trees/OBJ/Tree_4.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_4.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Tree_4.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_4.obj
diff --git a/packages/client/resources/trees/OBJ/Tree_5.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_5.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Tree_5.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_5.mtl
diff --git a/packages/client/resources/trees/OBJ/Tree_5.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_5.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Tree_5.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_5.obj
diff --git a/packages/client/resources/trees/OBJ/Tree_6.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_6.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Tree_6.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_6.mtl
diff --git a/packages/client/resources/trees/OBJ/Tree_6.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_6.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Tree_6.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_6.obj
diff --git a/packages/client/resources/trees/OBJ/Tree_7.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_7.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Tree_7.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_7.mtl
diff --git a/packages/client/resources/trees/OBJ/Tree_7.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_7.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Tree_7.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_7.obj
diff --git a/packages/client/resources/trees/OBJ/Tree_8.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_8.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Tree_8.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_8.mtl
diff --git a/packages/client/resources/trees/OBJ/Tree_8.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_8.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Tree_8.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_8.obj
diff --git a/packages/client/resources/trees/OBJ/Tree_9.mtl b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_9.mtl
similarity index 100%
rename from packages/client/resources/trees/OBJ/Tree_9.mtl
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_9.mtl
diff --git a/packages/client/resources/trees/OBJ/Tree_9.obj b/packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_9.obj
similarity index 100%
rename from packages/client/resources/trees/OBJ/Tree_9.obj
rename to packages/quick-3d-mmo-client/src/resources/trees/OBJ/Tree_9.obj
diff --git a/packages/client/resources/trees/Preview.jpg b/packages/quick-3d-mmo-client/src/resources/trees/Preview.jpg
similarity index 100%
rename from packages/client/resources/trees/Preview.jpg
rename to packages/quick-3d-mmo-client/src/resources/trees/Preview.jpg
diff --git a/packages/client/resources/trees/Textures/Birch_Bark.png b/packages/quick-3d-mmo-client/src/resources/trees/Textures/Birch_Bark.png
similarity index 100%
rename from packages/client/resources/trees/Textures/Birch_Bark.png
rename to packages/quick-3d-mmo-client/src/resources/trees/Textures/Birch_Bark.png
diff --git a/packages/client/resources/trees/Textures/Birch_Leaves_Green.png b/packages/quick-3d-mmo-client/src/resources/trees/Textures/Birch_Leaves_Green.png
similarity index 100%
rename from packages/client/resources/trees/Textures/Birch_Leaves_Green.png
rename to packages/quick-3d-mmo-client/src/resources/trees/Textures/Birch_Leaves_Green.png
diff --git a/packages/client/resources/trees/Textures/Birch_Leaves_Yellow.png b/packages/quick-3d-mmo-client/src/resources/trees/Textures/Birch_Leaves_Yellow.png
similarity index 100%
rename from packages/client/resources/trees/Textures/Birch_Leaves_Yellow.png
rename to packages/quick-3d-mmo-client/src/resources/trees/Textures/Birch_Leaves_Yellow.png
diff --git a/packages/client/resources/trees/Textures/Color Variations/Bark_Dead.png b/packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Bark_Dead.png
similarity index 100%
rename from packages/client/resources/trees/Textures/Color Variations/Bark_Dead.png
rename to packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Bark_Dead.png
diff --git a/packages/client/resources/trees/Textures/Color Variations/Birch_Bark_Dead.png b/packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Birch_Bark_Dead.png
similarity index 100%
rename from packages/client/resources/trees/Textures/Color Variations/Birch_Bark_Dead.png
rename to packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Birch_Bark_Dead.png
diff --git a/packages/client/resources/trees/Textures/Color Variations/Leaves_Cyan.png b/packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Leaves_Cyan.png
similarity index 100%
rename from packages/client/resources/trees/Textures/Color Variations/Leaves_Cyan.png
rename to packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Leaves_Cyan.png
diff --git a/packages/client/resources/trees/Textures/Color Variations/Leaves_DarkRed.png b/packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Leaves_DarkRed.png
similarity index 100%
rename from packages/client/resources/trees/Textures/Color Variations/Leaves_DarkRed.png
rename to packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Leaves_DarkRed.png
diff --git a/packages/client/resources/trees/Textures/Color Variations/Leaves_Light.png b/packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Leaves_Light.png
similarity index 100%
rename from packages/client/resources/trees/Textures/Color Variations/Leaves_Light.png
rename to packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Leaves_Light.png
diff --git a/packages/client/resources/trees/Textures/Color Variations/Leaves_Orange.png b/packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Leaves_Orange.png
similarity index 100%
rename from packages/client/resources/trees/Textures/Color Variations/Leaves_Orange.png
rename to packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Leaves_Orange.png
diff --git a/packages/client/resources/trees/Textures/Color Variations/Leaves_Pink.png b/packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Leaves_Pink.png
similarity index 100%
rename from packages/client/resources/trees/Textures/Color Variations/Leaves_Pink.png
rename to packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Leaves_Pink.png
diff --git a/packages/client/resources/trees/Textures/Color Variations/Leaves_Purple.png b/packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Leaves_Purple.png
similarity index 100%
rename from packages/client/resources/trees/Textures/Color Variations/Leaves_Purple.png
rename to packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Leaves_Purple.png
diff --git a/packages/client/resources/trees/Textures/Color Variations/Leaves_Red.png b/packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Leaves_Red.png
similarity index 100%
rename from packages/client/resources/trees/Textures/Color Variations/Leaves_Red.png
rename to packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Leaves_Red.png
diff --git a/packages/client/resources/trees/Textures/Color Variations/Pine_Leaves_Light.png b/packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Pine_Leaves_Light.png
similarity index 100%
rename from packages/client/resources/trees/Textures/Color Variations/Pine_Leaves_Light.png
rename to packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Pine_Leaves_Light.png
diff --git a/packages/client/resources/trees/Textures/Color Variations/Pine_Leaves_Red.png b/packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Pine_Leaves_Red.png
similarity index 100%
rename from packages/client/resources/trees/Textures/Color Variations/Pine_Leaves_Red.png
rename to packages/quick-3d-mmo-client/src/resources/trees/Textures/Color Variations/Pine_Leaves_Red.png
diff --git a/packages/client/resources/trees/Textures/Leaves_Blue.png b/packages/quick-3d-mmo-client/src/resources/trees/Textures/Leaves_Blue.png
similarity index 100%
rename from packages/client/resources/trees/Textures/Leaves_Blue.png
rename to packages/quick-3d-mmo-client/src/resources/trees/Textures/Leaves_Blue.png
diff --git a/packages/client/resources/trees/Textures/Pine_Leaves.png b/packages/quick-3d-mmo-client/src/resources/trees/Textures/Pine_Leaves.png
similarity index 100%
rename from packages/client/resources/trees/Textures/Pine_Leaves.png
rename to packages/quick-3d-mmo-client/src/resources/trees/Textures/Pine_Leaves.png
diff --git a/packages/client/resources/trees/Textures/Tree_Bark.jpg b/packages/quick-3d-mmo-client/src/resources/trees/Textures/Tree_Bark.jpg
similarity index 100%
rename from packages/client/resources/trees/Textures/Tree_Bark.jpg
rename to packages/quick-3d-mmo-client/src/resources/trees/Textures/Tree_Bark.jpg
diff --git a/packages/client/resources/trees/Textures/Tree_Leaves.png b/packages/quick-3d-mmo-client/src/resources/trees/Textures/Tree_Leaves.png
similarity index 100%
rename from packages/client/resources/trees/Textures/Tree_Leaves.png
rename to packages/quick-3d-mmo-client/src/resources/trees/Textures/Tree_Leaves.png
diff --git a/packages/client/resources/weapons/Blends/Arrow.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Arrow.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Arrow.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Arrow.blend
diff --git a/packages/client/resources/weapons/Blends/Axe.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Axe.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Axe.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Axe.blend
diff --git a/packages/client/resources/weapons/Blends/Axe_Double.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Axe_Double.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Axe_Double.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Axe_Double.blend
diff --git a/packages/client/resources/weapons/Blends/Axe_Small.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Axe_Small.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Axe_Small.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Axe_Small.blend
diff --git a/packages/client/resources/weapons/Blends/Bow_Evil.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Bow_Evil.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Bow_Evil.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Bow_Evil.blend
diff --git a/packages/client/resources/weapons/Blends/Bow_Golden.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Bow_Golden.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Bow_Golden.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Bow_Golden.blend
diff --git a/packages/client/resources/weapons/Blends/Bow_Wooden.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Bow_Wooden.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Bow_Wooden.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Bow_Wooden.blend
diff --git a/packages/client/resources/weapons/Blends/Bow_Wooden2.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Bow_Wooden2.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Bow_Wooden2.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Bow_Wooden2.blend
diff --git a/packages/client/resources/weapons/Blends/Claymore.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Claymore.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Claymore.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Claymore.blend
diff --git a/packages/client/resources/weapons/Blends/Dagger.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Dagger.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Dagger.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Dagger.blend
diff --git a/packages/client/resources/weapons/Blends/Dagger_2.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Dagger_2.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Dagger_2.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Dagger_2.blend
diff --git a/packages/client/resources/weapons/Blends/Hammer_Double.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Hammer_Double.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Hammer_Double.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Hammer_Double.blend
diff --git a/packages/client/resources/weapons/Blends/Hammer_Small.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Hammer_Small.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Hammer_Small.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Hammer_Small.blend
diff --git a/packages/client/resources/weapons/Blends/Scythe.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Scythe.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Scythe.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Scythe.blend
diff --git a/packages/client/resources/weapons/Blends/Shield_Celtic_Golden.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Shield_Celtic_Golden.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Shield_Celtic_Golden.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Shield_Celtic_Golden.blend
diff --git a/packages/client/resources/weapons/Blends/Shield_Heater.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Shield_Heater.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Shield_Heater.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Shield_Heater.blend
diff --git a/packages/client/resources/weapons/Blends/Shield_Heater_2.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Shield_Heater_2.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Shield_Heater_2.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Shield_Heater_2.blend
diff --git a/packages/client/resources/weapons/Blends/Shield_Round.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Shield_Round.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Shield_Round.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Shield_Round.blend
diff --git a/packages/client/resources/weapons/Blends/Shield_Round_2.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Shield_Round_2.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Shield_Round_2.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Shield_Round_2.blend
diff --git a/packages/client/resources/weapons/Blends/Spear.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Spear.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Spear.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Spear.blend
diff --git a/packages/client/resources/weapons/Blends/Sword.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Sword.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Sword.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Sword.blend
diff --git a/packages/client/resources/weapons/Blends/Sword_2.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Sword_2.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Sword_2.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Sword_2.blend
diff --git a/packages/client/resources/weapons/Blends/Sword_Big.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Sword_Big.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Sword_Big.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Sword_Big.blend
diff --git a/packages/client/resources/weapons/Blends/Sword_Golden.blend b/packages/quick-3d-mmo-client/src/resources/weapons/Blends/Sword_Golden.blend
similarity index 100%
rename from packages/client/resources/weapons/Blends/Sword_Golden.blend
rename to packages/quick-3d-mmo-client/src/resources/weapons/Blends/Sword_Golden.blend
diff --git a/packages/client/resources/weapons/FBX/Arrow.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Arrow.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Arrow.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Arrow.fbx
diff --git a/packages/client/resources/weapons/FBX/Axe.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Axe.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Axe.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Axe.fbx
diff --git a/packages/client/resources/weapons/FBX/Axe_Double.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Axe_Double.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Axe_Double.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Axe_Double.fbx
diff --git a/packages/client/resources/weapons/FBX/Axe_Small.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Axe_Small.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Axe_Small.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Axe_Small.fbx
diff --git a/packages/client/resources/weapons/FBX/Bow_Evil.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Bow_Evil.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Bow_Evil.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Bow_Evil.fbx
diff --git a/packages/client/resources/weapons/FBX/Bow_Golden.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Bow_Golden.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Bow_Golden.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Bow_Golden.fbx
diff --git a/packages/client/resources/weapons/FBX/Bow_Wooden.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Bow_Wooden.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Bow_Wooden.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Bow_Wooden.fbx
diff --git a/packages/client/resources/weapons/FBX/Bow_Wooden2.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Bow_Wooden2.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Bow_Wooden2.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Bow_Wooden2.fbx
diff --git a/packages/client/resources/weapons/FBX/Claymore.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Claymore.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Claymore.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Claymore.fbx
diff --git a/packages/client/resources/weapons/FBX/Dagger.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Dagger.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Dagger.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Dagger.fbx
diff --git a/packages/client/resources/weapons/FBX/Dagger_2.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Dagger_2.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Dagger_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Dagger_2.fbx
diff --git a/packages/client/resources/weapons/FBX/Hammer_Double.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Hammer_Double.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Hammer_Double.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Hammer_Double.fbx
diff --git a/packages/client/resources/weapons/FBX/Hammer_Small.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Hammer_Small.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Hammer_Small.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Hammer_Small.fbx
diff --git a/packages/client/resources/weapons/FBX/Scythe.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Scythe.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Scythe.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Scythe.fbx
diff --git a/packages/client/resources/weapons/FBX/Shield_Celtic_Golden.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Shield_Celtic_Golden.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Shield_Celtic_Golden.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Shield_Celtic_Golden.fbx
diff --git a/packages/client/resources/weapons/FBX/Shield_Heater.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Shield_Heater.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Shield_Heater.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Shield_Heater.fbx
diff --git a/packages/client/resources/weapons/FBX/Shield_Heater_2.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Shield_Heater_2.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Shield_Heater_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Shield_Heater_2.fbx
diff --git a/packages/client/resources/weapons/FBX/Shield_Round.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Shield_Round.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Shield_Round.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Shield_Round.fbx
diff --git a/packages/client/resources/weapons/FBX/Shield_Round_2.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Shield_Round_2.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Shield_Round_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Shield_Round_2.fbx
diff --git a/packages/client/resources/weapons/FBX/Spear.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Spear.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Spear.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Spear.fbx
diff --git a/packages/client/resources/weapons/FBX/Sword.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Sword.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Sword.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Sword.fbx
diff --git a/packages/client/resources/weapons/FBX/Sword_2.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Sword_2.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Sword_2.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Sword_2.fbx
diff --git a/packages/client/resources/weapons/FBX/Sword_Big.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Sword_Big.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Sword_Big.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Sword_Big.fbx
diff --git a/packages/client/resources/weapons/FBX/Sword_Golden.fbx b/packages/quick-3d-mmo-client/src/resources/weapons/FBX/Sword_Golden.fbx
similarity index 100%
rename from packages/client/resources/weapons/FBX/Sword_Golden.fbx
rename to packages/quick-3d-mmo-client/src/resources/weapons/FBX/Sword_Golden.fbx
diff --git a/packages/client/resources/weapons/License.txt b/packages/quick-3d-mmo-client/src/resources/weapons/License.txt
similarity index 100%
rename from packages/client/resources/weapons/License.txt
rename to packages/quick-3d-mmo-client/src/resources/weapons/License.txt
diff --git a/packages/client/resources/weapons/OBJ/Arrow.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Arrow.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Arrow.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Arrow.mtl
diff --git a/packages/client/resources/weapons/OBJ/Arrow.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Arrow.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Arrow.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Arrow.obj
diff --git a/packages/client/resources/weapons/OBJ/Axe.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Axe.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Axe.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Axe.mtl
diff --git a/packages/client/resources/weapons/OBJ/Axe.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Axe.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Axe.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Axe.obj
diff --git a/packages/client/resources/weapons/OBJ/Axe_Double.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Axe_Double.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Axe_Double.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Axe_Double.mtl
diff --git a/packages/client/resources/weapons/OBJ/Axe_Double.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Axe_Double.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Axe_Double.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Axe_Double.obj
diff --git a/packages/client/resources/weapons/OBJ/Axe_Small.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Axe_Small.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Axe_Small.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Axe_Small.mtl
diff --git a/packages/client/resources/weapons/OBJ/Axe_Small.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Axe_Small.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Axe_Small.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Axe_Small.obj
diff --git a/packages/client/resources/weapons/OBJ/Bow_Evil.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Bow_Evil.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Bow_Evil.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Bow_Evil.mtl
diff --git a/packages/client/resources/weapons/OBJ/Bow_Evil.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Bow_Evil.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Bow_Evil.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Bow_Evil.obj
diff --git a/packages/client/resources/weapons/OBJ/Bow_Golden.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Bow_Golden.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Bow_Golden.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Bow_Golden.mtl
diff --git a/packages/client/resources/weapons/OBJ/Bow_Golden.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Bow_Golden.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Bow_Golden.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Bow_Golden.obj
diff --git a/packages/client/resources/weapons/OBJ/Bow_Wooden.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Bow_Wooden.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Bow_Wooden.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Bow_Wooden.mtl
diff --git a/packages/client/resources/weapons/OBJ/Bow_Wooden.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Bow_Wooden.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Bow_Wooden.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Bow_Wooden.obj
diff --git a/packages/client/resources/weapons/OBJ/Bow_Wooden2.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Bow_Wooden2.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Bow_Wooden2.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Bow_Wooden2.mtl
diff --git a/packages/client/resources/weapons/OBJ/Bow_Wooden2.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Bow_Wooden2.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Bow_Wooden2.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Bow_Wooden2.obj
diff --git a/packages/client/resources/weapons/OBJ/Claymore.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Claymore.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Claymore.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Claymore.mtl
diff --git a/packages/client/resources/weapons/OBJ/Claymore.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Claymore.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Claymore.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Claymore.obj
diff --git a/packages/client/resources/weapons/OBJ/Dagger.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Dagger.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Dagger.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Dagger.mtl
diff --git a/packages/client/resources/weapons/OBJ/Dagger.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Dagger.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Dagger.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Dagger.obj
diff --git a/packages/client/resources/weapons/OBJ/Dagger_2.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Dagger_2.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Dagger_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Dagger_2.mtl
diff --git a/packages/client/resources/weapons/OBJ/Dagger_2.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Dagger_2.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Dagger_2.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Dagger_2.obj
diff --git a/packages/client/resources/weapons/OBJ/Hammer_Double.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Hammer_Double.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Hammer_Double.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Hammer_Double.mtl
diff --git a/packages/client/resources/weapons/OBJ/Hammer_Double.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Hammer_Double.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Hammer_Double.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Hammer_Double.obj
diff --git a/packages/client/resources/weapons/OBJ/Hammer_Small.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Hammer_Small.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Hammer_Small.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Hammer_Small.mtl
diff --git a/packages/client/resources/weapons/OBJ/Hammer_Small.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Hammer_Small.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Hammer_Small.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Hammer_Small.obj
diff --git a/packages/client/resources/weapons/OBJ/Scythe.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Scythe.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Scythe.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Scythe.mtl
diff --git a/packages/client/resources/weapons/OBJ/Scythe.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Scythe.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Scythe.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Scythe.obj
diff --git a/packages/client/resources/weapons/OBJ/Shield_Celtic_Golden.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Shield_Celtic_Golden.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Shield_Celtic_Golden.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Shield_Celtic_Golden.mtl
diff --git a/packages/client/resources/weapons/OBJ/Shield_Celtic_Golden.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Shield_Celtic_Golden.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Shield_Celtic_Golden.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Shield_Celtic_Golden.obj
diff --git a/packages/client/resources/weapons/OBJ/Shield_Heater.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Shield_Heater.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Shield_Heater.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Shield_Heater.mtl
diff --git a/packages/client/resources/weapons/OBJ/Shield_Heater.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Shield_Heater.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Shield_Heater.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Shield_Heater.obj
diff --git a/packages/client/resources/weapons/OBJ/Shield_Heater_2.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Shield_Heater_2.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Shield_Heater_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Shield_Heater_2.mtl
diff --git a/packages/client/resources/weapons/OBJ/Shield_Heater_2.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Shield_Heater_2.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Shield_Heater_2.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Shield_Heater_2.obj
diff --git a/packages/client/resources/weapons/OBJ/Shield_Round.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Shield_Round.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Shield_Round.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Shield_Round.mtl
diff --git a/packages/client/resources/weapons/OBJ/Shield_Round.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Shield_Round.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Shield_Round.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Shield_Round.obj
diff --git a/packages/client/resources/weapons/OBJ/Shield_Round_2.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Shield_Round_2.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Shield_Round_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Shield_Round_2.mtl
diff --git a/packages/client/resources/weapons/OBJ/Shield_Round_2.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Shield_Round_2.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Shield_Round_2.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Shield_Round_2.obj
diff --git a/packages/client/resources/weapons/OBJ/Spear.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Spear.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Spear.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Spear.mtl
diff --git a/packages/client/resources/weapons/OBJ/Spear.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Spear.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Spear.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Spear.obj
diff --git a/packages/client/resources/weapons/OBJ/Sword.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Sword.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Sword.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Sword.mtl
diff --git a/packages/client/resources/weapons/OBJ/Sword.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Sword.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Sword.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Sword.obj
diff --git a/packages/client/resources/weapons/OBJ/Sword_2.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Sword_2.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Sword_2.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Sword_2.mtl
diff --git a/packages/client/resources/weapons/OBJ/Sword_2.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Sword_2.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Sword_2.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Sword_2.obj
diff --git a/packages/client/resources/weapons/OBJ/Sword_Big.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Sword_Big.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Sword_Big.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Sword_Big.mtl
diff --git a/packages/client/resources/weapons/OBJ/Sword_Big.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Sword_Big.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Sword_Big.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Sword_Big.obj
diff --git a/packages/client/resources/weapons/OBJ/Sword_Golden.mtl b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Sword_Golden.mtl
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Sword_Golden.mtl
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Sword_Golden.mtl
diff --git a/packages/client/resources/weapons/OBJ/Sword_Golden.obj b/packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Sword_Golden.obj
similarity index 100%
rename from packages/client/resources/weapons/OBJ/Sword_Golden.obj
rename to packages/quick-3d-mmo-client/src/resources/weapons/OBJ/Sword_Golden.obj
diff --git a/packages/client/resources/weapons/Preview.png b/packages/quick-3d-mmo-client/src/resources/weapons/Preview.png
similarity index 100%
rename from packages/client/resources/weapons/Preview.png
rename to packages/quick-3d-mmo-client/src/resources/weapons/Preview.png
diff --git a/packages/client/src/attacker-controller.ts b/packages/quick-3d-mmo-client/src/scripts/attacker-controller.ts
similarity index 89%
rename from packages/client/src/attacker-controller.ts
rename to packages/quick-3d-mmo-client/src/scripts/attacker-controller.ts
index f18ac8e4..c7df262b 100644
--- a/packages/client/src/attacker-controller.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/attacker-controller.ts
@@ -1,7 +1,7 @@
import * as THREE from 'three';
import { Component } from './entity';
-import { Constants } from 'shared'
+import { Constants } from 'quick-3d-mmo-shared'
const { EVENT_TYPES } = { ...Constants };
class AttackController extends Component {
diff --git a/packages/client/src/blood-effect.ts b/packages/quick-3d-mmo-client/src/scripts/blood-effect.ts
similarity index 94%
rename from packages/client/src/blood-effect.ts
rename to packages/quick-3d-mmo-client/src/scripts/blood-effect.ts
index 4a95cf1f..5b0d62e7 100644
--- a/packages/client/src/blood-effect.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/blood-effect.ts
@@ -2,7 +2,7 @@ import * as THREE from 'three';
import { ParticleEmitter, ParticleSystem } from "./particle-system";
import { Component } from "./entity";
-import { Constants } from 'shared';
+import { Constants } from 'quick-3d-mmo-shared';
const { CLASS_TYPES_ENUM, EVENT_TYPES, STATE_TYPES } = Constants;
@@ -124,12 +124,12 @@ class BloodEffect extends Component {
this.bloodFX_ = new ParticleSystem({
camera: params.camera,
parent: params.scene,
- texture: './resources/textures/whitePuff14.png',
+ texture: './src/resources/textures/whitePuff14.png',
});
this.fireFX_ = new ParticleSystem({
camera: params.camera,
parent: params.scene,
- texture: './resources/textures/fire.png',
+ texture: './src/resources/textures/fire.png',
});
}
@@ -153,13 +153,15 @@ class BloodEffect extends Component {
}
for (let e of msg.value) {
- if (e.type != STATE_TYPES.ATTACK) {
+ if (e.type != STATE_TYPES.ATTACK || !e?.attacker) {
continue;
}
// Another hack
- const hc = e.attacker.GetComponent('HealthComponent');
-
+ const hc = e?.attacker?.GetComponent('HealthComponent');
+ if(!hc) {
+ return;
+ }
if (hc.stats_.desc.character.class != CLASS_TYPES_ENUM.SORCEROR) {
this.EmitBloodFX_();
} else {
diff --git a/packages/client/src/entity.ts b/packages/quick-3d-mmo-client/src/scripts/entity.ts
similarity index 93%
rename from packages/client/src/entity.ts
rename to packages/quick-3d-mmo-client/src/scripts/entity.ts
index 7f500605..4091ed45 100644
--- a/packages/client/src/entity.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/entity.ts
@@ -8,7 +8,7 @@ class Entity {
_handlers: {};
parent_: any;
dead_: boolean;
- Account: any;
+ Account: any;
constructor() {
this._name = null;
diff --git a/packages/quick-3d-mmo-client/src/scripts/equip-weapon-component.ts b/packages/quick-3d-mmo-client/src/scripts/equip-weapon-component.ts
new file mode 100644
index 00000000..13f89c68
--- /dev/null
+++ b/packages/quick-3d-mmo-client/src/scripts/equip-weapon-component.ts
@@ -0,0 +1,133 @@
+import * as THREE from 'three';
+
+import { Component } from './entity';
+import { Defs, Constants } from 'quick-3d-mmo-shared';
+import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader';
+
+const { CHARACTER_MODELS } = Defs;
+const { EVENT_TYPES, KNOWN_ENTITIES } = Constants;
+
+class EquipWeapon extends Component {
+ params_: any;
+ target_: any;
+ name_: any;
+ anchor_: any;
+ _bones: any;
+
+ constructor(params) {
+ super();
+ this.params_ = params;
+ this.target_ = null;
+ this.name_ = null;
+ if(!this.params_?.desc) {
+ return;
+ }
+ const classType = this.params_.desc.character.class;
+ const modelData = CHARACTER_MODELS[classType];
+ this.anchor_ = modelData.anchors.rightHand;
+ }
+
+ InitComponent() {
+ this._RegisterHandler(EVENT_TYPES.LOAD_CHARACTER, (m) => this._OnCharacterLoaded(m));
+ this._RegisterHandler(EVENT_TYPES.INVENTORY_EQUIP, (m) => this._OnEquip(m));
+ }
+
+ _OnCharacterLoaded(msg) {
+ this._bones = msg.bones;
+ this._AttachTarget();
+ }
+
+ _AttachTarget() {
+ if (this._bones && this.target_) {
+ this._bones[this.anchor_].add(this.target_);
+ }
+ }
+
+ GetItemDefinition_(name) {
+ const database = this.FindEntity(KNOWN_ENTITIES.DATABASE).GetComponent(
+ KNOWN_ENTITIES.INVENTORY_DATABASE_CONTROLLER);
+ return database.Find(name);
+ }
+
+ _OnEquip(msg) {
+ if (msg.value == this.name_) {
+ return;
+ }
+
+ if (this.target_) {
+ this._UnloadModels();
+ }
+ const inventory = this.GetComponent(KNOWN_ENTITIES.INVENTORY_CONTROLLER);
+ const item = this.GetItemDefinition_(msg.value);
+
+ this.name_ = msg.value;
+
+ if (item) {
+ this._LoadModels(item, () => {
+ this._AttachTarget();
+ });
+ }
+ }
+
+ _UnloadModels() {
+ if (this.target_) {
+ this.target_.parent.remove(this.target_);
+ // Probably need to free the memory properly, whatever
+ this.target_ = null;
+ }
+ }
+
+ _LoadModels(item, cb) {
+ const loader = new FBXLoader();
+ loader.setPath('./src/resources/weapons/FBX/');
+ loader.load(item.renderParams.name + '.fbx', (fbx) => {
+ this.target_ = fbx;
+ this.target_.scale.setScalar(item.renderParams.scale);
+ // this.target_.rotateY(Math.PI);
+ this.target_.rotateX(Math.PI / 2);
+ // this.target_.rotateY(-1);
+
+ this.target_.traverse(c => {
+ c.castShadow = true;
+ c.receiveShadow = true;
+
+ // Do this instead of something smart like re-exporting.
+ let materials = c.material;
+ let newMaterials = [];
+ if (!(c.material instanceof Array)) {
+ materials = [c.material];
+ }
+
+ for (let m of materials) {
+ if (m) {
+ const c = new THREE.Color().copy(m.color);
+ c.multiplyScalar(0.75);
+ newMaterials.push(new THREE.MeshStandardMaterial({
+ color: c,
+ name: m.name,
+ metalness: 1.0,
+ }));
+ }
+ }
+
+ if (!(c.material instanceof Array)) {
+ c.material = newMaterials[0];
+ } else {
+ c.material = newMaterials;
+ }
+
+ });
+
+ cb();
+
+ this.Broadcast({
+ topic: EVENT_TYPES.LOAD_WEAPON,
+ model: this.target_,
+ bones: this._bones,
+ });
+ });
+ }
+};
+export {
+ EquipWeapon
+}
\ No newline at end of file
diff --git a/packages/client/src/finite-state-machine.ts b/packages/quick-3d-mmo-client/src/scripts/finite-state-machine.ts
similarity index 100%
rename from packages/client/src/finite-state-machine.ts
rename to packages/quick-3d-mmo-client/src/scripts/finite-state-machine.ts
diff --git a/packages/client/src/floating-name.ts b/packages/quick-3d-mmo-client/src/scripts/floating-name.ts
similarity index 97%
rename from packages/client/src/floating-name.ts
rename to packages/quick-3d-mmo-client/src/scripts/floating-name.ts
index 6f25400b..e8841c8a 100644
--- a/packages/client/src/floating-name.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/floating-name.ts
@@ -2,7 +2,7 @@ import * as THREE from 'three';
import { Component } from './entity';
-import { Constants, Defs } from 'shared';
+import { Constants, Defs } from 'quick-3d-mmo-shared';
const { EVENT_TYPES, CHARACTER_MODELS } = {...Constants, ...Defs};
diff --git a/packages/client/src/gltf-component.ts b/packages/quick-3d-mmo-client/src/scripts/gltf-component.ts
similarity index 95%
rename from packages/client/src/gltf-component.ts
rename to packages/quick-3d-mmo-client/src/scripts/gltf-component.ts
index 14b11a54..5d9131df 100644
--- a/packages/client/src/gltf-component.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/gltf-component.ts
@@ -4,7 +4,7 @@ import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';
import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader';
import { Component } from './entity';
-import { Constants } from 'shared';
+import { Constants } from 'quick-3d-mmo-shared';
const { EVENT_TYPES } = Constants;
diff --git a/packages/client/src/health-bar.ts b/packages/quick-3d-mmo-client/src/scripts/health-bar.ts
similarity index 94%
rename from packages/client/src/health-bar.ts
rename to packages/quick-3d-mmo-client/src/scripts/health-bar.ts
index 60155a99..adc09732 100644
--- a/packages/client/src/health-bar.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/health-bar.ts
@@ -2,7 +2,7 @@ import * as THREE from 'three';
import { Component } from './entity';
-import { Math as math } from 'shared';
+import { Math as math } from 'quick-3d-mmo-shared';
const _VS = `
varying vec2 vUV;
diff --git a/packages/client/src/health-component.ts b/packages/quick-3d-mmo-client/src/scripts/health-component.ts
similarity index 94%
rename from packages/client/src/health-component.ts
rename to packages/quick-3d-mmo-client/src/scripts/health-component.ts
index 23050bdd..724603be 100644
--- a/packages/client/src/health-component.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/health-component.ts
@@ -1,4 +1,4 @@
-import { Constants } from "shared";
+import { Constants } from 'quick-3d-mmo-shared';
import { Component } from "./entity";
const { DOM_IDS, EVENT_TYPES, KNOWN_ENTITIES, NAMED_COMPONENTS } = Constants;
diff --git a/packages/client/src/inventory-controller.ts b/packages/quick-3d-mmo-client/src/scripts/inventory-controller.ts
similarity index 93%
rename from packages/client/src/inventory-controller.ts
rename to packages/quick-3d-mmo-client/src/scripts/inventory-controller.ts
index a7cc2e29..627928a4 100644
--- a/packages/client/src/inventory-controller.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/inventory-controller.ts
@@ -1,4 +1,4 @@
-import {Constants} from 'shared';
+import {Constants} from 'quick-3d-mmo-shared';
import { Component } from './entity';
const { EVENT_TYPES, INVENTORY_TYPES, KNOWN_ENTITIES } = Constants;
@@ -84,7 +84,7 @@ class UIInventoryController extends Component {
const div = document.getElementById(slot);
const item = this.GetItemDefinition_(itemName);
if (item?.renderParams?.icon) {
- const path = './resources/icons/weapons/' + item.renderParams.icon;
+ const path = './src/resources/icons/weapons/' + item.renderParams.icon;
div.style.backgroundImage = "url('" + path + "')";
} else {
div.style.backgroundImage = '';
diff --git a/packages/client/src/level-up-component.ts b/packages/quick-3d-mmo-client/src/scripts/level-up-component.ts
similarity index 93%
rename from packages/client/src/level-up-component.ts
rename to packages/quick-3d-mmo-client/src/scripts/level-up-component.ts
index f0cecfbf..e0e97311 100644
--- a/packages/client/src/level-up-component.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/level-up-component.ts
@@ -30,7 +30,7 @@ class LevelUpComponent extends Component {
this._particles = new ParticleSystem({
camera: params.camera,
parent: params.scene,
- texture: './resources/textures/ball.png',
+ texture: './textures/ball.png',
});
this._particles._alphaSpline.AddPoint(0.0, 0.0);
this._particles._alphaSpline.AddPoint(0.1, 1.0);
diff --git a/packages/client/src/load-controller.ts b/packages/quick-3d-mmo-client/src/scripts/load-controller.ts
similarity index 100%
rename from packages/client/src/load-controller.ts
rename to packages/quick-3d-mmo-client/src/scripts/load-controller.ts
diff --git a/packages/client/src/loading-manager.ts b/packages/quick-3d-mmo-client/src/scripts/loading-manager.ts
similarity index 100%
rename from packages/client/src/loading-manager.ts
rename to packages/quick-3d-mmo-client/src/scripts/loading-manager.ts
diff --git a/packages/client/src/main.ts b/packages/quick-3d-mmo-client/src/scripts/main.ts
similarity index 86%
rename from packages/client/src/main.ts
rename to packages/quick-3d-mmo-client/src/scripts/main.ts
index c9b2bec6..4c3648cd 100644
--- a/packages/client/src/main.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/main.ts
@@ -1,5 +1,3 @@
-import { GUI } from 'shared';
-
import { Entity } from './entity';
import { UIController } from './ui-controller';
import { LevelUpComponentSpawner } from './level-up-component';
@@ -9,7 +7,7 @@ import { LoadController } from './load-controller';
import { PlayerSpawner, NetworkEntitySpawner } from './spawners';
import { TerrainChunkManager } from './terrain';
import { InventoryDatabaseController } from './inventory-controller';
-import { Constants, Defs, EntityManager as aEntityManager, SpatialHashGrid as aSpatialHashGrid } from 'shared';
+import { Constants, Defs, EntityManager as aEntityManager, SpatialHashGrid as aSpatialHashGrid } from 'quick-3d-mmo-shared';
import { ThreeJSController } from './threejs_component';
const { WEAPONS_DATA, DOM_IDS, KNOWN_ENTITIES, NAMED_COMPONENTS, EntityManager, SpatialHashGrid } = { ...Constants, ...Defs, ...aEntityManager, ...aSpatialHashGrid };
@@ -18,18 +16,27 @@ class CrappyMMOAttempt {
entityManager_: any;
grid_: any;
previousRAF_: any;
- _guiParams: { general: {}; };
+ _guiParams = {general: {}, biomes: {
+ octaves: 2,
+ persistence: 0.5,
+ lacunarity: 2.0,
+ scale: 1024.0,
+ noiseType: 'simplex',
+ seed: 2,
+ exponentiation: 2,
+ height: 1.0
+ }};
_gui: any;
scene_: any;
camera_: any;
threejs_: any;
- constructor() {
+ constructor(params?) {
+ console.log("main new CrappyMMOAttempt", params)
this._Initialize();
}
_Initialize() {
this.entityManager_ = new EntityManager();
-
document.getElementById(DOM_IDS.LOGIN_UI).style.visibility = 'visible';
document.getElementById(DOM_IDS.LOGIN_BUTTON).onclick = () => {
this.OnGameStarted_();
@@ -37,8 +44,7 @@ class CrappyMMOAttempt {
}
OnGameStarted_() {
- this.CreateGUI_();
-
+ // this.CreateGUI_();
this.grid_ = new SpatialHashGrid(
[[-1000, -1000], [1000, 1000]], [100, 100]);
@@ -49,27 +55,17 @@ class CrappyMMOAttempt {
this.RAF_();
}
- CreateGUI_() {
- this._guiParams = {
- general: {
- },
- };
- this._gui = new GUI.GUI(null);
-
- const generalRollup = this._gui.addFolder('General');
- this._gui.close();
- }
LoadControllers_() {
+ console.log("LoadControllers_()")
const threejs = new Entity();
threejs.AddComponent(new ThreeJSController());
this.entityManager_.Add(threejs, null);
// Hack
- this.scene_ = threejs.GetComponent(NAMED_COMPONENTS.THREEJS_CONTROLLER).scene_;
- this.camera_ = threejs.GetComponent(NAMED_COMPONENTS.THREEJS_CONTROLLER).camera_;
- this.threejs_ = threejs.GetComponent(NAMED_COMPONENTS.THREEJS_CONTROLLER).threejs_;
-
+ this.scene_ = threejs.GetComponent(NAMED_COMPONENTS.THREEJS_CONTROLLER)?.scene_;
+ this.camera_ = threejs.GetComponent(NAMED_COMPONENTS.THREEJS_CONTROLLER)?.camera_;
+ this.threejs_ = threejs.GetComponent(NAMED_COMPONENTS.THREEJS_CONTROLLER)?.threejs_;
const ui = new Entity();
ui.AddComponent(new UIController(null));
this.entityManager_.Add(ui, KNOWN_ENTITIES.UI);
@@ -81,8 +77,7 @@ class CrappyMMOAttempt {
const t = new Entity();
t.AddComponent(new TerrainChunkManager({
scene: this.scene_,
- target: 'player',
- gui: this._gui,
+ target: KNOWN_ENTITIES.PLAYER,
guiParams: this._guiParams,
threejs: this.threejs_,
}));
@@ -146,6 +141,7 @@ class CrappyMMOAttempt {
RAF_() {
requestAnimationFrame((t) => {
+ // console.log("RAF_()")
if (this.previousRAF_ === null) {
this.previousRAF_ = t;
}
@@ -172,4 +168,5 @@ let _APP = null;
window.addEventListener('DOMContentLoaded', () => {
_APP = new CrappyMMOAttempt();
+
});
diff --git a/packages/client/src/network-controller.ts b/packages/quick-3d-mmo-client/src/scripts/network-controller.ts
similarity index 95%
rename from packages/client/src/network-controller.ts
rename to packages/quick-3d-mmo-client/src/scripts/network-controller.ts
index 0605c1f3..4ed332bd 100644
--- a/packages/client/src/network-controller.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/network-controller.ts
@@ -1,4 +1,4 @@
-import {Constants} from 'shared';
+import {Constants} from 'quick-3d-mmo-shared';
import { io } from 'socket.io-client';
const { EVENT_TYPES, KNOWN_ENTITIES, NAMED_COMPONENTS } = Constants;
@@ -36,13 +36,12 @@ class NetworkController extends Component {
SetupSocket_() {
this.socket_ = io('ws://localhost:3000', {
- reconnection: false,
+ reconnection: true,
transports: ['websocket'],
timeout: 10000,
});
this.socket_.on(EVENT_TYPES.CONNECT, () => {
- console.log(this.socket_.id);
const randomName = this.GenerateRandomName_();
// Input validation is for losers
this.socket_.emit(
@@ -76,7 +75,7 @@ class NetworkController extends Component {
GetEntityID_(serverID) {
if (serverID == this.playerID_) {
- return 'player';
+ return KNOWN_ENTITIES.PLAYER;
} else {
return '__npc__' + serverID;
}
@@ -95,7 +94,7 @@ class NetworkController extends Component {
player.Broadcast({
topic: EVENT_TYPES.NETWORK_INVENTORY,
- inventory: d.desc.character.inventory,
+ inventory: d?.desc?.character?.inventory,
});
console.log('entering world: ' + d.id);
@@ -117,7 +116,7 @@ class NetworkController extends Component {
npc.Broadcast({
topic: EVENT_TYPES.NETWORK_INVENTORY,
- inventory: u.desc.character.inventory,
+ inventory: u?.desc?.character?.inventory,
});
} else {
npc = this.FindEntity(id);
diff --git a/packages/client/src/network-entity-controller.ts b/packages/quick-3d-mmo-client/src/scripts/network-entity-controller.ts
similarity index 98%
rename from packages/client/src/network-entity-controller.ts
rename to packages/quick-3d-mmo-client/src/scripts/network-entity-controller.ts
index 3e45efa2..034909a5 100644
--- a/packages/client/src/network-entity-controller.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/network-entity-controller.ts
@@ -1,7 +1,7 @@
import * as THREE from 'three';
import { Component } from './entity';
-import { Constants } from 'shared';
+import { Constants } from 'quick-3d-mmo-shared';
const { EVENT_TYPES } = Constants;
diff --git a/packages/client/src/network-player-controller.ts b/packages/quick-3d-mmo-client/src/scripts/network-player-controller.ts
similarity index 97%
rename from packages/client/src/network-player-controller.ts
rename to packages/quick-3d-mmo-client/src/scripts/network-player-controller.ts
index 4278aaf4..1e340aa1 100644
--- a/packages/client/src/network-player-controller.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/network-player-controller.ts
@@ -1,7 +1,7 @@
import * as THREE from 'three';
import { Component } from './entity';
-import { Constants } from 'shared';
+import { Constants } from 'quick-3d-mmo-shared';
const { EVENT_TYPES, KNOWN_ENTITIES, NAMED_COMPONENTS } = Constants;
diff --git a/packages/client/src/npc-entity.ts b/packages/quick-3d-mmo-client/src/scripts/npc-entity.ts
similarity index 92%
rename from packages/client/src/npc-entity.ts
rename to packages/quick-3d-mmo-client/src/scripts/npc-entity.ts
index 1c682ae1..3ea3f2d2 100644
--- a/packages/client/src/npc-entity.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/npc-entity.ts
@@ -2,7 +2,7 @@ import * as THREE from 'three';
import { Component } from './entity';
import { CharacterFSM, BasicCharacterControllerProxy } from './player-entity'
-import { Constants, Defs } from 'shared';
+import { Constants, Defs } from 'quick-3d-mmo-shared';
const { ANIM_TYPES, EVENT_TYPES, KNOWN_ENTITIES, STATE_TYPES, CHARACTER_MODELS } = { ...Constants, ...Defs };
@@ -89,7 +89,10 @@ class NPCController extends Component {
}
LoadModels_() {
- const classType = this.params_.desc.character.class;
+ if(!this?.params_?.desc?.character?.class) {
+ return;
+ }
+ const classType = this.params_?.desc?.character?.class;
const modelData = CHARACTER_MODELS[classType];
const loader = this.FindEntity(KNOWN_ENTITIES.LOADER).GetComponent('LoadController');
diff --git a/packages/client/src/particle-system.ts b/packages/quick-3d-mmo-client/src/scripts/particle-system.ts
similarity index 100%
rename from packages/client/src/particle-system.ts
rename to packages/quick-3d-mmo-client/src/scripts/particle-system.ts
diff --git a/packages/client/src/player-entity.ts b/packages/quick-3d-mmo-client/src/scripts/player-entity.ts
similarity index 97%
rename from packages/client/src/player-entity.ts
rename to packages/quick-3d-mmo-client/src/scripts/player-entity.ts
index 8d98ae95..e7475d2f 100644
--- a/packages/client/src/player-entity.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/player-entity.ts
@@ -3,7 +3,7 @@ import * as THREE from 'three';
import { Component } from './entity';
import { FiniteStateMachine } from './finite-state-machine';
import { IdleState, WalkState, RunState, AttackState, DanceState, DeathState } from './player-state';
-import { Constants, Defs } from 'shared';
+import { Constants, Defs } from 'quick-3d-mmo-shared';
const { ANIM_TYPES, EVENT_TYPES, KNOWN_ENTITIES, NAMED_COMPONENTS, STATE_TYPES, CHARACTER_MODELS } = {...Constants, ...Defs};
@@ -86,7 +86,10 @@ class BasicCharacterController extends Component {
}
OnDeath_(msg) {
- this.stateMachine_.SetState(STATE_TYPES.DEATH);
+ if(!this.stateMachine_) {
+ console.log("Couldn't find state machine");
+ }
+ this.stateMachine_?.SetState?.(STATE_TYPES.DEATH);
}
LoadModels_() {
@@ -95,6 +98,7 @@ class BasicCharacterController extends Component {
const loader = this.FindEntity(KNOWN_ENTITIES.LOADER).GetComponent('LoadController');
loader.LoadSkinnedGLB(modelData.path, modelData.base, (glb) => {
+
this.target_ = glb.scene;
this.target_.scale.setScalar(modelData.scale);
this.target_.visible = false;
diff --git a/packages/client/src/player-input.ts b/packages/quick-3d-mmo-client/src/scripts/player-input.ts
similarity index 98%
rename from packages/client/src/player-input.ts
rename to packages/quick-3d-mmo-client/src/scripts/player-input.ts
index 09b8de10..8362ed41 100644
--- a/packages/client/src/player-input.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/player-input.ts
@@ -1,6 +1,6 @@
import * as THREE from 'three';
-import { Constants } from 'shared';
+import { Constants } from 'quick-3d-mmo-shared';
import { Component } from "./entity";
const { DOM_IDS, EVENT_TYPES } = Constants;
diff --git a/packages/client/src/player-state.ts b/packages/quick-3d-mmo-client/src/scripts/player-state.ts
similarity index 99%
rename from packages/client/src/player-state.ts
rename to packages/quick-3d-mmo-client/src/scripts/player-state.ts
index 1f9c8f2a..a529e885 100644
--- a/packages/client/src/player-state.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/player-state.ts
@@ -1,6 +1,6 @@
import * as THREE from 'three';
-import { Constants } from 'shared';
+import { Constants } from 'quick-3d-mmo-shared';
const { STATE_TYPES } = Constants;
diff --git a/packages/client/src/quadtree.ts b/packages/quick-3d-mmo-client/src/scripts/quadtree.ts
similarity index 100%
rename from packages/client/src/quadtree.ts
rename to packages/quick-3d-mmo-client/src/scripts/quadtree.ts
diff --git a/packages/client/src/quest-component.ts b/packages/quick-3d-mmo-client/src/scripts/quest-component.ts
similarity index 93%
rename from packages/client/src/quest-component.ts
rename to packages/quick-3d-mmo-client/src/scripts/quest-component.ts
index 8f387965..75f99b1a 100644
--- a/packages/client/src/quest-component.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/quest-component.ts
@@ -1,4 +1,4 @@
-import { Constants } from 'shared';
+import { Constants } from 'quick-3d-mmo-shared';
import { Component } from "./entity";
const { DOM_IDS, EVENT_TYPES, KNOWN_ENTITIES, NAMED_COMPONENTS } = Constants;
diff --git a/packages/client/src/render-component.ts b/packages/quick-3d-mmo-client/src/scripts/render-component.ts
similarity index 98%
rename from packages/client/src/render-component.ts
rename to packages/quick-3d-mmo-client/src/scripts/render-component.ts
index 6c6dc740..4f78f355 100644
--- a/packages/client/src/render-component.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/render-component.ts
@@ -3,7 +3,7 @@ import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';
import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader';
import { Component } from './entity';
-import { Constants } from 'shared';
+import { Constants } from 'quick-3d-mmo-shared';
const { KNOWN_ENTITIES } = { ...Constants };
diff --git a/packages/client/src/scenery-controller.ts b/packages/quick-3d-mmo-client/src/scripts/scenery-controller.ts
similarity index 90%
rename from packages/client/src/scenery-controller.ts
rename to packages/quick-3d-mmo-client/src/scripts/scenery-controller.ts
index 0dacf28b..84c84775 100644
--- a/packages/client/src/scenery-controller.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/scenery-controller.ts
@@ -2,10 +2,10 @@ import * as THREE from 'three';
import { Entity, Component } from './entity';
import { RenderComponent } from './render-component';
-import { SpatialGridController } from './spatial-grid-controller.js';
+import { SpatialGridController } from './spatial-grid-controller';
-import { Math as math, Noise as noise, Constants } from 'shared';
-import type {Noise as INoise} from 'shared';
+import { Math as math, Noise as noise, Constants } from 'quick-3d-mmo-shared';
+import type {Noise as INoise} from 'quick-3d-mmo-shared';
const {KNOWN_ENTITIES} = Constants;
const {Noise} = noise;
@@ -13,7 +13,7 @@ const {Noise} = noise;
const _SCENERY = {
birch1: {
base: 'Birch_1.fbx',
- resourcePath: './resources/trees/FBX/',
+ resourcePath: './src/resources/trees/FBX/',
names: {
Bark: 'Birch_Bark.png',
Leaves: 'Birch_Leaves_Yellow.png'
@@ -24,7 +24,7 @@ const _SCENERY = {
},
tree1: {
base: 'Tree_1.fbx',
- resourcePath: './resources/trees/FBX/',
+ resourcePath: './src/resources/trees/FBX/',
names: {
Bark: 'Tree_Bark.jpg',
Leaves: 'Leaves_Blue.png'
@@ -35,35 +35,35 @@ const _SCENERY = {
},
rock1: {
base: 'Rock_1.fbx',
- resourcePath: './resources/nature/FBX/',
+ resourcePath: './src/resources/nature/FBX/',
names: {},
scale: 0.025,
biomes: ['arid', 'desert'],
},
rockMoss1: {
base: 'Rock_Moss_1.fbx',
- resourcePath: './resources/nature/FBX/',
+ resourcePath: './src/resources/nature/FBX/',
names: {},
scale: 0.025,
biomes: ['forest'],
},
plant1: {
base: 'Plant_1.fbx',
- resourcePath: './resources/nature/FBX/',
+ resourcePath: './src/resources/nature/FBX/',
names: {},
scale: 0.05,
biomes: ['forest', 'arid'],
},
grass1: {
base: 'Grass_1.fbx',
- resourcePath: './resources/nature/FBX/',
+ resourcePath: './src/resources/nature/FBX/',
names: {},
scale: 0.05,
biomes: ['forest', 'arid'],
},
flowers1: {
base: 'Flowers.fbx',
- resourcePath: './resources/nature/FBX/',
+ resourcePath: './src/resources/nature/FBX/',
names: {},
scale: 0.05,
biomes: ['forest'],
@@ -132,7 +132,7 @@ class SceneryController extends Component {
const e = new Entity();
e.AddComponent(new RenderComponent({
scene: this.params_.scene,
- resourcePath: './resources/nature2/GLTF/',
+ resourcePath: 'src/resources/nature2/GLTF/',
resourceName: 'Cloud' + index + '.glb',
scale: Math.random() * 20 + 40,
emissive: new THREE.Color(0x000000),
@@ -183,7 +183,7 @@ class SceneryController extends Component {
resourcePath: randomProp.resourcePath,
resourceName: randomProp.base,
textures: {
- resourcePath: './resources/trees/Textures/',
+ resourcePath: 'src/resources/trees/Textures/',
names: randomProp.names,
wrap: true,
},
@@ -212,7 +212,7 @@ class SceneryController extends Component {
}
SpawnCrap_() {
- const player = this.FindEntity('player');
+ const player = this.FindEntity(KNOWN_ENTITIES.PLAYER);
if (!player) {
return;
}
diff --git a/packages/client/src/sorceror-effect.ts b/packages/quick-3d-mmo-client/src/scripts/sorceror-effect.ts
similarity index 96%
rename from packages/client/src/sorceror-effect.ts
rename to packages/quick-3d-mmo-client/src/scripts/sorceror-effect.ts
index e3837aa8..f9550c95 100644
--- a/packages/client/src/sorceror-effect.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/sorceror-effect.ts
@@ -2,7 +2,7 @@ import * as THREE from 'three';
import { ParticleEmitter, ParticleSystem } from "./particle-system";
import { Component } from "./entity";
-import { Constants } from 'shared';
+import { Constants } from 'quick-3d-mmo-shared';
const { EVENT_TYPES } = Constants;
@@ -64,7 +64,7 @@ class SorcerorEffect extends Component {
this.particles_ = new ParticleSystem({
camera: params.camera,
parent: params.scene,
- texture: './resources/textures/fire.png',
+ texture: './src/resources/textures/fire.png',
});
}
diff --git a/packages/client/src/spatial-grid-controller.ts b/packages/quick-3d-mmo-client/src/scripts/spatial-grid-controller.ts
similarity index 100%
rename from packages/client/src/spatial-grid-controller.ts
rename to packages/quick-3d-mmo-client/src/scripts/spatial-grid-controller.ts
diff --git a/packages/client/src/spawners.ts b/packages/quick-3d-mmo-client/src/scripts/spawners.ts
similarity index 88%
rename from packages/client/src/spawners.ts
rename to packages/quick-3d-mmo-client/src/scripts/spawners.ts
index 519ebb05..14241fff 100644
--- a/packages/client/src/spawners.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/spawners.ts
@@ -5,7 +5,7 @@ import { HealthComponent } from './health-component';
import { BasicCharacterControllerInput } from './player-input';
import { SpatialGridController } from './spatial-grid-controller';
import { InventoryController, UIInventoryController } from './inventory-controller';
-import { equip_weapon_component } from './equip-weapon-component';
+import { EquipWeapon } from './equip-weapon-component';
import { AttackController } from './attacker-controller';
import { NPCController } from './npc-entity';
import { NetworkEntityController } from './network-entity-controller';
@@ -13,7 +13,8 @@ import { NetworkEntityController as NetworkPlayerController } from './network-pl
import { FloatingName } from './floating-name';
import { SorcerorEffect } from './sorceror-effect';
import { BloodEffect } from './blood-effect';
-import { Constants } from 'shared';
+import { Constants } from 'quick-3d-mmo-shared';
+import { KNOWN_ENTITIES } from 'quick-3d-mmo-shared/src/constants';
const { CLASS_TYPES_ENUM } = Constants;
@@ -30,13 +31,13 @@ class PlayerSpawner extends Component {
scene: this.params_.scene,
desc: playerParams,
};
-
+ // debugger;
const player = new Entity();
player.Account = playerParams.account;
player.AddComponent(new BasicCharacterControllerInput(params));
player.AddComponent(new BasicCharacterController(params));
player.AddComponent(
- new equip_weapon_component.EquipWeapon({ desc: playerParams }));
+ new EquipWeapon({ desc: playerParams }));
player.AddComponent(new UIInventoryController(params));
player.AddComponent(new InventoryController(params));
player.AddComponent(new HealthComponent({
@@ -74,7 +75,7 @@ class PlayerSpawner extends Component {
player.AddComponent(
new SorcerorEffect(params));
}
- this.Manager.Add(player, 'player');
+ this.Manager.Add(player, KNOWN_ENTITIES.PLAYER);
return player;
}
@@ -89,7 +90,7 @@ class NetworkEntitySpawner extends Component {
Spawn(name, desc) {
const npc = new Entity();
- npc.Account = desc.account;
+ npc.Account = desc?.account;
npc.AddComponent(new NPCController({
camera: this.params_.camera,
scene: this.params_.scene,
@@ -112,18 +113,18 @@ class NetworkEntitySpawner extends Component {
{ grid: this.params_.grid }));
npc.AddComponent(
new NetworkEntityController());
- if (desc.account.name) {
+ if (desc?.account?.name ?? "Undefined desc.account.name") {
npc.AddComponent(
new FloatingName({ desc: desc }));
}
npc.AddComponent(
- new equip_weapon_component.EquipWeapon({ desc: desc }));
+ new EquipWeapon({ desc: desc }));
npc.AddComponent(new InventoryController());
npc.AddComponent(new BloodEffect({
camera: this.params_.camera,
scene: this.params_.scene,
}));
- if (desc.character.class == CLASS_TYPES_ENUM.SORCEROR) {
+ if (desc?.character?.class == CLASS_TYPES_ENUM.SORCEROR) {
npc.AddComponent(
new SorcerorEffect({
camera: this.params_.camera,
diff --git a/packages/client/src/terrain-builder-threaded-worker.ts b/packages/quick-3d-mmo-client/src/scripts/terrain-builder-threaded-worker.ts
similarity index 99%
rename from packages/client/src/terrain-builder-threaded-worker.ts
rename to packages/quick-3d-mmo-client/src/scripts/terrain-builder-threaded-worker.ts
index a67bc014..6a63dca9 100644
--- a/packages/client/src/terrain-builder-threaded-worker.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/terrain-builder-threaded-worker.ts
@@ -2,7 +2,7 @@ import * as THREE from 'three';
import { TextureSplatter } from './texture-splatter';
-import { TerrainHeight, Noise as aNoise, Math as math } from 'shared';
+import { TerrainHeight, Noise as aNoise, Math as math } from 'quick-3d-mmo-shared';
const { Noise, HeightGenerator } = { ...TerrainHeight, ...aNoise };
diff --git a/packages/client/src/terrain-builder-threaded.ts b/packages/quick-3d-mmo-client/src/scripts/terrain-builder-threaded.ts
similarity index 91%
rename from packages/client/src/terrain-builder-threaded.ts
rename to packages/quick-3d-mmo-client/src/scripts/terrain-builder-threaded.ts
index 6fff9a18..634993ca 100644
--- a/packages/client/src/terrain-builder-threaded.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/terrain-builder-threaded.ts
@@ -1,4 +1,5 @@
import { TerrainChunk } from './terrain-chunk';
+import TerrainWorker from "worker-loader!./worker";
const _NUM_WORKERS = 4;
@@ -11,10 +12,15 @@ class WorkerThread {
_id: number;
constructor(s) {
- this._worker = new Worker(s, { type: 'module' });
+ this._worker = new TerrainWorker();
+ // test. Look for enqueue below
+ // this._worker.postMessage("build_chunk")
this._worker.onmessage = (e) => {
this._OnMessage(e);
};
+ this._worker.onerror = (event) => {
+ console.error(event)
+ }
this._resolve = null;
this._id = _IDs++;
}
@@ -85,10 +91,10 @@ class TerrainChunkRebuilder_Threaded {
constructor(params) {
this._pool = {};
this._old = [];
-
this._workerPool = new WorkerThreadPool(
- _NUM_WORKERS, 'src/terrain-builder-threaded-worker.js');
+ _NUM_WORKERS, './terrain-builder-threaded-worker.js');
+
this._params = params;
}
diff --git a/packages/client/src/terrain-builder.ts b/packages/quick-3d-mmo-client/src/scripts/terrain-builder.ts
similarity index 100%
rename from packages/client/src/terrain-builder.ts
rename to packages/quick-3d-mmo-client/src/scripts/terrain-builder.ts
diff --git a/packages/client/src/terrain-chunk.ts b/packages/quick-3d-mmo-client/src/scripts/terrain-chunk.ts
similarity index 100%
rename from packages/client/src/terrain-chunk.ts
rename to packages/quick-3d-mmo-client/src/scripts/terrain-chunk.ts
diff --git a/packages/client/src/terrain-shader.ts b/packages/quick-3d-mmo-client/src/scripts/terrain-shader.ts
similarity index 100%
rename from packages/client/src/terrain-shader.ts
rename to packages/quick-3d-mmo-client/src/scripts/terrain-shader.ts
diff --git a/packages/client/src/terrain.ts b/packages/quick-3d-mmo-client/src/scripts/terrain.ts
similarity index 73%
rename from packages/client/src/terrain.ts
rename to packages/quick-3d-mmo-client/src/scripts/terrain.ts
index 84fd9258..756c93de 100644
--- a/packages/client/src/terrain.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/terrain.ts
@@ -7,7 +7,7 @@ import { TerrainChunkRebuilder_Threaded } from './terrain-builder-threaded';
import { TextureSplatter } from './texture-splatter';
import { TextureAtlas } from './textures';
import { utils } from './utils';
-import { Noise as aNoise, TerrainHeight, TerrainConstants } from 'shared';
+import { Noise as aNoise, TerrainHeight, TerrainConstants } from 'quick-3d-mmo-shared';
const {
QT_MIN_CELL_SIZE,
@@ -40,35 +40,34 @@ class TerrainChunkManager extends Component {
const loader = new THREE.TextureLoader();
- const noiseTexture = loader.load('./resources/terrain/simplex-png');
+ const noiseTexture = loader.load('src/resources/terrain/simplex-png');
noiseTexture.wrapS = THREE.RepeatWrapping;
noiseTexture.wrapT = THREE.RepeatWrapping;
-
const diffuse = new TextureAtlas(params);
diffuse.Load('diffuse', [
- './resources/terrain/dirt_01_diffuse-1024.png',
- './resources/terrain/grass1-albedo3-1024.png',
- './resources/terrain/sandyground-albedo-1024.png',
- './resources/terrain/worn-bumpy-rock-albedo-1024.png',
- './resources/terrain/rock-snow-ice-albedo-1024.png',
- './resources/terrain/snow-packed-albedo-1024.png',
- './resources/terrain/rough-wet-cobble-albedo-1024.png',
- // './resources/terrain/sandy-rocks1-albedo-1024.png',
- './resources/terrain/bark1-albedo.jpg',
+ 'src/resources/terrain/dirt_01_diffuse-1024.png',
+ 'src/resources/terrain/grass1-albedo3-1024.png',
+ 'src/resources/terrain/sandyground-albedo-1024.png',
+ 'src/resources/terrain/worn-bumpy-rock-albedo-1024.png',
+ 'src/resources/terrain/rock-snow-ice-albedo-1024.png',
+ 'src/resources/terrain/snow-packed-albedo-1024.png',
+ 'src/resources/terrain/rough-wet-cobble-albedo-1024.png',
+ // 'resources/terrain/sandy-rocks1-albedo-1024.png',
+ 'src/resources/terrain/bark1-albedo.jpg',
]);
const normal = new TextureAtlas(params);
normal.Load('normal', [
- './resources/terrain/dirt_01_normal-1024.jpg',
- './resources/terrain/grass1-normal-1024.jpg',
- './resources/terrain/sandyground-normal-1024.jpg',
- './resources/terrain/worn-bumpy-rock-normal-1024.jpg',
- './resources/terrain/rock-snow-ice-normal-1024.jpg',
- './resources/terrain/snow-packed-normal-1024.jpg',
- './resources/terrain/rough-wet-cobble-normal-1024.jpg',
- // './resources/terrain/sandy-rocks1-normal-1024.jpg',
- './resources/terrain/bark1-normal3.jpg',
+ 'src/resources/terrain/dirt_01_normal-1024.jpg',
+ 'src/resources/terrain/grass1-normal-1024.jpg',
+ 'src/resources/terrain/sandyground-normal-1024.jpg',
+ 'src/resources/terrain/worn-bumpy-rock-normal-1024.jpg',
+ 'src/resources/terrain/rock-snow-ice-normal-1024.jpg',
+ 'src/resources/terrain/snow-packed-normal-1024.jpg',
+ 'src/resources/terrain/rough-wet-cobble-normal-1024.jpg',
+ // 'src/resources/terrain/sandy-rocks1-normal-1024.jpg',
+ 'src/resources/terrain/bark1-normal3.jpg',
]);
this._material = new THREE.MeshStandardMaterial({
@@ -88,8 +87,8 @@ class TerrainChunkManager extends Component {
const fi1 = s.fragmentShader.search('#include ');
s.fragmentShader = [s.fragmentShader.slice(0, fi1) + PS2 + s.fragmentShader.slice(fi1)].join('');
- s.uniforms.TRIPLANAR_normalMap = { value: normal.Info['normal'].atlas };
- s.uniforms.TRIPLANAR_diffuseMap = { value: diffuse.Info['diffuse'].atlas };
+ s.uniforms.TRIPLANAR_normalMap = { value: normal.Info['normal']?.atlas };
+ s.uniforms.TRIPLANAR_diffuseMap = { value: diffuse.Info['diffuse']?.atlas };
s.uniforms.TRIPLANAR_noiseMap = { value: noiseTexture };
diffuse.onLoad = () => {
@@ -106,6 +105,10 @@ class TerrainChunkManager extends Component {
// this._builder = new terrain_builder.TerrainChunkRebuilder();
this._InitNoise();
+ // if(!params?.guiParams) {
+ // console.log("GUIParams undefined")
+ // return;
+ // }
this._InitBiomes(params);
this._InitTerrain(params);
}
@@ -115,6 +118,9 @@ class TerrainChunkManager extends Component {
}
_InitBiomes(params) {
+ if (!params?.guiParams) {
+ console.error("terrainManager guiParamsMissing")
+ }
params.guiParams.biomes = {
octaves: 2,
persistence: 0.5,
@@ -130,17 +136,17 @@ class TerrainChunkManager extends Component {
this._builder.Rebuild(this._chunks);
};
- const noiseRollup = params.gui.addFolder('Terrain.Biomes');
- noiseRollup.add(params.guiParams.biomes, "scale", 64.0, 4096.0).onChange(
- onNoiseChanged);
- noiseRollup.add(params.guiParams.biomes, "octaves", 1, 20, 1).onChange(
- onNoiseChanged);
- noiseRollup.add(params.guiParams.biomes, "persistence", 0.01, 1.0).onChange(
- onNoiseChanged);
- noiseRollup.add(params.guiParams.biomes, "lacunarity", 0.01, 4.0).onChange(
- onNoiseChanged);
- noiseRollup.add(params.guiParams.biomes, "exponentiation", 0.1, 10.0).onChange(
- onNoiseChanged);
+ // const noiseRollup = params.gui.addFolder('resources/Terrain.Biomes');
+ // noiseRollup.add(params.guiParams.biomes, "scale", 64.0, 4096.0).onChange(
+ // onNoiseChanged);
+ // noiseRollup.add(params.guiParams.biomes, "octaves", 1, 20, 1).onChange(
+ // onNoiseChanged);
+ // noiseRollup.add(params.guiParams.biomes, "persistence", 0.01, 1.0).onChange(
+ // onNoiseChanged);
+ // noiseRollup.add(params.guiParams.biomes, "lacunarity", 0.01, 4.0).onChange(
+ // onNoiseChanged);
+ // noiseRollup.add(params.guiParams.biomes, "exponentiation", 0.1, 10.0).onChange(
+ // onNoiseChanged);
this._biomes = new Noise(params.guiParams.biomes);
this._biomesParams = params.guiParams.biomes;
@@ -160,19 +166,20 @@ class TerrainChunkManager extends Component {
}
_InitTerrain(params) {
- params.guiParams.terrain = {
- wireframe: false,
- };
+ if (!params?.guiParams)
+ params.guiParams.terrain = {
+ wireframe: false,
+ };
this._groups = [...new Array(6)].map(_ => new THREE.Group());
params.scene.add(...this._groups);
- const terrainRollup = params.gui.addFolder('Terrain');
- terrainRollup.add(params.guiParams.terrain, "wireframe").onChange(() => {
- for (let k in this._chunks) {
- this._chunks[k].chunk._plane.material.wireframe = params.guiParams.terrain.wireframe;
- }
- });
+ // const terrainRollup = params.gui.addFolder('resources/Terrain');
+ // terrainRollup.add(params.guiParams.terrain, "wireframe").onChange(() => {
+ // for (let k in this._chunks) {
+ // this._chunks[k].chunk._plane.material.wireframe = params.guiParams.terrain.wireframe;
+ // }
+ // });
this._chunks = {};
this._params = params;
@@ -217,8 +224,10 @@ class TerrainChunkManager extends Component {
}
Update(_) {
+ // console.log("TerrainChunkManager.Update()", this._params)
const target = this.FindEntity(this._params.target);
if (!target) {
+ console.warn("TerrainChunkManager.Update Cannot find Target Entity: ", this._params.target)
return;
}
@@ -239,6 +248,7 @@ class TerrainChunkManager extends Component {
}
_UpdateVisibleChunks_Quadtree(target) {
+ // console.log("TerrainChunkManager._UpdateVisibleChunks_Quadtree()", target)
function _Key(c) {
return c.position[0] + '/' + c.position[2] + ' [' + c.size + ']';
}
diff --git a/packages/client/src/test.ts b/packages/quick-3d-mmo-client/src/scripts/test.ts
similarity index 100%
rename from packages/client/src/test.ts
rename to packages/quick-3d-mmo-client/src/scripts/test.ts
diff --git a/packages/client/src/texture-splatter.ts b/packages/quick-3d-mmo-client/src/scripts/texture-splatter.ts
similarity index 95%
rename from packages/client/src/texture-splatter.ts
rename to packages/quick-3d-mmo-client/src/scripts/texture-splatter.ts
index b8b27aae..c81da134 100644
--- a/packages/client/src/texture-splatter.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/texture-splatter.ts
@@ -1,6 +1,6 @@
import * as THREE from 'three';
-import { Spline, TerrainConstants, Math as math } from 'shared';
+import { Spline, TerrainConstants, Math as math } from 'quick-3d-mmo-shared';
const { LinearSpline, NOISE_HEIGHT } = { ...Spline, ...TerrainConstants };
@@ -20,8 +20,8 @@ const _BLACK = new THREE.Color(0x000000);
class TextureSplatter {
- _colourSpline: InstanceType[];
- _oceanSpline: InstanceType;
+ _colourSpline: any[];
+ _oceanSpline: any;
_params: any;
constructor(params) {
const _colourLerp = (t, p0, p1) => {
diff --git a/packages/client/src/textures.ts b/packages/quick-3d-mmo-client/src/scripts/textures.ts
similarity index 78%
rename from packages/client/src/textures.ts
rename to packages/quick-3d-mmo-client/src/scripts/textures.ts
index b69d89ed..6fcba29a 100644
--- a/packages/client/src/textures.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/textures.ts
@@ -4,8 +4,8 @@ import * as THREE from 'three';
// Taken from https://github.com/mrdoob/three.js/issues/758
function _GetImageData(image) {
var canvas = document.createElement('canvas');
- canvas.width = image.width;
- canvas.height = image.height;
+ canvas.width = image?.width ?? 600;
+ canvas.height = image?.height ?? 600;
var context = canvas.getContext('2d');
context.drawImage(image, 0, 0);
@@ -43,10 +43,19 @@ class TextureAtlas {
return this._textures;
}
- _LoadTexture(n) {
- const t = this._loader.load(n);
- t.encoding = THREE.sRGBEncoding;
- return t;
+ async _LoadTexture(n) {
+ return new Promise((res, rej) => {
+ this._loader.load(n, (response) => {
+ let t = response;
+ t.encoding = THREE.sRGBEncoding;
+ res(t);
+ // console.log("load cb called: ", res)
+ }, null, (err) => {
+ console.error("loader.load error: ", err)
+ rej(err)
+ });
+
+ })
}
_OnLoad() {
@@ -82,9 +91,9 @@ class TextureAtlas {
this.onLoad();
}
- _LoadAtlas(atlas, names) {
+ async _LoadAtlas(atlas, names) {
this._textures[atlas] = {
- textures: names.map(n => this._LoadTexture(n)),
+ textures: await Promise.allSettled(names.map( n => this._LoadTexture(n))),
atlas: null,
};
}
diff --git a/packages/client/src/third-person-camera.ts b/packages/quick-3d-mmo-client/src/scripts/third-person-camera.ts
similarity index 96%
rename from packages/client/src/third-person-camera.ts
rename to packages/quick-3d-mmo-client/src/scripts/third-person-camera.ts
index e88839e8..db4ef941 100644
--- a/packages/client/src/third-person-camera.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/third-person-camera.ts
@@ -1,6 +1,6 @@
import * as THREE from 'three';
import { Component } from './entity';
-import { Constants } from 'shared';
+import { Constants } from 'quick-3d-mmo-shared';
const { KNOWN_ENTITIES } = Constants;
diff --git a/packages/client/src/threejs_component.ts b/packages/quick-3d-mmo-client/src/scripts/threejs_component.ts
similarity index 91%
rename from packages/client/src/threejs_component.ts
rename to packages/quick-3d-mmo-client/src/scripts/threejs_component.ts
index f7b830aa..b881c6e3 100644
--- a/packages/client/src/threejs_component.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/threejs_component.ts
@@ -1,7 +1,8 @@
import * as THREE from 'three';
-import { Constants } from 'shared';
+import { Constants } from 'quick-3d-mmo-shared';
import { Component } from "./entity";
+import { KNOWN_ENTITIES } from 'quick-3d-mmo-shared/src/constants';
const { DOM_IDS } = Constants;
@@ -43,6 +44,8 @@ class ThreeJSController extends Component {
camera_: THREE.PerspectiveCamera;
scene_: THREE.Scene;
sun_: THREE.DirectionalLight;
+ _onWindowResize: any;
+
constructor() {
super();
}
@@ -101,7 +104,7 @@ class ThreeJSController extends Component {
document.getElementById('container').appendChild(this.threejs_.domElement);
window.addEventListener('resize', () => {
- this._OnWindowResize();
+ this._onWindowResize();
}, false);
const fov = 60;
@@ -133,9 +136,6 @@ class ThreeJSController extends Component {
this.LoadSky_();
}
- _OnWindowResize() {
- throw new Error('Method not implemented.');
- }
LoadSky_() {
const hemiLight = new THREE.HemisphereLight(0x424a75, 0x6a88b5, 0.7);
@@ -146,12 +146,12 @@ class ThreeJSController extends Component {
const loader = new THREE.CubeTextureLoader();
const texture = loader.load([
- './resources/terrain/space-posx.jpg',
- './resources/terrain/space-negx.jpg',
- './resources/terrain/space-posy.jpg',
- './resources/terrain/space-negy.jpg',
- './resources/terrain/space-posz.jpg',
- './resources/terrain/space-negz.jpg',
+ 'src/resources/terrain/space-posx.jpg',
+ 'src/resources/terrain/space-negx.jpg',
+ 'src/resources/terrain/space-posy.jpg',
+ 'src/resources/terrain/space-negy.jpg',
+ 'src/resources/terrain/space-posz.jpg',
+ 'src/resources/terrain/space-negz.jpg',
]);
texture.encoding = THREE.sRGBEncoding;
@@ -180,7 +180,7 @@ class ThreeJSController extends Component {
}
Update(_) {
- const player = this.FindEntity('player');
+ const player = this.FindEntity(KNOWN_ENTITIES.PLAYER);
if (!player) {
return;
}
diff --git a/packages/quick-3d-mmo-client/src/scripts/types.d.ts b/packages/quick-3d-mmo-client/src/scripts/types.d.ts
new file mode 100644
index 00000000..845bac8a
--- /dev/null
+++ b/packages/quick-3d-mmo-client/src/scripts/types.d.ts
@@ -0,0 +1,7 @@
+declare module "worker-loader!*" {
+ class WebpackWorker extends Worker {
+ constructor();
+ }
+
+ export default WebpackWorker;
+}
\ No newline at end of file
diff --git a/packages/client/src/ui-controller.ts b/packages/quick-3d-mmo-client/src/scripts/ui-controller.ts
similarity index 84%
rename from packages/client/src/ui-controller.ts
rename to packages/quick-3d-mmo-client/src/scripts/ui-controller.ts
index 7b6a53f7..e771f6f2 100644
--- a/packages/client/src/ui-controller.ts
+++ b/packages/quick-3d-mmo-client/src/scripts/ui-controller.ts
@@ -1,4 +1,4 @@
-import { Constants } from 'shared';
+import { Constants } from 'quick-3d-mmo-shared';
import { Component } from './entity';
const { DOM_IDS, KNOWN_ENTITIES, NAMED_COMPONENTS, STATE_TYPES } = Constants;
@@ -85,16 +85,28 @@ class UIController extends Component {
}
AddEventMessages(events) {
+ let attackerName = "Undefined Attacker";
+ let targetName = "Undefined Target";
+
for (let e of events) {
- if (e.type != STATE_TYPES.ATTACK) {
+ if(e?.attacker) {
+ return;
+ }
+
+ if (e?.type != STATE_TYPES.ATTACK) {
continue;
}
- if (e.attacker.Name != 'player' && e.target.Name != 'player') {
+ if (e?.attacker?.Name != KNOWN_ENTITIES.PLAYER && e.target.Name != KNOWN_ENTITIES.PLAYER) {
continue;
}
-
- const attackerName = e.attacker.Name == 'player' ? 'You' : e.attacker.Account.name;
- const targetName = e.target.Name == 'player' ? 'you' : e.target.Account.name;
+ if(e?.attacker) {
+ attackerName = e?.attacker?.Name == KNOWN_ENTITIES.PLAYER ? 'You' : e.attacker.Account.name;
+ }
+ if(e?.target) {
+ targetName = e.target.Name == KNOWN_ENTITIES.PLAYER ? 'you' : e.target.Account.name;
+ }
+
+
this.AddChatMessage({
name: '',
diff --git a/packages/client/src/utils.ts b/packages/quick-3d-mmo-client/src/scripts/utils.ts
similarity index 100%
rename from packages/client/src/utils.ts
rename to packages/quick-3d-mmo-client/src/scripts/utils.ts
diff --git a/packages/quick-3d-mmo-client/src/scripts/worker.ts b/packages/quick-3d-mmo-client/src/scripts/worker.ts
new file mode 100644
index 00000000..21430fcb
--- /dev/null
+++ b/packages/quick-3d-mmo-client/src/scripts/worker.ts
@@ -0,0 +1,340 @@
+// @ts-nocheck
+///
+import * as THREE from 'three';
+
+import { TextureSplatter } from './texture-splatter';
+
+import { TerrainHeight, Noise as aNoise, Math as math } from 'quick-3d-mmo-shared';
+
+const { Noise, HeightGenerator } = { ...TerrainHeight, ...aNoise };
+
+
+class _TerrainBuilderThreadedWorker {
+ _params: any;
+ constructor() {
+ }
+
+ Init(params) {
+ this._params = params;
+ this._params.offset = new THREE.Vector3(
+ params.offset[0], params.offset[1], params.offset[2]);
+ this._params.noise = new Noise(params.noiseParams);
+ this._params.heightGenerators = [new HeightGenerator()];
+
+ this._params.biomeGenerator = new Noise(params.biomesParams);
+ this._params.colourNoise = new Noise(params.colourNoiseParams);
+ this._params.colourGenerator = new TextureSplatter(
+ {
+ biomeGenerator: this._params.biomeGenerator,
+ colourNoise: this._params.colourNoise
+ });
+ }
+
+ _GenerateHeight(v) {
+ return this._params.heightGenerators[0].Get(v.x, v.y, v.z)[0];
+ }
+
+ Rebuild() {
+ const _D = new THREE.Vector3();
+ const _D1 = new THREE.Vector3();
+ const _D2 = new THREE.Vector3();
+ const _P = new THREE.Vector3();
+ const _H = new THREE.Vector3();
+ const _W = new THREE.Vector3();
+ const _S = new THREE.Vector3();
+ const _C = new THREE.Vector3();
+
+ const _N = new THREE.Vector3();
+ const _N1 = new THREE.Vector3();
+ const _N2 = new THREE.Vector3();
+ const _N3 = new THREE.Vector3();
+
+ const positions = [];
+ const colors = [];
+ const up = [];
+ const coords = [];
+ const uvs = [];
+ const weights1 = [];
+ const weights2 = [];
+ const indices = [];
+ const wsPositions = [];
+
+ const resolution = this._params.resolution + 2;
+ const radius = this._params.radius;
+ const offset = this._params.offset;
+ const width = this._params.width;
+ const half = width / 2;
+
+ const effectiveResolution = resolution - 2;
+ for (let x = -1; x <= effectiveResolution + 1; x++) {
+ let xp = width * math.sat(x / effectiveResolution);
+
+ for (let y = -1; y <= effectiveResolution + 1; y++) {
+ let yp = width * math.sat(y / effectiveResolution);
+
+ // Compute position
+ _P.set(xp - half, 0.0, yp - half);
+ _P.add(offset);
+
+ _D.set(0, 1, 0);
+
+ // Keep the absolute world space position to sample noise
+ _W.copy(_P);
+
+ // Purturb height along z-vector
+ const height = this._GenerateHeight(_W);
+ _H.copy(_D);
+ _H.multiplyScalar(height);
+ _P.add(_H);
+
+ positions.push(_P.x, _P.y, _P.z);
+
+ _C.copy(_W);
+ _C.add(_H);
+ coords.push(_C.x, _C.y, _C.z);
+
+ _S.set(_W.x, _W.y, height);
+
+ const color = this._params.colourGenerator.GetColour(_S);
+ colors.push(color.r, color.g, color.b);
+ up.push(_D.x, _D.y, _D.z);
+ wsPositions.push(_W.x, _W.z, height);
+ // TODO GUI
+ uvs.push(_P.x / 200.0, _P.y / 200.0);
+ }
+ }
+
+ for (let i = 0; i < resolution; i++) {
+ for (let j = 0; j < resolution; j++) {
+ indices.push(
+ i * (resolution + 1) + j,
+ (i + 1) * (resolution + 1) + j + 1,
+ i * (resolution + 1) + j + 1);
+ indices.push(
+ (i + 1) * (resolution + 1) + j,
+ (i + 1) * (resolution + 1) + j + 1,
+ i * (resolution + 1) + j);
+ }
+ }
+
+ const normals = new Array(up.length).fill(0.0);
+
+ for (let i = 0, n = indices.length; i < n; i += 3) {
+ const i1 = indices[i] * 3;
+ const i2 = indices[i + 1] * 3;
+ const i3 = indices[i + 2] * 3;
+
+ _N1.fromArray(positions, i1);
+ _N2.fromArray(positions, i2);
+ _N3.fromArray(positions, i3);
+
+ _D1.subVectors(_N3, _N2);
+ _D2.subVectors(_N1, _N2);
+ _D1.cross(_D2);
+
+ normals[i1] += _D1.x;
+ normals[i2] += _D1.x;
+ normals[i3] += _D1.x;
+
+ normals[i1 + 1] += _D1.y;
+ normals[i2 + 1] += _D1.y;
+ normals[i3 + 1] += _D1.y;
+
+ normals[i1 + 2] += _D1.z;
+ normals[i2 + 2] += _D1.z;
+ normals[i3 + 2] += _D1.z;
+ }
+
+ // Fix the skirt
+ const _ApplyFix = (x, y, xp, yp) => {
+ const skirtIndex = x * (resolution + 1) + y;
+ const proxyIndex = xp * (resolution + 1) + yp;
+ positions[skirtIndex * 3 + 1] -= 10;
+
+ // Normal will be fucked, copy it from proxy point
+ normals[skirtIndex * 3 + 0] = normals[proxyIndex * 3 + 0];
+ normals[skirtIndex * 3 + 1] = normals[proxyIndex * 3 + 1];
+ normals[skirtIndex * 3 + 2] = normals[proxyIndex * 3 + 2];
+ };
+
+ for (let y = 0; y <= resolution; ++y) {
+ _ApplyFix(0, y, 1, y);
+ }
+ for (let y = 0; y <= resolution; ++y) {
+ _ApplyFix(resolution, y, resolution - 1, y);
+ }
+ for (let x = 0; x <= resolution; ++x) {
+ _ApplyFix(x, 0, x, 1);
+ }
+ for (let x = 0; x <= resolution; ++x) {
+ _ApplyFix(x, resolution, x, resolution - 1);
+ }
+
+ for (let i = 0, n = normals.length; i < n; i += 3) {
+ _N.fromArray(normals, i);
+ _N.normalize();
+ normals[i] = _N.x;
+ normals[i + 1] = _N.y;
+ normals[i + 2] = _N.z;
+ }
+
+ for (let i = 0, n = indices.length; i < n; i += 3) {
+ const splats: object[] = [];
+ const i1 = indices[i] * 3;
+ const i2 = indices[i + 1] * 3;
+ const i3 = indices[i + 2] * 3;
+ const indexes = [i1, i2, i3];
+ for (let j = 0; j < 3; j++) {
+ const j1 = indexes[j];
+ _P.fromArray(wsPositions, j1);
+ _N.fromArray(normals, j1);
+ _D.fromArray(up, j1);
+ const s = this._params.colourGenerator.GetSplat(_P, _N, _D);
+ splats.push(s);
+ }
+
+ const splatStrengths = {};
+ for (let k in splats[0]) {
+ splatStrengths[k] = { key: k, strength: 0.0 };
+ }
+ for (let curSplat of splats) {
+ for (let k in curSplat) {
+ splatStrengths[k].strength += curSplat[k].strength;
+ }
+ }
+
+ let typeValues: any = Object.values(splatStrengths) as {}[];
+ typeValues.sort((a: any, b: any) => {
+ if (a.strength < b.strength) {
+ return 1;
+ }
+ if (a.strength > b.strength) {
+ return -1;
+ }
+ return 0;
+ });
+
+ const w1 = indices[i] * 4;
+ const w2 = indices[i + 1] * 4;
+ const w3 = indices[i + 2] * 4;
+
+ for (let s = 0; s < 3; s++) {
+ let total = (
+ splats?.[s]?.[typeValues?.[0]?.key]?.strength +
+ splats[s][typeValues?.[1].key].strength +
+ splats[s][typeValues[2].key].strength +
+ splats[s][typeValues[3].key].strength);
+ const normalization = 1.0 / total;
+
+ splats[s][typeValues[0].key].strength *= normalization;
+ splats[s][typeValues[1].key].strength *= normalization;
+ splats[s][typeValues[2].key].strength *= normalization;
+ splats[s][typeValues[3].key].strength *= normalization;
+ }
+
+ weights1.push(splats[0][typeValues[3].key].index);
+ weights1.push(splats[0][typeValues[2].key].index);
+ weights1.push(splats[0][typeValues[1].key].index);
+ weights1.push(splats[0][typeValues[0].key].index);
+
+ weights1.push(splats[1][typeValues[3].key].index);
+ weights1.push(splats[1][typeValues[2].key].index);
+ weights1.push(splats[1][typeValues[1].key].index);
+ weights1.push(splats[1][typeValues[0].key].index);
+
+ weights1.push(splats[2][typeValues[3].key].index);
+ weights1.push(splats[2][typeValues[2].key].index);
+ weights1.push(splats[2][typeValues[1].key].index);
+ weights1.push(splats[2][typeValues[0].key].index);
+
+ weights2.push(splats[0][typeValues[3].key].strength);
+ weights2.push(splats[0][typeValues[2].key].strength);
+ weights2.push(splats[0][typeValues[1].key].strength);
+ weights2.push(splats[0][typeValues[0].key].strength);
+
+ weights2.push(splats[1][typeValues[3].key].strength);
+ weights2.push(splats[1][typeValues[2].key].strength);
+ weights2.push(splats[1][typeValues[1].key].strength);
+ weights2.push(splats[1][typeValues[0].key].strength);
+
+ weights2.push(splats[2][typeValues[3].key].strength);
+ weights2.push(splats[2][typeValues[2].key].strength);
+ weights2.push(splats[2][typeValues[1].key].strength);
+ weights2.push(splats[2][typeValues[0].key].strength);
+ }
+
+ function _Unindex(src, stride) {
+ const dst = [];
+ for (let i = 0, n = indices.length; i < n; i += 3) {
+ const i1 = indices[i] * stride;
+ const i2 = indices[i + 1] * stride;
+ const i3 = indices[i + 2] * stride;
+
+ for (let j = 0; j < stride; j++) {
+ dst.push(src[i1 + j]);
+ }
+ for (let j = 0; j < stride; j++) {
+ dst.push(src[i2 + j]);
+ }
+ for (let j = 0; j < stride; j++) {
+ dst.push(src[i3 + j]);
+ }
+ }
+ return dst;
+ }
+
+ const uiPositions = _Unindex(positions, 3);
+ const uiColours = _Unindex(colors, 3);
+ const uiNormals = _Unindex(normals, 3);
+ const uiCoords = _Unindex(coords, 3);
+ const uiUVs = _Unindex(uvs, 2);
+ const uiWeights1 = weights1;
+ const uiWeights2 = weights2;
+
+ const bytesInFloat32 = 4;
+ const positionsArray = new Float32Array(
+ new SharedArrayBuffer(bytesInFloat32 * uiPositions.length));
+ const coloursArray = new Float32Array(
+ new SharedArrayBuffer(bytesInFloat32 * uiColours.length));
+ const normalsArray = new Float32Array(
+ new SharedArrayBuffer(bytesInFloat32 * uiNormals.length));
+ const coordsArray = new Float32Array(
+ new SharedArrayBuffer(bytesInFloat32 * uiCoords.length));
+ const uvsArray = new Float32Array(
+ new SharedArrayBuffer(bytesInFloat32 * uiUVs.length));
+ const weights1Array = new Float32Array(
+ new SharedArrayBuffer(bytesInFloat32 * uiWeights2.length));
+ const weights2Array = new Float32Array(
+ new SharedArrayBuffer(bytesInFloat32 * uiWeights2.length));
+
+ positionsArray.set(uiPositions, 0);
+ coloursArray.set(uiColours, 0);
+ normalsArray.set(uiNormals, 0);
+ uvsArray.set(uiUVs, 0);
+ coordsArray.set(uiCoords, 0);
+ weights1Array.set(uiWeights1, 0);
+ weights2Array.set(uiWeights2, 0);
+
+ return {
+ positions: positionsArray,
+ colours: coloursArray,
+ uvs: uvsArray,
+ normals: normalsArray,
+ coords: coordsArray,
+ weights1: weights1Array,
+ weights2: weights2Array,
+ };
+ }
+}
+
+const _CHUNK = new _TerrainBuilderThreadedWorker();
+
+self.onmessage = (msg) => {
+ if (msg.data.subject == 'build_chunk') {
+ _CHUNK.Init(msg.data.params);
+ const rebuiltData = _CHUNK.Rebuild();
+ self.postMessage({ subject: 'build_chunk_result', data: rebuiltData }, null);
+
+ // console.log("buildChunk: ", {msg, rebuiltData})
+ }
+}
\ No newline at end of file
diff --git a/packages/client/styles/base.css b/packages/quick-3d-mmo-client/src/styles/base.css
similarity index 90%
rename from packages/client/styles/base.css
rename to packages/quick-3d-mmo-client/src/styles/base.css
index 24a4cd61..e24ea164 100644
--- a/packages/client/styles/base.css
+++ b/packages/quick-3d-mmo-client/src/styles/base.css
@@ -38,7 +38,7 @@ body {
top: 0;
left: 0;
font-family: 'IM Fell French Canon', serif;
- background-image: url('./resources/background-3.png');
+ background-image: url('../resources/background-3.png');
background-size: cover;
}
@@ -229,7 +229,7 @@ body {
position: absolute;
top: 0px;
left: 0px;
- background-image: url('./resources/icons/ui/health-bar.png');
+ background-image: url('../resources/icons/ui/health-bar.png');
width: 500px;
height: 300px;
z-index: 1;
@@ -348,7 +348,7 @@ body {
}
.inventory-character {
- background-image: url('./resources/icons/ui/inventory-character.png');
+ background-image: url('../resources/icons/ui/inventory-character.png');
background-size: cover;
width: 200px;
height: 350px;
diff --git a/packages/quick-3d-mmo-client/tsconfig.json b/packages/quick-3d-mmo-client/tsconfig.json
new file mode 100644
index 00000000..40fbcb96
--- /dev/null
+++ b/packages/quick-3d-mmo-client/tsconfig.json
@@ -0,0 +1,33 @@
+{
+ "extends": "../../tsconfig.packages.json",
+ "compilerOptions": {
+ "allowSyntheticDefaultImports": true,
+ "outDir": "dist",
+ "target": "ES5",
+ "lib": [
+ "ESNext",
+ "dom",
+ "webworker"
+ ],
+ "preserveConstEnums": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "sourceMap": true,
+ "baseUrl": "."
+ },
+ "references": [
+ {
+ "path": "../quick-3d-mmo-shared"
+ }
+ ],
+ "include": [
+ "./src/scripts/*.ts",
+ "src/scripts/attacker-controller.ts",
+ "src/index.ts"
+ ],
+ "exclude": [
+ "./dist",
+ "node_modules"
+ ]
+}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-client/tsconfig.tsbuildinfo b/packages/quick-3d-mmo-client/tsconfig.tsbuildinfo
new file mode 100644
index 00000000..70003c44
--- /dev/null
+++ b/packages/quick-3d-mmo-client/tsconfig.tsbuildinfo
@@ -0,0 +1,1834 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "b3584bc5798ed422ce2516df360ffa9cf2d80b5eae852867db9ba3743145f895",
+ "signature": "b3584bc5798ed422ce2516df360ffa9cf2d80b5eae852867db9ba3743145f895",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2015.d.ts": {
+ "version": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "signature": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es2016.d.ts": {
+ "version": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "signature": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es2017.d.ts": {
+ "version": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "signature": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es2018.d.ts": {
+ "version": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "signature": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es2019.d.ts": {
+ "version": "e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84",
+ "signature": "e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es2020.d.ts": {
+ "version": "e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",
+ "signature": "e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.esnext.d.ts": {
+ "version": "fc7a21dd3ee27fd0a9ff1c46534efcd9c3cec51a445b479bb326d871c0aa8302",
+ "signature": "fc7a21dd3ee27fd0a9ff1c46534efcd9c3cec51a445b479bb326d871c0aa8302",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "feeeb1dd8a80fb76be42b0426e8f3ffa9bdef3c2f3c12c147e7660b1c5ba8b3b",
+ "signature": "feeeb1dd8a80fb76be42b0426e8f3ffa9bdef3c2f3c12c147e7660b1c5ba8b3b",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2015.core.d.ts": {
+ "version": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "signature": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2015.collection.d.ts": {
+ "version": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "signature": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2015.generator.d.ts": {
+ "version": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "signature": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
+ "version": "8b2a5df1ce95f78f6b74f1a555ccdb6baab0486b42d8345e0871dd82811f9b9a",
+ "signature": "8b2a5df1ce95f78f6b74f1a555ccdb6baab0486b42d8345e0871dd82811f9b9a",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2015.promise.d.ts": {
+ "version": "2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c",
+ "signature": "2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
+ "version": "810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357",
+ "signature": "810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
+ "version": "62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6",
+ "signature": "62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
+ "version": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "signature": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
+ "version": "9d122b7e8c1a5c72506eea50c0973cba55b92b5532d5cafa8a6ce2c547d57551",
+ "signature": "9d122b7e8c1a5c72506eea50c0973cba55b92b5532d5cafa8a6ce2c547d57551",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
+ "version": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "signature": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2017.object.d.ts": {
+ "version": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "signature": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
+ "version": "7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98",
+ "signature": "7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2017.string.d.ts": {
+ "version": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "signature": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2017.intl.d.ts": {
+ "version": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "signature": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
+ "version": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "signature": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
+ "version": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "signature": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
+ "version": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "signature": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2018.intl.d.ts": {
+ "version": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "signature": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2018.promise.d.ts": {
+ "version": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "signature": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
+ "version": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2019.array.d.ts": {
+ "version": "9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951",
+ "signature": "9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2019.object.d.ts": {
+ "version": "6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de",
+ "signature": "6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2019.string.d.ts": {
+ "version": "93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1",
+ "signature": "93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2019.symbol.d.ts": {
+ "version": "2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993",
+ "signature": "2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
+ "version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2020.promise.d.ts": {
+ "version": "7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862",
+ "signature": "7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts": {
+ "version": "e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40",
+ "signature": "e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2020.string.d.ts": {
+ "version": "faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e",
+ "signature": "faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts": {
+ "version": "936d7d2e8851af9ccfa5333b15e877a824417d352b1d7fd06388639dc69ef80a",
+ "signature": "936d7d2e8851af9ccfa5333b15e877a824417d352b1d7fd06388639dc69ef80a",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2020.intl.d.ts": {
+ "version": "e79ca55569f09a5dc3354be04dba4ae85865b1dce98bf46738ffe231c669621f",
+ "signature": "e79ca55569f09a5dc3354be04dba4ae85865b1dce98bf46738ffe231c669621f",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.esnext.intl.d.ts": {
+ "version": "506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e",
+ "signature": "506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.esnext.string.d.ts": {
+ "version": "fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe",
+ "signature": "fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.esnext.promise.d.ts": {
+ "version": "cd6efb9467a8b6338ece2e2855e37765700f2cd061ca54b01b33878cf5c7677e",
+ "signature": "cd6efb9467a8b6338ece2e2855e37765700f2cd061ca54b01b33878cf5c7677e",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.esnext.weakref.d.ts": {
+ "version": "1e61418f41d404e744b6536af9f8c6f6674dd4d54c12335cd0c4f7eded69cf3f",
+ "signature": "1e61418f41d404e744b6536af9f8c6f6674dd4d54c12335cd0c4f7eded69cf3f",
+ "affectsGlobalScope": true
+ },
+ "./src/scripts/entity.ts": {
+ "version": "feb26e98e9385f26d2e65370974d6d29f898f6cbc55a4c08c80915618aad9e60",
+ "signature": "ebd2e0805e353ae4f46f7a57fbe3fa12e3a209229a3239f32093a2c1682606a6",
+ "affectsGlobalScope": false
+ },
+ "../shared/src/constants.ts": {
+ "version": "e4cfa8135f1bdd39755ab0d6e40ada0dc62d7b79ac688b9af1a85294a9a0692a",
+ "affectsGlobalScope": false
+ },
+ "../shared/src/defs.ts": {
+ "version": "f8347fc0a72850791eb98e99a993501fff2e86a45aa7e3f93dce50b016702867",
+ "affectsGlobalScope": false
+ },
+ "../shared/src/math.ts": {
+ "version": "3d8383c2056b4abbde276f415ce7da6be79a01c52bb3373642ff88521d23a0c4",
+ "affectsGlobalScope": false
+ },
+ "../shared/src/entity-manager.ts": {
+ "version": "e0e5715b91b5043c4f4c88a0466bc1f63d2db98efebd23d6cfc17c52da4304d5",
+ "affectsGlobalScope": false
+ },
+ "../shared/src/spatial-hash-grid.ts": {
+ "version": "145b52cfc588e9602b6957faf2719a3946029478c1c034adcd9be3d320d68bc2",
+ "affectsGlobalScope": false
+ },
+ "../shared/src/simplex-noise.ts": {
+ "version": "9d46fb7195fd47f74ceb2de8620b0e68edc598101c547265ce9270c380d826f2",
+ "affectsGlobalScope": false
+ },
+ "../shared/src/noise.ts": {
+ "version": "da104448d4e8980a224ce8eb50055f648a98e24406d6e01473eb5b858850738c",
+ "affectsGlobalScope": false
+ },
+ "../shared/src/terrain-constants.ts": {
+ "version": "7a715dfc01f25d93bc1b37d284455f5795d8ef68980377c04d86002fa5056e3d",
+ "affectsGlobalScope": false
+ },
+ "../shared/src/terrain-height.ts": {
+ "version": "b0272188f97de9f2072fae1d3fa3a89b3a8866d69934f2e97bfb6357b2222767",
+ "affectsGlobalScope": false
+ },
+ "../shared/src/spline.ts": {
+ "version": "32b2e5e577d4da4ac28058a9b6684e473dce3a9363648b54ca3d26586cf80e22",
+ "affectsGlobalScope": false
+ },
+ "../shared/src/dat.gui.module.ts": {
+ "version": "4f98e1c85c584893dbe04ce665eef4f804e7689497cb58398b78d17cba8b71c5",
+ "affectsGlobalScope": false
+ },
+ "../shared/src/globaltypes.ts": {
+ "version": "eb4c1f4c99e94e80a96c809bc6c34ca33faa72f2c44e72f1e886260a9fee1dc2",
+ "affectsGlobalScope": false
+ },
+ "../shared/src/index.ts": {
+ "version": "77381fe571194ecee7e299b96562fb892dae6e533678a5680c781f3a34a55fbf",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/attacker-controller.ts": {
+ "version": "1727997033931ffbbb6b3c09099edfde2e81ba262db81602166389bde05ca147",
+ "signature": "3008b9d239ed1f5477ed3c901ea41185589bae8af131f09fc6ee483cd9a6920a",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/particle-system.ts": {
+ "version": "cf1593c6c0da15ccc61189fb893de6ac3854c2d6c5734c6740d83974306b7d08",
+ "signature": "2a8d5d59927a24de9e1cced76cbcada9380c1c8aaee15d5a32742fe2d7aae711",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/blood-effect.ts": {
+ "version": "c29b16dd30ef7befd5b5468c969610b3fed1b6abc6db0b13ab87d36508919629",
+ "signature": "3c4c7766906ead4ea77d8175d179e2ba685990f0c06d9d9d5e52af89f76615db",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/equip-weapon-component.ts": {
+ "version": "4f4fb01c983e729511feb23397da0b683206b80d503822cb445b07b930c96d79",
+ "signature": "84ca5c323d5b872bf6beb59924663613269ab6d0da39ce60c75937a03d701d88",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/finite-state-machine.ts": {
+ "version": "9dfaf55f08c9fe5907c1f94959906441d4273c23ba72151fcbd07a49bf657486",
+ "signature": "45c926521079c512410477f4b4e1d187439cb4dd049121f7cd13e787bc45e254",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/floating-name.ts": {
+ "version": "9507cd5c828c0d4df55bdc2287d7ec9a06c3f2d3fcc7bfedc9b53813cd63558f",
+ "signature": "4d7dbcb07cd9912421c37949cb4a53702ac6575e6700f1dcfdf68ad5f99ffe75",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/gltf-component.ts": {
+ "version": "6022feb5ded339e79ed8485ef427cd25e06a8d6ace46e590e1747defe7bbd5b1",
+ "signature": "9cf21b3554e383e0af6702f4bb86e6c447701af5a00693abc77acfec0e927041",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/health-bar.ts": {
+ "version": "18412f90f975d5441d374f912563b2daaf1253cbc556daae38b6162590eea603",
+ "signature": "c4ea58878e3c3d0bc715863e80e19e9f0138ab06d0b1463c328c0610cf83a91f",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/health-component.ts": {
+ "version": "faee6e9a9f0dbedc4a109759cc3e4be952c44441743c6767846376c0aecb277b",
+ "signature": "4d2c4dc167b15b41e787506127ed4c6c9039abda2fcb5e978032b260c429e821",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/component-emitter/index.d.ts": {
+ "version": "a3a88c1869ba1022dfaefac47ff7a984ec62510e9b4d60988f91d5e523266c34",
+ "signature": "a3a88c1869ba1022dfaefac47ff7a984ec62510e9b4d60988f91d5e523266c34",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/socket.io-parser/dist/index.d.ts": {
+ "version": "6ce9c4c7d976960a7f14dfe40e26c357bcab9405eb2eea38f79760ed4f323512",
+ "signature": "6ce9c4c7d976960a7f14dfe40e26c357bcab9405eb2eea38f79760ed4f323512",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/socket.io-client/build/typed-events.d.ts": {
+ "version": "f5ce15fe46e74c4cabdee08f22df1b4ae2c2bfd6978f101f95e6fcd5a2fec8ef",
+ "signature": "f5ce15fe46e74c4cabdee08f22df1b4ae2c2bfd6978f101f95e6fcd5a2fec8ef",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/socket.io-client/build/socket.d.ts": {
+ "version": "e2b6b0fa7b4255a2d76ec93678344908e72a36737eea79900dfddd3cf143458b",
+ "signature": "e2b6b0fa7b4255a2d76ec93678344908e72a36737eea79900dfddd3cf143458b",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/socket.io-client/build/manager.d.ts": {
+ "version": "cf4f61fa7851dbe8ad051d16d9f782da530e4f13793d3da266d91c4fb52941b3",
+ "signature": "cf4f61fa7851dbe8ad051d16d9f782da530e4f13793d3da266d91c4fb52941b3",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/socket.io-client/build/index.d.ts": {
+ "version": "e4f701ad984ce784f6d40c65955103a9341a694917915a5d32128e5b53a97019",
+ "signature": "e4f701ad984ce784f6d40c65955103a9341a694917915a5d32128e5b53a97019",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/index.ts": {
+ "version": "5b9b9c131bd49b87c8a88898bdd44d1925752f62d1f7b37e851b5055bdb5a5c4",
+ "signature": "8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/inventory-controller.ts": {
+ "version": "8acd4c012a0cda987d4e2608f8b8f29fa9a0c1916783b39797992dcc655b650d",
+ "signature": "c06b8445e929246268fdfcba64b8ace80c7a0700a92c5c25230ae6c2c8aef7ca",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/level-up-component.ts": {
+ "version": "a5cff58c740bc65d707b3afdaa6c73a774ea1ea846ca7214cf7d4faf41052b32",
+ "signature": "2c4b80a356eda6f06270fbef98f8b9ac3b2f06f6e0a758c16929425d00743d5e",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/load-controller.ts": {
+ "version": "29d44026fdb298ee73b52a2c4223582262daeb8aa7ac9af3228c5961b5ec0281",
+ "signature": "e263cb36f66185c05eceb1604fddb947d5f0b5c7f42756bed9e21671f68e96e1",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/loading-manager.ts": {
+ "version": "87693af4ad9f7abc91f4365297e6858ad9d89cce3054ae90905b8f0af53f6b6c",
+ "signature": "3991f641735f7997859be8c0142530c098f60a14868a34c1cd48ca9c53235f35",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/ui-controller.ts": {
+ "version": "3c03ef8ac3f5f4ddf22ac55a63fa538cc64e93e177643d8919d08c14584e28ae",
+ "signature": "dce085d2e2fd9745962f6f254eb6597255419682869091b49c669f7f81c1fe8a",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/network-controller.ts": {
+ "version": "a661ccc22d547b3c8ec731855117dcf548b9239b8709fb401450a44d02581333",
+ "signature": "604deb8ec847655e4f2bda945b06ef7a641f967d73fcd484b9c81eab82bede93",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/render-component.ts": {
+ "version": "7fdd0c3e210bb786717633a3ff0eccfb1b447069c506db5f6a01e607be081798",
+ "signature": "9f724189af2e0a32446cca8d200bcbcdd1eb5d0f71531bcf1d61d948aeab3209",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/spatial-grid-controller.ts": {
+ "version": "1926091e34fbb000130d37e6adfd364563033e31035e730dfa9f4cd5fbe7fa84",
+ "signature": "20c44268ce1df8309dde05b3c755cf4c1e6c3eb9547cfaac4f26fa8428ad2e27",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/scenery-controller.ts": {
+ "version": "ae4716dc31f34887f6155d4d1c17b6ea5a6546b6d4a5eaabaa8f7b0474c6366a",
+ "signature": "f49b839c5cec310003f6726e04f69cb66aef57dc6856ff04654d23cf72733265",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/third-person-camera.ts": {
+ "version": "e07e5414195514e1d682475edaaa9d47cb64139e4d996403c053e988c01e262e",
+ "signature": "cc7d0f8e5ce5f4bc0192ab12f822e125e2340399eb979d76714a0e9c0e18d389",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/player-state.ts": {
+ "version": "bc5fad7b012373d3e393bd1b60a1a621ee78bb7922d200159557fd2b5a5524fa",
+ "signature": "7024931512df3beb919c3471dc0d2e7a3946891e73199c14a4e951c07f4abc69",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/player-entity.ts": {
+ "version": "339ddf91dad62345300cfc34697406fad4d6d4571bd514868a8b81032b56b406",
+ "signature": "c970657dfe843fbccea57b35cdbadfc74fc4648281dd999028f7e6dd031cacb6",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/player-input.ts": {
+ "version": "f731b272380506fc91bd81c1234a2407dcb03823af5bb4c94191be96ada3d860",
+ "signature": "e6d9b80ecb0288a061c568d32c9e1edb7b2d725f29c52fbcddd175196e67e44d",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/npc-entity.ts": {
+ "version": "4a48cc65ee7815cfcd07dba0911c4ced7407d776e6ce1000d96311d31dcd955f",
+ "signature": "d1875d77566074d603e4e61252fe77c3194febac18f32b84cd8ac9546a29fb05",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/network-entity-controller.ts": {
+ "version": "6343b645324e29db5f0242a387127cc2343b1567553634c0e1564e7e04317ef4",
+ "signature": "7453cbcd702ef09de43097d726c9d2fb906e5fb77dde0dd34581d07faa6d3c98",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/network-player-controller.ts": {
+ "version": "f8b552fb4f80328dfbd514b1f68f127c92f6b01d5ac05feebb1e0ed82fc10b66",
+ "signature": "a9cbd39d1958921068e81058cef68b735d34bb58b30fd0a9f06a86c9d144971f",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/sorceror-effect.ts": {
+ "version": "dd130f7e56e494129659a97894f42e599d4e8433a2c304ffd5760eca19a44a2f",
+ "signature": "cd40674b063bd90a8582e9b0e84e7d3a0832e7660961d1f652cf71a8558dd1a3",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/spawners.ts": {
+ "version": "148204d77539445ae034323267a1fae614bbacebe3b7e5d2c32529feee9862fb",
+ "signature": "6df9fde6cee8966e81b0f9ebd9fa5ab8cea758516911c83bf62955c525fcc7f6",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/quadtree.ts": {
+ "version": "72303a2de8621f5422f072e24ef22eb5fb2e9a62956947263ddcb147f903ac03",
+ "signature": "7277474dc5cce0f73faa6b61b8d782f7c8f91492e6f78540216f81bce677b7d1",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/terrain-shader.ts": {
+ "version": "94eeb5db70a2383f010a5d2730bfbc9e3edeebaf48cb8dc5f564cf9f2b9c2dab",
+ "signature": "7ddde5052b7e9979338ef87062dc021615b4c9300e7499a016914e01302db2ba",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/terrain-chunk.ts": {
+ "version": "e74e3213cc316b5c7f2c7f912e55ac86d6b7b2aa1c80db53facaed5fd3077fcf",
+ "signature": "36ee4f4a2222173611d29c85c85fb2f38a29d7a034dbb45841a72725c5b28fb6",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/terrain-builder-threaded.ts": {
+ "version": "7269e14e945179a0214a9d0d818bdb44286b15097dcc10dd254030ee41a5e0be",
+ "signature": "4df168e08f898e056d6b80a3df949bf65f31a1bcf1aa155342885b18f8ecd939",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/texture-splatter.ts": {
+ "version": "4c7bc3f5c6dc18ea4f92754d7b1db96b3e23317c1ae3ad29bc1703f530eda464",
+ "signature": "93e7ffc1c21e1d0fcb20b85afce8ead367d49090b93512bcbc6b85844b15d84d",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/textures.ts": {
+ "version": "98bdfaf03fd17e3d935af7e0b137215db142c18f6ea46a13ce60aee309a022e6",
+ "signature": "5e27364db404e0b2ad3bee6125a9a2a15c023303a76496db3e5148e955801887",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/utils.ts": {
+ "version": "b85ec48aa97b7755146660d6d7dae992eab8a84a237ad498265d8ecd3eadf9ba",
+ "signature": "72faae70aa639e63605180e56095c216687d40108a3997b88b05ab110b5d67b1",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/terrain.ts": {
+ "version": "5289ec9983aea579bfa266b5b6758d5d232b181408b5e187d555e668e9600047",
+ "signature": "5bd5dddb648085563aa65db8ea99081ebc17776a1784ebafecb4b1fc060ab2f6",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/threejs_component.ts": {
+ "version": "d6646cd2a8bd63e3f15c029d782696bc8b315ec14c51e2ef0086aad7a7159408",
+ "signature": "e55111d4d858243e943b780285203cbc56fe1b337f9435c24f57d306631d9cc6",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/main.ts": {
+ "version": "dd2444acfe142ccfa18530ac4e82c53bf5dea9955488762295b47bc3e8593e07",
+ "signature": "8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/quest-component.ts": {
+ "version": "8e6473d6842e60c474b21e22f41f645827001a8d51007f54ca41e5c4dc174b72",
+ "signature": "fbb56a45784aa25173405258ae8843cc29e173bea0006f70a583e69eedd8d641",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/terrain-builder-threaded-worker.ts": {
+ "version": "53d269343a6da8f59ab2f7104313cffc044b28467c28f9de52b26e00d7b3bddc",
+ "signature": "8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/terrain-builder.ts": {
+ "version": "9743fca94492506a91f7ea764e2ef239381dccb3e80afd7f6f34d9f0a14ceb29",
+ "signature": "5d2115ea335bcb5b094ce912ec290a96452e109480cb33886704b350ea6af46e",
+ "affectsGlobalScope": false
+ },
+ "./src/scripts/test.ts": {
+ "version": "6702d16e432fee60416dc4748d3e226f109466bb2203ec5772555c4db5608c15",
+ "signature": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/cookie/index.d.ts": {
+ "version": "405ad6db8aa3d5618c3be21cde8125de28a3e40690eb05136c123f420c05c082",
+ "signature": "405ad6db8aa3d5618c3be21cde8125de28a3e40690eb05136c123f420c05c082",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/cors/index.d.ts": {
+ "version": "a68969f643e0cb091046a9437b64cb1880a081fc07c70a4717b0edef2a38bc85",
+ "signature": "a68969f643e0cb091046a9437b64cb1880a081fc07c70a4717b0edef2a38bc85",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/eslint/helpers.d.ts": {
+ "version": "f345b0888d003fd69cb32bad3a0aa04c615ccafc572019e4bd86a52bd5e49e46",
+ "signature": "f345b0888d003fd69cb32bad3a0aa04c615ccafc572019e4bd86a52bd5e49e46",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/@types/eslint/lib/rules/index.d.ts": {
+ "version": "0133ebdd17a823ae56861948870cde4dac18dd8818ab641039c85bbb720429e0",
+ "signature": "0133ebdd17a823ae56861948870cde4dac18dd8818ab641039c85bbb720429e0",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/json-schema/index.d.ts": {
+ "version": "3a1e165b22a1cb8df82c44c9a09502fd2b33f160cd277de2cd3a055d8e5c6b27",
+ "signature": "3a1e165b22a1cb8df82c44c9a09502fd2b33f160cd277de2cd3a055d8e5c6b27",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/estree/index.d.ts": {
+ "version": "f1e8ecd1d960d12e57316fd2889b0a57635f38f8c4c976d8deafa29650bbf320",
+ "signature": "f1e8ecd1d960d12e57316fd2889b0a57635f38f8c4c976d8deafa29650bbf320",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/eslint/index.d.ts": {
+ "version": "649fbcb16a4a7e1d9f32a49db7381150ef5b2e472a0c52a1543d4c35a2aefa3c",
+ "signature": "649fbcb16a4a7e1d9f32a49db7381150ef5b2e472a0c52a1543d4c35a2aefa3c",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/eslint-scope/index.d.ts": {
+ "version": "274bda283ef15f4205603ca9967313fc013aa77ae89f2cbeab5fbd51439e96ed",
+ "signature": "274bda283ef15f4205603ca9967313fc013aa77ae89f2cbeab5fbd51439e96ed",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/globals.d.ts": {
+ "version": "25b4a0c4fab47c373ee49df4c239826ee3430019fc0c1b5e59edc3e398b7468d",
+ "signature": "25b4a0c4fab47c373ee49df4c239826ee3430019fc0c1b5e59edc3e398b7468d",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/@types/node/async_hooks.d.ts": {
+ "version": "d20f08527645f62facb2d66c2b7bd31ea964b59c897d00bddb1efe8c13890b72",
+ "signature": "d20f08527645f62facb2d66c2b7bd31ea964b59c897d00bddb1efe8c13890b72",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/buffer.d.ts": {
+ "version": "5726b5ce952dc5beaeb08d5f64236632501568a54a390363d2339ba1dc5393b1",
+ "signature": "5726b5ce952dc5beaeb08d5f64236632501568a54a390363d2339ba1dc5393b1",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/child_process.d.ts": {
+ "version": "674bedbfd2004e233e2a266a3d2286e524f0d58787a98522d834d6ccda1d215a",
+ "signature": "674bedbfd2004e233e2a266a3d2286e524f0d58787a98522d834d6ccda1d215a",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/cluster.d.ts": {
+ "version": "714637d594e1a38a075091fe464ca91c6abc0b154784b4287f6883200e28ccef",
+ "signature": "714637d594e1a38a075091fe464ca91c6abc0b154784b4287f6883200e28ccef",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/console.d.ts": {
+ "version": "23edba5f47d3409810c563fe8034ae2c59e718e1ef8570f4152ccdde1915a096",
+ "signature": "23edba5f47d3409810c563fe8034ae2c59e718e1ef8570f4152ccdde1915a096",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/@types/node/constants.d.ts": {
+ "version": "0e9c55f894ca2d9cf63b5b0d43a8cec1772dd560233fd16275bc7a485eb82f83",
+ "signature": "0e9c55f894ca2d9cf63b5b0d43a8cec1772dd560233fd16275bc7a485eb82f83",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/crypto.d.ts": {
+ "version": "d53b352a01645c470a0d8c31bf290ba791fc28ade0ce187a4a50f5c2f826f75e",
+ "signature": "d53b352a01645c470a0d8c31bf290ba791fc28ade0ce187a4a50f5c2f826f75e",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/dgram.d.ts": {
+ "version": "5f0a09de75bd965c21dc6d73671ba88830272f9ed62897bb0aa9754b369b1eed",
+ "signature": "5f0a09de75bd965c21dc6d73671ba88830272f9ed62897bb0aa9754b369b1eed",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/dns.d.ts": {
+ "version": "2b34e7fcba9e1f24e7f54ba5c8be5a8895b0b8b444ccf6548e04acdee0899317",
+ "signature": "2b34e7fcba9e1f24e7f54ba5c8be5a8895b0b8b444ccf6548e04acdee0899317",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/domain.d.ts": {
+ "version": "06d2be99c3dd2ff52114d02ee443ba486ab482423df1941d3c97d6a92e924d70",
+ "signature": "06d2be99c3dd2ff52114d02ee443ba486ab482423df1941d3c97d6a92e924d70",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/@types/node/events.d.ts": {
+ "version": "bfd4f140c07091b5e8a963c89e6fa3f44b6cfcbc11471b465cf63e2d020ad0eb",
+ "signature": "bfd4f140c07091b5e8a963c89e6fa3f44b6cfcbc11471b465cf63e2d020ad0eb",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/@types/node/fs.d.ts": {
+ "version": "a106a0bea088b70879ac88ff606dc253c0cc474ea05ad3a282b8bfb1091ae576",
+ "signature": "a106a0bea088b70879ac88ff606dc253c0cc474ea05ad3a282b8bfb1091ae576",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/fs/promises.d.ts": {
+ "version": "c98ce957db9eebd75f53edda3f6893e05ab2d2283b5667b18e31bcdb6427ed10",
+ "signature": "c98ce957db9eebd75f53edda3f6893e05ab2d2283b5667b18e31bcdb6427ed10",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/http.d.ts": {
+ "version": "1f08bd8305d4a789a68f71ab622156dfff993aa51a2aa58b9ccf166cc6f9fcf7",
+ "signature": "1f08bd8305d4a789a68f71ab622156dfff993aa51a2aa58b9ccf166cc6f9fcf7",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/http2.d.ts": {
+ "version": "9aff68f1b847b846d3d50a58c9f8f99389bedd0258d1b1c201f11b97ecfd36f8",
+ "signature": "9aff68f1b847b846d3d50a58c9f8f99389bedd0258d1b1c201f11b97ecfd36f8",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/https.d.ts": {
+ "version": "1978992206803f5761e99e893d93b25abc818c5fe619674fdf2ae02b29f641ba",
+ "signature": "1978992206803f5761e99e893d93b25abc818c5fe619674fdf2ae02b29f641ba",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/inspector.d.ts": {
+ "version": "05fbe81f09fc455a2c343d2458d2b3c600c90b92b22926be765ee79326be9466",
+ "signature": "05fbe81f09fc455a2c343d2458d2b3c600c90b92b22926be765ee79326be9466",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/module.d.ts": {
+ "version": "8e7d6dae9e19bbe47600dcfd4418db85b30ae7351474ea0aad5e628f9845d340",
+ "signature": "8e7d6dae9e19bbe47600dcfd4418db85b30ae7351474ea0aad5e628f9845d340",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/net.d.ts": {
+ "version": "f20ea392f7f27feb7a90e5a24319a4e365b07bf83c39a547711fe7ff9df68657",
+ "signature": "f20ea392f7f27feb7a90e5a24319a4e365b07bf83c39a547711fe7ff9df68657",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/os.d.ts": {
+ "version": "32542c4660ecda892a333a533feedba31738ee538ef6a78eb73af647137bc3fc",
+ "signature": "32542c4660ecda892a333a533feedba31738ee538ef6a78eb73af647137bc3fc",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/path.d.ts": {
+ "version": "0ecacea5047d1a7d350e7049dbd22f26435be5e8736a81a56afec5b3264db1ca",
+ "signature": "0ecacea5047d1a7d350e7049dbd22f26435be5e8736a81a56afec5b3264db1ca",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/perf_hooks.d.ts": {
+ "version": "ffcb4ebde21f83370ed402583888b28651d2eb7f05bfec9482eb46d82adedd7f",
+ "signature": "ffcb4ebde21f83370ed402583888b28651d2eb7f05bfec9482eb46d82adedd7f",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/process.d.ts": {
+ "version": "06c004006016a51c4d1855527a523562c329dc44c473931c65f10373281f730e",
+ "signature": "06c004006016a51c4d1855527a523562c329dc44c473931c65f10373281f730e",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/@types/node/punycode.d.ts": {
+ "version": "a7b43c69f9602d198825e403ee34e5d64f83c48b391b2897e8c0e6f72bca35f8",
+ "signature": "a7b43c69f9602d198825e403ee34e5d64f83c48b391b2897e8c0e6f72bca35f8",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/querystring.d.ts": {
+ "version": "f4a3fc4efc6944e7b7bd4ccfa45e0df68b6359808e6cf9d061f04fd964a7b2d3",
+ "signature": "f4a3fc4efc6944e7b7bd4ccfa45e0df68b6359808e6cf9d061f04fd964a7b2d3",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/readline.d.ts": {
+ "version": "73cad675aead7a2c05cf934e7e700c61d84b2037ac1d576c3f751199b25331da",
+ "signature": "73cad675aead7a2c05cf934e7e700c61d84b2037ac1d576c3f751199b25331da",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/repl.d.ts": {
+ "version": "8c3137ba3583ec18484429ec1c8eff89efdc42730542f157b38b102fdccc0c71",
+ "signature": "8c3137ba3583ec18484429ec1c8eff89efdc42730542f157b38b102fdccc0c71",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/stream.d.ts": {
+ "version": "d84300d886b45a198c346158e4ff7ae361cc7bc1c3deab44afb3db7de56b5d25",
+ "signature": "d84300d886b45a198c346158e4ff7ae361cc7bc1c3deab44afb3db7de56b5d25",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/string_decoder.d.ts": {
+ "version": "94ca7beec4e274d32362b54e0133152f7b4be9487db7b005070c03880b6363aa",
+ "signature": "94ca7beec4e274d32362b54e0133152f7b4be9487db7b005070c03880b6363aa",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/timers.d.ts": {
+ "version": "2d713cbcbd5bcc38d91546eaeea7bb1c8686dc4a2995a28556d957b1b9de11d9",
+ "signature": "2d713cbcbd5bcc38d91546eaeea7bb1c8686dc4a2995a28556d957b1b9de11d9",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/tls.d.ts": {
+ "version": "bbf21f210782db4193359010a4710786add43e3b50aa42fc0d371f45b4e4d8d3",
+ "signature": "bbf21f210782db4193359010a4710786add43e3b50aa42fc0d371f45b4e4d8d3",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/trace_events.d.ts": {
+ "version": "0b7733d83619ac4e3963e2a9f7c75dc1e9af6850cb2354c9554977813092c10a",
+ "signature": "0b7733d83619ac4e3963e2a9f7c75dc1e9af6850cb2354c9554977813092c10a",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/tty.d.ts": {
+ "version": "3ce933f0c3955f67f67eb7d6b5c83c2c54a18472c1d6f2bb651e51dd40c84837",
+ "signature": "3ce933f0c3955f67f67eb7d6b5c83c2c54a18472c1d6f2bb651e51dd40c84837",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/url.d.ts": {
+ "version": "631e96db896d645f7132c488ad34a16d71fd2be9f44696f8c98289ee1c8cbfa9",
+ "signature": "631e96db896d645f7132c488ad34a16d71fd2be9f44696f8c98289ee1c8cbfa9",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/util.d.ts": {
+ "version": "2c77230d381cba81eb6f87cda2fbfff6c0427c6546c2e2590110effff37c58f7",
+ "signature": "2c77230d381cba81eb6f87cda2fbfff6c0427c6546c2e2590110effff37c58f7",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/v8.d.ts": {
+ "version": "da86ee9a2f09a4583db1d5e37815894967e1f694ad9f3c25e84e0e4d40411e14",
+ "signature": "da86ee9a2f09a4583db1d5e37815894967e1f694ad9f3c25e84e0e4d40411e14",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/vm.d.ts": {
+ "version": "141a943e5690105898a67537a470f70b56d0e183441b56051d929e902376b7b2",
+ "signature": "141a943e5690105898a67537a470f70b56d0e183441b56051d929e902376b7b2",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/worker_threads.d.ts": {
+ "version": "ddc086b1adac44e2fccf55422da1e90fa970e659d77f99712422a421564b4877",
+ "signature": "ddc086b1adac44e2fccf55422da1e90fa970e659d77f99712422a421564b4877",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/zlib.d.ts": {
+ "version": "515ef1d99036ff0dafa5bf738e02222edea94e0d97a0aa0ff277ac5e96b57977",
+ "signature": "515ef1d99036ff0dafa5bf738e02222edea94e0d97a0aa0ff277ac5e96b57977",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/globals.global.d.ts": {
+ "version": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "signature": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/@types/node/wasi.d.ts": {
+ "version": "780058f4a804c8bdcdd2f60e7af64b2bc57d149c1586ee3db732a84d659a50bf",
+ "signature": "780058f4a804c8bdcdd2f60e7af64b2bc57d149c1586ee3db732a84d659a50bf",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/ts3.6/base.d.ts": {
+ "version": "ae68a04912ee5a0f589276f9ec60b095f8c40d48128a4575b3fdd7d93806931c",
+ "signature": "ae68a04912ee5a0f589276f9ec60b095f8c40d48128a4575b3fdd7d93806931c",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/assert.d.ts": {
+ "version": "19d580a3b42ad5caeaee266ae958260e23f2df0549ee201c886c8bd7a4f01d4e",
+ "signature": "19d580a3b42ad5caeaee266ae958260e23f2df0549ee201c886c8bd7a4f01d4e",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/base.d.ts": {
+ "version": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "signature": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/index.d.ts": {
+ "version": "9c4c395e927045b324877acdc4bfb95f128f36bc9f073266a2f0342495075a4f",
+ "signature": "9c4c395e927045b324877acdc4bfb95f128f36bc9f073266a2f0342495075a4f",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/minimatch/index.d.ts": {
+ "version": "95c22bc19835e28e2e524a4bb8898eb5f2107b640d7279a6d3aade261916bbf2",
+ "signature": "95c22bc19835e28e2e524a4bb8898eb5f2107b640d7279a6d3aade261916bbf2",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/glob/index.d.ts": {
+ "version": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "signature": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/html-minifier-terser/index.d.ts": {
+ "version": "6767cce098e1e6369c26258b7a1f9e569c5467d501a47a090136d5ea6e80ae6d",
+ "signature": "6767cce098e1e6369c26258b7a1f9e569c5467d501a47a090136d5ea6e80ae6d",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/json5/index.d.ts": {
+ "version": "96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538",
+ "signature": "96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/minimist/index.d.ts": {
+ "version": "e437d83044ba17246a861aa9691aa14223ff4a9d6f338ab1269c41c758586a88",
+ "signature": "e437d83044ba17246a861aa9691aa14223ff4a9d6f338ab1269c41c758586a88",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/normalize-package-data/index.d.ts": {
+ "version": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "signature": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/parse-json/index.d.ts": {
+ "version": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "signature": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "target": 2,
+ "module": 99,
+ "lib": [
+ "lib.esnext.d.ts",
+ "lib.dom.d.ts"
+ ],
+ "strict": false,
+ "moduleResolution": 2,
+ "esModuleInterop": true,
+ "forceConsistentCasingInFileNames": true,
+ "skipLibCheck": true,
+ "rootDir": "./src",
+ "outDir": "./dist",
+ "resolveJsonModule": true,
+ "composite": true,
+ "sourceMap": true,
+ "baseUrl": "./",
+ "configFilePath": "./tsconfig.json"
+ },
+ "referencedMap": {
+ "../../node_modules/@types/cors/index.d.ts": [
+ "../../node_modules/@types/node/http.d.ts"
+ ],
+ "../../node_modules/@types/eslint-scope/index.d.ts": [
+ "../../node_modules/@types/eslint/index.d.ts",
+ "../../node_modules/@types/estree/index.d.ts"
+ ],
+ "../../node_modules/@types/eslint/index.d.ts": [
+ "../../node_modules/@types/eslint/helpers.d.ts",
+ "../../node_modules/@types/eslint/lib/rules/index.d.ts",
+ "../../node_modules/@types/estree/index.d.ts",
+ "../../node_modules/@types/json-schema/index.d.ts"
+ ],
+ "../../node_modules/@types/eslint/lib/rules/index.d.ts": [
+ "../../node_modules/@types/eslint/index.d.ts"
+ ],
+ "../../node_modules/@types/glob/index.d.ts": [
+ "../../node_modules/@types/minimatch/index.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../node_modules/@types/node/assert.d.ts": [
+ "../../node_modules/@types/node/assert.d.ts"
+ ],
+ "../../node_modules/@types/node/async_hooks.d.ts": [
+ "../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../node_modules/@types/node/base.d.ts": [
+ "../../node_modules/@types/node/assert.d.ts",
+ "../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../node_modules/@types/node/buffer.d.ts": [
+ "../../node_modules/@types/node/buffer.d.ts"
+ ],
+ "../../node_modules/@types/node/child_process.d.ts": [
+ "../../node_modules/@types/node/child_process.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../node_modules/@types/node/cluster.d.ts": [
+ "../../node_modules/@types/node/child_process.d.ts",
+ "../../node_modules/@types/node/cluster.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../node_modules/@types/node/console.d.ts": [
+ "../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../node_modules/@types/node/constants.d.ts": [
+ "../../node_modules/@types/node/constants.d.ts",
+ "../../node_modules/@types/node/crypto.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../node_modules/@types/node/crypto.d.ts": [
+ "../../node_modules/@types/node/crypto.d.ts",
+ "../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../node_modules/@types/node/dgram.d.ts": [
+ "../../node_modules/@types/node/dgram.d.ts",
+ "../../node_modules/@types/node/dns.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../node_modules/@types/node/dns.d.ts": [
+ "../../node_modules/@types/node/dns.d.ts"
+ ],
+ "../../node_modules/@types/node/domain.d.ts": [
+ "../../node_modules/@types/node/domain.d.ts",
+ "../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../node_modules/@types/node/events.d.ts": [
+ "../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../node_modules/@types/node/fs.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/fs/promises.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/fs/promises.d.ts"
+ ],
+ "../../node_modules/@types/node/http.d.ts": [
+ "../../node_modules/@types/node/http.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/http2.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/http.d.ts",
+ "../../node_modules/@types/node/http2.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/tls.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/https.d.ts": [
+ "../../node_modules/@types/node/http.d.ts",
+ "../../node_modules/@types/node/https.d.ts",
+ "../../node_modules/@types/node/tls.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/index.d.ts": [
+ "../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../node_modules/@types/node/inspector.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/inspector.d.ts"
+ ],
+ "../../node_modules/@types/node/module.d.ts": [
+ "../../node_modules/@types/node/module.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/net.d.ts": [
+ "../../node_modules/@types/node/dns.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../node_modules/@types/node/os.d.ts": [
+ "../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../node_modules/@types/node/path.d.ts": [
+ "../../node_modules/@types/node/path.d.ts"
+ ],
+ "../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../node_modules/@types/node/async_hooks.d.ts",
+ "../../node_modules/@types/node/perf_hooks.d.ts"
+ ],
+ "../../node_modules/@types/node/process.d.ts": [
+ "../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../node_modules/@types/node/punycode.d.ts": [
+ "../../node_modules/@types/node/punycode.d.ts"
+ ],
+ "../../node_modules/@types/node/querystring.d.ts": [
+ "../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../node_modules/@types/node/readline.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../node_modules/@types/node/repl.d.ts": [
+ "../../node_modules/@types/node/readline.d.ts",
+ "../../node_modules/@types/node/repl.d.ts",
+ "../../node_modules/@types/node/util.d.ts",
+ "../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../node_modules/@types/node/stream.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../node_modules/@types/node/string_decoder.d.ts": [
+ "../../node_modules/@types/node/string_decoder.d.ts"
+ ],
+ "../../node_modules/@types/node/timers.d.ts": [
+ "../../node_modules/@types/node/timers.d.ts"
+ ],
+ "../../node_modules/@types/node/tls.d.ts": [
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/tls.d.ts"
+ ],
+ "../../node_modules/@types/node/trace_events.d.ts": [
+ "../../node_modules/@types/node/trace_events.d.ts"
+ ],
+ "../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../node_modules/@types/node/async_hooks.d.ts",
+ "../../node_modules/@types/node/buffer.d.ts",
+ "../../node_modules/@types/node/child_process.d.ts",
+ "../../node_modules/@types/node/cluster.d.ts",
+ "../../node_modules/@types/node/console.d.ts",
+ "../../node_modules/@types/node/constants.d.ts",
+ "../../node_modules/@types/node/crypto.d.ts",
+ "../../node_modules/@types/node/dgram.d.ts",
+ "../../node_modules/@types/node/dns.d.ts",
+ "../../node_modules/@types/node/domain.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/fs/promises.d.ts",
+ "../../node_modules/@types/node/globals.d.ts",
+ "../../node_modules/@types/node/globals.global.d.ts",
+ "../../node_modules/@types/node/http.d.ts",
+ "../../node_modules/@types/node/http2.d.ts",
+ "../../node_modules/@types/node/https.d.ts",
+ "../../node_modules/@types/node/inspector.d.ts",
+ "../../node_modules/@types/node/module.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/os.d.ts",
+ "../../node_modules/@types/node/path.d.ts",
+ "../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../node_modules/@types/node/process.d.ts",
+ "../../node_modules/@types/node/punycode.d.ts",
+ "../../node_modules/@types/node/querystring.d.ts",
+ "../../node_modules/@types/node/readline.d.ts",
+ "../../node_modules/@types/node/repl.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/string_decoder.d.ts",
+ "../../node_modules/@types/node/timers.d.ts",
+ "../../node_modules/@types/node/tls.d.ts",
+ "../../node_modules/@types/node/trace_events.d.ts",
+ "../../node_modules/@types/node/tty.d.ts",
+ "../../node_modules/@types/node/url.d.ts",
+ "../../node_modules/@types/node/util.d.ts",
+ "../../node_modules/@types/node/v8.d.ts",
+ "../../node_modules/@types/node/vm.d.ts",
+ "../../node_modules/@types/node/wasi.d.ts",
+ "../../node_modules/@types/node/worker_threads.d.ts",
+ "../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../node_modules/@types/node/tty.d.ts": [
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../node_modules/@types/node/url.d.ts": [
+ "../../node_modules/@types/node/querystring.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/util.d.ts": [
+ "../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../node_modules/@types/node/v8.d.ts": [
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/v8.d.ts"
+ ],
+ "../../node_modules/@types/node/vm.d.ts": [
+ "../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../node_modules/@types/node/wasi.d.ts": [
+ "../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs/promises.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/url.d.ts",
+ "../../node_modules/@types/node/vm.d.ts",
+ "../../node_modules/@types/node/worker_threads.d.ts"
+ ],
+ "../../node_modules/@types/node/zlib.d.ts": [
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../node_modules/socket.io-client/build/index.d.ts": [
+ "../../node_modules/socket.io-client/build/manager.d.ts",
+ "../../node_modules/socket.io-client/build/socket.d.ts",
+ "../../node_modules/socket.io-parser/dist/index.d.ts"
+ ],
+ "../../node_modules/socket.io-client/build/manager.d.ts": [
+ "../../node_modules/socket.io-client/build/socket.d.ts",
+ "../../node_modules/socket.io-client/build/typed-events.d.ts",
+ "../../node_modules/socket.io-parser/dist/index.d.ts"
+ ],
+ "../../node_modules/socket.io-client/build/socket.d.ts": [
+ "../../node_modules/socket.io-client/build/manager.d.ts",
+ "../../node_modules/socket.io-client/build/typed-events.d.ts",
+ "../../node_modules/socket.io-parser/dist/index.d.ts"
+ ],
+ "../../node_modules/socket.io-client/build/typed-events.d.ts": [
+ "../../node_modules/@types/component-emitter/index.d.ts"
+ ],
+ "../../node_modules/socket.io-parser/dist/index.d.ts": [
+ "../../node_modules/@types/component-emitter/index.d.ts"
+ ],
+ "./src/scripts/attacker-controller.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/blood-effect.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts",
+ "./src/scripts/particle-system.ts"
+ ],
+ "./src/scripts/equip-weapon-component.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/floating-name.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/gltf-component.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/health-bar.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/health-component.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/index.ts": [
+ "../../node_modules/socket.io-client/build/index.d.ts",
+ "../shared/src/index.ts"
+ ],
+ "./src/scripts/inventory-controller.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/level-up-component.ts": [
+ "./src/scripts/entity.ts",
+ "./src/scripts/particle-system.ts"
+ ],
+ "./src/scripts/load-controller.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/main.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts",
+ "./src/scripts/inventory-controller.ts",
+ "./src/scripts/level-up-component.ts",
+ "./src/scripts/load-controller.ts",
+ "./src/scripts/network-controller.ts",
+ "./src/scripts/scenery-controller.ts",
+ "./src/scripts/spawners.ts",
+ "./src/scripts/terrain.ts",
+ "./src/scripts/threejs_component.ts",
+ "./src/scripts/ui-controller.ts"
+ ],
+ "./src/scripts/network-controller.ts": [
+ "../../node_modules/socket.io-client/build/index.d.ts",
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts",
+ "./src/scripts/ui-controller.ts"
+ ],
+ "./src/scripts/network-entity-controller.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/network-player-controller.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/npc-entity.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts",
+ "./src/scripts/player-entity.ts"
+ ],
+ "./src/scripts/player-entity.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts",
+ "./src/scripts/finite-state-machine.ts",
+ "./src/scripts/player-state.ts"
+ ],
+ "./src/scripts/player-input.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/player-state.ts": [
+ "../shared/src/index.ts"
+ ],
+ "./src/scripts/quest-component.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/render-component.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/scenery-controller.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts",
+ "./src/scripts/render-component.ts",
+ "./src/scripts/spatial-grid-controller.ts"
+ ],
+ "./src/scripts/sorceror-effect.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts",
+ "./src/scripts/particle-system.ts"
+ ],
+ "./src/scripts/spatial-grid-controller.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/spawners.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/attacker-controller.ts",
+ "./src/scripts/blood-effect.ts",
+ "./src/scripts/entity.ts",
+ "./src/scripts/equip-weapon-component.ts",
+ "./src/scripts/floating-name.ts",
+ "./src/scripts/health-component.ts",
+ "./src/scripts/inventory-controller.ts",
+ "./src/scripts/network-entity-controller.ts",
+ "./src/scripts/network-player-controller.ts",
+ "./src/scripts/npc-entity.ts",
+ "./src/scripts/player-entity.ts",
+ "./src/scripts/player-input.ts",
+ "./src/scripts/sorceror-effect.ts",
+ "./src/scripts/spatial-grid-controller.ts",
+ "./src/scripts/third-person-camera.ts"
+ ],
+ "./src/scripts/terrain-builder-threaded-worker.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/texture-splatter.ts"
+ ],
+ "./src/scripts/terrain-builder-threaded.ts": [
+ "./src/scripts/terrain-chunk.ts"
+ ],
+ "./src/scripts/terrain-builder.ts": [
+ "./src/scripts/terrain-chunk.ts"
+ ],
+ "./src/scripts/terrain.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts",
+ "./src/scripts/quadtree.ts",
+ "./src/scripts/terrain-builder-threaded.ts",
+ "./src/scripts/terrain-shader.ts",
+ "./src/scripts/texture-splatter.ts",
+ "./src/scripts/textures.ts",
+ "./src/scripts/utils.ts"
+ ],
+ "./src/scripts/texture-splatter.ts": [
+ "../shared/src/index.ts"
+ ],
+ "./src/scripts/third-person-camera.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/threejs_component.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/ui-controller.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts"
+ ],
+ "../shared/src/defs.ts": [
+ "../shared/src/constants.ts"
+ ],
+ "../shared/src/globaltypes.ts": [
+ "../shared/src/constants.ts"
+ ],
+ "../shared/src/index.ts": [
+ "../shared/src/constants.ts",
+ "../shared/src/dat.gui.module.ts",
+ "../shared/src/defs.ts",
+ "../shared/src/entity-manager.ts",
+ "../shared/src/globaltypes.ts",
+ "../shared/src/math.ts",
+ "../shared/src/noise.ts",
+ "../shared/src/spatial-hash-grid.ts",
+ "../shared/src/spline.ts",
+ "../shared/src/terrain-constants.ts",
+ "../shared/src/terrain-height.ts"
+ ],
+ "../shared/src/noise.ts": [
+ "../shared/src/simplex-noise.ts"
+ ],
+ "../shared/src/spatial-hash-grid.ts": [
+ "../shared/src/math.ts"
+ ],
+ "../shared/src/terrain-height.ts": [
+ "../shared/src/noise.ts",
+ "../shared/src/terrain-constants.ts"
+ ]
+ },
+ "exportedModulesMap": {
+ "../../node_modules/@types/cors/index.d.ts": [
+ "../../node_modules/@types/node/http.d.ts"
+ ],
+ "../../node_modules/@types/eslint-scope/index.d.ts": [
+ "../../node_modules/@types/eslint/index.d.ts",
+ "../../node_modules/@types/estree/index.d.ts"
+ ],
+ "../../node_modules/@types/eslint/index.d.ts": [
+ "../../node_modules/@types/eslint/helpers.d.ts",
+ "../../node_modules/@types/eslint/lib/rules/index.d.ts",
+ "../../node_modules/@types/estree/index.d.ts",
+ "../../node_modules/@types/json-schema/index.d.ts"
+ ],
+ "../../node_modules/@types/eslint/lib/rules/index.d.ts": [
+ "../../node_modules/@types/eslint/index.d.ts"
+ ],
+ "../../node_modules/@types/glob/index.d.ts": [
+ "../../node_modules/@types/minimatch/index.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../node_modules/@types/node/assert.d.ts": [
+ "../../node_modules/@types/node/assert.d.ts"
+ ],
+ "../../node_modules/@types/node/async_hooks.d.ts": [
+ "../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../node_modules/@types/node/base.d.ts": [
+ "../../node_modules/@types/node/assert.d.ts",
+ "../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../node_modules/@types/node/buffer.d.ts": [
+ "../../node_modules/@types/node/buffer.d.ts"
+ ],
+ "../../node_modules/@types/node/child_process.d.ts": [
+ "../../node_modules/@types/node/child_process.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../node_modules/@types/node/cluster.d.ts": [
+ "../../node_modules/@types/node/child_process.d.ts",
+ "../../node_modules/@types/node/cluster.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../node_modules/@types/node/console.d.ts": [
+ "../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../node_modules/@types/node/constants.d.ts": [
+ "../../node_modules/@types/node/constants.d.ts",
+ "../../node_modules/@types/node/crypto.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../node_modules/@types/node/crypto.d.ts": [
+ "../../node_modules/@types/node/crypto.d.ts",
+ "../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../node_modules/@types/node/dgram.d.ts": [
+ "../../node_modules/@types/node/dgram.d.ts",
+ "../../node_modules/@types/node/dns.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../node_modules/@types/node/dns.d.ts": [
+ "../../node_modules/@types/node/dns.d.ts"
+ ],
+ "../../node_modules/@types/node/domain.d.ts": [
+ "../../node_modules/@types/node/domain.d.ts",
+ "../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../node_modules/@types/node/events.d.ts": [
+ "../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../node_modules/@types/node/fs.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/fs/promises.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/fs/promises.d.ts"
+ ],
+ "../../node_modules/@types/node/http.d.ts": [
+ "../../node_modules/@types/node/http.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/http2.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/http.d.ts",
+ "../../node_modules/@types/node/http2.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/tls.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/https.d.ts": [
+ "../../node_modules/@types/node/http.d.ts",
+ "../../node_modules/@types/node/https.d.ts",
+ "../../node_modules/@types/node/tls.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/index.d.ts": [
+ "../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../node_modules/@types/node/inspector.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/inspector.d.ts"
+ ],
+ "../../node_modules/@types/node/module.d.ts": [
+ "../../node_modules/@types/node/module.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/net.d.ts": [
+ "../../node_modules/@types/node/dns.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../node_modules/@types/node/os.d.ts": [
+ "../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../node_modules/@types/node/path.d.ts": [
+ "../../node_modules/@types/node/path.d.ts"
+ ],
+ "../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../node_modules/@types/node/async_hooks.d.ts",
+ "../../node_modules/@types/node/perf_hooks.d.ts"
+ ],
+ "../../node_modules/@types/node/process.d.ts": [
+ "../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../node_modules/@types/node/punycode.d.ts": [
+ "../../node_modules/@types/node/punycode.d.ts"
+ ],
+ "../../node_modules/@types/node/querystring.d.ts": [
+ "../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../node_modules/@types/node/readline.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../node_modules/@types/node/repl.d.ts": [
+ "../../node_modules/@types/node/readline.d.ts",
+ "../../node_modules/@types/node/repl.d.ts",
+ "../../node_modules/@types/node/util.d.ts",
+ "../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../node_modules/@types/node/stream.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../node_modules/@types/node/string_decoder.d.ts": [
+ "../../node_modules/@types/node/string_decoder.d.ts"
+ ],
+ "../../node_modules/@types/node/timers.d.ts": [
+ "../../node_modules/@types/node/timers.d.ts"
+ ],
+ "../../node_modules/@types/node/tls.d.ts": [
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/tls.d.ts"
+ ],
+ "../../node_modules/@types/node/trace_events.d.ts": [
+ "../../node_modules/@types/node/trace_events.d.ts"
+ ],
+ "../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../node_modules/@types/node/async_hooks.d.ts",
+ "../../node_modules/@types/node/buffer.d.ts",
+ "../../node_modules/@types/node/child_process.d.ts",
+ "../../node_modules/@types/node/cluster.d.ts",
+ "../../node_modules/@types/node/console.d.ts",
+ "../../node_modules/@types/node/constants.d.ts",
+ "../../node_modules/@types/node/crypto.d.ts",
+ "../../node_modules/@types/node/dgram.d.ts",
+ "../../node_modules/@types/node/dns.d.ts",
+ "../../node_modules/@types/node/domain.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/fs/promises.d.ts",
+ "../../node_modules/@types/node/globals.d.ts",
+ "../../node_modules/@types/node/globals.global.d.ts",
+ "../../node_modules/@types/node/http.d.ts",
+ "../../node_modules/@types/node/http2.d.ts",
+ "../../node_modules/@types/node/https.d.ts",
+ "../../node_modules/@types/node/inspector.d.ts",
+ "../../node_modules/@types/node/module.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/os.d.ts",
+ "../../node_modules/@types/node/path.d.ts",
+ "../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../node_modules/@types/node/process.d.ts",
+ "../../node_modules/@types/node/punycode.d.ts",
+ "../../node_modules/@types/node/querystring.d.ts",
+ "../../node_modules/@types/node/readline.d.ts",
+ "../../node_modules/@types/node/repl.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/string_decoder.d.ts",
+ "../../node_modules/@types/node/timers.d.ts",
+ "../../node_modules/@types/node/tls.d.ts",
+ "../../node_modules/@types/node/trace_events.d.ts",
+ "../../node_modules/@types/node/tty.d.ts",
+ "../../node_modules/@types/node/url.d.ts",
+ "../../node_modules/@types/node/util.d.ts",
+ "../../node_modules/@types/node/v8.d.ts",
+ "../../node_modules/@types/node/vm.d.ts",
+ "../../node_modules/@types/node/wasi.d.ts",
+ "../../node_modules/@types/node/worker_threads.d.ts",
+ "../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../node_modules/@types/node/tty.d.ts": [
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../node_modules/@types/node/url.d.ts": [
+ "../../node_modules/@types/node/querystring.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/util.d.ts": [
+ "../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../node_modules/@types/node/v8.d.ts": [
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/v8.d.ts"
+ ],
+ "../../node_modules/@types/node/vm.d.ts": [
+ "../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../node_modules/@types/node/wasi.d.ts": [
+ "../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs/promises.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/url.d.ts",
+ "../../node_modules/@types/node/vm.d.ts",
+ "../../node_modules/@types/node/worker_threads.d.ts"
+ ],
+ "../../node_modules/@types/node/zlib.d.ts": [
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../node_modules/socket.io-client/build/index.d.ts": [
+ "../../node_modules/socket.io-client/build/manager.d.ts",
+ "../../node_modules/socket.io-client/build/socket.d.ts",
+ "../../node_modules/socket.io-parser/dist/index.d.ts"
+ ],
+ "../../node_modules/socket.io-client/build/manager.d.ts": [
+ "../../node_modules/socket.io-client/build/socket.d.ts",
+ "../../node_modules/socket.io-client/build/typed-events.d.ts",
+ "../../node_modules/socket.io-parser/dist/index.d.ts"
+ ],
+ "../../node_modules/socket.io-client/build/socket.d.ts": [
+ "../../node_modules/socket.io-client/build/manager.d.ts",
+ "../../node_modules/socket.io-client/build/typed-events.d.ts",
+ "../../node_modules/socket.io-parser/dist/index.d.ts"
+ ],
+ "../../node_modules/socket.io-client/build/typed-events.d.ts": [
+ "../../node_modules/@types/component-emitter/index.d.ts"
+ ],
+ "../../node_modules/socket.io-parser/dist/index.d.ts": [
+ "../../node_modules/@types/component-emitter/index.d.ts"
+ ],
+ "./src/scripts/attacker-controller.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/blood-effect.ts": [
+ "./src/scripts/entity.ts",
+ "./src/scripts/particle-system.ts"
+ ],
+ "./src/scripts/equip-weapon-component.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/floating-name.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/gltf-component.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/health-bar.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/health-component.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/inventory-controller.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/level-up-component.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/load-controller.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/network-controller.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/network-entity-controller.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/network-player-controller.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/npc-entity.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/player-entity.ts": [
+ "./src/scripts/entity.ts",
+ "./src/scripts/finite-state-machine.ts"
+ ],
+ "./src/scripts/player-input.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/player-state.ts": [
+ "../shared/src/index.ts"
+ ],
+ "./src/scripts/quest-component.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/render-component.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/scenery-controller.ts": [
+ "../shared/src/index.ts",
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/sorceror-effect.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/spatial-grid-controller.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/spawners.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/terrain.ts": [
+ "./src/scripts/entity.ts",
+ "./src/scripts/terrain-builder-threaded.ts"
+ ],
+ "./src/scripts/third-person-camera.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/threejs_component.ts": [
+ "./src/scripts/entity.ts"
+ ],
+ "./src/scripts/ui-controller.ts": [
+ "./src/scripts/entity.ts"
+ ]
+ },
+ "semanticDiagnosticsPerFile": [
+ "../../node_modules/@types/component-emitter/index.d.ts",
+ "../../node_modules/@types/cookie/index.d.ts",
+ "../../node_modules/@types/cors/index.d.ts",
+ "../../node_modules/@types/eslint-scope/index.d.ts",
+ "../../node_modules/@types/eslint/helpers.d.ts",
+ "../../node_modules/@types/eslint/index.d.ts",
+ "../../node_modules/@types/eslint/lib/rules/index.d.ts",
+ "../../node_modules/@types/estree/index.d.ts",
+ "../../node_modules/@types/glob/index.d.ts",
+ "../../node_modules/@types/html-minifier-terser/index.d.ts",
+ "../../node_modules/@types/json-schema/index.d.ts",
+ "../../node_modules/@types/json5/index.d.ts",
+ "../../node_modules/@types/minimatch/index.d.ts",
+ "../../node_modules/@types/minimist/index.d.ts",
+ "../../node_modules/@types/node/assert.d.ts",
+ "../../node_modules/@types/node/async_hooks.d.ts",
+ "../../node_modules/@types/node/base.d.ts",
+ "../../node_modules/@types/node/buffer.d.ts",
+ "../../node_modules/@types/node/child_process.d.ts",
+ "../../node_modules/@types/node/cluster.d.ts",
+ "../../node_modules/@types/node/console.d.ts",
+ "../../node_modules/@types/node/constants.d.ts",
+ "../../node_modules/@types/node/crypto.d.ts",
+ "../../node_modules/@types/node/dgram.d.ts",
+ "../../node_modules/@types/node/dns.d.ts",
+ "../../node_modules/@types/node/domain.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/fs/promises.d.ts",
+ "../../node_modules/@types/node/globals.d.ts",
+ "../../node_modules/@types/node/globals.global.d.ts",
+ "../../node_modules/@types/node/http.d.ts",
+ "../../node_modules/@types/node/http2.d.ts",
+ "../../node_modules/@types/node/https.d.ts",
+ "../../node_modules/@types/node/index.d.ts",
+ "../../node_modules/@types/node/inspector.d.ts",
+ "../../node_modules/@types/node/module.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/os.d.ts",
+ "../../node_modules/@types/node/path.d.ts",
+ "../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../node_modules/@types/node/process.d.ts",
+ "../../node_modules/@types/node/punycode.d.ts",
+ "../../node_modules/@types/node/querystring.d.ts",
+ "../../node_modules/@types/node/readline.d.ts",
+ "../../node_modules/@types/node/repl.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/string_decoder.d.ts",
+ "../../node_modules/@types/node/timers.d.ts",
+ "../../node_modules/@types/node/tls.d.ts",
+ "../../node_modules/@types/node/trace_events.d.ts",
+ "../../node_modules/@types/node/ts3.6/base.d.ts",
+ "../../node_modules/@types/node/tty.d.ts",
+ "../../node_modules/@types/node/url.d.ts",
+ "../../node_modules/@types/node/util.d.ts",
+ "../../node_modules/@types/node/v8.d.ts",
+ "../../node_modules/@types/node/vm.d.ts",
+ "../../node_modules/@types/node/wasi.d.ts",
+ "../../node_modules/@types/node/worker_threads.d.ts",
+ "../../node_modules/@types/node/zlib.d.ts",
+ "../../node_modules/@types/normalize-package-data/index.d.ts",
+ "../../node_modules/@types/parse-json/index.d.ts",
+ "../../node_modules/socket.io-client/build/index.d.ts",
+ "../../node_modules/socket.io-client/build/manager.d.ts",
+ "../../node_modules/socket.io-client/build/socket.d.ts",
+ "../../node_modules/socket.io-client/build/typed-events.d.ts",
+ "../../node_modules/socket.io-parser/dist/index.d.ts",
+ "../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../node_modules/typescript/lib/lib.es2015.collection.d.ts",
+ "../../node_modules/typescript/lib/lib.es2015.core.d.ts",
+ "../../node_modules/typescript/lib/lib.es2015.d.ts",
+ "../../node_modules/typescript/lib/lib.es2015.generator.d.ts",
+ "../../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
+ "../../node_modules/typescript/lib/lib.es2015.promise.d.ts",
+ "../../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
+ "../../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
+ "../../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
+ "../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
+ "../../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
+ "../../node_modules/typescript/lib/lib.es2016.d.ts",
+ "../../node_modules/typescript/lib/lib.es2017.d.ts",
+ "../../node_modules/typescript/lib/lib.es2017.intl.d.ts",
+ "../../node_modules/typescript/lib/lib.es2017.object.d.ts",
+ "../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
+ "../../node_modules/typescript/lib/lib.es2017.string.d.ts",
+ "../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
+ "../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
+ "../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
+ "../../node_modules/typescript/lib/lib.es2018.d.ts",
+ "../../node_modules/typescript/lib/lib.es2018.intl.d.ts",
+ "../../node_modules/typescript/lib/lib.es2018.promise.d.ts",
+ "../../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
+ "../../node_modules/typescript/lib/lib.es2019.array.d.ts",
+ "../../node_modules/typescript/lib/lib.es2019.d.ts",
+ "../../node_modules/typescript/lib/lib.es2019.object.d.ts",
+ "../../node_modules/typescript/lib/lib.es2019.string.d.ts",
+ "../../node_modules/typescript/lib/lib.es2019.symbol.d.ts",
+ "../../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
+ "../../node_modules/typescript/lib/lib.es2020.d.ts",
+ "../../node_modules/typescript/lib/lib.es2020.intl.d.ts",
+ "../../node_modules/typescript/lib/lib.es2020.promise.d.ts",
+ "../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts",
+ "../../node_modules/typescript/lib/lib.es2020.string.d.ts",
+ "../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts",
+ "../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../node_modules/typescript/lib/lib.esnext.d.ts",
+ "../../node_modules/typescript/lib/lib.esnext.intl.d.ts",
+ "../../node_modules/typescript/lib/lib.esnext.promise.d.ts",
+ "../../node_modules/typescript/lib/lib.esnext.string.d.ts",
+ "../../node_modules/typescript/lib/lib.esnext.weakref.d.ts",
+ "./src/scripts/attacker-controller.ts",
+ "./src/scripts/blood-effect.ts",
+ "./src/scripts/entity.ts",
+ "./src/scripts/equip-weapon-component.ts",
+ "./src/scripts/finite-state-machine.ts",
+ "./src/scripts/floating-name.ts",
+ "./src/scripts/gltf-component.ts",
+ "./src/scripts/health-bar.ts",
+ "./src/scripts/health-component.ts",
+ "./src/scripts/index.ts",
+ "./src/scripts/inventory-controller.ts",
+ "./src/scripts/level-up-component.ts",
+ "./src/scripts/load-controller.ts",
+ "./src/scripts/loading-manager.ts",
+ "./src/scripts/main.ts",
+ "./src/scripts/network-controller.ts",
+ "./src/scripts/network-entity-controller.ts",
+ "./src/scripts/network-player-controller.ts",
+ "./src/scripts/npc-entity.ts",
+ "./src/scripts/particle-system.ts",
+ "./src/scripts/player-entity.ts",
+ "./src/scripts/player-input.ts",
+ "./src/scripts/player-state.ts",
+ "./src/scripts/quadtree.ts",
+ "./src/scripts/quest-component.ts",
+ "./src/scripts/render-component.ts",
+ "./src/scripts/scenery-controller.ts",
+ "./src/scripts/sorceror-effect.ts",
+ "./src/scripts/spatial-grid-controller.ts",
+ "./src/scripts/spawners.ts",
+ "./src/scripts/terrain-builder-threaded-worker.ts",
+ "./src/scripts/terrain-builder-threaded.ts",
+ "./src/scripts/terrain-builder.ts",
+ "./src/scripts/terrain-chunk.ts",
+ "./src/scripts/terrain-shader.ts",
+ "./src/scripts/terrain.ts",
+ "./src/scripts/test.ts",
+ "./src/scripts/texture-splatter.ts",
+ "./src/scripts/textures.ts",
+ "./src/scripts/third-person-camera.ts",
+ "./src/scripts/threejs_component.ts",
+ "./src/scripts/ui-controller.ts",
+ "./src/scripts/utils.ts",
+ "../shared/src/constants.ts",
+ "../shared/src/dat.gui.module.ts",
+ "../shared/src/defs.ts",
+ "../shared/src/entity-manager.ts",
+ "../shared/src/globaltypes.ts",
+ "../shared/src/index.ts",
+ "../shared/src/math.ts",
+ "../shared/src/noise.ts",
+ "../shared/src/simplex-noise.ts",
+ "../shared/src/spatial-hash-grid.ts",
+ "../shared/src/spline.ts",
+ "../shared/src/terrain-constants.ts",
+ "../shared/src/terrain-height.ts"
+ ]
+ },
+ "version": "4.2.3"
+}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-client/webpack.config.js b/packages/quick-3d-mmo-client/webpack.config.js
new file mode 100644
index 00000000..f754ea97
--- /dev/null
+++ b/packages/quick-3d-mmo-client/webpack.config.js
@@ -0,0 +1,71 @@
+const HtmlWebpackPlugin = require('html-webpack-plugin'); // Require html-webpack-plugin plugin
+const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
+const ServiceWorkerWebpackPlugin = require('serviceworker-webpack-plugin');
+const path = require('path');
+
+module.exports = {
+ entry: __dirname + "/src/scripts/main.ts", // webpack entry point. Module to start building dependency graph
+ output: {
+ path: '/public', // Folder to store generated bundle
+ filename: 'bundle.js', // Name of generated bundle after build
+ publicPath: '/' // public URL of the output directory when referenced in a browser
+ },
+ mode: 'development',
+ devtool: 'inline-source-map',
+ stats: {
+ children: true
+ },
+ resolve: {
+ // Add `.ts` and `.tsx` as a resolvable extension.
+ extensions: [".ts", ".js"],
+ plugins: [
+ new TsconfigPathsPlugin()
+ ],
+ modules: [path.resolve(__dirname, 'node_modules'), 'node_modules']
+ },
+ module: { // where we defined file patterns and their loaders
+ rules: [
+ {
+ test: /\.js$/,
+ use: 'babel-loader',
+ exclude: [
+ /node_modules/
+ ]
+ },
+ {
+ test: /\.html/,
+ loader: 'raw-loader'
+ },
+ {
+ test: /\.tsx?$/, loader: "ts-loader",
+ enforce: "pre",
+ },
+ {
+ test: /\.js$/,
+ enforce: "pre",
+ use: ["source-map-loader"],
+ },
+ {
+ test: /\.(png|jpe?g|jpg|gif|fbx|glb)$/i,
+ type: 'asset/resource'
+ },
+ {
+ test: /\.css$/i,
+ use: ['style-loader', 'css-loader'],
+ },
+ {
+ test: /\.worker\.js$/,
+ use: { loader: "worker-loader" },
+ },
+ ]
+ },
+ plugins: [ // Array of plugins to apply to build chunk
+ new HtmlWebpackPlugin({
+ template: __dirname + "/src/index.html",
+ inject: 'body'
+ })
+ ],
+ devServer: { // configuration for webpack-dev-server
+ port: 7700, // port to run dev-server
+ }
+};
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-server/dist/index.d.ts b/packages/quick-3d-mmo-server/dist/index.d.ts
new file mode 100644
index 00000000..cb0ff5c3
--- /dev/null
+++ b/packages/quick-3d-mmo-server/dist/index.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/packages/quick-3d-mmo-server/dist/index.js b/packages/quick-3d-mmo-server/dist/index.js
new file mode 100644
index 00000000..3b365afa
--- /dev/null
+++ b/packages/quick-3d-mmo-server/dist/index.js
@@ -0,0 +1,21 @@
+import * as http from 'http';
+import * as socket_io from 'socket.io';
+import { WorldServer } from './scripts/world-server.js';
+import { WorldNetworkClient, WorldAIClient } from './scripts/world-client.js';
+console.log("asdf");
+function Main() {
+ const port = process.env.PORT || 3000;
+ const server = http.createServer();
+ const io = new socket_io.Server(server, {
+ cors: {
+ origin: '*'
+ }
+ });
+ server.listen(port, () => {
+ console.log(`listening on: ${port}`);
+ });
+ const _WORLD = new WorldServer(io, WorldNetworkClient);
+ _WORLD.Run(WorldAIClient);
+}
+Main();
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-server/dist/index.js.map b/packages/quick-3d-mmo-server/dist/index.js.map
new file mode 100644
index 00000000..b0c782dd
--- /dev/null
+++ b/packages/quick-3d-mmo-server/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAC,kBAAkB,EAAE,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAC5E,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACpB,SAAS,IAAI;IACX,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;IAEtC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IACnC,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE;QACpC,IAAI,EAAE;YACF,MAAM,EAAE,GAAG;SACd;KACJ,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACvB,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;IACvD,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAC5B,CAAC;AAGD,IAAI,EAAE,CAAC"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-server/dist/scripts/login-queue.d.ts b/packages/quick-3d-mmo-server/dist/scripts/login-queue.d.ts
new file mode 100644
index 00000000..64906a38
--- /dev/null
+++ b/packages/quick-3d-mmo-server/dist/scripts/login-queue.d.ts
@@ -0,0 +1,10 @@
+interface IClient {
+ ID: string;
+}
+declare class LoginQueue {
+ #private;
+ constructor(onLogin: any);
+ Add(client: IClient): void;
+ OnLogin(client: IClient, params: any): Generator;
+}
+export { LoginQueue };
diff --git a/packages/server/dist/scripts/login-queue.js b/packages/quick-3d-mmo-server/dist/scripts/login-queue.js
similarity index 82%
rename from packages/server/dist/scripts/login-queue.js
rename to packages/quick-3d-mmo-server/dist/scripts/login-queue.js
index 84634f35..73c5e94d 100644
--- a/packages/server/dist/scripts/login-queue.js
+++ b/packages/quick-3d-mmo-server/dist/scripts/login-queue.js
@@ -11,8 +11,9 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
privateMap.set(receiver, value);
return value;
};
-var _parent, _onLogin, _fsm, _clients, _onLogin_1;
-import { EVENT_TYPES } from "shared/src/constants";
+var _parent, _onLogin, _fsm;
+import { Constants } from 'quick-3d-mmo-shared';
+const { EVENT_TYPES, STATE_TYPES } = Constants;
class FiniteStateMachine {
constructor(onEvent) {
this._currentState = new State({});
@@ -73,6 +74,7 @@ class Login_Await extends State {
super(params);
}
OnMessage(evt, data) {
+ // console.log("Login_Await.OnMessage: ", {evt, data})
if (evt != EVENT_TYPES.LOGIN_COMMIT) {
return false;
}
@@ -88,7 +90,7 @@ class Login_Confirm extends State {
this.setParams(Object.assign({}, params));
}
OnEnter() {
- console.log('login confirmed: ' + this.getParams().accountName);
+ // console.log('login confirmed: ' + this.getParams().accountName);
this.Broadcast({ topic: EVENT_TYPES.LOGIN_COMMIT, params: this.getParams() });
}
OnMessage() {
@@ -101,6 +103,7 @@ class LoginClient {
_onLogin.set(this, void 0);
_fsm.set(this, void 0);
__classPrivateFieldSet(this, _onLogin, onLogin);
+ // console.log("Server: new LoginClient(): ");
client.onMessage = (e, d) => this.OnMessage_(e, d);
__classPrivateFieldSet(this, _fsm, new FiniteStateMachine((e) => { this.OnEvent(e); }));
__classPrivateFieldGet(this, _fsm).SetState(new Login_Await({}));
@@ -118,19 +121,18 @@ _onLogin = new WeakMap(), _fsm = new WeakMap();
// onLogin, OnLogin is confusing. Rename once I know the purpose.
class LoginQueue {
constructor(onLogin) {
- _clients.set(this, void 0);
- _onLogin_1.set(this, void 0);
- __classPrivateFieldSet(this, _clients, {});
- __classPrivateFieldSet(this, _onLogin_1, onLogin);
+ this.clients = {};
+ this.onLogin = onLogin;
}
Add(client) {
- __classPrivateFieldGet(this, _clients)[client.ID] = new LoginClient(client, (e) => { this.OnLogin(client, e); });
+ // console.log
+ this.clients[client.ID] = new LoginClient(client, (e) => { this.OnLogin(client, e); });
}
- *OnLogin(client, params) {
- delete __classPrivateFieldGet(this, _clients)[client.ID];
- __classPrivateFieldGet(this, _onLogin_1).call(this, client, params);
+ OnLogin(client, params) {
+ delete this.clients[client.ID];
+ this.onLogin(client, params);
}
}
-_clients = new WeakMap(), _onLogin_1 = new WeakMap();
;
export { LoginQueue };
+//# sourceMappingURL=login-queue.js.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-server/dist/scripts/login-queue.js.map b/packages/quick-3d-mmo-server/dist/scripts/login-queue.js.map
new file mode 100644
index 00000000..fcf93ae3
--- /dev/null
+++ b/packages/quick-3d-mmo-server/dist/scripts/login-queue.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"login-queue.js","sourceRoot":"","sources":["../../src/scripts/login-queue.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-server/dist/scripts/world-client.d.ts b/packages/quick-3d-mmo-server/dist/scripts/world-client.d.ts
new file mode 100644
index 00000000..51c47f7c
--- /dev/null
+++ b/packages/quick-3d-mmo-server/dist/scripts/world-client.d.ts
@@ -0,0 +1,42 @@
+import type { WorldEntity } from './world-entity';
+import { SocketWrapper } from './world-server';
+declare class WorldClient {
+ #private;
+ entity: WorldEntity;
+ client: SocketWrapper;
+ entityCache: any;
+ terrain_: any;
+ onDeath_: any;
+ fsm_: any;
+ deathTimer_: number;
+ timeout_: number;
+ constructor(client: SocketWrapper, entity: WorldEntity);
+ Destroy(): void;
+ OnDeath(): void;
+ OnEntityEvent_(t: any, d: any): void;
+ OnMessage_(evt: string, data: any): boolean;
+ OnDamageEvent_(_: any): void;
+ OnInventoryChanged_(inventory: []): void;
+ OnChatMessage_(message: any): void;
+ BroadcastChat(chatMessage: any): void;
+ get IsDead(): boolean;
+ OnUpdate_(timeElapsed: any): void;
+ OnUpdateClientState_(): void;
+ UpdateClientState_(): void;
+ Update(timeElapsed: any): void;
+}
+declare class WorldNetworkClient extends WorldClient {
+ entity: any;
+ entityCache: any;
+ constructor(client: any, entity: any);
+ OnUpdate_(timeElapsed: any): void;
+ OnUpdateClientState_(): void;
+}
+declare class WorldAIClient extends WorldClient {
+ constructor(entity: WorldEntity, terrain: any, onDeath: any);
+ get IsDead(): boolean;
+ OnDeath(): void;
+ OnUpdateClientState_(): void;
+ OnUpdate_(timeElapsed: number): void;
+}
+export { WorldNetworkClient, WorldAIClient, WorldClient, };
diff --git a/packages/server/dist/scripts/world-client.js b/packages/quick-3d-mmo-server/dist/scripts/world-client.js
similarity index 95%
rename from packages/server/dist/scripts/world-client.js
rename to packages/quick-3d-mmo-server/dist/scripts/world-client.js
index 075e2e1e..aa402f54 100644
--- a/packages/server/dist/scripts/world-client.js
+++ b/packages/quick-3d-mmo-server/dist/scripts/world-client.js
@@ -13,8 +13,9 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
};
var _timeout;
import { quat, vec3 } from 'gl-matrix';
-import { _TIMEOUT, EVENT_TYPES } from 'shared/src/constants';
-import { SocketWrapper } from './world-server';
+import { SocketWrapper } from './world-server.js';
+import { Constants, EntityManager as aEntityManager } from 'quick-3d-mmo-shared';
+const { _TIMEOUT, EVENT_TYPES, EntityManager, STATE_TYPES } = Object.assign(Object.assign({}, Constants), aEntityManager);
class WorldClient {
constructor(client, entity) {
_timeout.set(this, void 0);
@@ -26,6 +27,7 @@ class WorldClient {
this.client.onMessage = (e, d) => this.OnMessage_(e, d);
this.client.Send(EVENT_TYPES.WORLD_PLAYER, this.entity.CreatePlayerPacket_());
this.client.Send(EVENT_TYPES.WORLD_STATS, this.entity.CreateStatsPacket_());
+ // console.log("Sent world.player, world.stats")
__classPrivateFieldSet(this, _timeout, _TIMEOUT);
this.entityCache = {};
// Hack
@@ -251,7 +253,7 @@ class AIState_WaitAttackDone extends AIState {
;
class FakeClient extends SocketWrapper {
constructor() {
- super(null);
+ super({ socket: null });
}
Send(msg, data) { }
Disconnect() { }
@@ -288,3 +290,4 @@ class WorldAIClient extends WorldClient {
}
;
export { WorldNetworkClient, WorldAIClient, WorldClient, };
+//# sourceMappingURL=world-client.js.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-server/dist/scripts/world-client.js.map b/packages/quick-3d-mmo-server/dist/scripts/world-client.js.map
new file mode 100644
index 00000000..01791e9c
--- /dev/null
+++ b/packages/quick-3d-mmo-server/dist/scripts/world-client.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"world-client.js","sourceRoot":"","sources":["../../src/scripts/world-client.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-server/dist/scripts/world-entity.d.ts b/packages/quick-3d-mmo-server/dist/scripts/world-entity.d.ts
new file mode 100644
index 00000000..f29d6156
--- /dev/null
+++ b/packages/quick-3d-mmo-server/dist/scripts/world-entity.d.ts
@@ -0,0 +1,57 @@
+import { quat, vec3 } from 'gl-matrix';
+import type { WorldClient } from "./world-client.js";
+declare class Action_Attack {
+ #private;
+ constructor(time: number, cooldown: number, onAction: () => void);
+ get Finished(): boolean;
+ Update(timeElapsed: number): void;
+}
+declare class WorldEntity {
+ id_: any;
+ state_: any;
+ position_: any;
+ rotation_: any;
+ accountInfo_: any;
+ characterDefinition_: any;
+ characterInfo_: any;
+ stats_: any;
+ events_: any;
+ grid_: any;
+ gridClient_: any;
+ updateTimer_: any;
+ action_: any;
+ parent_: WorldClient;
+ isAI: boolean;
+ constructor(params: any);
+ Destroy(): void;
+ get ID(): any;
+ get Valid(): boolean;
+ get Health(): any;
+ GetDescription(): {
+ account: any;
+ character: any;
+ };
+ CreatePlayerPacket_(): {
+ id: any;
+ desc: {
+ account: any;
+ character: any;
+ };
+ transform: any[];
+ };
+ CreateStatsPacket_(): any[];
+ CreateEventsPacket_(): any;
+ CreateTransformPacket_(): any[];
+ UpdateTransform(transformData: [string, vec3, quat]): void;
+ UpdateGridClient_(): void;
+ UpdateInventory(inventory: []): void;
+ OnActionAttack(): void;
+ OnActionAttack_Fired(): void;
+ onEvent_(eventType: string, data: any): void;
+ OnDamage(attacker: WorldEntity, damage: number): void;
+ SetState(s: string): void;
+ FindNear(radius: number, includeSelf?: boolean): any;
+ Update(timeElapsed: number): void;
+ UpdateActions_(timeElapsed: number): void;
+}
+export { WorldEntity, Action_Attack };
diff --git a/packages/server/dist/scripts/world-entity.js b/packages/quick-3d-mmo-server/dist/scripts/world-entity.js
similarity index 78%
rename from packages/server/dist/scripts/world-entity.js
rename to packages/quick-3d-mmo-server/dist/scripts/world-entity.js
index 3dbe207c..c53cc44e 100644
--- a/packages/server/dist/scripts/world-entity.js
+++ b/packages/quick-3d-mmo-server/dist/scripts/world-entity.js
@@ -13,8 +13,8 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
};
var _onAction, _time, _cooldown, _timeElapsed;
import { quat, vec3 } from 'gl-matrix';
-import { WEAPONS_DATA } from 'shared/src/defs';
-import { STATE_TYPES, EVENT_TYPES, ATTACK_TYPES } from 'shared/src/constants';
+import { Constants, Defs } from 'quick-3d-mmo-shared';
+const { STATE_TYPES, EVENT_TYPES, ATTACK_TYPES, WEAPONS_DATA } = Object.assign(Object.assign({}, Constants), Defs);
class Action_Attack {
constructor(time, cooldown, onAction) {
_onAction.set(this, void 0);
@@ -152,8 +152,8 @@ class WorldEntity {
return dist <= this.characterDefinition_.attack.range;
};
const attackable = nearby.filter(_Filter);
- for (let a of attackable) {
- const target = a;
+ if(attackable?.[0]) {
+ const target = attackable[0];
const dirToTarget = vec3.create();
vec3.sub(dirToTarget, target.position_, this.position_);
vec3.normalize(dirToTarget, dirToTarget);
@@ -162,11 +162,11 @@ class WorldEntity {
vec3.normalize(forward, forward);
const dot = vec3.dot(forward, dirToTarget);
if (dot < 0.9 || dot > 1.1) {
- continue;
+ return;
}
// Calculate damage, use equipped weapon + whatever, this will be bad.
let damage = 0;
- console.log('attacking: ' + target.accountInfo_.name);
+ console.log(this?.accountInfo_?.name, 'attacking: ' + target.accountInfo_.name);
if (this.characterDefinition_.attack.type == ATTACK_TYPES.MELEE) {
damage = (this.stats_.strength / 5.0);
// TS hack. Should move this definition up.
@@ -187,6 +187,45 @@ class WorldEntity {
target.OnDamage(this, damage);
this.onEvent_(EVENT_TYPES.ATTACK_DAMAGE, { target: target, damage: damage });
}
+
+ /**
+ * This would attack multiple targets at once for every character. Replace this with a targeting system.
+ */
+ // for (let a of attackable) {
+ // const target = a;
+ // const dirToTarget = vec3.create();
+ // vec3.sub(dirToTarget, target.position_, this.position_);
+ // vec3.normalize(dirToTarget, dirToTarget);
+ // const forward = vec3.fromValues(0, 0, 1);
+ // vec3.transformQuat(forward, forward, this.rotation_);
+ // vec3.normalize(forward, forward);
+ // const dot = vec3.dot(forward, dirToTarget);
+ // if (dot < 0.9 || dot > 1.1) {
+ // continue;
+ // }
+ // // Calculate damage, use equipped weapon + whatever, this will be bad.
+ // let damage = 0;
+ // console.log(this?.accountInfo_?.name, 'attacking: ' + target.accountInfo_.name);
+ // if (this.characterDefinition_.attack.type == ATTACK_TYPES.MELEE) {
+ // damage = (this.stats_.strength / 5.0);
+ // // TS hack. Should move this definition up.
+ // const equipped = this.characterInfo_.inventory['inventory-equip-1'];
+ // const weaponsData = WEAPONS_DATA;
+ // if (equipped) {
+ // console.log(' equipped: ' + equipped);
+ // const weapon = weaponsData[equipped];
+ // if (weapon) {
+ // damage *= weapon.damage * 10;
+ // }
+ // }
+ // }
+ // else {
+ // damage = (this.stats_.wisdomness / 10.0);
+ // }
+ // console.log(' damage: ' + damage);
+ // target.OnDamage(this, damage);
+ // this.onEvent_(EVENT_TYPES.ATTACK_DAMAGE, { target: target, damage: damage });
+ // }
}
onEvent_(eventType, data) {
console.error("This is the fake error Jeremy put in to see if this undefined onEvent_ function was ever called.");
@@ -240,3 +279,4 @@ class WorldEntity {
}
;
export { WorldEntity, Action_Attack };
+//# sourceMappingURL=world-entity.js.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-server/dist/scripts/world-entity.js.map b/packages/quick-3d-mmo-server/dist/scripts/world-entity.js.map
new file mode 100644
index 00000000..86992b1d
--- /dev/null
+++ b/packages/quick-3d-mmo-server/dist/scripts/world-entity.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"world-entity.js","sourceRoot":"","sources":["../../src/scripts/world-entity.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-server/dist/scripts/world-manager.d.ts b/packages/quick-3d-mmo-server/dist/scripts/world-manager.d.ts
new file mode 100644
index 00000000..c90dc8b8
--- /dev/null
+++ b/packages/quick-3d-mmo-server/dist/scripts/world-manager.d.ts
@@ -0,0 +1,16 @@
+declare class WorldManager {
+ ids_: number;
+ entities_: any[];
+ grid_: any;
+ terrain_: any;
+ spawners_: any[];
+ tickTimer_: number;
+ constructor(params: any);
+ AddMonster(e: any): void;
+ Add(client: any, params: any): void;
+ Update(timeElapsed: any): void;
+ TickClientState_(timeElapsed: any): void;
+ UpdateSpawners_(timeElapsed: any): void;
+ UpdateEntities_(timeElapsed: any): void;
+}
+export { WorldManager };
diff --git a/packages/server/dist/scripts/world-manager.js b/packages/quick-3d-mmo-server/dist/scripts/world-manager.js
similarity index 74%
rename from packages/server/dist/scripts/world-manager.js
rename to packages/quick-3d-mmo-server/dist/scripts/world-manager.js
index 818019ba..ebf4bb9e 100644
--- a/packages/server/dist/scripts/world-manager.js
+++ b/packages/quick-3d-mmo-server/dist/scripts/world-manager.js
@@ -1,9 +1,8 @@
import { quat, vec3 } from 'gl-matrix';
-import { WorldAIClient, WorldNetworkClient } from './world-client';
-import { WorldEntity } from './world-entity';
-import { SpatialHashGrid } from 'shared/src/spatial-hash-grid';
-import { HeightGenerator } from 'shared/src/terrain-height';
-import { CHARACTER_MODELS } from 'shared/src/defs';
+// import { WorldAIClient, WorldNetworkClient } from './world-client.js';
+import { WorldEntity } from './world-entity.js';
+import { SpatialHashGrid as aSpatialHashGrid, Constants, Defs, TerrainHeight } from 'quick-3d-mmo-shared';
+const { HeightGenerator, CHARACTER_MODELS, CLASS_TYPES, SpatialHashGrid } = Object.assign(Object.assign(Object.assign(Object.assign({}, aSpatialHashGrid), Constants), Defs), TerrainHeight);
class MonsterSpawner {
constructor(params) {
this.parent_ = params.parent;
@@ -13,7 +12,7 @@ class MonsterSpawner {
this.pos_[1] = this.terrain_.Get(...params.pos)[0];
this.params_ = params;
}
- Spawn_() {
+ Spawn_(WorldAIClient) {
// Hack
const e = new WorldEntity({
id: this.parent_.ids_++,
@@ -26,6 +25,7 @@ class MonsterSpawner {
},
account: { accountName: CHARACTER_MODELS[this.params_.class].name },
});
+ // console.log("WorldAIClient: ", WorldAIClient)
const wc = new WorldAIClient(e, this.terrain_, () => {
this.entity_ = null;
console.log('entity gone, spawner making now one soon');
@@ -33,9 +33,9 @@ class MonsterSpawner {
this.parent_.AddMonster(wc);
this.entity_ = wc;
}
- Update(timeElapsed) {
+ Update(timeElapsed, WorldAIClient) {
if (!this.entity_) {
- this.Spawn_();
+ this.Spawn_(WorldAIClient);
}
}
}
@@ -71,9 +71,10 @@ class WorldManager {
AddMonster(e) {
this.entities_.push(e);
}
- Add(client, params) {
- const models = [CLASS_TYPES_ENUM.SORCEROR, 'paladin'];
+ Add(client, params, WorldNetworkClient) {
+ const models = CLASS_TYPES;
const randomClass = models[Math.floor(Math.random() * models.length)];
+ console.log("WorldManager.Add(): ", "SocketIOClient", params, "WorldNetworkClient");
// Hack
const e = new WorldEntity({
id: this.ids_++,
@@ -89,17 +90,21 @@ class WorldManager {
const wc = new WorldNetworkClient(client, e);
this.entities_.push(wc);
wc.BroadcastChat({
- name: '',
+ name: 'Server:',
server: true,
text: '[' + params.accountName + ' has entered the game]'
});
}
- Update(timeElapsed) {
+ Update(timeElapsed, WorldAIClient) {
+ if (false) {
+ console.log("WorldManager.Update(): ", { timeElapsed, WorldAIClient });
+ }
this.TickClientState_(timeElapsed);
this.UpdateEntities_(timeElapsed);
- this.UpdateSpawners_(timeElapsed);
+ this.UpdateSpawners_(timeElapsed, WorldAIClient);
}
TickClientState_(timeElapsed) {
+ var _a, _b;
this.tickTimer_ += timeElapsed;
if (this.tickTimer_ < _TICK_RATE) {
return;
@@ -109,12 +114,14 @@ class WorldManager {
this.entities_[i].UpdateClientState_();
}
for (let i = 0; i < this.entities_.length; ++i) {
- this.entities_[i].entity_.events_ = [];
+ if ((_b = (_a = this.entities_) === null || _a === void 0 ? void 0 : _a[i]) === null || _b === void 0 ? void 0 : _b.entity_) {
+ this.entities_[i].entity_.events_ = [];
+ }
}
}
- UpdateSpawners_(timeElapsed) {
+ UpdateSpawners_(timeElapsed, WorldAIClient) {
for (let i = 0; i < this.spawners_.length; ++i) {
- this.spawners_[i].Update(timeElapsed);
+ this.spawners_[i].Update(timeElapsed, WorldAIClient);
}
}
UpdateEntities_(timeElapsed) {
@@ -140,3 +147,4 @@ class WorldManager {
}
;
export { WorldManager };
+//# sourceMappingURL=world-manager.js.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-server/dist/scripts/world-manager.js.map b/packages/quick-3d-mmo-server/dist/scripts/world-manager.js.map
new file mode 100644
index 00000000..76157c7d
--- /dev/null
+++ b/packages/quick-3d-mmo-server/dist/scripts/world-manager.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"world-manager.js","sourceRoot":"","sources":["../../src/scripts/world-manager.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-server/dist/scripts/world-server.d.ts b/packages/quick-3d-mmo-server/dist/scripts/world-server.d.ts
new file mode 100644
index 00000000..9403a08d
--- /dev/null
+++ b/packages/quick-3d-mmo-server/dist/scripts/world-server.d.ts
@@ -0,0 +1,24 @@
+import { WorldManager } from './world-manager.js';
+import { LoginQueue } from './login-queue.js';
+declare class SocketWrapper {
+ socket_: any;
+ dead_: boolean;
+ constructor(params: any);
+ get ID(): any;
+ get IsAlive(): boolean;
+ SetupSocket_(): void;
+ Disconnect(): void;
+ Send(msg: any, data: any): void;
+ onMessage(e: any, d: any): boolean;
+}
+declare class WorldServer {
+ loginQueue_: LoginQueue;
+ worldMgr_: WorldManager;
+ constructor(io: any);
+ SetupIO_(io: any): void;
+ OnLogin_(client: any, params: any): void;
+ Run(): void;
+ Schedule_(t1: any): void;
+ Update_(timeElapsed: any): void;
+}
+export { WorldServer, SocketWrapper };
diff --git a/packages/quick-3d-mmo-server/dist/scripts/world-server.js b/packages/quick-3d-mmo-server/dist/scripts/world-server.js
new file mode 100644
index 00000000..1d599716
--- /dev/null
+++ b/packages/quick-3d-mmo-server/dist/scripts/world-server.js
@@ -0,0 +1,86 @@
+import { performance } from 'perf_hooks';
+import { Constants } from 'quick-3d-mmo-shared';
+import { WorldManager } from './world-manager.js';
+import { LoginQueue } from './login-queue.js';
+// import { WorldAIClient, WorldNetworkClient } from './world-client.js';
+const { EVENT_TYPES } = Constants;
+class SocketWrapper {
+ constructor(params) {
+ // console.log("params: ", params)
+ this.socket_ = params === null || params === void 0 ? void 0 : params.socket;
+ this.onMessage = null;
+ this.dead_ = false;
+ this.SetupSocket_();
+ }
+ get ID() {
+ return this.socket_.id;
+ }
+ get IsAlive() {
+ return !this.dead_;
+ }
+ SetupSocket_() {
+ var _a, _b, _c, _d, _e, _f;
+ (_b = (_a = this === null || this === void 0 ? void 0 : this.socket_) === null || _a === void 0 ? void 0 : _a.on) === null || _b === void 0 ? void 0 : _b.call(_a, 'user-connected', () => {
+ console.log('socket.id: ' + this.socket_.id);
+ });
+ (_d = (_c = this === null || this === void 0 ? void 0 : this.socket_) === null || _c === void 0 ? void 0 : _c.on) === null || _d === void 0 ? void 0 : _d.call(_c, 'disconnect', () => {
+ console.log('Client disconnected.');
+ this.dead_ = true;
+ });
+ (_f = (_e = this.socket_) === null || _e === void 0 ? void 0 : _e.onAny) === null || _f === void 0 ? void 0 : _f.call(_e, (e, d) => {
+ try {
+ if (!this.onMessage(e, d)) {
+ console.log('Unknown command (' + e + '), disconnected.');
+ this.Disconnect();
+ }
+ }
+ catch (err) {
+ console.error(err);
+ this.Disconnect();
+ }
+ });
+ }
+ Disconnect() {
+ this.socket_.disconnect(true);
+ }
+ Send(msg, data) {
+ this.socket_.emit(msg, data);
+ }
+ onMessage(e, d) { return false; }
+}
+;
+class WorldServer {
+ constructor(io, WorldNetworkClient) {
+ console.log("new WorldServer");
+ this.loginQueue_ = new LoginQueue((c, p) => { this.OnLogin_(c, p, WorldNetworkClient); });
+ this.worldMgr_ = new WorldManager({ parent: this });
+ this.SetupIO_(io);
+ }
+ SetupIO_(io) {
+ io.on('connection', socket => {
+ console.log("WorldServer: user connected");
+ this.loginQueue_.Add(new SocketWrapper({ socket: socket }));
+ });
+ }
+ OnLogin_(client, params, WorldNetworkClient) {
+ console.log("WorldServer.OnLogin_");
+ this.worldMgr_.Add(client, params, WorldNetworkClient);
+ }
+ Run(WorldAIClient) {
+ let t1 = performance.now();
+ this.Schedule_(t1, WorldAIClient);
+ }
+ Schedule_(t1, WorldAIClient) {
+ setTimeout(() => {
+ let t2 = performance.now();
+ this.Update_((t2 - t1) * 0.001, WorldAIClient);
+ this.Schedule_(t2, WorldAIClient);
+ });
+ }
+ Update_(timeElapsed, WorldAIClient) {
+ this.worldMgr_.Update(timeElapsed, WorldAIClient);
+ }
+}
+;
+export { WorldServer, SocketWrapper };
+//# sourceMappingURL=world-server.js.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-server/dist/scripts/world-server.js.map b/packages/quick-3d-mmo-server/dist/scripts/world-server.js.map
new file mode 100644
index 00000000..6275bbe4
--- /dev/null
+++ b/packages/quick-3d-mmo-server/dist/scripts/world-server.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"world-server.js","sourceRoot":"","sources":["../../src/scripts/world-server.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/server/package-lock.json b/packages/quick-3d-mmo-server/package-lock.json
similarity index 100%
rename from packages/server/package-lock.json
rename to packages/quick-3d-mmo-server/package-lock.json
diff --git a/packages/quick-3d-mmo-server/package.json b/packages/quick-3d-mmo-server/package.json
new file mode 100644
index 00000000..b6be5180
--- /dev/null
+++ b/packages/quick-3d-mmo-server/package.json
@@ -0,0 +1,22 @@
+{
+ "name": "quick-3d-mmo-server",
+ "version": "0.0.1",
+ "main": "index.js",
+ "type": "module",
+ "license": "MIT",
+ "scripts": {
+ "build": "tsc --build",
+ "build:watch": "tsc --build --watch",
+ "start": "yarn build && node dist/index.js",
+ "debug": "concurrently 'yarn build:watch' 'nodemon --inspect-brk dist/index.js'"
+ },
+ "dependencies": {
+ "gl-matrix": "^3.3.0",
+ "http": "^0.0.1-security",
+ "perf_hooks": "^0.0.1",
+ "socket.io": "^4.0.1"
+ },
+ "devDependencies": {
+ "@types/three": "^0.126.2"
+ }
+}
diff --git a/packages/server/src/index.ts b/packages/quick-3d-mmo-server/src/index.ts
similarity index 50%
rename from packages/server/src/index.ts
rename to packages/quick-3d-mmo-server/src/index.ts
index 91290ad4..76d0e810 100644
--- a/packages/server/src/index.ts
+++ b/packages/quick-3d-mmo-server/src/index.ts
@@ -1,10 +1,10 @@
-import {test} from 'shared';
+
import * as http from 'http';
import * as socket_io from 'socket.io';
-import {WorldServer} from './scripts/world-server';
-
-
+import {WorldServer} from './scripts/world-server.js';
+import {WorldNetworkClient, WorldAIClient} from './scripts/world-client.js';
+console.log("asdf");
function Main() {
const port = process.env.PORT || 3000;
@@ -16,11 +16,11 @@ function Main() {
});
server.listen(port, () => {
- console.log(`listening on: ${port} : ${test}`);
+ console.log(`listening on: ${port}`);
});
- const _WORLD = new WorldServer(io);
- _WORLD.Run();
+ const _WORLD = new WorldServer(io, WorldNetworkClient);
+ _WORLD.Run(WorldAIClient);
}
diff --git a/packages/server/src/scripts/login-queue.ts b/packages/quick-3d-mmo-server/src/scripts/login-queue.ts
similarity index 85%
rename from packages/server/src/scripts/login-queue.ts
rename to packages/quick-3d-mmo-server/src/scripts/login-queue.ts
index 97ac4caa..da7cb939 100644
--- a/packages/server/src/scripts/login-queue.ts
+++ b/packages/quick-3d-mmo-server/src/scripts/login-queue.ts
@@ -1,5 +1,5 @@
-import {Constants} from 'shared';
-import type {GlobalTypes} from "shared";
+import {Constants} from 'quick-3d-mmo-shared';
+import type {GlobalTypes} from 'quick-3d-mmo-shared';
const { EVENT_TYPES, STATE_TYPES } = Constants;
interface IState {}
@@ -100,6 +100,7 @@ interface IFiniteStateMachine {
}
OnMessage(evt: string, data: any) {
+ // console.log("Login_Await.OnMessage: ", {evt, data})
if (evt != EVENT_TYPES.LOGIN_COMMIT) {
return false;
}
@@ -119,7 +120,7 @@ interface IFiniteStateMachine {
}
OnEnter() {
- console.log('login confirmed: ' + this.getParams().accountName);
+ // console.log('login confirmed: ' + this.getParams().accountName);
this.Broadcast({topic: EVENT_TYPES.LOGIN_COMMIT, params: this.getParams()});
}
@@ -134,7 +135,7 @@ interface IFiniteStateMachine {
constructor(client: any, onLogin: (evt: string, data: any) => any) {
this.#onLogin = onLogin;
-
+ // console.log("Server: new LoginClient(): ");
client.onMessage = (e: string, d: any) => this.OnMessage_(e, d);
this.#fsm = new FiniteStateMachine((e: any) => { this.OnEvent(e); });
@@ -155,23 +156,24 @@ interface IFiniteStateMachine {
}
// onLogin, OnLogin is confusing. Rename once I know the purpose.
class LoginQueue {
- #clients: any;
- #onLogin: any;
+ clients: any;
+ onLogin: any;
constructor(onLogin: any) {
- this.#clients = {};
- this.#onLogin = onLogin;
+ this.clients = {};
+ this.onLogin = onLogin;
}
Add(client: IClient) {
- this.#clients[client.ID] = new LoginClient(
+ // console.log
+ this.clients[client.ID] = new LoginClient(
client, (e) => { this.OnLogin(client, e); });
}
- *OnLogin(client: IClient, params: any) {
- delete this.#clients[client.ID];
+ OnLogin(client: IClient, params: any) {
+ delete this.clients[client.ID];
- this.#onLogin(client, params);
+ this.onLogin(client, params);
}
};
diff --git a/packages/server/src/scripts/world-client.ts b/packages/quick-3d-mmo-server/src/scripts/world-client.ts
similarity index 96%
rename from packages/server/src/scripts/world-client.ts
rename to packages/quick-3d-mmo-server/src/scripts/world-client.ts
index 4b932514..d5895120 100644
--- a/packages/server/src/scripts/world-client.ts
+++ b/packages/quick-3d-mmo-server/src/scripts/world-client.ts
@@ -1,9 +1,9 @@
import { quat, vec3 } from 'gl-matrix';
-import type { WorldEntity } from './world-entity';
-import { SocketWrapper } from './world-server';
+import type { WorldEntity } from './world-entity.js';
+import { SocketWrapper } from './world-server.js';
-import { Constants, EntityManager as aEntityManager } from 'shared';
+import { Constants, EntityManager as aEntityManager } from 'quick-3d-mmo-shared';
const { _TIMEOUT, EVENT_TYPES, EntityManager, STATE_TYPES } = { ...Constants, ...aEntityManager };
@@ -28,7 +28,7 @@ class WorldClient {
this.client.onMessage = (e: any, d: any) => this.OnMessage_(e, d);
this.client.Send(EVENT_TYPES.WORLD_PLAYER, this.entity.CreatePlayerPacket_());
this.client.Send(EVENT_TYPES.WORLD_STATS, this.entity.CreateStatsPacket_());
-
+ // console.log("Sent world.player, world.stats")
this.#timeout = _TIMEOUT;
this.entityCache = {};
@@ -325,7 +325,7 @@ class AIState_WaitAttackDone extends AIState {
class FakeClient extends SocketWrapper {
constructor() {
- super(null)
+ super({socket: null})
}
Send(msg, data) { }
@@ -334,7 +334,7 @@ class FakeClient extends SocketWrapper {
};
class WorldAIClient extends WorldClient {
- constructor(entity: WorldEntity, terrain: InstanceType, onDeath) {
+ constructor(entity: WorldEntity, terrain: any, onDeath) {
super(new FakeClient(), entity);
this.terrain_ = terrain;
this.onDeath_ = onDeath;
diff --git a/packages/server/src/scripts/world-entity.ts b/packages/quick-3d-mmo-server/src/scripts/world-entity.ts
similarity index 98%
rename from packages/server/src/scripts/world-entity.ts
rename to packages/quick-3d-mmo-server/src/scripts/world-entity.ts
index df54f5b7..0090253d 100644
--- a/packages/server/src/scripts/world-entity.ts
+++ b/packages/quick-3d-mmo-server/src/scripts/world-entity.ts
@@ -1,8 +1,8 @@
import { quat, vec3 } from 'gl-matrix';
-import { Constants, Defs } from 'shared';
+import { Constants, Defs } from 'quick-3d-mmo-shared';
// import { IWorldEntity } from 'shared/src/globaltypes';
-import type { WorldClient } from "./world-client";
+import type { WorldClient } from "./world-client.js";
const { STATE_TYPES, EVENT_TYPES, ATTACK_TYPES, WEAPONS_DATA } = { ...Constants, ...Defs };
diff --git a/packages/server/src/scripts/world-manager.ts b/packages/quick-3d-mmo-server/src/scripts/world-manager.ts
similarity index 77%
rename from packages/server/src/scripts/world-manager.ts
rename to packages/quick-3d-mmo-server/src/scripts/world-manager.ts
index 46723024..871ad2e5 100644
--- a/packages/server/src/scripts/world-manager.ts
+++ b/packages/quick-3d-mmo-server/src/scripts/world-manager.ts
@@ -1,12 +1,17 @@
import { quat, vec3 } from 'gl-matrix';
-import { WorldAIClient, WorldNetworkClient } from './world-client';
-import { WorldEntity } from './world-entity';
+// import { WorldAIClient, WorldNetworkClient } from './world-client.js';
+import { WorldEntity } from './world-entity.js';
-import { SpatialHashGrid } from 'shared/src/spatial-hash-grid';
-import { HeightGenerator } from 'shared';
-import { CHARACTER_MODELS } from 'shared';
-import {CLASS_TYPES} from 'shared'
+import { SpatialHashGrid as aSpatialHashGrid, Constants, Defs, TerrainHeight } from 'quick-3d-mmo-shared';
+
+
+const { HeightGenerator, CHARACTER_MODELS, CLASS_TYPES, SpatialHashGrid } = {
+ ...aSpatialHashGrid,
+ ...Constants,
+ ...Defs,
+ ...TerrainHeight,
+}
class MonsterSpawner {
parent_: any;
@@ -25,7 +30,7 @@ class MonsterSpawner {
this.params_ = params;
}
- Spawn_() {
+ Spawn_(WorldAIClient) {
// Hack
const e = new WorldEntity({
id: this.parent_.ids_++,
@@ -39,6 +44,8 @@ class MonsterSpawner {
account: { accountName: CHARACTER_MODELS[this.params_.class].name },
});
+ // console.log("WorldAIClient: ", WorldAIClient)
+
const wc = new WorldAIClient(e, this.terrain_, () => {
this.entity_ = null;
console.log('entity gone, spawner making now one soon');
@@ -49,9 +56,9 @@ class MonsterSpawner {
this.entity_ = wc;
}
- Update(timeElapsed) {
+ Update(timeElapsed, WorldAIClient) {
if (!this.entity_) {
- this.Spawn_();
+ this.Spawn_(WorldAIClient);
}
}
};
@@ -101,11 +108,11 @@ class WorldManager {
this.entities_.push(e);
}
- Add(client, params) {
+ Add(client, params, WorldNetworkClient) {
const models = CLASS_TYPES;
const randomClass = models[
Math.floor(Math.random() * models.length)];
-
+ console.log("WorldManager.Add(): ", "SocketIOClient", params, "WorldNetworkClient")
// Hack
const e = new WorldEntity({
id: this.ids_++,
@@ -127,16 +134,20 @@ class WorldManager {
this.entities_.push(wc);
wc.BroadcastChat({
- name: '',
+ name: 'Server:',
server: true,
text: '[' + params.accountName + ' has entered the game]'
});
}
- Update(timeElapsed) {
+ Update(timeElapsed, WorldAIClient) {
+ if(false) {
+
+ console.log("WorldManager.Update(): ", {timeElapsed, WorldAIClient})
+ }
this.TickClientState_(timeElapsed);
this.UpdateEntities_(timeElapsed);
- this.UpdateSpawners_(timeElapsed);
+ this.UpdateSpawners_(timeElapsed, WorldAIClient);
}
TickClientState_(timeElapsed) {
@@ -151,13 +162,15 @@ class WorldManager {
this.entities_[i].UpdateClientState_();
}
for (let i = 0; i < this.entities_.length; ++i) {
- this.entities_[i].entity_.events_ = [];
+ if (this.entities_?.[i]?.entity_) {
+ this.entities_[i].entity_.events_ = [];
+ }
}
}
- UpdateSpawners_(timeElapsed) {
+ UpdateSpawners_(timeElapsed, WorldAIClient) {
for (let i = 0; i < this.spawners_.length; ++i) {
- this.spawners_[i].Update(timeElapsed);
+ this.spawners_[i].Update(timeElapsed, WorldAIClient);
}
}
diff --git a/packages/server/src/scripts/world-server.ts b/packages/quick-3d-mmo-server/src/scripts/world-server.ts
similarity index 51%
rename from packages/server/src/scripts/world-server.ts
rename to packages/quick-3d-mmo-server/src/scripts/world-server.ts
index 882d385d..5525767d 100644
--- a/packages/server/src/scripts/world-server.ts
+++ b/packages/quick-3d-mmo-server/src/scripts/world-server.ts
@@ -1,14 +1,17 @@
import { performance } from 'perf_hooks';
-import {EVENT_TYPES} from 'shared'
-import { WorldManager } from './world-manager';
-import { LoginQueue } from './login-queue';
+import {Constants} from 'quick-3d-mmo-shared'
+import { WorldManager } from './world-manager.js';
+import { LoginQueue } from './login-queue.js';
+// import { WorldAIClient, WorldNetworkClient } from './world-client.js';
+const {EVENT_TYPES} = Constants;
class SocketWrapper {
socket_: any;
dead_: boolean;
- constructor(params) {
- this.socket_ = params.socket;
+ constructor(params: {socket: any}) {
+ // console.log("params: ", params)
+ this.socket_ = params?.socket;
this.onMessage = null;
this.dead_ = false;
this.SetupSocket_();
@@ -23,14 +26,14 @@ class SocketWrapper {
}
SetupSocket_() {
- this.socket_.on('user-connected', () => {
+ this?.socket_?.on?.('user-connected', () => {
console.log('socket.id: ' + this.socket_.id);
});
- this.socket_.on('disconnect', () => {
+ this?.socket_?.on?.('disconnect', () => {
console.log('Client disconnected.');
this.dead_ = true;
});
- this.socket_.onAny((e: EVENT_TYPES, d: any) => {
+ this.socket_?.onAny?.((e: any, d: any) => {
try {
if (!this.onMessage(e, d)) {
console.log('Unknown command (' + e + '), disconnected.');
@@ -47,10 +50,10 @@ class SocketWrapper {
this.socket_.disconnect(true);
}
- Send(msg: EVENT_TYPES, data) {
+ Send(msg: any, data) {
this.socket_.emit(msg, data);
}
- onMessage(e: EVENT_TYPES, d: any) {return false}
+ onMessage(e: any, d: any) {return false}
};
@@ -58,9 +61,10 @@ class WorldServer {
loginQueue_: LoginQueue;
worldMgr_: WorldManager;
- constructor(io) {
+ constructor(io, WorldNetworkClient) {
+ console.log("new WorldServer")
this.loginQueue_ = new LoginQueue(
- (c, p) => { this.OnLogin_(c, p); });
+ (c, p) => { this.OnLogin_(c, p, WorldNetworkClient); });
this.worldMgr_ = new WorldManager({ parent: this });
this.SetupIO_(io);
@@ -68,29 +72,31 @@ class WorldServer {
SetupIO_(io) {
io.on('connection', socket => {
+ console.log("WorldServer: user connected")
this.loginQueue_.Add(new SocketWrapper({ socket: socket }));
});
}
- OnLogin_(client, params) {
- this.worldMgr_.Add(client, params);
+ OnLogin_(client, params, WorldNetworkClient) {
+ console.log("WorldServer.OnLogin_")
+ this.worldMgr_.Add(client, params, WorldNetworkClient);
}
- Run() {
+ Run(WorldAIClient) {
let t1 = performance.now();
- this.Schedule_(t1);
+ this.Schedule_(t1, WorldAIClient);
}
- Schedule_(t1) {
+ Schedule_(t1, WorldAIClient) {
setTimeout(() => {
let t2 = performance.now();
- this.Update_((t2 - t1) * 0.001);
- this.Schedule_(t2);
+ this.Update_((t2 - t1) * 0.001, WorldAIClient);
+ this.Schedule_(t2, WorldAIClient);
});
}
- Update_(timeElapsed) {
- this.worldMgr_.Update(timeElapsed);
+ Update_(timeElapsed, WorldAIClient) {
+ this.worldMgr_.Update(timeElapsed, WorldAIClient);
}
};
diff --git a/packages/quick-3d-mmo-server/tsconfig.json b/packages/quick-3d-mmo-server/tsconfig.json
new file mode 100644
index 00000000..16a8a53c
--- /dev/null
+++ b/packages/quick-3d-mmo-server/tsconfig.json
@@ -0,0 +1,16 @@
+{
+ "compilerOptions": {
+ "outDir": "dist",
+ "rootDir": "src",
+ "sourceMap": true,
+ "target": "ES6",
+ "moduleResolution": "Node"
+ },
+ "include": ["src"],
+ "exclude": ["dist/*","dat.gui.module.*"],
+ "references": [
+ {
+ "path": "../quick-3d-mmo-shared"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/OrbitControls.d.ts b/packages/quick-3d-mmo-shared/dist/OrbitControls.d.ts
new file mode 100644
index 00000000..a32f3200
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/OrbitControls.d.ts
@@ -0,0 +1,4 @@
+declare var OrbitControls: (object: any, domElement: any) => void;
+declare var MapControls: (object: any, domElement: any) => void;
+export { OrbitControls, MapControls };
+//# sourceMappingURL=OrbitControls.d.ts.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/OrbitControls.d.ts.map b/packages/quick-3d-mmo-shared/dist/OrbitControls.d.ts.map
new file mode 100644
index 00000000..789423dc
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/OrbitControls.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"OrbitControls.d.ts","sourceRoot":"","sources":["../src/OrbitControls.ts"],"names":[],"mappings":"AAiBA,QAAA,IAAI,aAAa,wCAkpChB,CAAC;AAcF,QAAA,IAAI,WAAW,wCAYd,CAAC;AAKF,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/OrbitControls.js b/packages/quick-3d-mmo-shared/dist/OrbitControls.js
new file mode 100644
index 00000000..1160fefa
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/OrbitControls.js
@@ -0,0 +1,755 @@
+"use strict";
+exports.__esModule = true;
+exports.MapControls = exports.OrbitControls = void 0;
+var three_1 = require("three");
+// This set of controls performs orbiting, dollying (zooming), and panning.
+// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default).
+//
+// Orbit - left mouse / touch: one-finger move
+// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish
+// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move
+var OrbitControls = function (object, domElement) {
+ if (domElement === undefined)
+ console.warn('THREE.OrbitControls: The second parameter "domElement" is now mandatory.');
+ if (domElement === document)
+ console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.');
+ this.object = object;
+ this.domElement = domElement;
+ // Set to false to disable this control
+ this.enabled = true;
+ // "target" sets the location of focus, where the object orbits around
+ this.target = new three_1.Vector3();
+ // How far you can dolly in and out ( PerspectiveCamera only )
+ this.minDistance = 0;
+ this.maxDistance = Infinity;
+ // How far you can zoom in and out ( OrthographicCamera only )
+ this.minZoom = 0;
+ this.maxZoom = Infinity;
+ // How far you can orbit vertically, upper and lower limits.
+ // Range is 0 to Math.PI radians.
+ this.minPolarAngle = 0; // radians
+ this.maxPolarAngle = Math.PI; // radians
+ // How far you can orbit horizontally, upper and lower limits.
+ // If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )
+ this.minAzimuthAngle = -Infinity; // radians
+ this.maxAzimuthAngle = Infinity; // radians
+ // Set to true to enable damping (inertia)
+ // If damping is enabled, you must call controls.update() in your animation loop
+ this.enableDamping = false;
+ this.dampingFactor = 0.05;
+ // This option actually enables dollying in and out; left as "zoom" for backwards compatibility.
+ // Set to false to disable zooming
+ this.enableZoom = true;
+ this.zoomSpeed = 1.0;
+ // Set to false to disable rotating
+ this.enableRotate = true;
+ this.rotateSpeed = 1.0;
+ // Set to false to disable panning
+ this.enablePan = true;
+ this.panSpeed = 1.0;
+ this.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up
+ this.keyPanSpeed = 7.0; // pixels moved per arrow key push
+ // Set to true to automatically rotate around the target
+ // If auto-rotate is enabled, you must call controls.update() in your animation loop
+ this.autoRotate = false;
+ this.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60
+ // Set to false to disable use of the keys
+ this.enableKeys = true;
+ // The four arrow keys
+ this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 };
+ // Mouse buttons
+ this.mouseButtons = { LEFT: three_1.MOUSE.ROTATE, MIDDLE: three_1.MOUSE.DOLLY, RIGHT: three_1.MOUSE.PAN };
+ // Touch fingers
+ this.touches = { ONE: three_1.TOUCH.ROTATE, TWO: three_1.TOUCH.DOLLY_PAN };
+ // for reset
+ this.target0 = this.target.clone();
+ this.position0 = this.object.position.clone();
+ this.zoom0 = this.object.zoom;
+ //
+ // public methods
+ //
+ this.getPolarAngle = function () {
+ return spherical.phi;
+ };
+ this.getAzimuthalAngle = function () {
+ return spherical.theta;
+ };
+ this.saveState = function () {
+ scope.target0.copy(scope.target);
+ scope.position0.copy(scope.object.position);
+ scope.zoom0 = scope.object.zoom;
+ };
+ this.reset = function () {
+ scope.target.copy(scope.target0);
+ scope.object.position.copy(scope.position0);
+ scope.object.zoom = scope.zoom0;
+ scope.object.updateProjectionMatrix();
+ scope.dispatchEvent(changeEvent);
+ scope.update();
+ state = STATE.NONE;
+ };
+ // this method is exposed, but perhaps it would be better if we can make it private...
+ this.update = function () {
+ var offset = new three_1.Vector3();
+ // so camera.up is the orbit axis
+ var quat = new three_1.Quaternion().setFromUnitVectors(object.up, new three_1.Vector3(0, 1, 0));
+ var quatInverse = quat.clone().invert();
+ var lastPosition = new three_1.Vector3();
+ var lastQuaternion = new three_1.Quaternion();
+ var twoPI = 2 * Math.PI;
+ return function update() {
+ var position = scope.object.position;
+ offset.copy(position).sub(scope.target);
+ // rotate offset to "y-axis-is-up" space
+ offset.applyQuaternion(quat);
+ // angle from z-axis around y-axis
+ spherical.setFromVector3(offset);
+ if (scope.autoRotate && state === STATE.NONE) {
+ rotateLeft(getAutoRotationAngle());
+ }
+ if (scope.enableDamping) {
+ spherical.theta += sphericalDelta.theta * scope.dampingFactor;
+ spherical.phi += sphericalDelta.phi * scope.dampingFactor;
+ }
+ else {
+ spherical.theta += sphericalDelta.theta;
+ spherical.phi += sphericalDelta.phi;
+ }
+ // restrict theta to be between desired limits
+ var min = scope.minAzimuthAngle;
+ var max = scope.maxAzimuthAngle;
+ if (isFinite(min) && isFinite(max)) {
+ if (min < -Math.PI)
+ min += twoPI;
+ else if (min > Math.PI)
+ min -= twoPI;
+ if (max < -Math.PI)
+ max += twoPI;
+ else if (max > Math.PI)
+ max -= twoPI;
+ if (min <= max) {
+ spherical.theta = Math.max(min, Math.min(max, spherical.theta));
+ }
+ else {
+ spherical.theta = (spherical.theta > (min + max) / 2) ?
+ Math.max(min, spherical.theta) :
+ Math.min(max, spherical.theta);
+ }
+ }
+ // restrict phi to be between desired limits
+ spherical.phi = Math.max(scope.minPolarAngle, Math.min(scope.maxPolarAngle, spherical.phi));
+ spherical.makeSafe();
+ spherical.radius *= scale;
+ // restrict radius to be between desired limits
+ spherical.radius = Math.max(scope.minDistance, Math.min(scope.maxDistance, spherical.radius));
+ // move target to panned location
+ if (scope.enableDamping === true) {
+ scope.target.addScaledVector(panOffset, scope.dampingFactor);
+ }
+ else {
+ scope.target.add(panOffset);
+ }
+ offset.setFromSpherical(spherical);
+ // rotate offset back to "camera-up-vector-is-up" space
+ offset.applyQuaternion(quatInverse);
+ position.copy(scope.target).add(offset);
+ scope.object.lookAt(scope.target);
+ if (scope.enableDamping === true) {
+ sphericalDelta.theta *= (1 - scope.dampingFactor);
+ sphericalDelta.phi *= (1 - scope.dampingFactor);
+ panOffset.multiplyScalar(1 - scope.dampingFactor);
+ }
+ else {
+ sphericalDelta.set(0, 0, 0);
+ panOffset.set(0, 0, 0);
+ }
+ scale = 1;
+ // update condition is:
+ // min(camera displacement, camera rotation in radians)^2 > EPS
+ // using small-angle approximation cos(x/2) = 1 - x^2 / 8
+ if (zoomChanged ||
+ lastPosition.distanceToSquared(scope.object.position) > EPS ||
+ 8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS) {
+ scope.dispatchEvent(changeEvent);
+ lastPosition.copy(scope.object.position);
+ lastQuaternion.copy(scope.object.quaternion);
+ zoomChanged = false;
+ return true;
+ }
+ return false;
+ };
+ }();
+ this.dispose = function () {
+ scope.domElement.removeEventListener('contextmenu', onContextMenu, false);
+ scope.domElement.removeEventListener('pointerdown', onPointerDown, false);
+ scope.domElement.removeEventListener('wheel', onMouseWheel, false);
+ scope.domElement.removeEventListener('touchstart', onTouchStart, false);
+ scope.domElement.removeEventListener('touchend', onTouchEnd, false);
+ scope.domElement.removeEventListener('touchmove', onTouchMove, false);
+ scope.domElement.ownerDocument.removeEventListener('pointermove', onPointerMove, false);
+ scope.domElement.ownerDocument.removeEventListener('pointerup', onPointerUp, false);
+ scope.domElement.removeEventListener('keydown', onKeyDown, false);
+ //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?
+ };
+ //
+ // internals
+ //
+ var scope = this;
+ var changeEvent = { type: 'change' };
+ var startEvent = { type: 'start' };
+ var endEvent = { type: 'end' };
+ var STATE = {
+ NONE: -1,
+ ROTATE: 0,
+ DOLLY: 1,
+ PAN: 2,
+ TOUCH_ROTATE: 3,
+ TOUCH_PAN: 4,
+ TOUCH_DOLLY_PAN: 5,
+ TOUCH_DOLLY_ROTATE: 6
+ };
+ var state = STATE.NONE;
+ var EPS = 0.000001;
+ // current position in spherical coordinates
+ var spherical = new three_1.Spherical();
+ var sphericalDelta = new three_1.Spherical();
+ var scale = 1;
+ var panOffset = new three_1.Vector3();
+ var zoomChanged = false;
+ var rotateStart = new three_1.Vector2();
+ var rotateEnd = new three_1.Vector2();
+ var rotateDelta = new three_1.Vector2();
+ var panStart = new three_1.Vector2();
+ var panEnd = new three_1.Vector2();
+ var panDelta = new three_1.Vector2();
+ var dollyStart = new three_1.Vector2();
+ var dollyEnd = new three_1.Vector2();
+ var dollyDelta = new three_1.Vector2();
+ function getAutoRotationAngle() {
+ return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;
+ }
+ function getZoomScale() {
+ return Math.pow(0.95, scope.zoomSpeed);
+ }
+ function rotateLeft(angle) {
+ sphericalDelta.theta -= angle;
+ }
+ function rotateUp(angle) {
+ sphericalDelta.phi -= angle;
+ }
+ var panLeft = function () {
+ var v = new three_1.Vector3();
+ return function panLeft(distance, objectMatrix) {
+ v.setFromMatrixColumn(objectMatrix, 0); // get X column of objectMatrix
+ v.multiplyScalar(-distance);
+ panOffset.add(v);
+ };
+ }();
+ var panUp = function () {
+ var v = new three_1.Vector3();
+ return function panUp(distance, objectMatrix) {
+ if (scope.screenSpacePanning === true) {
+ v.setFromMatrixColumn(objectMatrix, 1);
+ }
+ else {
+ v.setFromMatrixColumn(objectMatrix, 0);
+ v.crossVectors(scope.object.up, v);
+ }
+ v.multiplyScalar(distance);
+ panOffset.add(v);
+ };
+ }();
+ // deltaX and deltaY are in pixels; right and down are positive
+ var pan = function () {
+ var offset = new three_1.Vector3();
+ return function pan(deltaX, deltaY) {
+ var element = scope.domElement;
+ if (scope.object.isPerspectiveCamera) {
+ // perspective
+ var position = scope.object.position;
+ offset.copy(position).sub(scope.target);
+ var targetDistance = offset.length();
+ // half of the fov is center to top of screen
+ targetDistance *= Math.tan((scope.object.fov / 2) * Math.PI / 180.0);
+ // we use only clientHeight here so aspect ratio does not distort speed
+ panLeft(2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix);
+ panUp(2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix);
+ }
+ else if (scope.object.isOrthographicCamera) {
+ // orthographic
+ panLeft(deltaX * (scope.object.right - scope.object.left) / scope.object.zoom / element.clientWidth, scope.object.matrix);
+ panUp(deltaY * (scope.object.top - scope.object.bottom) / scope.object.zoom / element.clientHeight, scope.object.matrix);
+ }
+ else {
+ // camera neither orthographic nor perspective
+ console.warn('WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.');
+ scope.enablePan = false;
+ }
+ };
+ }();
+ function dollyOut(dollyScale) {
+ if (scope.object.isPerspectiveCamera) {
+ scale /= dollyScale;
+ }
+ else if (scope.object.isOrthographicCamera) {
+ scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom * dollyScale));
+ scope.object.updateProjectionMatrix();
+ zoomChanged = true;
+ }
+ else {
+ console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.');
+ scope.enableZoom = false;
+ }
+ }
+ function dollyIn(dollyScale) {
+ if (scope.object.isPerspectiveCamera) {
+ scale *= dollyScale;
+ }
+ else if (scope.object.isOrthographicCamera) {
+ scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom / dollyScale));
+ scope.object.updateProjectionMatrix();
+ zoomChanged = true;
+ }
+ else {
+ console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.');
+ scope.enableZoom = false;
+ }
+ }
+ //
+ // event callbacks - update the object state
+ //
+ function handleMouseDownRotate(event) {
+ rotateStart.set(event.clientX, event.clientY);
+ }
+ function handleMouseDownDolly(event) {
+ dollyStart.set(event.clientX, event.clientY);
+ }
+ function handleMouseDownPan(event) {
+ panStart.set(event.clientX, event.clientY);
+ }
+ function handleMouseMoveRotate(event) {
+ rotateEnd.set(event.clientX, event.clientY);
+ rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed);
+ var element = scope.domElement;
+ rotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight); // yes, height
+ rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight);
+ rotateStart.copy(rotateEnd);
+ scope.update();
+ }
+ function handleMouseMoveDolly(event) {
+ dollyEnd.set(event.clientX, event.clientY);
+ dollyDelta.subVectors(dollyEnd, dollyStart);
+ if (dollyDelta.y > 0) {
+ dollyOut(getZoomScale());
+ }
+ else if (dollyDelta.y < 0) {
+ dollyIn(getZoomScale());
+ }
+ dollyStart.copy(dollyEnd);
+ scope.update();
+ }
+ function handleMouseMovePan(event) {
+ panEnd.set(event.clientX, event.clientY);
+ panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed);
+ pan(panDelta.x, panDelta.y);
+ panStart.copy(panEnd);
+ scope.update();
+ }
+ function handleMouseUp(e) {
+ // no-op
+ }
+ function handleMouseWheel(event) {
+ if (event.deltaY < 0) {
+ dollyIn(getZoomScale());
+ }
+ else if (event.deltaY > 0) {
+ dollyOut(getZoomScale());
+ }
+ scope.update();
+ }
+ function handleKeyDown(event) {
+ var needsUpdate = false;
+ switch (event.keyCode) {
+ case scope.keys.UP:
+ pan(0, scope.keyPanSpeed);
+ needsUpdate = true;
+ break;
+ case scope.keys.BOTTOM:
+ pan(0, -scope.keyPanSpeed);
+ needsUpdate = true;
+ break;
+ case scope.keys.LEFT:
+ pan(scope.keyPanSpeed, 0);
+ needsUpdate = true;
+ break;
+ case scope.keys.RIGHT:
+ pan(-scope.keyPanSpeed, 0);
+ needsUpdate = true;
+ break;
+ }
+ if (needsUpdate) {
+ // prevent the browser from scrolling on cursor keys
+ event.preventDefault();
+ scope.update();
+ }
+ }
+ function handleTouchStartRotate(event) {
+ if (event.touches.length == 1) {
+ rotateStart.set(event.touches[0].pageX, event.touches[0].pageY);
+ }
+ else {
+ var x = 0.5 * (event.touches[0].pageX + event.touches[1].pageX);
+ var y = 0.5 * (event.touches[0].pageY + event.touches[1].pageY);
+ rotateStart.set(x, y);
+ }
+ }
+ function handleTouchStartPan(event) {
+ if (event.touches.length == 1) {
+ panStart.set(event.touches[0].pageX, event.touches[0].pageY);
+ }
+ else {
+ var x = 0.5 * (event.touches[0].pageX + event.touches[1].pageX);
+ var y = 0.5 * (event.touches[0].pageY + event.touches[1].pageY);
+ panStart.set(x, y);
+ }
+ }
+ function handleTouchStartDolly(event) {
+ var dx = event.touches[0].pageX - event.touches[1].pageX;
+ var dy = event.touches[0].pageY - event.touches[1].pageY;
+ var distance = Math.sqrt(dx * dx + dy * dy);
+ dollyStart.set(0, distance);
+ }
+ function handleTouchStartDollyPan(event) {
+ if (scope.enableZoom)
+ handleTouchStartDolly(event);
+ if (scope.enablePan)
+ handleTouchStartPan(event);
+ }
+ function handleTouchStartDollyRotate(event) {
+ if (scope.enableZoom)
+ handleTouchStartDolly(event);
+ if (scope.enableRotate)
+ handleTouchStartRotate(event);
+ }
+ function handleTouchMoveRotate(event) {
+ if (event.touches.length == 1) {
+ rotateEnd.set(event.touches[0].pageX, event.touches[0].pageY);
+ }
+ else {
+ var x = 0.5 * (event.touches[0].pageX + event.touches[1].pageX);
+ var y = 0.5 * (event.touches[0].pageY + event.touches[1].pageY);
+ rotateEnd.set(x, y);
+ }
+ rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed);
+ var element = scope.domElement;
+ rotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight); // yes, height
+ rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight);
+ rotateStart.copy(rotateEnd);
+ }
+ function handleTouchMovePan(event) {
+ if (event.touches.length == 1) {
+ panEnd.set(event.touches[0].pageX, event.touches[0].pageY);
+ }
+ else {
+ var x = 0.5 * (event.touches[0].pageX + event.touches[1].pageX);
+ var y = 0.5 * (event.touches[0].pageY + event.touches[1].pageY);
+ panEnd.set(x, y);
+ }
+ panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed);
+ pan(panDelta.x, panDelta.y);
+ panStart.copy(panEnd);
+ }
+ function handleTouchMoveDolly(event) {
+ var dx = event.touches[0].pageX - event.touches[1].pageX;
+ var dy = event.touches[0].pageY - event.touches[1].pageY;
+ var distance = Math.sqrt(dx * dx + dy * dy);
+ dollyEnd.set(0, distance);
+ dollyDelta.set(0, Math.pow(dollyEnd.y / dollyStart.y, scope.zoomSpeed));
+ dollyOut(dollyDelta.y);
+ dollyStart.copy(dollyEnd);
+ }
+ function handleTouchMoveDollyPan(event) {
+ if (scope.enableZoom)
+ handleTouchMoveDolly(event);
+ if (scope.enablePan)
+ handleTouchMovePan(event);
+ }
+ function handleTouchMoveDollyRotate(event) {
+ if (scope.enableZoom)
+ handleTouchMoveDolly(event);
+ if (scope.enableRotate)
+ handleTouchMoveRotate(event);
+ }
+ function handleTouchEnd(e) {
+ // no-op
+ }
+ //
+ // event handlers - FSM: listen for events and reset state
+ //
+ function onPointerDown(event) {
+ if (scope.enabled === false)
+ return;
+ switch (event.pointerType) {
+ case 'mouse':
+ case 'pen':
+ onMouseDown(event);
+ break;
+ // TODO touch
+ }
+ }
+ function onPointerMove(event) {
+ if (scope.enabled === false)
+ return;
+ switch (event.pointerType) {
+ case 'mouse':
+ case 'pen':
+ onMouseMove(event);
+ break;
+ // TODO touch
+ }
+ }
+ function onPointerUp(event) {
+ switch (event.pointerType) {
+ case 'mouse':
+ case 'pen':
+ onMouseUp(event);
+ break;
+ // TODO touch
+ }
+ }
+ function onMouseDown(event) {
+ // Prevent the browser from scrolling.
+ event.preventDefault();
+ // Manually set the focus since calling preventDefault above
+ // prevents the browser from setting it automatically.
+ scope.domElement.focus ? scope.domElement.focus() : window.focus();
+ var mouseAction;
+ switch (event.button) {
+ case 0:
+ mouseAction = scope.mouseButtons.LEFT;
+ break;
+ case 1:
+ mouseAction = scope.mouseButtons.MIDDLE;
+ break;
+ case 2:
+ mouseAction = scope.mouseButtons.RIGHT;
+ break;
+ default:
+ mouseAction = -1;
+ }
+ switch (mouseAction) {
+ case three_1.MOUSE.DOLLY:
+ if (scope.enableZoom === false)
+ return;
+ handleMouseDownDolly(event);
+ state = STATE.DOLLY;
+ break;
+ case three_1.MOUSE.ROTATE:
+ if (event.ctrlKey || event.metaKey || event.shiftKey) {
+ if (scope.enablePan === false)
+ return;
+ handleMouseDownPan(event);
+ state = STATE.PAN;
+ }
+ else {
+ if (scope.enableRotate === false)
+ return;
+ handleMouseDownRotate(event);
+ state = STATE.ROTATE;
+ }
+ break;
+ case three_1.MOUSE.PAN:
+ if (event.ctrlKey || event.metaKey || event.shiftKey) {
+ if (scope.enableRotate === false)
+ return;
+ handleMouseDownRotate(event);
+ state = STATE.ROTATE;
+ }
+ else {
+ if (scope.enablePan === false)
+ return;
+ handleMouseDownPan(event);
+ state = STATE.PAN;
+ }
+ break;
+ default:
+ state = STATE.NONE;
+ }
+ if (state !== STATE.NONE) {
+ scope.domElement.ownerDocument.addEventListener('pointermove', onPointerMove, false);
+ scope.domElement.ownerDocument.addEventListener('pointerup', onPointerUp, false);
+ scope.dispatchEvent(startEvent);
+ }
+ }
+ function onMouseMove(event) {
+ if (scope.enabled === false)
+ return;
+ event.preventDefault();
+ switch (state) {
+ case STATE.ROTATE:
+ if (scope.enableRotate === false)
+ return;
+ handleMouseMoveRotate(event);
+ break;
+ case STATE.DOLLY:
+ if (scope.enableZoom === false)
+ return;
+ handleMouseMoveDolly(event);
+ break;
+ case STATE.PAN:
+ if (scope.enablePan === false)
+ return;
+ handleMouseMovePan(event);
+ break;
+ }
+ }
+ function onMouseUp(event) {
+ scope.domElement.ownerDocument.removeEventListener('pointermove', onPointerMove, false);
+ scope.domElement.ownerDocument.removeEventListener('pointerup', onPointerUp, false);
+ if (scope.enabled === false)
+ return;
+ handleMouseUp(event);
+ scope.dispatchEvent(endEvent);
+ state = STATE.NONE;
+ }
+ function onMouseWheel(event) {
+ if (scope.enabled === false || scope.enableZoom === false || (state !== STATE.NONE && state !== STATE.ROTATE))
+ return;
+ event.preventDefault();
+ event.stopPropagation();
+ scope.dispatchEvent(startEvent);
+ handleMouseWheel(event);
+ scope.dispatchEvent(endEvent);
+ }
+ function onKeyDown(event) {
+ if (scope.enabled === false || scope.enableKeys === false || scope.enablePan === false)
+ return;
+ handleKeyDown(event);
+ }
+ function onTouchStart(event) {
+ if (scope.enabled === false)
+ return;
+ event.preventDefault(); // prevent scrolling
+ switch (event.touches.length) {
+ case 1:
+ switch (scope.touches.ONE) {
+ case three_1.TOUCH.ROTATE:
+ if (scope.enableRotate === false)
+ return;
+ handleTouchStartRotate(event);
+ state = STATE.TOUCH_ROTATE;
+ break;
+ case three_1.TOUCH.PAN:
+ if (scope.enablePan === false)
+ return;
+ handleTouchStartPan(event);
+ state = STATE.TOUCH_PAN;
+ break;
+ default:
+ state = STATE.NONE;
+ }
+ break;
+ case 2:
+ switch (scope.touches.TWO) {
+ case three_1.TOUCH.DOLLY_PAN:
+ if (scope.enableZoom === false && scope.enablePan === false)
+ return;
+ handleTouchStartDollyPan(event);
+ state = STATE.TOUCH_DOLLY_PAN;
+ break;
+ case three_1.TOUCH.DOLLY_ROTATE:
+ if (scope.enableZoom === false && scope.enableRotate === false)
+ return;
+ handleTouchStartDollyRotate(event);
+ state = STATE.TOUCH_DOLLY_ROTATE;
+ break;
+ default:
+ state = STATE.NONE;
+ }
+ break;
+ default:
+ state = STATE.NONE;
+ }
+ if (state !== STATE.NONE) {
+ scope.dispatchEvent(startEvent);
+ }
+ }
+ function onTouchMove(event) {
+ if (scope.enabled === false)
+ return;
+ event.preventDefault(); // prevent scrolling
+ event.stopPropagation();
+ switch (state) {
+ case STATE.TOUCH_ROTATE:
+ if (scope.enableRotate === false)
+ return;
+ handleTouchMoveRotate(event);
+ scope.update();
+ break;
+ case STATE.TOUCH_PAN:
+ if (scope.enablePan === false)
+ return;
+ handleTouchMovePan(event);
+ scope.update();
+ break;
+ case STATE.TOUCH_DOLLY_PAN:
+ if (scope.enableZoom === false && scope.enablePan === false)
+ return;
+ handleTouchMoveDollyPan(event);
+ scope.update();
+ break;
+ case STATE.TOUCH_DOLLY_ROTATE:
+ if (scope.enableZoom === false && scope.enableRotate === false)
+ return;
+ handleTouchMoveDollyRotate(event);
+ scope.update();
+ break;
+ default:
+ state = STATE.NONE;
+ }
+ }
+ function onTouchEnd(event) {
+ if (scope.enabled === false)
+ return;
+ handleTouchEnd(event);
+ scope.dispatchEvent(endEvent);
+ state = STATE.NONE;
+ }
+ function onContextMenu(event) {
+ if (scope.enabled === false)
+ return;
+ event.preventDefault();
+ }
+ //
+ scope.domElement.addEventListener('contextmenu', onContextMenu, false);
+ scope.domElement.addEventListener('pointerdown', onPointerDown, false);
+ scope.domElement.addEventListener('wheel', onMouseWheel, false);
+ scope.domElement.addEventListener('touchstart', onTouchStart, false);
+ scope.domElement.addEventListener('touchend', onTouchEnd, false);
+ scope.domElement.addEventListener('touchmove', onTouchMove, false);
+ scope.domElement.addEventListener('keydown', onKeyDown, false);
+ // force an update at start
+ this.update();
+};
+exports.OrbitControls = OrbitControls;
+OrbitControls.prototype = Object.create(three_1.EventDispatcher.prototype);
+OrbitControls.prototype.constructor = OrbitControls;
+// This set of controls performs orbiting, dollying (zooming), and panning.
+// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default).
+// This is very similar to OrbitControls, another set of touch behavior
+//
+// Orbit - right mouse, or left mouse + ctrl/meta/shiftKey / touch: two-finger rotate
+// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish
+// Pan - left mouse, or arrow keys / touch: one-finger move
+var MapControls = function (object, domElement) {
+ OrbitControls.call(this, object, domElement);
+ this.screenSpacePanning = false; // pan orthogonal to world-space direction camera.up
+ this.mouseButtons.LEFT = three_1.MOUSE.PAN;
+ this.mouseButtons.RIGHT = three_1.MOUSE.ROTATE;
+ this.touches.ONE = three_1.TOUCH.PAN;
+ this.touches.TWO = three_1.TOUCH.DOLLY_ROTATE;
+};
+exports.MapControls = MapControls;
+MapControls.prototype = Object.create(three_1.EventDispatcher.prototype);
+MapControls.prototype.constructor = MapControls;
+//# sourceMappingURL=OrbitControls.js.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/OrbitControls.js.map b/packages/quick-3d-mmo-shared/dist/OrbitControls.js.map
new file mode 100644
index 00000000..81a32bd9
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/OrbitControls.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"OrbitControls.js","sourceRoot":"","sources":["../src/OrbitControls.ts"],"names":[],"mappings":";;;AAAA,+BAQe;AAEf,2EAA2E;AAC3E,uFAAuF;AACvF,EAAE;AACF,iDAAiD;AACjD,6EAA6E;AAC7E,mGAAmG;AAEnG,IAAI,aAAa,GAAG,UAAW,MAAM,EAAE,UAAU;IAEhD,IAAK,UAAU,KAAK,SAAS;QAAG,OAAO,CAAC,IAAI,CAAE,0EAA0E,CAAE,CAAC;IAC3H,IAAK,UAAU,KAAK,QAAQ;QAAG,OAAO,CAAC,KAAK,CAAE,0HAA0H,CAAE,CAAC;IAE3K,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAE7B,uCAAuC;IACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IAEpB,sEAAsE;IACtE,IAAI,CAAC,MAAM,GAAG,IAAI,eAAO,EAAE,CAAC;IAE5B,8DAA8D;IAC9D,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACrB,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;IAE5B,8DAA8D;IAC9D,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACjB,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;IAExB,4DAA4D;IAC5D,iCAAiC;IACjC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,UAAU;IAClC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU;IAExC,8DAA8D;IAC9D,0GAA0G;IAC1G,IAAI,CAAC,eAAe,GAAG,CAAE,QAAQ,CAAC,CAAC,UAAU;IAC7C,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,CAAC,UAAU;IAE3C,0CAA0C;IAC1C,gFAAgF;IAChF,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAE1B,gGAAgG;IAChG,kCAAkC;IAClC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;IAErB,mCAAmC;IACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;IAEvB,kCAAkC;IAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;IACpB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,8DAA8D;IAC9F,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,kCAAkC;IAE1D,wDAAwD;IACxD,oFAAoF;IACpF,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IACxB,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,sCAAsC;IAElE,0CAA0C;IAC1C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAEvB,sBAAsB;IACtB,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAExD,gBAAgB;IAChB,IAAI,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,aAAK,CAAC,MAAM,EAAE,MAAM,EAAE,aAAK,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,GAAG,EAAE,CAAC;IAElF,gBAAgB;IAChB,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,aAAK,CAAC,MAAM,EAAE,GAAG,EAAE,aAAK,CAAC,SAAS,EAAE,CAAC;IAE3D,YAAY;IACZ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACnC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC9C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAE9B,EAAE;IACF,iBAAiB;IACjB,EAAE;IAEF,IAAI,CAAC,aAAa,GAAG;QAEpB,OAAO,SAAS,CAAC,GAAG,CAAC;IAEtB,CAAC,CAAC;IAEF,IAAI,CAAC,iBAAiB,GAAG;QAExB,OAAO,SAAS,CAAC,KAAK,CAAC;IAExB,CAAC,CAAC;IAEF,IAAI,CAAC,SAAS,GAAG;QAEhB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAE,KAAK,CAAC,MAAM,CAAE,CAAC;QACnC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAE,CAAC;QAC9C,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IAEjC,CAAC,CAAC;IAEF,IAAI,CAAC,KAAK,GAAG;QAEZ,KAAK,CAAC,MAAM,CAAC,IAAI,CAAE,KAAK,CAAC,OAAO,CAAE,CAAC;QACnC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAE,KAAK,CAAC,SAAS,CAAE,CAAC;QAC9C,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;QAEhC,KAAK,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;QACtC,KAAK,CAAC,aAAa,CAAE,WAAW,CAAE,CAAC;QAEnC,KAAK,CAAC,MAAM,EAAE,CAAC;QAEf,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;IAEpB,CAAC,CAAC;IAEF,sFAAsF;IACtF,IAAI,CAAC,MAAM,GAAG;QAEb,IAAI,MAAM,GAAG,IAAI,eAAO,EAAE,CAAC;QAE3B,iCAAiC;QACjC,IAAI,IAAI,GAAG,IAAI,kBAAU,EAAE,CAAC,kBAAkB,CAAE,MAAM,CAAC,EAAE,EAAE,IAAI,eAAO,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAE,CAAC;QACpF,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC;QAExC,IAAI,YAAY,GAAG,IAAI,eAAO,EAAE,CAAC;QACjC,IAAI,cAAc,GAAG,IAAI,kBAAU,EAAE,CAAC;QAEtC,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;QAExB,OAAO,SAAS,MAAM;YAErB,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;YAErC,MAAM,CAAC,IAAI,CAAE,QAAQ,CAAE,CAAC,GAAG,CAAE,KAAK,CAAC,MAAM,CAAE,CAAC;YAE5C,wCAAwC;YACxC,MAAM,CAAC,eAAe,CAAE,IAAI,CAAE,CAAC;YAE/B,kCAAkC;YAClC,SAAS,CAAC,cAAc,CAAE,MAAM,CAAE,CAAC;YAEnC,IAAK,KAAK,CAAC,UAAU,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,EAAG;gBAE/C,UAAU,CAAE,oBAAoB,EAAE,CAAE,CAAC;aAErC;YAED,IAAK,KAAK,CAAC,aAAa,EAAG;gBAE1B,SAAS,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;gBAC9D,SAAS,CAAC,GAAG,IAAI,cAAc,CAAC,GAAG,GAAG,KAAK,CAAC,aAAa,CAAC;aAE1D;iBAAM;gBAEN,SAAS,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,CAAC;gBACxC,SAAS,CAAC,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC;aAEpC;YAED,8CAA8C;YAE9C,IAAI,GAAG,GAAG,KAAK,CAAC,eAAe,CAAC;YAChC,IAAI,GAAG,GAAG,KAAK,CAAC,eAAe,CAAC;YAEhC,IAAK,QAAQ,CAAE,GAAG,CAAE,IAAI,QAAQ,CAAE,GAAG,CAAE,EAAG;gBAEzC,IAAK,GAAG,GAAG,CAAE,IAAI,CAAC,EAAE;oBAAG,GAAG,IAAI,KAAK,CAAC;qBAAM,IAAK,GAAG,GAAG,IAAI,CAAC,EAAE;oBAAG,GAAG,IAAI,KAAK,CAAC;gBAE5E,IAAK,GAAG,GAAG,CAAE,IAAI,CAAC,EAAE;oBAAG,GAAG,IAAI,KAAK,CAAC;qBAAM,IAAK,GAAG,GAAG,IAAI,CAAC,EAAE;oBAAG,GAAG,IAAI,KAAK,CAAC;gBAE5E,IAAK,GAAG,IAAI,GAAG,EAAG;oBAEjB,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAE,GAAG,EAAE,SAAS,CAAC,KAAK,CAAE,CAAE,CAAC;iBAEpE;qBAAM;oBAEN,SAAS,CAAC,KAAK,GAAG,CAAE,SAAS,CAAC,KAAK,GAAG,CAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAC,CAAE,CAAC,CAAC;wBAC1D,IAAI,CAAC,GAAG,CAAE,GAAG,EAAE,SAAS,CAAC,KAAK,CAAE,CAAC,CAAC;wBAClC,IAAI,CAAC,GAAG,CAAE,GAAG,EAAE,SAAS,CAAC,KAAK,CAAE,CAAC;iBAElC;aAED;YAED,4CAA4C;YAC5C,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAE,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAE,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG,CAAE,CAAE,CAAC;YAEhG,SAAS,CAAC,QAAQ,EAAE,CAAC;YAGrB,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC;YAE1B,+CAA+C;YAC/C,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAE,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAE,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,MAAM,CAAE,CAAE,CAAC;YAElG,iCAAiC;YAEjC,IAAK,KAAK,CAAC,aAAa,KAAK,IAAI,EAAG;gBAEnC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAE,SAAS,EAAE,KAAK,CAAC,aAAa,CAAE,CAAC;aAE/D;iBAAM;gBAEN,KAAK,CAAC,MAAM,CAAC,GAAG,CAAE,SAAS,CAAE,CAAC;aAE9B;YAED,MAAM,CAAC,gBAAgB,CAAE,SAAS,CAAE,CAAC;YAErC,uDAAuD;YACvD,MAAM,CAAC,eAAe,CAAE,WAAW,CAAE,CAAC;YAEtC,QAAQ,CAAC,IAAI,CAAE,KAAK,CAAC,MAAM,CAAE,CAAC,GAAG,CAAE,MAAM,CAAE,CAAC;YAE5C,KAAK,CAAC,MAAM,CAAC,MAAM,CAAE,KAAK,CAAC,MAAM,CAAE,CAAC;YAEpC,IAAK,KAAK,CAAC,aAAa,KAAK,IAAI,EAAG;gBAEnC,cAAc,CAAC,KAAK,IAAI,CAAE,CAAC,GAAG,KAAK,CAAC,aAAa,CAAE,CAAC;gBACpD,cAAc,CAAC,GAAG,IAAI,CAAE,CAAC,GAAG,KAAK,CAAC,aAAa,CAAE,CAAC;gBAElD,SAAS,CAAC,cAAc,CAAE,CAAC,GAAG,KAAK,CAAC,aAAa,CAAE,CAAC;aAEpD;iBAAM;gBAEN,cAAc,CAAC,GAAG,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;gBAE9B,SAAS,CAAC,GAAG,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;aAEzB;YAED,KAAK,GAAG,CAAC,CAAC;YAEV,uBAAuB;YACvB,+DAA+D;YAC/D,yDAAyD;YAEzD,IAAK,WAAW;gBACf,YAAY,CAAC,iBAAiB,CAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAE,GAAG,GAAG;gBAC7D,CAAC,GAAG,CAAE,CAAC,GAAG,cAAc,CAAC,GAAG,CAAE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAE,CAAE,GAAG,GAAG,EAAG;gBAElE,KAAK,CAAC,aAAa,CAAE,WAAW,CAAE,CAAC;gBAEnC,YAAY,CAAC,IAAI,CAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAE,CAAC;gBAC3C,cAAc,CAAC,IAAI,CAAE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAE,CAAC;gBAC/C,WAAW,GAAG,KAAK,CAAC;gBAEpB,OAAO,IAAI,CAAC;aAEZ;YAED,OAAO,KAAK,CAAC;QAEd,CAAC,CAAC;IAEH,CAAC,EAAE,CAAC;IAEJ,IAAI,CAAC,OAAO,GAAG;QAEd,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAE,aAAa,EAAE,aAAa,EAAE,KAAK,CAAE,CAAC;QAE5E,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAE,aAAa,EAAE,aAAa,EAAE,KAAK,CAAE,CAAC;QAC5E,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAE,OAAO,EAAE,YAAY,EAAE,KAAK,CAAE,CAAC;QAErE,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAE,YAAY,EAAE,YAAY,EAAE,KAAK,CAAE,CAAC;QAC1E,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAE,UAAU,EAAE,UAAU,EAAE,KAAK,CAAE,CAAC;QACtE,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAE,CAAC;QAExE,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAE,aAAa,EAAE,aAAa,EAAE,KAAK,CAAE,CAAC;QAC1F,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAE,CAAC;QAEtF,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAE,CAAC;QAEpE,2EAA2E;IAE5E,CAAC,CAAC;IAEF,EAAE;IACF,YAAY;IACZ,EAAE;IAEF,IAAI,KAAK,GAAG,IAAI,CAAC;IAEjB,IAAI,WAAW,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACrC,IAAI,UAAU,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACnC,IAAI,QAAQ,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAE/B,IAAI,KAAK,GAAG;QACX,IAAI,EAAE,CAAE,CAAC;QACT,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,CAAC;QACR,GAAG,EAAE,CAAC;QACN,YAAY,EAAE,CAAC;QACf,SAAS,EAAE,CAAC;QACZ,eAAe,EAAE,CAAC;QAClB,kBAAkB,EAAE,CAAC;KACrB,CAAC;IAEF,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;IAEvB,IAAI,GAAG,GAAG,QAAQ,CAAC;IAEnB,4CAA4C;IAC5C,IAAI,SAAS,GAAG,IAAI,iBAAS,EAAE,CAAC;IAChC,IAAI,cAAc,GAAG,IAAI,iBAAS,EAAE,CAAC;IAErC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,SAAS,GAAG,IAAI,eAAO,EAAE,CAAC;IAC9B,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,IAAI,WAAW,GAAG,IAAI,eAAO,EAAE,CAAC;IAChC,IAAI,SAAS,GAAG,IAAI,eAAO,EAAE,CAAC;IAC9B,IAAI,WAAW,GAAG,IAAI,eAAO,EAAE,CAAC;IAEhC,IAAI,QAAQ,GAAG,IAAI,eAAO,EAAE,CAAC;IAC7B,IAAI,MAAM,GAAG,IAAI,eAAO,EAAE,CAAC;IAC3B,IAAI,QAAQ,GAAG,IAAI,eAAO,EAAE,CAAC;IAE7B,IAAI,UAAU,GAAG,IAAI,eAAO,EAAE,CAAC;IAC/B,IAAI,QAAQ,GAAG,IAAI,eAAO,EAAE,CAAC;IAC7B,IAAI,UAAU,GAAG,IAAI,eAAO,EAAE,CAAC;IAE/B,SAAS,oBAAoB;QAE5B,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,eAAe,CAAC;IAEtD,CAAC;IAED,SAAS,YAAY;QAEpB,OAAO,IAAI,CAAC,GAAG,CAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAE,CAAC;IAE1C,CAAC;IAED,SAAS,UAAU,CAAE,KAAK;QAEzB,cAAc,CAAC,KAAK,IAAI,KAAK,CAAC;IAE/B,CAAC;IAED,SAAS,QAAQ,CAAE,KAAK;QAEvB,cAAc,CAAC,GAAG,IAAI,KAAK,CAAC;IAE7B,CAAC;IAED,IAAI,OAAO,GAAG;QAEb,IAAI,CAAC,GAAG,IAAI,eAAO,EAAE,CAAC;QAEtB,OAAO,SAAS,OAAO,CAAE,QAAQ,EAAE,YAAY;YAE9C,CAAC,CAAC,mBAAmB,CAAE,YAAY,EAAE,CAAC,CAAE,CAAC,CAAC,+BAA+B;YACzE,CAAC,CAAC,cAAc,CAAE,CAAE,QAAQ,CAAE,CAAC;YAE/B,SAAS,CAAC,GAAG,CAAE,CAAC,CAAE,CAAC;QAEpB,CAAC,CAAC;IAEH,CAAC,EAAE,CAAC;IAEJ,IAAI,KAAK,GAAG;QAEX,IAAI,CAAC,GAAG,IAAI,eAAO,EAAE,CAAC;QAEtB,OAAO,SAAS,KAAK,CAAE,QAAQ,EAAE,YAAY;YAE5C,IAAK,KAAK,CAAC,kBAAkB,KAAK,IAAI,EAAG;gBAExC,CAAC,CAAC,mBAAmB,CAAE,YAAY,EAAE,CAAC,CAAE,CAAC;aAEzC;iBAAM;gBAEN,CAAC,CAAC,mBAAmB,CAAE,YAAY,EAAE,CAAC,CAAE,CAAC;gBACzC,CAAC,CAAC,YAAY,CAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC;aAErC;YAED,CAAC,CAAC,cAAc,CAAE,QAAQ,CAAE,CAAC;YAE7B,SAAS,CAAC,GAAG,CAAE,CAAC,CAAE,CAAC;QAEpB,CAAC,CAAC;IAEH,CAAC,EAAE,CAAC;IAEJ,+DAA+D;IAC/D,IAAI,GAAG,GAAG;QAET,IAAI,MAAM,GAAG,IAAI,eAAO,EAAE,CAAC;QAE3B,OAAO,SAAS,GAAG,CAAE,MAAM,EAAE,MAAM;YAElC,IAAI,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC;YAE/B,IAAK,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAG;gBAEvC,cAAc;gBACd,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAE,QAAQ,CAAE,CAAC,GAAG,CAAE,KAAK,CAAC,MAAM,CAAE,CAAC;gBAC5C,IAAI,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gBAErC,6CAA6C;gBAC7C,cAAc,IAAI,IAAI,CAAC,GAAG,CAAE,CAAE,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAE,CAAC;gBAEzE,uEAAuE;gBACvE,OAAO,CAAE,CAAC,GAAG,MAAM,GAAG,cAAc,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAE,CAAC;gBACnF,KAAK,CAAE,CAAC,GAAG,MAAM,GAAG,cAAc,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAE,CAAC;aAEjF;iBAAM,IAAK,KAAK,CAAC,MAAM,CAAC,oBAAoB,EAAG;gBAE/C,eAAe;gBACf,OAAO,CAAE,MAAM,GAAG,CAAE,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAE,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAE,CAAC;gBAC9H,KAAK,CAAE,MAAM,GAAG,CAAE,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAE,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAE,CAAC;aAE7H;iBAAM;gBAEN,8CAA8C;gBAC9C,OAAO,CAAC,IAAI,CAAE,8EAA8E,CAAE,CAAC;gBAC/F,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;aAExB;QAEF,CAAC,CAAC;IAEH,CAAC,EAAE,CAAC;IAEJ,SAAS,QAAQ,CAAE,UAAU;QAE5B,IAAK,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAG;YAEvC,KAAK,IAAI,UAAU,CAAC;SAEpB;aAAM,IAAK,KAAK,CAAC,MAAM,CAAC,oBAAoB,EAAG;YAE/C,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,UAAU,CAAE,CAAE,CAAC;YACzG,KAAK,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;YACtC,WAAW,GAAG,IAAI,CAAC;SAEnB;aAAM;YAEN,OAAO,CAAC,IAAI,CAAE,qFAAqF,CAAE,CAAC;YACtG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;SAEzB;IAEF,CAAC;IAED,SAAS,OAAO,CAAE,UAAU;QAE3B,IAAK,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAG;YAEvC,KAAK,IAAI,UAAU,CAAC;SAEpB;aAAM,IAAK,KAAK,CAAC,MAAM,CAAC,oBAAoB,EAAG;YAE/C,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,UAAU,CAAE,CAAE,CAAC;YACzG,KAAK,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;YACtC,WAAW,GAAG,IAAI,CAAC;SAEnB;aAAM;YAEN,OAAO,CAAC,IAAI,CAAE,qFAAqF,CAAE,CAAC;YACtG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;SAEzB;IAEF,CAAC;IAED,EAAE;IACF,4CAA4C;IAC5C,EAAE;IAEF,SAAS,qBAAqB,CAAE,KAAK;QAEpC,WAAW,CAAC,GAAG,CAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAE,CAAC;IAEjD,CAAC;IAED,SAAS,oBAAoB,CAAE,KAAK;QAEnC,UAAU,CAAC,GAAG,CAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAE,CAAC;IAEhD,CAAC;IAED,SAAS,kBAAkB,CAAE,KAAK;QAEjC,QAAQ,CAAC,GAAG,CAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAE,CAAC;IAE9C,CAAC;IAED,SAAS,qBAAqB,CAAE,KAAK;QAEpC,SAAS,CAAC,GAAG,CAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAE,CAAC;QAE9C,WAAW,CAAC,UAAU,CAAE,SAAS,EAAE,WAAW,CAAE,CAAC,cAAc,CAAE,KAAK,CAAC,WAAW,CAAE,CAAC;QAErF,IAAI,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC;QAE/B,UAAU,CAAE,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAE,CAAC,CAAC,cAAc;QAEhF,QAAQ,CAAE,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAE,CAAC;QAE/D,WAAW,CAAC,IAAI,CAAE,SAAS,CAAE,CAAC;QAE9B,KAAK,CAAC,MAAM,EAAE,CAAC;IAEhB,CAAC;IAED,SAAS,oBAAoB,CAAE,KAAK;QAEnC,QAAQ,CAAC,GAAG,CAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAE,CAAC;QAE7C,UAAU,CAAC,UAAU,CAAE,QAAQ,EAAE,UAAU,CAAE,CAAC;QAE9C,IAAK,UAAU,CAAC,CAAC,GAAG,CAAC,EAAG;YAEvB,QAAQ,CAAE,YAAY,EAAE,CAAE,CAAC;SAE3B;aAAM,IAAK,UAAU,CAAC,CAAC,GAAG,CAAC,EAAG;YAE9B,OAAO,CAAE,YAAY,EAAE,CAAE,CAAC;SAE1B;QAED,UAAU,CAAC,IAAI,CAAE,QAAQ,CAAE,CAAC;QAE5B,KAAK,CAAC,MAAM,EAAE,CAAC;IAEhB,CAAC;IAED,SAAS,kBAAkB,CAAE,KAAK;QAEjC,MAAM,CAAC,GAAG,CAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAE,CAAC;QAE3C,QAAQ,CAAC,UAAU,CAAE,MAAM,EAAE,QAAQ,CAAE,CAAC,cAAc,CAAE,KAAK,CAAC,QAAQ,CAAE,CAAC;QAEzE,GAAG,CAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAE,CAAC;QAE9B,QAAQ,CAAC,IAAI,CAAE,MAAM,CAAE,CAAC;QAExB,KAAK,CAAC,MAAM,EAAE,CAAC;IAEhB,CAAC;IAED,SAAS,aAAa,CAAC,CAAM;QAE5B,QAAQ;IAET,CAAC;IAED,SAAS,gBAAgB,CAAE,KAAK;QAE/B,IAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAG;YAEvB,OAAO,CAAE,YAAY,EAAE,CAAE,CAAC;SAE1B;aAAM,IAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAG;YAE9B,QAAQ,CAAE,YAAY,EAAE,CAAE,CAAC;SAE3B;QAED,KAAK,CAAC,MAAM,EAAE,CAAC;IAEhB,CAAC;IAED,SAAS,aAAa,CAAE,KAAK;QAE5B,IAAI,WAAW,GAAG,KAAK,CAAC;QAExB,QAAS,KAAK,CAAC,OAAO,EAAG;YAExB,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE;gBACjB,GAAG,CAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAE,CAAC;gBAC5B,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM;YAEP,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM;gBACrB,GAAG,CAAE,CAAC,EAAE,CAAE,KAAK,CAAC,WAAW,CAAE,CAAC;gBAC9B,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM;YAEP,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI;gBACnB,GAAG,CAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAE,CAAC;gBAC5B,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM;YAEP,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK;gBACpB,GAAG,CAAE,CAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAE,CAAC;gBAC9B,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM;SAEP;QAED,IAAK,WAAW,EAAG;YAElB,oDAAoD;YACpD,KAAK,CAAC,cAAc,EAAE,CAAC;YAEvB,KAAK,CAAC,MAAM,EAAE,CAAC;SAEf;IAGF,CAAC;IAED,SAAS,sBAAsB,CAAE,KAAK;QAErC,IAAK,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAG;YAEhC,WAAW,CAAC,GAAG,CAAE,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,CAAE,CAAC;SAEtE;aAAM;YAEN,IAAI,CAAC,GAAG,GAAG,GAAG,CAAE,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,CAAE,CAAC;YACtE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAE,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,CAAE,CAAC;YAEtE,WAAW,CAAC,GAAG,CAAE,CAAC,EAAE,CAAC,CAAE,CAAC;SAExB;IAEF,CAAC;IAED,SAAS,mBAAmB,CAAE,KAAK;QAElC,IAAK,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAG;YAEhC,QAAQ,CAAC,GAAG,CAAE,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,CAAE,CAAC;SAEnE;aAAM;YAEN,IAAI,CAAC,GAAG,GAAG,GAAG,CAAE,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,CAAE,CAAC;YACtE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAE,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,CAAE,CAAC;YAEtE,QAAQ,CAAC,GAAG,CAAE,CAAC,EAAE,CAAC,CAAE,CAAC;SAErB;IAEF,CAAC;IAED,SAAS,qBAAqB,CAAE,KAAK;QAEpC,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,CAAC;QAC7D,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,CAAC;QAE7D,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAE,CAAC;QAE9C,UAAU,CAAC,GAAG,CAAE,CAAC,EAAE,QAAQ,CAAE,CAAC;IAE/B,CAAC;IAED,SAAS,wBAAwB,CAAE,KAAK;QAEvC,IAAK,KAAK,CAAC,UAAU;YAAG,qBAAqB,CAAE,KAAK,CAAE,CAAC;QAEvD,IAAK,KAAK,CAAC,SAAS;YAAG,mBAAmB,CAAE,KAAK,CAAE,CAAC;IAErD,CAAC;IAED,SAAS,2BAA2B,CAAE,KAAK;QAE1C,IAAK,KAAK,CAAC,UAAU;YAAG,qBAAqB,CAAE,KAAK,CAAE,CAAC;QAEvD,IAAK,KAAK,CAAC,YAAY;YAAG,sBAAsB,CAAE,KAAK,CAAE,CAAC;IAE3D,CAAC;IAED,SAAS,qBAAqB,CAAE,KAAK;QAEpC,IAAK,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAG;YAEhC,SAAS,CAAC,GAAG,CAAE,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,CAAE,CAAC;SAEpE;aAAM;YAEN,IAAI,CAAC,GAAG,GAAG,GAAG,CAAE,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,CAAE,CAAC;YACtE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAE,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,CAAE,CAAC;YAEtE,SAAS,CAAC,GAAG,CAAE,CAAC,EAAE,CAAC,CAAE,CAAC;SAEtB;QAED,WAAW,CAAC,UAAU,CAAE,SAAS,EAAE,WAAW,CAAE,CAAC,cAAc,CAAE,KAAK,CAAC,WAAW,CAAE,CAAC;QAErF,IAAI,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC;QAE/B,UAAU,CAAE,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAE,CAAC,CAAC,cAAc;QAEhF,QAAQ,CAAE,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAE,CAAC;QAE/D,WAAW,CAAC,IAAI,CAAE,SAAS,CAAE,CAAC;IAE/B,CAAC;IAED,SAAS,kBAAkB,CAAE,KAAK;QAEjC,IAAK,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAG;YAEhC,MAAM,CAAC,GAAG,CAAE,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,CAAE,CAAC;SAEjE;aAAM;YAEN,IAAI,CAAC,GAAG,GAAG,GAAG,CAAE,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,CAAE,CAAC;YACtE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAE,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,CAAE,CAAC;YAEtE,MAAM,CAAC,GAAG,CAAE,CAAC,EAAE,CAAC,CAAE,CAAC;SAEnB;QAED,QAAQ,CAAC,UAAU,CAAE,MAAM,EAAE,QAAQ,CAAE,CAAC,cAAc,CAAE,KAAK,CAAC,QAAQ,CAAE,CAAC;QAEzE,GAAG,CAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAE,CAAC;QAE9B,QAAQ,CAAC,IAAI,CAAE,MAAM,CAAE,CAAC;IAEzB,CAAC;IAED,SAAS,oBAAoB,CAAE,KAAK;QAEnC,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,CAAC;QAC7D,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,CAAC,KAAK,CAAC;QAE7D,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAE,CAAC;QAE9C,QAAQ,CAAC,GAAG,CAAE,CAAC,EAAE,QAAQ,CAAE,CAAC;QAE5B,UAAU,CAAC,GAAG,CAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAE,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAE,CAAE,CAAC;QAE5E,QAAQ,CAAE,UAAU,CAAC,CAAC,CAAE,CAAC;QAEzB,UAAU,CAAC,IAAI,CAAE,QAAQ,CAAE,CAAC;IAE7B,CAAC;IAED,SAAS,uBAAuB,CAAE,KAAK;QAEtC,IAAK,KAAK,CAAC,UAAU;YAAG,oBAAoB,CAAE,KAAK,CAAE,CAAC;QAEtD,IAAK,KAAK,CAAC,SAAS;YAAG,kBAAkB,CAAE,KAAK,CAAE,CAAC;IAEpD,CAAC;IAED,SAAS,0BAA0B,CAAE,KAAK;QAEzC,IAAK,KAAK,CAAC,UAAU;YAAG,oBAAoB,CAAE,KAAK,CAAE,CAAC;QAEtD,IAAK,KAAK,CAAC,YAAY;YAAG,qBAAqB,CAAE,KAAK,CAAE,CAAC;IAE1D,CAAC;IAED,SAAS,cAAc,CAAC,CAAM;QAE7B,QAAQ;IAET,CAAC;IAED,EAAE;IACF,0DAA0D;IAC1D,EAAE;IAEF,SAAS,aAAa,CAAE,KAAK;QAE5B,IAAK,KAAK,CAAC,OAAO,KAAK,KAAK;YAAG,OAAO;QAEtC,QAAS,KAAK,CAAC,WAAW,EAAG;YAE5B,KAAK,OAAO,CAAC;YACb,KAAK,KAAK;gBACT,WAAW,CAAE,KAAK,CAAE,CAAC;gBACrB,MAAM;YAEP,aAAa;SAEb;IAEF,CAAC;IAED,SAAS,aAAa,CAAE,KAAK;QAE5B,IAAK,KAAK,CAAC,OAAO,KAAK,KAAK;YAAG,OAAO;QAEtC,QAAS,KAAK,CAAC,WAAW,EAAG;YAE5B,KAAK,OAAO,CAAC;YACb,KAAK,KAAK;gBACT,WAAW,CAAE,KAAK,CAAE,CAAC;gBACrB,MAAM;YAEP,aAAa;SAEb;IAEF,CAAC;IAED,SAAS,WAAW,CAAE,KAAK;QAE1B,QAAS,KAAK,CAAC,WAAW,EAAG;YAE5B,KAAK,OAAO,CAAC;YACb,KAAK,KAAK;gBACT,SAAS,CAAE,KAAK,CAAE,CAAC;gBACnB,MAAM;YAEP,aAAa;SAEb;IAEF,CAAC;IAED,SAAS,WAAW,CAAE,KAAK;QAE1B,sCAAsC;QACtC,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,4DAA4D;QAC5D,sDAAsD;QAEtD,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAEnE,IAAI,WAAW,CAAC;QAEhB,QAAS,KAAK,CAAC,MAAM,EAAG;YAEvB,KAAK,CAAC;gBAEL,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;gBACtC,MAAM;YAEP,KAAK,CAAC;gBAEL,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC;gBACxC,MAAM;YAEP,KAAK,CAAC;gBAEL,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;gBACvC,MAAM;YAEP;gBAEC,WAAW,GAAG,CAAE,CAAC,CAAC;SAEnB;QAED,QAAS,WAAW,EAAG;YAEtB,KAAK,aAAK,CAAC,KAAK;gBAEf,IAAK,KAAK,CAAC,UAAU,KAAK,KAAK;oBAAG,OAAO;gBAEzC,oBAAoB,CAAE,KAAK,CAAE,CAAC;gBAE9B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAEpB,MAAM;YAEP,KAAK,aAAK,CAAC,MAAM;gBAEhB,IAAK,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAG;oBAEvD,IAAK,KAAK,CAAC,SAAS,KAAK,KAAK;wBAAG,OAAO;oBAExC,kBAAkB,CAAE,KAAK,CAAE,CAAC;oBAE5B,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;iBAElB;qBAAM;oBAEN,IAAK,KAAK,CAAC,YAAY,KAAK,KAAK;wBAAG,OAAO;oBAE3C,qBAAqB,CAAE,KAAK,CAAE,CAAC;oBAE/B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;iBAErB;gBAED,MAAM;YAEP,KAAK,aAAK,CAAC,GAAG;gBAEb,IAAK,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAG;oBAEvD,IAAK,KAAK,CAAC,YAAY,KAAK,KAAK;wBAAG,OAAO;oBAE3C,qBAAqB,CAAE,KAAK,CAAE,CAAC;oBAE/B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;iBAErB;qBAAM;oBAEN,IAAK,KAAK,CAAC,SAAS,KAAK,KAAK;wBAAG,OAAO;oBAExC,kBAAkB,CAAE,KAAK,CAAE,CAAC;oBAE5B,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;iBAElB;gBAED,MAAM;YAEP;gBAEC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;SAEpB;QAED,IAAK,KAAK,KAAK,KAAK,CAAC,IAAI,EAAG;YAE3B,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAE,aAAa,EAAE,aAAa,EAAE,KAAK,CAAE,CAAC;YACvF,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAE,CAAC;YAEnF,KAAK,CAAC,aAAa,CAAE,UAAU,CAAE,CAAC;SAElC;IAEF,CAAC;IAED,SAAS,WAAW,CAAE,KAAK;QAE1B,IAAK,KAAK,CAAC,OAAO,KAAK,KAAK;YAAG,OAAO;QAEtC,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,QAAS,KAAK,EAAG;YAEhB,KAAK,KAAK,CAAC,MAAM;gBAEhB,IAAK,KAAK,CAAC,YAAY,KAAK,KAAK;oBAAG,OAAO;gBAE3C,qBAAqB,CAAE,KAAK,CAAE,CAAC;gBAE/B,MAAM;YAEP,KAAK,KAAK,CAAC,KAAK;gBAEf,IAAK,KAAK,CAAC,UAAU,KAAK,KAAK;oBAAG,OAAO;gBAEzC,oBAAoB,CAAE,KAAK,CAAE,CAAC;gBAE9B,MAAM;YAEP,KAAK,KAAK,CAAC,GAAG;gBAEb,IAAK,KAAK,CAAC,SAAS,KAAK,KAAK;oBAAG,OAAO;gBAExC,kBAAkB,CAAE,KAAK,CAAE,CAAC;gBAE5B,MAAM;SAEP;IAEF,CAAC;IAED,SAAS,SAAS,CAAE,KAAK;QAExB,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAE,aAAa,EAAE,aAAa,EAAE,KAAK,CAAE,CAAC;QAC1F,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAE,CAAC;QAEtF,IAAK,KAAK,CAAC,OAAO,KAAK,KAAK;YAAG,OAAO;QAEtC,aAAa,CAAE,KAAK,CAAE,CAAC;QAEvB,KAAK,CAAC,aAAa,CAAE,QAAQ,CAAE,CAAC;QAEhC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;IAEpB,CAAC;IAED,SAAS,YAAY,CAAE,KAAK;QAE3B,IAAK,KAAK,CAAC,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,IAAI,CAAE,KAAK,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,CAAE;YAAG,OAAO;QAE1H,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,KAAK,CAAC,aAAa,CAAE,UAAU,CAAE,CAAC;QAElC,gBAAgB,CAAE,KAAK,CAAE,CAAC;QAE1B,KAAK,CAAC,aAAa,CAAE,QAAQ,CAAE,CAAC;IAEjC,CAAC;IAED,SAAS,SAAS,CAAE,KAAK;QAExB,IAAK,KAAK,CAAC,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK;YAAG,OAAO;QAEjG,aAAa,CAAE,KAAK,CAAE,CAAC;IAExB,CAAC;IAED,SAAS,YAAY,CAAE,KAAK;QAE3B,IAAK,KAAK,CAAC,OAAO,KAAK,KAAK;YAAG,OAAO;QAEtC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,oBAAoB;QAE5C,QAAS,KAAK,CAAC,OAAO,CAAC,MAAM,EAAG;YAE/B,KAAK,CAAC;gBAEL,QAAS,KAAK,CAAC,OAAO,CAAC,GAAG,EAAG;oBAE5B,KAAK,aAAK,CAAC,MAAM;wBAEhB,IAAK,KAAK,CAAC,YAAY,KAAK,KAAK;4BAAG,OAAO;wBAE3C,sBAAsB,CAAE,KAAK,CAAE,CAAC;wBAEhC,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC;wBAE3B,MAAM;oBAEP,KAAK,aAAK,CAAC,GAAG;wBAEb,IAAK,KAAK,CAAC,SAAS,KAAK,KAAK;4BAAG,OAAO;wBAExC,mBAAmB,CAAE,KAAK,CAAE,CAAC;wBAE7B,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;wBAExB,MAAM;oBAEP;wBAEC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;iBAEpB;gBAED,MAAM;YAEP,KAAK,CAAC;gBAEL,QAAS,KAAK,CAAC,OAAO,CAAC,GAAG,EAAG;oBAE5B,KAAK,aAAK,CAAC,SAAS;wBAEnB,IAAK,KAAK,CAAC,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK;4BAAG,OAAO;wBAEtE,wBAAwB,CAAE,KAAK,CAAE,CAAC;wBAElC,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC;wBAE9B,MAAM;oBAEP,KAAK,aAAK,CAAC,YAAY;wBAEtB,IAAK,KAAK,CAAC,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,YAAY,KAAK,KAAK;4BAAG,OAAO;wBAEzE,2BAA2B,CAAE,KAAK,CAAE,CAAC;wBAErC,KAAK,GAAG,KAAK,CAAC,kBAAkB,CAAC;wBAEjC,MAAM;oBAEP;wBAEC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;iBAEpB;gBAED,MAAM;YAEP;gBAEC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;SAEpB;QAED,IAAK,KAAK,KAAK,KAAK,CAAC,IAAI,EAAG;YAE3B,KAAK,CAAC,aAAa,CAAE,UAAU,CAAE,CAAC;SAElC;IAEF,CAAC;IAED,SAAS,WAAW,CAAE,KAAK;QAE1B,IAAK,KAAK,CAAC,OAAO,KAAK,KAAK;YAAG,OAAO;QAEtC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,oBAAoB;QAC5C,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,QAAS,KAAK,EAAG;YAEhB,KAAK,KAAK,CAAC,YAAY;gBAEtB,IAAK,KAAK,CAAC,YAAY,KAAK,KAAK;oBAAG,OAAO;gBAE3C,qBAAqB,CAAE,KAAK,CAAE,CAAC;gBAE/B,KAAK,CAAC,MAAM,EAAE,CAAC;gBAEf,MAAM;YAEP,KAAK,KAAK,CAAC,SAAS;gBAEnB,IAAK,KAAK,CAAC,SAAS,KAAK,KAAK;oBAAG,OAAO;gBAExC,kBAAkB,CAAE,KAAK,CAAE,CAAC;gBAE5B,KAAK,CAAC,MAAM,EAAE,CAAC;gBAEf,MAAM;YAEP,KAAK,KAAK,CAAC,eAAe;gBAEzB,IAAK,KAAK,CAAC,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK;oBAAG,OAAO;gBAEtE,uBAAuB,CAAE,KAAK,CAAE,CAAC;gBAEjC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAEf,MAAM;YAEP,KAAK,KAAK,CAAC,kBAAkB;gBAE5B,IAAK,KAAK,CAAC,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,YAAY,KAAK,KAAK;oBAAG,OAAO;gBAEzE,0BAA0B,CAAE,KAAK,CAAE,CAAC;gBAEpC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAEf,MAAM;YAEP;gBAEC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;SAEpB;IAEF,CAAC;IAED,SAAS,UAAU,CAAE,KAAK;QAEzB,IAAK,KAAK,CAAC,OAAO,KAAK,KAAK;YAAG,OAAO;QAEtC,cAAc,CAAE,KAAK,CAAE,CAAC;QAExB,KAAK,CAAC,aAAa,CAAE,QAAQ,CAAE,CAAC;QAEhC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;IAEpB,CAAC;IAED,SAAS,aAAa,CAAE,KAAK;QAE5B,IAAK,KAAK,CAAC,OAAO,KAAK,KAAK;YAAG,OAAO;QAEtC,KAAK,CAAC,cAAc,EAAE,CAAC;IAExB,CAAC;IAED,EAAE;IAEF,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAE,aAAa,EAAE,aAAa,EAAE,KAAK,CAAE,CAAC;IAEzE,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAE,aAAa,EAAE,aAAa,EAAE,KAAK,CAAE,CAAC;IACzE,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAE,OAAO,EAAE,YAAY,EAAE,KAAK,CAAE,CAAC;IAElE,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAE,YAAY,EAAE,YAAY,EAAE,KAAK,CAAE,CAAC;IACvE,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAE,UAAU,EAAE,UAAU,EAAE,KAAK,CAAE,CAAC;IACnE,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAE,CAAC;IAErE,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAE,CAAC;IAEjE,2BAA2B;IAE3B,IAAI,CAAC,MAAM,EAAE,CAAC;AAEf,CAAC,CAAC;AA+BO,sCAAa;AA7BtB,aAAa,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAE,uBAAe,CAAC,SAAS,CAAE,CAAC;AACrE,aAAa,CAAC,SAAS,CAAC,WAAW,GAAG,aAAa,CAAC;AAGpD,2EAA2E;AAC3E,uFAAuF;AACvF,uEAAuE;AACvE,EAAE;AACF,wFAAwF;AACxF,6EAA6E;AAC7E,8DAA8D;AAE9D,IAAI,WAAW,GAAG,UAAW,MAAM,EAAE,UAAU;IAE9C,aAAa,CAAC,IAAI,CAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAE,CAAC;IAE/C,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,CAAC,oDAAoD;IAErF,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,aAAK,CAAC,GAAG,CAAC;IACnC,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,aAAK,CAAC,MAAM,CAAC;IAEvC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,aAAK,CAAC,GAAG,CAAC;IAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,aAAK,CAAC,YAAY,CAAC;AAEvC,CAAC,CAAC;AAKsB,kCAAW;AAHnC,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAE,uBAAe,CAAC,SAAS,CAAE,CAAC;AACnE,WAAW,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/constants.d.ts b/packages/quick-3d-mmo-shared/dist/constants.d.ts
new file mode 100644
index 00000000..7493fa09
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/constants.d.ts
@@ -0,0 +1,102 @@
+declare enum STATE_TYPES {
+ ATTACK = "attack",
+ DANCE = "dance",
+ DEATH = "death",
+ IDLE = "idle",
+ RUN = "run",
+ WALK = "walk"
+}
+declare enum ANIM_TYPES {
+ ATTACK = "Attack",
+ DANCE = "Dance",
+ DEATH = "Death",
+ IDLE = "Idle",
+ RUN = "Run",
+ WALK = "Walk"
+}
+declare enum EVENT_TYPES {
+ ACTION_ATTACK = "action.attack",
+ ATTACK = "attack",
+ ATTACK_DAMAGE = "attack.damage",
+ CHAT_MESSAGE = "chat.message",
+ CHAT_MSG = "chat.msg",
+ HEALTH_ADD_EXPERIENCE = "health.add-experience",
+ HEALTH_DAMAGE = "health.damage",
+ HEALTH_DEATH = "health.death",
+ HEALTH_LEVEL = "health.level",
+ HEALTH_UPDATE = "health.update",
+ INVENTORY_EQUIP = "inventory.equip",
+ INVENTORY_UPDATED = "inventory.updated",
+ LOAD_CHARACTER = "load.character",
+ LOAD_WEAPON = "load.weapon",
+ LOGIN_COMMIT = "login.commit",
+ NETWORK_INVENTORY = "network.inventory",
+ PLAYER_ACTION = "player.action",
+ STATS_NETWORK = "stats.network",
+ WORLD_INVENTORY = "world.inventory",
+ WORLD_PLAYER = "world.player",
+ WORLD_STATS = "world.stats",
+ WORLD_UPDATE = "world.update",
+ CONNECT = "connect",
+ NETWORK_UPDATE = "network.update",
+ EVENTS_NETWORK = "events.network",
+ INPUT_PICKED = "input.picked"
+}
+declare type IEVENT_TYPES = Record;
+declare enum KNOWN_ENTITIES {
+ DATABASE = "database",
+ INVENTORY_CONTROLLER = "InventoryController",
+ INVENTORY_DATABASE_CONTROLLER = "InventoryDatabaseController",
+ LEVEL_UP_SPAWNER = "level-up-spawner",
+ SPAWNERS = "spawners",
+ LOADER = "loader",
+ SCENERY = "scenery",
+ TERRAIN = "terrain",
+ UI = "ui",
+ NETWORK = "network",
+ PLAYER = "player"
+}
+declare enum NAMED_COMPONENTS {
+ LEVEL_UP_SPAWNER = "LevelUpComponentSpawner",
+ PLAYER_SPAWNER = "PlayerSpawner",
+ NETWORK_ENTITY_SPAWNER = "NetworkEntitySpawner",
+ UI_CONTROLLER = "UIController",
+ THREEJS_CONTROLLER = "ThreeJSController",
+ NETWORK_CONTROLLER = "NetworkController"
+}
+declare enum INVENTORY_TYPES {
+ DEFAULT_PREFIX = "inventory-",
+ EQUIP_PREFIX = "inventory-equip-"
+}
+declare enum CLASS_TYPES_ENUM {
+ PALADIN = "paladin",
+ SORCEROR = "sorceror",
+ WARROK = "warrok",
+ ZOMBIE = "zombie"
+}
+declare enum WEAPON_TYPES_ENUM {
+ AXE = "weapon.axe1",
+ HAMMER = "weapon.hammer1",
+ SWORD = "weapon.sword1"
+}
+declare const CLASS_TYPES: CLASS_TYPES_ENUM[];
+declare enum ATTACK_TYPES {
+ MELEE = "melee"
+}
+declare const _TIMEOUT: number;
+declare enum DOM_IDS {
+ HEALTH_BAR = "health-bar",
+ STATS_BENCHPRESS = "stats-benchpress",
+ STATS_CURL = "stats-curl",
+ STATS_EXPERIENCE = "stats-experience",
+ STATS_STRENGTH = "stats-strength",
+ STATS_WISDOMNESS = "stats-wisdomness",
+ LOGIN_INPUT = "login-input",
+ LOGIN_UI = "login-ui",
+ LOGIN_BUTTON = "login-button",
+ THREEJS = "threejs",
+ QUEST_UI = "quest-ui"
+}
+export type { IEVENT_TYPES };
+export { _TIMEOUT, ATTACK_TYPES, CLASS_TYPES_ENUM, CLASS_TYPES, DOM_IDS, EVENT_TYPES, INVENTORY_TYPES, KNOWN_ENTITIES, NAMED_COMPONENTS, STATE_TYPES, WEAPON_TYPES_ENUM, ANIM_TYPES, };
+//# sourceMappingURL=constants.d.ts.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/constants.d.ts.map b/packages/quick-3d-mmo-shared/dist/constants.d.ts.map
new file mode 100644
index 00000000..5910579d
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/constants.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,aAAK,WAAW;IACZ,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,IAAI,SAAS;CAChB;AAED,aAAK,UAAU;IACX,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,IAAI,SAAS;CAChB;AAED,aAAK,WAAW;IACZ,aAAa,kBAAkB;IAC/B,MAAM,WAAW;IACjB,aAAa,kBAAkB;IAC/B,YAAY,iBAAiB;IAC7B,QAAQ,aAAa;IACrB,qBAAqB,0BAA0B;IAC/C,aAAa,kBAAkB;IAC/B,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,eAAe,oBAAoB;IACnC,iBAAiB,sBAAsB;IACvC,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,iBAAiB,sBAAsB;IACvC,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,eAAe,oBAAoB;IACnC,YAAY,iBAAiB;IAC7B,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,OAAO,YAAY;IACnB,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,YAAY,iBAAiB;CAChC;AAED,aAAK,YAAY,GAAG,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAEhD,aAAK,cAAc;IACf,QAAQ,aAAa;IACrB,oBAAoB,wBAAwB;IAC5C,6BAA6B,gCAAgC;IAC7D,gBAAgB,qBAAqB;IACrC,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,EAAE,OAAO;IACT,OAAO,YAAY;IACnB,MAAM,WAAW;CACpB;AAED,aAAK,gBAAgB;IACjB,gBAAgB,4BAA4B;IAC5C,cAAc,kBAAkB;IAChC,sBAAsB,yBAAyB;IAC/C,aAAa,iBAAiB;IAC9B,kBAAkB,sBAAsB;IACxC,kBAAkB,sBAAsB;CAC3C;AAED,aAAK,eAAe;IAChB,cAAc,eAAe;IAC7B,YAAY,qBAAqB;CACpC;AAED,aAAK,gBAAgB;IACjB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,MAAM,WAAW;CACpB;AAED,aAAK,iBAAiB;IAClB,GAAG,gBAAgB;IACnB,MAAM,mBAAmB;IACzB,KAAK,kBAAkB;CAC1B;AAED,QAAA,MAAM,WAAW,oBAAwD,CAAC;AAE1E,aAAK,YAAY;IACb,KAAK,UAAU;CAClB;AAED,QAAA,MAAM,QAAQ,EAAC,MAAc,CAAC;AAE9B,aAAK,OAAO;IACR,UAAU,eAAe;IACzB,gBAAgB,qBAAqB;IACrC,UAAU,eAAe;IACzB,gBAAgB,qBAAqB;IACrC,cAAc,mBAAmB;IACjC,gBAAgB,qBAAqB;IACrC,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;IACrB,YAAY,iBAAiB;IAC7B,OAAO,YAAY;IACnB,QAAQ,aAAa;CACxB;AAED,YAAY,EACR,YAAY,EACf,CAAA;AAED,OAAO,EACH,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,OAAO,EACP,WAAW,EACX,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,UAAU,GACb,CAAC"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/constants.js b/packages/quick-3d-mmo-shared/dist/constants.js
new file mode 100644
index 00000000..49877fae
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/constants.js
@@ -0,0 +1,124 @@
+"use strict";
+exports.__esModule = true;
+exports.ANIM_TYPES = exports.WEAPON_TYPES_ENUM = exports.STATE_TYPES = exports.NAMED_COMPONENTS = exports.KNOWN_ENTITIES = exports.INVENTORY_TYPES = exports.EVENT_TYPES = exports.DOM_IDS = exports.CLASS_TYPES = exports.CLASS_TYPES_ENUM = exports.ATTACK_TYPES = exports._TIMEOUT = void 0;
+var STATE_TYPES;
+(function (STATE_TYPES) {
+ STATE_TYPES["ATTACK"] = "attack";
+ STATE_TYPES["DANCE"] = "dance";
+ STATE_TYPES["DEATH"] = "death";
+ STATE_TYPES["IDLE"] = "idle";
+ STATE_TYPES["RUN"] = "run";
+ STATE_TYPES["WALK"] = "walk";
+})(STATE_TYPES || (STATE_TYPES = {}));
+exports.STATE_TYPES = STATE_TYPES;
+var ANIM_TYPES;
+(function (ANIM_TYPES) {
+ ANIM_TYPES["ATTACK"] = "Attack";
+ ANIM_TYPES["DANCE"] = "Dance";
+ ANIM_TYPES["DEATH"] = "Death";
+ ANIM_TYPES["IDLE"] = "Idle";
+ ANIM_TYPES["RUN"] = "Run";
+ ANIM_TYPES["WALK"] = "Walk";
+})(ANIM_TYPES || (ANIM_TYPES = {}));
+exports.ANIM_TYPES = ANIM_TYPES;
+var EVENT_TYPES;
+(function (EVENT_TYPES) {
+ EVENT_TYPES["ACTION_ATTACK"] = "action.attack";
+ EVENT_TYPES["ATTACK"] = "attack";
+ EVENT_TYPES["ATTACK_DAMAGE"] = "attack.damage";
+ EVENT_TYPES["CHAT_MESSAGE"] = "chat.message";
+ EVENT_TYPES["CHAT_MSG"] = "chat.msg";
+ EVENT_TYPES["HEALTH_ADD_EXPERIENCE"] = "health.add-experience";
+ EVENT_TYPES["HEALTH_DAMAGE"] = "health.damage";
+ EVENT_TYPES["HEALTH_DEATH"] = "health.death";
+ EVENT_TYPES["HEALTH_LEVEL"] = "health.level";
+ EVENT_TYPES["HEALTH_UPDATE"] = "health.update";
+ EVENT_TYPES["INVENTORY_EQUIP"] = "inventory.equip";
+ EVENT_TYPES["INVENTORY_UPDATED"] = "inventory.updated";
+ EVENT_TYPES["LOAD_CHARACTER"] = "load.character";
+ EVENT_TYPES["LOAD_WEAPON"] = "load.weapon";
+ EVENT_TYPES["LOGIN_COMMIT"] = "login.commit";
+ EVENT_TYPES["NETWORK_INVENTORY"] = "network.inventory";
+ EVENT_TYPES["PLAYER_ACTION"] = "player.action";
+ EVENT_TYPES["STATS_NETWORK"] = "stats.network";
+ EVENT_TYPES["WORLD_INVENTORY"] = "world.inventory";
+ EVENT_TYPES["WORLD_PLAYER"] = "world.player";
+ EVENT_TYPES["WORLD_STATS"] = "world.stats";
+ EVENT_TYPES["WORLD_UPDATE"] = "world.update";
+ EVENT_TYPES["CONNECT"] = "connect";
+ EVENT_TYPES["NETWORK_UPDATE"] = "network.update";
+ EVENT_TYPES["EVENTS_NETWORK"] = "events.network";
+ EVENT_TYPES["INPUT_PICKED"] = "input.picked";
+})(EVENT_TYPES || (EVENT_TYPES = {}));
+exports.EVENT_TYPES = EVENT_TYPES;
+var KNOWN_ENTITIES;
+(function (KNOWN_ENTITIES) {
+ KNOWN_ENTITIES["DATABASE"] = "database";
+ KNOWN_ENTITIES["INVENTORY_CONTROLLER"] = "InventoryController";
+ KNOWN_ENTITIES["INVENTORY_DATABASE_CONTROLLER"] = "InventoryDatabaseController";
+ KNOWN_ENTITIES["LEVEL_UP_SPAWNER"] = "level-up-spawner";
+ KNOWN_ENTITIES["SPAWNERS"] = "spawners";
+ KNOWN_ENTITIES["LOADER"] = "loader";
+ KNOWN_ENTITIES["SCENERY"] = "scenery";
+ KNOWN_ENTITIES["TERRAIN"] = "terrain";
+ KNOWN_ENTITIES["UI"] = "ui";
+ KNOWN_ENTITIES["NETWORK"] = "network";
+ KNOWN_ENTITIES["PLAYER"] = "player";
+})(KNOWN_ENTITIES || (KNOWN_ENTITIES = {}));
+exports.KNOWN_ENTITIES = KNOWN_ENTITIES;
+var NAMED_COMPONENTS;
+(function (NAMED_COMPONENTS) {
+ NAMED_COMPONENTS["LEVEL_UP_SPAWNER"] = "LevelUpComponentSpawner";
+ NAMED_COMPONENTS["PLAYER_SPAWNER"] = "PlayerSpawner";
+ NAMED_COMPONENTS["NETWORK_ENTITY_SPAWNER"] = "NetworkEntitySpawner";
+ NAMED_COMPONENTS["UI_CONTROLLER"] = "UIController";
+ NAMED_COMPONENTS["THREEJS_CONTROLLER"] = "ThreeJSController";
+ NAMED_COMPONENTS["NETWORK_CONTROLLER"] = "NetworkController";
+})(NAMED_COMPONENTS || (NAMED_COMPONENTS = {}));
+exports.NAMED_COMPONENTS = NAMED_COMPONENTS;
+var INVENTORY_TYPES;
+(function (INVENTORY_TYPES) {
+ INVENTORY_TYPES["DEFAULT_PREFIX"] = "inventory-";
+ INVENTORY_TYPES["EQUIP_PREFIX"] = "inventory-equip-";
+})(INVENTORY_TYPES || (INVENTORY_TYPES = {}));
+exports.INVENTORY_TYPES = INVENTORY_TYPES;
+var CLASS_TYPES_ENUM;
+(function (CLASS_TYPES_ENUM) {
+ CLASS_TYPES_ENUM["PALADIN"] = "paladin";
+ CLASS_TYPES_ENUM["SORCEROR"] = "sorceror";
+ CLASS_TYPES_ENUM["WARROK"] = "warrok";
+ CLASS_TYPES_ENUM["ZOMBIE"] = "zombie";
+})(CLASS_TYPES_ENUM || (CLASS_TYPES_ENUM = {}));
+exports.CLASS_TYPES_ENUM = CLASS_TYPES_ENUM;
+var WEAPON_TYPES_ENUM;
+(function (WEAPON_TYPES_ENUM) {
+ WEAPON_TYPES_ENUM["AXE"] = "weapon.axe1";
+ WEAPON_TYPES_ENUM["HAMMER"] = "weapon.hammer1";
+ WEAPON_TYPES_ENUM["SWORD"] = "weapon.sword1";
+})(WEAPON_TYPES_ENUM || (WEAPON_TYPES_ENUM = {}));
+exports.WEAPON_TYPES_ENUM = WEAPON_TYPES_ENUM;
+var CLASS_TYPES = [CLASS_TYPES_ENUM.SORCEROR, CLASS_TYPES_ENUM.PALADIN];
+exports.CLASS_TYPES = CLASS_TYPES;
+var ATTACK_TYPES;
+(function (ATTACK_TYPES) {
+ ATTACK_TYPES["MELEE"] = "melee";
+})(ATTACK_TYPES || (ATTACK_TYPES = {}));
+exports.ATTACK_TYPES = ATTACK_TYPES;
+var _TIMEOUT = 600.0;
+exports._TIMEOUT = _TIMEOUT;
+var DOM_IDS;
+(function (DOM_IDS) {
+ DOM_IDS["HEALTH_BAR"] = "health-bar";
+ DOM_IDS["STATS_BENCHPRESS"] = "stats-benchpress";
+ DOM_IDS["STATS_CURL"] = "stats-curl";
+ DOM_IDS["STATS_EXPERIENCE"] = "stats-experience";
+ DOM_IDS["STATS_STRENGTH"] = "stats-strength";
+ DOM_IDS["STATS_WISDOMNESS"] = "stats-wisdomness";
+ DOM_IDS["LOGIN_INPUT"] = "login-input";
+ DOM_IDS["LOGIN_UI"] = "login-ui";
+ DOM_IDS["LOGIN_BUTTON"] = "login-button";
+ DOM_IDS["THREEJS"] = "threejs";
+ DOM_IDS["QUEST_UI"] = "quest-ui";
+})(DOM_IDS || (DOM_IDS = {}));
+exports.DOM_IDS = DOM_IDS;
+//# sourceMappingURL=constants.js.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/constants.js.map b/packages/quick-3d-mmo-shared/dist/constants.js.map
new file mode 100644
index 00000000..5d6514d9
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/constants.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/defs.d.ts b/packages/quick-3d-mmo-shared/dist/defs.d.ts
new file mode 100644
index 00000000..7752a812
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/defs.d.ts
@@ -0,0 +1,64 @@
+import { CLASS_TYPES_ENUM, WEAPON_TYPES_ENUM } from "./constants.js";
+declare module ICharacter {
+ interface Anchors {
+ rightHand: string;
+ }
+ interface Attack {
+ timing: number;
+ cooldown: number;
+ type: string;
+ range: number;
+ }
+ interface Inventory {
+ ['inventory-1']?: string;
+ ['inventory-2']?: string;
+ ['inventory-equip-1']?: string;
+ }
+ interface Stats {
+ health: number;
+ maxHealth: number;
+ strength: number;
+ wisdomness: number;
+ benchpress: number;
+ curl: number;
+ experience: number;
+ level: number;
+ }
+ interface RootObject {
+ base: string;
+ path: string;
+ anchors: Anchors;
+ nameOffset: number;
+ attack: Attack;
+ scale: number;
+ inventory: Inventory;
+ stats: Stats;
+ name: string;
+ }
+}
+interface ICharacterModels {
+ [CLASS_TYPES_ENUM.PALADIN]: ICharacter.RootObject;
+ [CLASS_TYPES_ENUM.SORCEROR]: ICharacter.RootObject;
+ [CLASS_TYPES_ENUM.WARROK]: ICharacter.RootObject;
+ [CLASS_TYPES_ENUM.ZOMBIE]: ICharacter.RootObject;
+}
+declare const CHARACTER_MODELS: ICharacterModels;
+interface IWeaponsData {
+ [WEAPON_TYPES_ENUM.AXE]: IWeaponaxe1;
+ [WEAPON_TYPES_ENUM.SWORD]: IWeaponaxe1;
+ [WEAPON_TYPES_ENUM.HAMMER]: IWeaponaxe1;
+}
+interface IWeaponaxe1 {
+ type: string;
+ damage: number;
+ renderParams: RenderParams;
+}
+interface RenderParams {
+ name: string;
+ scale: number;
+ icon: string;
+}
+declare const WEAPONS_DATA: IWeaponsData;
+export type { ICharacter };
+export { CHARACTER_MODELS, WEAPONS_DATA };
+//# sourceMappingURL=defs.d.ts.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/defs.d.ts.map b/packages/quick-3d-mmo-shared/dist/defs.d.ts.map
new file mode 100644
index 00000000..cbd47069
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/defs.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"defs.d.ts","sourceRoot":"","sources":["../src/defs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAErE,OAAO,QAAQ,UAAU,CAAC;IAExB,UAAiB,OAAO;QACtB,SAAS,EAAE,MAAM,CAAC;KACnB;IAED,UAAiB,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf;IAED,UAAiB,SAAS;QACxB,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC;QACzB,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC;QACzB,CAAC,mBAAmB,CAAC,CAAC,EAAE,MAAM,CAAC;KAChC;IAED,UAAiB,KAAK;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;KACf;IAED,UAAiB,UAAU;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,SAAS,CAAC;QACrB,KAAK,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd;CAEF;AAED,UAAU,gBAAgB;IACxB,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC;IAClD,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC;IACnD,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC;IACjD,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC;CAClD;AAGD,QAAA,MAAM,gBAAgB,EAAE,gBAiHvB,CAAC;AAEF,UAAU,YAAY;IACpB,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC;IACrC,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IACvC,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CACzC;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,QAAA,MAAM,YAAY,EAAE,YA+BnB,CAAC;AAEF,YAAY,EAAE,UAAU,EAAE,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,CAAA"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/defs.js b/packages/quick-3d-mmo-shared/dist/defs.js
new file mode 100644
index 00000000..0d39782a
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/defs.js
@@ -0,0 +1,151 @@
+"use strict";
+var _a, _b;
+exports.__esModule = true;
+exports.WEAPONS_DATA = exports.CHARACTER_MODELS = void 0;
+var constants_js_1 = require("./constants.js");
+var CHARACTER_MODELS = (_a = {},
+ _a[constants_js_1.CLASS_TYPES_ENUM.PALADIN] = {
+ base: 'paladin.glb',
+ path: './src/resources/characters/',
+ anchors: {
+ rightHand: 'RightHandIndex1'
+ },
+ nameOffset: 11,
+ attack: {
+ timing: 0.35,
+ cooldown: 1.0,
+ type: 'melee',
+ range: 10
+ },
+ scale: 6.0,
+ inventory: {
+ 'inventory-1': constants_js_1.WEAPON_TYPES_ENUM.AXE,
+ 'inventory-2': constants_js_1.WEAPON_TYPES_ENUM.HAMMER,
+ 'inventory-equip-1': constants_js_1.WEAPON_TYPES_ENUM.SWORD
+ },
+ stats: {
+ health: 200,
+ maxHealth: 200,
+ strength: 50,
+ wisdomness: 5,
+ benchpress: 20,
+ curl: 100,
+ experience: 0,
+ level: 1
+ },
+ name: 'Paladin'
+ },
+ _a[constants_js_1.CLASS_TYPES_ENUM.SORCEROR] = {
+ base: 'sorceror.glb',
+ path: './src/resources/characters/',
+ anchors: {
+ rightHand: 'RightHandIndex1'
+ },
+ nameOffset: 10,
+ attack: {
+ timing: 1.0,
+ cooldown: 1.5,
+ type: 'magic',
+ range: 40
+ },
+ scale: 4.0,
+ inventory: {},
+ stats: {
+ health: 100,
+ maxHealth: 100,
+ strength: 10,
+ wisdomness: 200,
+ benchpress: 3,
+ curl: 17,
+ experience: 0,
+ level: 1
+ },
+ name: 'Sorceror'
+ },
+ _a[constants_js_1.CLASS_TYPES_ENUM.WARROK] = {
+ base: 'warrok.glb',
+ path: './src/resources/characters/',
+ anchors: {
+ rightHand: 'RightHandIndex1'
+ },
+ nameOffset: 16,
+ attack: {
+ timing: 1.5,
+ cooldown: 2.6,
+ type: 'melee',
+ range: 15
+ },
+ scale: 8.0,
+ inventory: {},
+ stats: {
+ health: 1000,
+ maxHealth: 1000,
+ strength: 200,
+ wisdomness: 4,
+ benchpress: 3,
+ curl: 200,
+ experience: 0,
+ level: 1
+ },
+ name: 'Monster Guy'
+ },
+ _a[constants_js_1.CLASS_TYPES_ENUM.ZOMBIE] = {
+ base: 'zombie-guy.glb',
+ path: './src/resources/characters/',
+ anchors: {
+ rightHand: 'RightHandIndex1'
+ },
+ nameOffset: 8,
+ attack: {
+ timing: 1.0,
+ cooldown: 3.0,
+ type: 'melee',
+ range: 10
+ },
+ scale: 4.0,
+ inventory: {},
+ stats: {
+ health: 20,
+ maxHealth: 50,
+ strength: 25,
+ wisdomness: 4,
+ benchpress: 3,
+ curl: 20,
+ experience: 0,
+ level: 1
+ },
+ name: 'Zombie'
+ },
+ _a);
+exports.CHARACTER_MODELS = CHARACTER_MODELS;
+var WEAPONS_DATA = (_b = {},
+ _b[constants_js_1.WEAPON_TYPES_ENUM.AXE] = {
+ type: 'weapon',
+ damage: 3,
+ renderParams: {
+ name: 'Axe',
+ scale: 0.125,
+ icon: 'war-axe-64.png'
+ }
+ },
+ _b[constants_js_1.WEAPON_TYPES_ENUM.SWORD] = {
+ type: 'weapon',
+ damage: 3,
+ renderParams: {
+ name: 'Sword',
+ scale: 0.125,
+ icon: 'pointy-sword-64.png'
+ }
+ },
+ _b[constants_js_1.WEAPON_TYPES_ENUM.HAMMER] = {
+ type: 'weapon',
+ damage: 3,
+ renderParams: {
+ name: 'Hammer_Small',
+ scale: 0.125,
+ icon: 'hammer-64.png'
+ }
+ },
+ _b);
+exports.WEAPONS_DATA = WEAPONS_DATA;
+//# sourceMappingURL=defs.js.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/defs.js.map b/packages/quick-3d-mmo-shared/dist/defs.js.map
new file mode 100644
index 00000000..ab97a101
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/defs.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"defs.js","sourceRoot":"","sources":["../src/defs.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/entity-manager.d.ts b/packages/quick-3d-mmo-shared/dist/entity-manager.d.ts
new file mode 100644
index 00000000..648147c7
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/entity-manager.d.ts
@@ -0,0 +1,14 @@
+declare class EntityManager {
+ _ids: number;
+ _entitiesMap: {};
+ _entities: any[];
+ constructor();
+ _GenerateName(): string;
+ Get(n: any): any;
+ Filter(cb: any): any[];
+ Add(e: any, n: any): void;
+ SetActive(e: any, b: any): void;
+ Update(timeElapsed: any): void;
+}
+export { EntityManager };
+//# sourceMappingURL=entity-manager.d.ts.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/entity-manager.d.ts.map b/packages/quick-3d-mmo-shared/dist/entity-manager.d.ts.map
new file mode 100644
index 00000000..247018f2
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/entity-manager.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"entity-manager.d.ts","sourceRoot":"","sources":["../src/entity-manager.ts"],"names":[],"mappings":"AAAA,cAAM,aAAa;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,EAAE,CAAC;IACjB,SAAS,EAAE,GAAG,EAAE,CAAC;;IAQjB,aAAa;IAMb,GAAG,CAAC,CAAC,KAAA;IAIL,MAAM,CAAC,EAAE,KAAA;IAIT,GAAG,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA;IAcR,SAAS,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA;IAkBd,MAAM,CAAC,WAAW,KAAA;CAyBnB;AAED,OAAO,EAAE,aAAa,EAAE,CAAA"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/entity-manager.js b/packages/quick-3d-mmo-shared/dist/entity-manager.js
new file mode 100644
index 00000000..870b4e92
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/entity-manager.js
@@ -0,0 +1,69 @@
+"use strict";
+exports.__esModule = true;
+exports.EntityManager = void 0;
+var EntityManager = /** @class */ (function () {
+ function EntityManager() {
+ this._ids = 0;
+ this._entitiesMap = {};
+ this._entities = [];
+ }
+ EntityManager.prototype._GenerateName = function () {
+ this._ids += 1;
+ return '__name__' + this._ids;
+ };
+ EntityManager.prototype.Get = function (n) {
+ return this._entitiesMap[n];
+ };
+ EntityManager.prototype.Filter = function (cb) {
+ return this._entities.filter(cb);
+ };
+ EntityManager.prototype.Add = function (e, n) {
+ // console.log("EntityManager.Add(): ", e, n)
+ if (!n) {
+ n = this._GenerateName();
+ }
+ e.SetName(n);
+ this._entitiesMap[n] = e;
+ this._entities.push(e);
+ e.SetParent(this);
+ e.InitEntity();
+ };
+ EntityManager.prototype.SetActive = function (e, b) {
+ var i = this._entities.indexOf(e);
+ if (!b) {
+ if (i < 0) {
+ return;
+ }
+ this._entities.splice(i, 1);
+ }
+ else {
+ if (i >= 0) {
+ return;
+ }
+ this._entities.push(e);
+ }
+ };
+ EntityManager.prototype.Update = function (timeElapsed) {
+ var dead = [];
+ var alive = [];
+ for (var i = 0; i < this._entities.length; ++i) {
+ var e = this._entities[i];
+ e.Update(timeElapsed);
+ if (e.dead_) {
+ dead.push(e);
+ }
+ else {
+ alive.push(e);
+ }
+ }
+ for (var i = 0; i < dead.length; ++i) {
+ var e = dead[i];
+ delete this._entitiesMap[e.Name];
+ e.Destroy();
+ }
+ this._entities = alive;
+ };
+ return EntityManager;
+}());
+exports.EntityManager = EntityManager;
+//# sourceMappingURL=entity-manager.js.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/entity-manager.js.map b/packages/quick-3d-mmo-shared/dist/entity-manager.js.map
new file mode 100644
index 00000000..bffbe3a2
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/entity-manager.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"entity-manager.js","sourceRoot":"","sources":["../src/entity-manager.ts"],"names":[],"mappings":";;;AAAA;IAKE;QACE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,qCAAa,GAAb;QACE,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QAEf,OAAO,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;IAChC,CAAC;IAED,2BAAG,GAAH,UAAI,CAAC;QACH,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,8BAAM,GAAN,UAAO,EAAE;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,2BAAG,GAAH,UAAI,CAAC,EAAE,CAAC;QACN,6CAA6C;QAC7C,IAAI,CAAC,CAAC,EAAE;YACN,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;SAC1B;QACD,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEvB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAElB,CAAC,CAAC,UAAU,EAAE,CAAC;IACjB,CAAC;IAED,iCAAS,GAAT,UAAU,CAAC,EAAE,CAAC;QACZ,IAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAEpC,IAAI,CAAC,CAAC,EAAE;YACN,IAAI,CAAC,GAAG,CAAC,EAAE;gBACT,OAAO;aACR;YAED,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC7B;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,EAAE;gBACV,OAAO;aACR;YAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACxB;IACH,CAAC;IAED,8BAAM,GAAN,UAAO,WAAW;QAChB,IAAM,IAAI,GAAU,EAAE,CAAC;QACvB,IAAM,KAAK,GAAU,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YAC9C,IAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAE5B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAEtB,IAAI,CAAC,CAAC,KAAK,EAAE;gBACX,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACd;iBAAM;gBACL,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACf;SACF;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACpC,IAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAElB,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAEjC,CAAC,CAAC,OAAO,EAAE,CAAC;SACb;QAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IACH,oBAAC;AAAD,CAAC,AAlFD,IAkFC;AAEQ,sCAAa"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/globaltypes.d.ts b/packages/quick-3d-mmo-shared/dist/globaltypes.d.ts
new file mode 100644
index 00000000..0d661c7e
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/globaltypes.d.ts
@@ -0,0 +1,15 @@
+import { EVENT_TYPES } from "./constants.js";
+interface IOnMessageArgs {
+ (evt: TEvt, params: {
+ accountName?: string;
+ }): void;
+}
+/**
+ * shared event type
+ */
+declare type TEvt = {
+ topic: EVENT_TYPES;
+ params: any;
+};
+export type { IOnMessageArgs, TEvt, };
+//# sourceMappingURL=globaltypes.d.ts.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/globaltypes.d.ts.map b/packages/quick-3d-mmo-shared/dist/globaltypes.d.ts.map
new file mode 100644
index 00000000..fa81628e
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/globaltypes.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"globaltypes.d.ts","sourceRoot":"","sources":["../src/globaltypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,UAAU,cAAc;IACpB,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACxB,GAAG,IAAI,CAAA;CACX;AAGD;;GAEG;AACH,aAAK,IAAI,GAAG;IACR,KAAK,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAClC,CAAA;AAED,YAAY,EACR,cAAc,EACd,IAAI,GACP,CAAC"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/globaltypes.js b/packages/quick-3d-mmo-shared/dist/globaltypes.js
new file mode 100644
index 00000000..92bda2ee
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/globaltypes.js
@@ -0,0 +1,3 @@
+"use strict";
+exports.__esModule = true;
+//# sourceMappingURL=globaltypes.js.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/globaltypes.js.map b/packages/quick-3d-mmo-shared/dist/globaltypes.js.map
new file mode 100644
index 00000000..7aad7e03
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/globaltypes.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"globaltypes.js","sourceRoot":"","sources":["../src/globaltypes.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/index.d.ts b/packages/quick-3d-mmo-shared/dist/index.d.ts
new file mode 100644
index 00000000..01a1be88
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/index.d.ts
@@ -0,0 +1,13 @@
+import * as Constants from './constants.js';
+import * as Defs from './defs.js';
+import * as Math from './math.js';
+import * as EntityManager from './entity-manager.js';
+import * as SpatialHashGrid from './spatial-hash-grid.js';
+import * as Noise from './noise.js';
+import * as TerrainHeight from './terrain-height.js';
+import * as TerrainConstants from './terrain-constants.js';
+import * as Spline from './spline.js';
+import type * as GlobalTypes from './globaltypes.js';
+export type { GlobalTypes };
+export { Constants, Defs, Math, EntityManager, SpatialHashGrid, Noise, TerrainHeight, TerrainConstants, Spline, };
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/index.d.ts.map b/packages/quick-3d-mmo-shared/dist/index.d.ts.map
new file mode 100644
index 00000000..b20b25d3
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,gBAAgB,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,OAAO,KAAK,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAErD,YAAY,EAAC,WAAW,EAAC,CAAA;AAEzB,OAAO,EACH,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,aAAa,EACb,eAAe,EACf,KAAK,EACL,aAAa,EACb,gBAAgB,EAChB,MAAM,GACT,CAAC"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/index.js b/packages/quick-3d-mmo-shared/dist/index.js
new file mode 100644
index 00000000..2b69a9f9
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/index.js
@@ -0,0 +1,22 @@
+"use strict";
+exports.__esModule = true;
+exports.Spline = exports.TerrainConstants = exports.TerrainHeight = exports.Noise = exports.SpatialHashGrid = exports.EntityManager = exports.Math = exports.Defs = exports.Constants = void 0;
+var Constants = require("./constants.js");
+exports.Constants = Constants;
+var Defs = require("./defs.js");
+exports.Defs = Defs;
+var Math = require("./math.js");
+exports.Math = Math;
+var EntityManager = require("./entity-manager.js");
+exports.EntityManager = EntityManager;
+var SpatialHashGrid = require("./spatial-hash-grid.js");
+exports.SpatialHashGrid = SpatialHashGrid;
+var Noise = require("./noise.js");
+exports.Noise = Noise;
+var TerrainHeight = require("./terrain-height.js");
+exports.TerrainHeight = TerrainHeight;
+var TerrainConstants = require("./terrain-constants.js");
+exports.TerrainConstants = TerrainConstants;
+var Spline = require("./spline.js");
+exports.Spline = Spline;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/index.js.map b/packages/quick-3d-mmo-shared/dist/index.js.map
new file mode 100644
index 00000000..315ef4d3
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAexC,8BAAS;AAdb,gCAAkC;AAe9B,oBAAI;AAdR,gCAAkC;AAe9B,oBAAI;AAdR,mDAAqD;AAejD,sCAAa;AAdjB,wDAA0D;AAetD,0CAAe;AAdnB,kCAAoC;AAehC,sBAAK;AAdT,mDAAqD;AAejD,sCAAa;AAdjB,yDAA2D;AAevD,4CAAgB;AAdpB,oCAAsC;AAelC,wBAAM"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/math.d.ts b/packages/quick-3d-mmo-shared/dist/math.d.ts
new file mode 100644
index 00000000..45b23ba6
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/math.d.ts
@@ -0,0 +1,11 @@
+declare const rand_range: (a: number, b: number) => number;
+declare const rand_normalish: () => number;
+declare const rand_int: (a: number, b: number) => number;
+declare const lerp: (x: number, a: number, b: number) => number;
+declare const smoothstep: (x: number, a: number, b: number) => number;
+declare const smootherstep: (x: number, a: number, b: number) => number;
+declare const clamp: (x: number, a: number, b: number) => number;
+declare const sat: (x: number) => number;
+declare const in_range: (x: number, a: number, b: number) => boolean;
+export { rand_range, rand_int, rand_normalish, lerp, smoothstep, smootherstep, clamp, sat, in_range, };
+//# sourceMappingURL=math.d.ts.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/math.d.ts.map b/packages/quick-3d-mmo-shared/dist/math.d.ts.map
new file mode 100644
index 00000000..0e0613d0
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/math.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,UAAU,MAAgB,MAAM,KAAK,MAAM,KAAG,MAEnD,CAAA;AAED,QAAA,MAAM,cAAc,QAAgB,MAGnC,CAAA;AAED,QAAA,MAAM,QAAQ,MAAgB,MAAM,KAAK,MAAM,KAAG,MAEjD,CAAA;AAED,QAAA,MAAM,IAAI,MAAgB,MAAM,KAAK,MAAM,KAAK,MAAM,KAAG,MAExD,CAAA;AAED,QAAA,MAAM,UAAU,MAAgB,MAAM,KAAK,MAAM,KAAK,MAAM,KAAG,MAG9D,CAAA;AAED,QAAA,MAAM,YAAY,MAAgB,MAAM,KAAK,MAAM,KAAK,MAAM,KAAG,MAGhE,CAAA;AAED,QAAA,MAAM,KAAK,MAAgB,MAAM,KAAK,MAAM,KAAK,MAAM,KAAG,MAEzD,CAAA;AAED,QAAA,MAAM,GAAG,MAAgB,MAAM,KAAG,MAEjC,CAAA;AAED,QAAA,MAAM,QAAQ,MAAO,MAAM,KAAK,MAAM,KAAK,MAAM,KAAE,OAElD,CAAA;AAED,OAAO,EACL,UAAU,EACV,QAAQ,EACR,cAAc,EACd,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,KAAK,EACL,GAAG,EACH,QAAQ,GACT,CAAA"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/math.js b/packages/quick-3d-mmo-shared/dist/math.js
new file mode 100644
index 00000000..839fdd76
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/math.js
@@ -0,0 +1,43 @@
+"use strict";
+exports.__esModule = true;
+exports.in_range = exports.sat = exports.clamp = exports.smootherstep = exports.smoothstep = exports.lerp = exports.rand_normalish = exports.rand_int = exports.rand_range = void 0;
+var rand_range = function (a, b) {
+ return Math.random() * (b - a) + a;
+};
+exports.rand_range = rand_range;
+var rand_normalish = function () {
+ var r = Math.random() + Math.random() + Math.random() + Math.random();
+ return (r / 4.0) * 2.0 - 1;
+};
+exports.rand_normalish = rand_normalish;
+var rand_int = function (a, b) {
+ return Math.round(Math.random() * (b - a) + a);
+};
+exports.rand_int = rand_int;
+var lerp = function (x, a, b) {
+ return x * (b - a) + a;
+};
+exports.lerp = lerp;
+var smoothstep = function (x, a, b) {
+ x = x * x * (3.0 - 2.0 * x);
+ return x * (b - a) + a;
+};
+exports.smoothstep = smoothstep;
+var smootherstep = function (x, a, b) {
+ x = x * x * x * (x * (x * 6 - 15) + 10);
+ return x * (b - a) + a;
+};
+exports.smootherstep = smootherstep;
+var clamp = function (x, a, b) {
+ return Math.min(Math.max(x, a), b);
+};
+exports.clamp = clamp;
+var sat = function (x) {
+ return Math.min(Math.max(x, 0.0), 1.0);
+};
+exports.sat = sat;
+var in_range = function (x, a, b) {
+ return x >= a && x <= b;
+};
+exports.in_range = in_range;
+//# sourceMappingURL=math.js.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/math.js.map b/packages/quick-3d-mmo-shared/dist/math.js.map
new file mode 100644
index 00000000..1bb0fce5
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/math.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"math.js","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":";;;AACA,IAAM,UAAU,GAAG,UAAU,CAAS,EAAE,CAAS;IAC/C,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC,CAAA;AAsCC,gCAAU;AApCZ,IAAM,cAAc,GAAG;IACrB,IAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IACxE,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AAC7B,CAAC,CAAA;AAmCC,wCAAc;AAjChB,IAAM,QAAQ,GAAG,UAAU,CAAS,EAAE,CAAS;IAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,CAAC,CAAA;AA8BC,4BAAQ;AA5BV,IAAM,IAAI,GAAG,UAAU,CAAS,EAAE,CAAS,EAAE,CAAS;IACpD,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC,CAAA;AA4BC,oBAAI;AA1BN,IAAM,UAAU,GAAG,UAAU,CAAS,EAAE,CAAS,EAAE,CAAS;IAC1D,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC,CAAA;AAwBC,gCAAU;AAtBZ,IAAM,YAAY,GAAG,UAAU,CAAS,EAAE,CAAS,EAAE,CAAS;IAC5D,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC,CAAA;AAoBC,oCAAY;AAlBd,IAAM,KAAK,GAAG,UAAU,CAAS,EAAE,CAAS,EAAE,CAAS;IACrD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,CAAC,CAAA;AAiBC,sBAAK;AAfP,IAAM,GAAG,GAAG,UAAU,CAAS;IAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC,CAAA;AAcC,kBAAG;AAZL,IAAM,QAAQ,GAAG,UAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IAC/C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAA;AAWC,4BAAQ"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/noise.d.ts b/packages/quick-3d-mmo-shared/dist/noise.d.ts
new file mode 100644
index 00000000..60309423
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/noise.d.ts
@@ -0,0 +1,9 @@
+declare class Noise {
+ _params: any;
+ _noise: any;
+ constructor(params: any);
+ _Init(): void;
+ Get(x: any, y: any, z: any): number;
+}
+export { Noise };
+//# sourceMappingURL=noise.d.ts.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/noise.d.ts.map b/packages/quick-3d-mmo-shared/dist/noise.d.ts.map
new file mode 100644
index 00000000..f3824484
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/noise.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"noise.d.ts","sourceRoot":"","sources":["../src/noise.ts"],"names":[],"mappings":"AACA,cAAM,KAAK;IACT,OAAO,EAAE,GAAG,CAAC;IAGb,MAAM,EAAE,GAAG,CAAC;gBAEA,MAAM,KAAA;IAKlB,KAAK;IAIL,GAAG,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA,EAAE,CAAC,KAAA;CAwBZ;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/noise.js b/packages/quick-3d-mmo-shared/dist/noise.js
new file mode 100644
index 00000000..bb572a01
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/noise.js
@@ -0,0 +1,36 @@
+"use strict";
+exports.__esModule = true;
+exports.Noise = void 0;
+var simplex_noise_js_1 = require("./simplex-noise.js");
+var Noise = /** @class */ (function () {
+ function Noise(params) {
+ this._params = params;
+ this._Init();
+ }
+ Noise.prototype._Init = function () {
+ this._noise = new simplex_noise_js_1.SimplexNoise(this._params.seed);
+ };
+ Noise.prototype.Get = function (x, y, z) {
+ var G = Math.pow(2.0, (-this._params.persistence));
+ var xs = x / this._params.scale;
+ var ys = y / this._params.scale;
+ var zs = z / this._params.scale;
+ var noiseFunc = this._noise;
+ var amplitude = 1.0;
+ var frequency = 1.0;
+ var normalization = 0;
+ var total = 0;
+ for (var o = 0; o < this._params.octaves; o++) {
+ var noiseValue = noiseFunc.noise3D(xs * frequency, ys * frequency, zs * frequency) * 0.5 + 0.5;
+ total += noiseValue * amplitude;
+ normalization += amplitude;
+ amplitude *= G;
+ frequency *= this._params.lacunarity;
+ }
+ total /= normalization;
+ return Math.pow(total, this._params.exponentiation) * this._params.height;
+ };
+ return Noise;
+}());
+exports.Noise = Noise;
+//# sourceMappingURL=noise.js.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/noise.js.map b/packages/quick-3d-mmo-shared/dist/noise.js.map
new file mode 100644
index 00000000..0ca0da44
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/noise.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"noise.js","sourceRoot":"","sources":["../src/noise.ts"],"names":[],"mappings":";;;AAAA,uDAAkD;AAClD;IAME,eAAY,MAAM;QAChB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,qBAAK,GAAL;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,+BAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,mBAAG,GAAH,UAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACT,IAAM,CAAC,GAAG,SAAA,GAAG,EAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA,CAAC;QAC7C,IAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAClC,IAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAClC,IAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAClC,IAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;QAE9B,IAAI,SAAS,GAAG,GAAG,CAAC;QACpB,IAAI,SAAS,GAAG,GAAG,CAAC;QACpB,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;YAC7C,IAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAClC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,SAAS,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;YAE9D,KAAK,IAAI,UAAU,GAAG,SAAS,CAAC;YAChC,aAAa,IAAI,SAAS,CAAC;YAC3B,SAAS,IAAI,CAAC,CAAC;YACf,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;SACtC;QACD,KAAK,IAAI,aAAa,CAAC;QACvB,OAAO,IAAI,CAAC,GAAG,CACb,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC9D,CAAC;IACH,YAAC;AAAD,CAAC,AAvCD,IAuCC;AAEQ,sBAAK"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/simplex-noise.d.ts b/packages/quick-3d-mmo-shared/dist/simplex-noise.d.ts
new file mode 100644
index 00000000..cae26ba2
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/simplex-noise.d.ts
@@ -0,0 +1,7 @@
+declare function SimplexNoise(randomOrSeed: any): void;
+declare namespace SimplexNoise {
+ var _buildPermutationTable: typeof buildPermutationTable;
+}
+declare function buildPermutationTable(random: any): Uint8Array;
+export { SimplexNoise };
+//# sourceMappingURL=simplex-noise.d.ts.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/simplex-noise.d.ts.map b/packages/quick-3d-mmo-shared/dist/simplex-noise.d.ts.map
new file mode 100644
index 00000000..64dc327f
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/simplex-noise.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"simplex-noise.d.ts","sourceRoot":"","sources":["../src/simplex-noise.ts"],"names":[],"mappings":"AA0CE,iBAAS,YAAY,CAAC,YAAY,KAAA,QAkBjC;kBAlBQ,YAAY;;;AAkWrB,iBAAS,qBAAqB,CAAC,MAAM,KAAA,cAapC;AAkED,OAAO,EAAC,YAAY,EAAC,CAAA"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/simplex-noise.js b/packages/quick-3d-mmo-shared/dist/simplex-noise.js
new file mode 100644
index 00000000..ea95aaa2
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/simplex-noise.js
@@ -0,0 +1,475 @@
+'use strict';
+exports.__esModule = true;
+exports.SimplexNoise = void 0;
+/*
+ * A fast javascript implementation of simplex noise by Jonas Wagner
+
+Based on a speed-improved simplex noise algorithm for 2D, 3D and 4D in Java.
+Which is based on example code by Stefan Gustavson (stegu@itn.liu.se).
+With Optimisations by Peter Eastman (peastman@drizzle.stanford.edu).
+Better rank ordering method by Stefan Gustavson in 2012.
+
+
+ Copyright (c) 2018 Jonas Wagner
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+ */
+// (function() {
+var F2 = 0.5 * (Math.sqrt(3.0) - 1.0);
+var G2 = (3.0 - Math.sqrt(3.0)) / 6.0;
+var F3 = 1.0 / 3.0;
+var G3 = 1.0 / 6.0;
+var F4 = (Math.sqrt(5.0) - 1.0) / 4.0;
+var G4 = (5.0 - Math.sqrt(5.0)) / 20.0;
+function SimplexNoise(randomOrSeed) {
+ var random;
+ if (typeof randomOrSeed == 'function') {
+ random = randomOrSeed;
+ }
+ else if (randomOrSeed) {
+ random = alea(randomOrSeed);
+ }
+ else {
+ random = Math.random;
+ }
+ this.p = buildPermutationTable(random);
+ this.perm = new Uint8Array(512);
+ this.permMod12 = new Uint8Array(512);
+ for (var i = 0; i < 512; i++) {
+ this.perm[i] = this.p[i & 255];
+ this.permMod12[i] = this.perm[i] % 12;
+ }
+}
+exports.SimplexNoise = SimplexNoise;
+SimplexNoise.prototype = {
+ grad3: new Float32Array([1, 1, 0,
+ -1, 1, 0,
+ 1, -1, 0,
+ -1, -1, 0,
+ 1, 0, 1,
+ -1, 0, 1,
+ 1, 0, -1,
+ -1, 0, -1,
+ 0, 1, 1,
+ 0, -1, 1,
+ 0, 1, -1,
+ 0, -1, -1]),
+ grad4: new Float32Array([0, 1, 1, 1, 0, 1, 1, -1, 0, 1, -1, 1, 0, 1, -1, -1,
+ 0, -1, 1, 1, 0, -1, 1, -1, 0, -1, -1, 1, 0, -1, -1, -1,
+ 1, 0, 1, 1, 1, 0, 1, -1, 1, 0, -1, 1, 1, 0, -1, -1,
+ -1, 0, 1, 1, -1, 0, 1, -1, -1, 0, -1, 1, -1, 0, -1, -1,
+ 1, 1, 0, 1, 1, 1, 0, -1, 1, -1, 0, 1, 1, -1, 0, -1,
+ -1, 1, 0, 1, -1, 1, 0, -1, -1, -1, 0, 1, -1, -1, 0, -1,
+ 1, 1, 1, 0, 1, 1, -1, 0, 1, -1, 1, 0, 1, -1, -1, 0,
+ -1, 1, 1, 0, -1, 1, -1, 0, -1, -1, 1, 0, -1, -1, -1, 0]),
+ noise2D: function (xin, yin) {
+ var permMod12 = this.permMod12;
+ var perm = this.perm;
+ var grad3 = this.grad3;
+ var n0 = 0; // Noise contributions from the three corners
+ var n1 = 0;
+ var n2 = 0;
+ // Skew the input space to determine which simplex cell we're in
+ var s = (xin + yin) * F2; // Hairy factor for 2D
+ var i = Math.floor(xin + s);
+ var j = Math.floor(yin + s);
+ var t = (i + j) * G2;
+ var X0 = i - t; // Unskew the cell origin back to (x,y) space
+ var Y0 = j - t;
+ var x0 = xin - X0; // The x,y distances from the cell origin
+ var y0 = yin - Y0;
+ // For the 2D case, the simplex shape is an equilateral triangle.
+ // Determine which simplex we are in.
+ var i1, j1; // Offsets for second (middle) corner of simplex in (i,j) coords
+ if (x0 > y0) {
+ i1 = 1;
+ j1 = 0;
+ } // lower triangle, XY order: (0,0)->(1,0)->(1,1)
+ else {
+ i1 = 0;
+ j1 = 1;
+ } // upper triangle, YX order: (0,0)->(0,1)->(1,1)
+ // A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and
+ // a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where
+ // c = (3-sqrt(3))/6
+ var x1 = x0 - i1 + G2; // Offsets for middle corner in (x,y) unskewed coords
+ var y1 = y0 - j1 + G2;
+ var x2 = x0 - 1.0 + 2.0 * G2; // Offsets for last corner in (x,y) unskewed coords
+ var y2 = y0 - 1.0 + 2.0 * G2;
+ // Work out the hashed gradient indices of the three simplex corners
+ var ii = i & 255;
+ var jj = j & 255;
+ // Calculate the contribution from the three corners
+ var t0 = 0.5 - x0 * x0 - y0 * y0;
+ if (t0 >= 0) {
+ var gi0 = permMod12[ii + perm[jj]] * 3;
+ t0 *= t0;
+ n0 = t0 * t0 * (grad3[gi0] * x0 + grad3[gi0 + 1] * y0); // (x,y) of grad3 used for 2D gradient
+ }
+ var t1 = 0.5 - x1 * x1 - y1 * y1;
+ if (t1 >= 0) {
+ var gi1 = permMod12[ii + i1 + perm[jj + j1]] * 3;
+ t1 *= t1;
+ n1 = t1 * t1 * (grad3[gi1] * x1 + grad3[gi1 + 1] * y1);
+ }
+ var t2 = 0.5 - x2 * x2 - y2 * y2;
+ if (t2 >= 0) {
+ var gi2 = permMod12[ii + 1 + perm[jj + 1]] * 3;
+ t2 *= t2;
+ n2 = t2 * t2 * (grad3[gi2] * x2 + grad3[gi2 + 1] * y2);
+ }
+ // Add contributions from each corner to get the final noise value.
+ // The result is scaled to return values in the interval [-1,1].
+ return 70.0 * (n0 + n1 + n2);
+ },
+ // 3D simplex noise
+ noise3D: function (xin, yin, zin) {
+ var permMod12 = this.permMod12;
+ var perm = this.perm;
+ var grad3 = this.grad3;
+ var n0, n1, n2, n3; // Noise contributions from the four corners
+ // Skew the input space to determine which simplex cell we're in
+ var s = (xin + yin + zin) * F3; // Very nice and simple skew factor for 3D
+ var i = Math.floor(xin + s);
+ var j = Math.floor(yin + s);
+ var k = Math.floor(zin + s);
+ var t = (i + j + k) * G3;
+ var X0 = i - t; // Unskew the cell origin back to (x,y,z) space
+ var Y0 = j - t;
+ var Z0 = k - t;
+ var x0 = xin - X0; // The x,y,z distances from the cell origin
+ var y0 = yin - Y0;
+ var z0 = zin - Z0;
+ // For the 3D case, the simplex shape is a slightly irregular tetrahedron.
+ // Determine which simplex we are in.
+ var i1, j1, k1; // Offsets for second corner of simplex in (i,j,k) coords
+ var i2, j2, k2; // Offsets for third corner of simplex in (i,j,k) coords
+ if (x0 >= y0) {
+ if (y0 >= z0) {
+ i1 = 1;
+ j1 = 0;
+ k1 = 0;
+ i2 = 1;
+ j2 = 1;
+ k2 = 0;
+ } // X Y Z order
+ else if (x0 >= z0) {
+ i1 = 1;
+ j1 = 0;
+ k1 = 0;
+ i2 = 1;
+ j2 = 0;
+ k2 = 1;
+ } // X Z Y order
+ else {
+ i1 = 0;
+ j1 = 0;
+ k1 = 1;
+ i2 = 1;
+ j2 = 0;
+ k2 = 1;
+ } // Z X Y order
+ }
+ else { // x0 y0)
+ rankx++;
+ else
+ ranky++;
+ if (x0 > z0)
+ rankx++;
+ else
+ rankz++;
+ if (x0 > w0)
+ rankx++;
+ else
+ rankw++;
+ if (y0 > z0)
+ ranky++;
+ else
+ rankz++;
+ if (y0 > w0)
+ ranky++;
+ else
+ rankw++;
+ if (z0 > w0)
+ rankz++;
+ else
+ rankw++;
+ var i1, j1, k1, l1; // The integer offsets for the second simplex corner
+ var i2, j2, k2, l2; // The integer offsets for the third simplex corner
+ var i3, j3, k3, l3; // The integer offsets for the fourth simplex corner
+ // simplex[c] is a 4-vector with the numbers 0, 1, 2 and 3 in some order.
+ // Many values of c will never occur, since e.g. x>y>z>w makes x= 3 ? 1 : 0;
+ j1 = ranky >= 3 ? 1 : 0;
+ k1 = rankz >= 3 ? 1 : 0;
+ l1 = rankw >= 3 ? 1 : 0;
+ // Rank 2 denotes the second largest coordinate.
+ i2 = rankx >= 2 ? 1 : 0;
+ j2 = ranky >= 2 ? 1 : 0;
+ k2 = rankz >= 2 ? 1 : 0;
+ l2 = rankw >= 2 ? 1 : 0;
+ // Rank 1 denotes the second smallest coordinate.
+ i3 = rankx >= 1 ? 1 : 0;
+ j3 = ranky >= 1 ? 1 : 0;
+ k3 = rankz >= 1 ? 1 : 0;
+ l3 = rankw >= 1 ? 1 : 0;
+ // The fifth corner has all coordinate offsets = 1, so no need to compute that.
+ var x1 = x0 - i1 + G4; // Offsets for second corner in (x,y,z,w) coords
+ var y1 = y0 - j1 + G4;
+ var z1 = z0 - k1 + G4;
+ var w1 = w0 - l1 + G4;
+ var x2 = x0 - i2 + 2.0 * G4; // Offsets for third corner in (x,y,z,w) coords
+ var y2 = y0 - j2 + 2.0 * G4;
+ var z2 = z0 - k2 + 2.0 * G4;
+ var w2 = w0 - l2 + 2.0 * G4;
+ var x3 = x0 - i3 + 3.0 * G4; // Offsets for fourth corner in (x,y,z,w) coords
+ var y3 = y0 - j3 + 3.0 * G4;
+ var z3 = z0 - k3 + 3.0 * G4;
+ var w3 = w0 - l3 + 3.0 * G4;
+ var x4 = x0 - 1.0 + 4.0 * G4; // Offsets for last corner in (x,y,z,w) coords
+ var y4 = y0 - 1.0 + 4.0 * G4;
+ var z4 = z0 - 1.0 + 4.0 * G4;
+ var w4 = w0 - 1.0 + 4.0 * G4;
+ // Work out the hashed gradient indices of the five simplex corners
+ var ii = i & 255;
+ var jj = j & 255;
+ var kk = k & 255;
+ var ll = l & 255;
+ // Calculate the contribution from the five corners
+ var t0 = 0.6 - x0 * x0 - y0 * y0 - z0 * z0 - w0 * w0;
+ if (t0 < 0)
+ n0 = 0.0;
+ else {
+ var gi0 = (perm[ii + perm[jj + perm[kk + perm[ll]]]] % 32) * 4;
+ t0 *= t0;
+ n0 = t0 * t0 * (grad4[gi0] * x0 + grad4[gi0 + 1] * y0 + grad4[gi0 + 2] * z0 + grad4[gi0 + 3] * w0);
+ }
+ var t1 = 0.6 - x1 * x1 - y1 * y1 - z1 * z1 - w1 * w1;
+ if (t1 < 0)
+ n1 = 0.0;
+ else {
+ var gi1 = (perm[ii + i1 + perm[jj + j1 + perm[kk + k1 + perm[ll + l1]]]] % 32) * 4;
+ t1 *= t1;
+ n1 = t1 * t1 * (grad4[gi1] * x1 + grad4[gi1 + 1] * y1 + grad4[gi1 + 2] * z1 + grad4[gi1 + 3] * w1);
+ }
+ var t2 = 0.6 - x2 * x2 - y2 * y2 - z2 * z2 - w2 * w2;
+ if (t2 < 0)
+ n2 = 0.0;
+ else {
+ var gi2 = (perm[ii + i2 + perm[jj + j2 + perm[kk + k2 + perm[ll + l2]]]] % 32) * 4;
+ t2 *= t2;
+ n2 = t2 * t2 * (grad4[gi2] * x2 + grad4[gi2 + 1] * y2 + grad4[gi2 + 2] * z2 + grad4[gi2 + 3] * w2);
+ }
+ var t3 = 0.6 - x3 * x3 - y3 * y3 - z3 * z3 - w3 * w3;
+ if (t3 < 0)
+ n3 = 0.0;
+ else {
+ var gi3 = (perm[ii + i3 + perm[jj + j3 + perm[kk + k3 + perm[ll + l3]]]] % 32) * 4;
+ t3 *= t3;
+ n3 = t3 * t3 * (grad4[gi3] * x3 + grad4[gi3 + 1] * y3 + grad4[gi3 + 2] * z3 + grad4[gi3 + 3] * w3);
+ }
+ var t4 = 0.6 - x4 * x4 - y4 * y4 - z4 * z4 - w4 * w4;
+ if (t4 < 0)
+ n4 = 0.0;
+ else {
+ var gi4 = (perm[ii + 1 + perm[jj + 1 + perm[kk + 1 + perm[ll + 1]]]] % 32) * 4;
+ t4 *= t4;
+ n4 = t4 * t4 * (grad4[gi4] * x4 + grad4[gi4 + 1] * y4 + grad4[gi4 + 2] * z4 + grad4[gi4 + 3] * w4);
+ }
+ // Sum up and scale the result to cover the range [-1,1]
+ return 27.0 * (n0 + n1 + n2 + n3 + n4);
+ }
+};
+function buildPermutationTable(random) {
+ var i;
+ var p = new Uint8Array(256);
+ for (i = 0; i < 256; i++) {
+ p[i] = i;
+ }
+ for (i = 0; i < 255; i++) {
+ var r = i + ~~(random() * (256 - i));
+ var aux = p[i];
+ p[i] = p[r];
+ p[r] = aux;
+ }
+ return p;
+}
+SimplexNoise._buildPermutationTable = buildPermutationTable;
+function alea(input) {
+ // Johannes Baagøe , 2010
+ var s0 = 0;
+ var s1 = 0;
+ var s2 = 0;
+ var c = 1;
+ var mash = masher();
+ s0 = mash(' ');
+ s1 = mash(' ');
+ s2 = mash(' ');
+ for (var i = 0; i < arguments.length; i++) {
+ s0 -= mash(arguments[i]);
+ if (s0 < 0) {
+ s0 += 1;
+ }
+ s1 -= mash(arguments[i]);
+ if (s1 < 0) {
+ s1 += 1;
+ }
+ s2 -= mash(arguments[i]);
+ if (s2 < 0) {
+ s2 += 1;
+ }
+ }
+ mash = null;
+ return function () {
+ var t = 2091639 * s0 + c * 2.3283064365386963e-10; // 2^-32
+ s0 = s1;
+ s1 = s2;
+ return s2 = t - (c = t | 0);
+ };
+}
+function masher() {
+ var n = 0xefc8249d;
+ return function (data) {
+ data = data.toString();
+ for (var i = 0; i < data.length; i++) {
+ n += data.charCodeAt(i);
+ var h = 0.02519603282416938 * n;
+ n = h >>> 0;
+ h -= n;
+ h *= n;
+ n = h >>> 0;
+ h -= n;
+ n += h * 0x100000000; // 2^32
+ }
+ return (n >>> 0) * 2.3283064365386963e-10; // 2^-32
+ };
+}
+//# sourceMappingURL=simplex-noise.js.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/simplex-noise.js.map b/packages/quick-3d-mmo-shared/dist/simplex-noise.js.map
new file mode 100644
index 00000000..f80cb90e
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/simplex-noise.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"simplex-noise.js","sourceRoot":"","sources":["../src/simplex-noise.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/spatial-hash-grid.d.ts b/packages/quick-3d-mmo-shared/dist/spatial-hash-grid.d.ts
new file mode 100644
index 00000000..30ab20f1
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/spatial-hash-grid.d.ts
@@ -0,0 +1,24 @@
+declare class SpatialHashGrid {
+ _cells: any[][];
+ _dimensions: any;
+ _bounds: any;
+ _queryIds: number;
+ constructor(bounds: any, dimensions: any);
+ _GetCellIndex(position: any): number[];
+ NewClient(position: any, dimensions: any): {
+ position: any;
+ dimensions: any;
+ _cells: {
+ min: any;
+ max: any;
+ nodes: any;
+ };
+ _queryId: number;
+ };
+ UpdateClient(client: any): void;
+ FindNear(position: any, bounds: any): any[];
+ _Insert(client: any): void;
+ Remove(client: any): void;
+}
+export { SpatialHashGrid };
+//# sourceMappingURL=spatial-hash-grid.d.ts.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/spatial-hash-grid.d.ts.map b/packages/quick-3d-mmo-shared/dist/spatial-hash-grid.d.ts.map
new file mode 100644
index 00000000..2632657e
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/spatial-hash-grid.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"spatial-hash-grid.d.ts","sourceRoot":"","sources":["../src/spatial-hash-grid.ts"],"names":[],"mappings":"AAEA,cAAM,eAAe;IACnB,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;IAChB,WAAW,EAAE,GAAG,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;gBACN,MAAM,KAAA,EAAE,UAAU,KAAA;IAQ9B,aAAa,CAAC,QAAQ,KAAA;IAYtB,SAAS,CAAC,QAAQ,KAAA,EAAE,UAAU,KAAA;;;;;;;;;;IAiB9B,YAAY,CAAC,MAAM,KAAA;IAkBnB,QAAQ,CAAC,QAAQ,KAAA,EAAE,MAAM,KAAA;IA4BzB,OAAO,CAAC,MAAM,KAAA;IAqCd,MAAM,CAAC,MAAM,KAAA;CA2Bd;AACD,OAAO,EAAE,eAAe,EAAE,CAAA"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/spatial-hash-grid.js b/packages/quick-3d-mmo-shared/dist/spatial-hash-grid.js
new file mode 100644
index 00000000..af312c46
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/spatial-hash-grid.js
@@ -0,0 +1,128 @@
+"use strict";
+var __spreadArray = (this && this.__spreadArray) || function (to, from) {
+ for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
+ to[j] = from[i];
+ return to;
+};
+exports.__esModule = true;
+exports.SpatialHashGrid = void 0;
+var math = require("./math.js");
+var SpatialHashGrid = /** @class */ (function () {
+ function SpatialHashGrid(bounds, dimensions) {
+ var x = dimensions[0], y = dimensions[1];
+ this._cells = __spreadArray([], Array(x)).map(function (_) { return __spreadArray([], Array(y)).map(function (_) { return (null); }); });
+ this._dimensions = dimensions;
+ this._bounds = bounds;
+ this._queryIds = 0;
+ }
+ SpatialHashGrid.prototype._GetCellIndex = function (position) {
+ var x = math.sat((position[0] - this._bounds[0][0]) / (this._bounds[1][0] - this._bounds[0][0]));
+ var y = math.sat((position[1] - this._bounds[0][1]) / (this._bounds[1][1] - this._bounds[0][1]));
+ var xIndex = Math.floor(x * (this._dimensions[0] - 1));
+ var yIndex = Math.floor(y * (this._dimensions[1] - 1));
+ return [xIndex, yIndex];
+ };
+ SpatialHashGrid.prototype.NewClient = function (position, dimensions) {
+ var client = {
+ position: position,
+ dimensions: dimensions,
+ _cells: {
+ min: null,
+ max: null,
+ nodes: null
+ },
+ _queryId: -1
+ };
+ this._Insert(client);
+ return client;
+ };
+ SpatialHashGrid.prototype.UpdateClient = function (client) {
+ var _a = client.position, x = _a[0], y = _a[1];
+ var _b = client.dimensions, w = _b[0], h = _b[1];
+ var i1 = this._GetCellIndex([x - w / 2, y - h / 2]);
+ var i2 = this._GetCellIndex([x + w / 2, y + h / 2]);
+ if (client._cells.min[0] == i1[0] &&
+ client._cells.min[1] == i1[1] &&
+ client._cells.max[0] == i2[0] &&
+ client._cells.max[1] == i2[1]) {
+ return;
+ }
+ this.Remove(client);
+ this._Insert(client);
+ };
+ SpatialHashGrid.prototype.FindNear = function (position, bounds) {
+ var x = position[0], y = position[1];
+ var w = bounds[0], h = bounds[1];
+ var i1 = this._GetCellIndex([x - w / 2, y - h / 2]);
+ var i2 = this._GetCellIndex([x + w / 2, y + h / 2]);
+ var clients = [];
+ var queryId = this._queryIds++;
+ for (var x_1 = i1[0], xn = i2[0]; x_1 <= xn; ++x_1) {
+ for (var y_1 = i1[1], yn = i2[1]; y_1 <= yn; ++y_1) {
+ var head = this._cells[x_1][y_1];
+ while (head) {
+ var v = head.client;
+ head = head.next;
+ if (v._queryId != queryId) {
+ v._queryId = queryId;
+ clients.push(v);
+ }
+ }
+ }
+ }
+ return clients;
+ };
+ SpatialHashGrid.prototype._Insert = function (client) {
+ var _a = client.position, x = _a[0], y = _a[1];
+ var _b = client.dimensions, w = _b[0], h = _b[1];
+ var i1 = this._GetCellIndex([x - w / 2, y - h / 2]);
+ var i2 = this._GetCellIndex([x + w / 2, y + h / 2]);
+ var nodes = [];
+ for (var x_2 = i1[0], xn = i2[0]; x_2 <= xn; ++x_2) {
+ nodes.push([]);
+ for (var y_2 = i1[1], yn = i2[1]; y_2 <= yn; ++y_2) {
+ var xi = x_2 - i1[0];
+ var head = {
+ next: null,
+ prev: null,
+ client: client
+ };
+ nodes[xi].push(head);
+ head.next = this._cells[x_2][y_2];
+ if (this._cells[x_2][y_2]) {
+ this._cells[x_2][y_2].prev = head;
+ }
+ this._cells[x_2][y_2] = head;
+ }
+ }
+ client._cells.min = i1;
+ client._cells.max = i2;
+ client._cells.nodes = nodes;
+ };
+ SpatialHashGrid.prototype.Remove = function (client) {
+ var i1 = client._cells.min;
+ var i2 = client._cells.max;
+ for (var x = i1[0], xn = i2[0]; x <= xn; ++x) {
+ for (var y = i1[1], yn = i2[1]; y <= yn; ++y) {
+ var xi = x - i1[0];
+ var yi = y - i1[1];
+ var node = client._cells.nodes[xi][yi];
+ if (node.next) {
+ node.next.prev = node.prev;
+ }
+ if (node.prev) {
+ node.prev.next = node.next;
+ }
+ if (!node.prev) {
+ this._cells[x][y] = node.next;
+ }
+ }
+ }
+ client._cells.min = null;
+ client._cells.max = null;
+ client._cells.nodes = null;
+ };
+ return SpatialHashGrid;
+}());
+exports.SpatialHashGrid = SpatialHashGrid;
+//# sourceMappingURL=spatial-hash-grid.js.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/spatial-hash-grid.js.map b/packages/quick-3d-mmo-shared/dist/spatial-hash-grid.js.map
new file mode 100644
index 00000000..12687f44
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/spatial-hash-grid.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"spatial-hash-grid.js","sourceRoot":"","sources":["../src/spatial-hash-grid.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/spline.d.ts b/packages/quick-3d-mmo-shared/dist/spline.d.ts
new file mode 100644
index 00000000..d22c8ed6
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/spline.d.ts
@@ -0,0 +1,16 @@
+declare class CubicHermiteSpline {
+ _points: any[];
+ _lerp: any;
+ constructor(lerp: any);
+ AddPoint(t: any, d: any): void;
+ Get(t: any): any;
+}
+declare class LinearSpline {
+ _points: any[];
+ _lerp: any;
+ constructor(lerp: any);
+ AddPoint(t: any, d: any): void;
+ Get(t: any): any;
+}
+export { CubicHermiteSpline, LinearSpline };
+//# sourceMappingURL=spline.d.ts.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/spline.d.ts.map b/packages/quick-3d-mmo-shared/dist/spline.d.ts.map
new file mode 100644
index 00000000..156dec6d
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/spline.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"spline.d.ts","sourceRoot":"","sources":["../src/spline.ts"],"names":[],"mappings":"AACE,cAAM,kBAAkB;IACtB,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,KAAK,EAAE,GAAG,CAAC;gBACC,IAAI,KAAA;IAKhB,QAAQ,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA;IAIb,GAAG,CAAC,CAAC,KAAA;CAwBN;AAED,cAAM,YAAY;IAChB,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,KAAK,EAAE,GAAG,CAAC;gBACC,IAAI,KAAA;IAKhB,QAAQ,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA;IAIb,GAAG,CAAC,CAAC,KAAA;CAqBN;AAGH,OAAO,EAAC,kBAAkB,EAAE,YAAY,EAAC,CAAA"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/spline.js b/packages/quick-3d-mmo-shared/dist/spline.js
new file mode 100644
index 00000000..d7ed92be
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/spline.js
@@ -0,0 +1,57 @@
+"use strict";
+exports.__esModule = true;
+exports.LinearSpline = exports.CubicHermiteSpline = void 0;
+var CubicHermiteSpline = /** @class */ (function () {
+ function CubicHermiteSpline(lerp) {
+ this._points = [];
+ this._lerp = lerp;
+ }
+ CubicHermiteSpline.prototype.AddPoint = function (t, d) {
+ this._points.push([t, d]);
+ };
+ CubicHermiteSpline.prototype.Get = function (t) {
+ var p1 = 0;
+ for (var i = 0; i < this._points.length; i++) {
+ if (this._points[i][0] >= t) {
+ break;
+ }
+ p1 = i;
+ }
+ var p0 = Math.max(0, p1 - 1);
+ var p2 = Math.min(this._points.length - 1, p1 + 1);
+ var p3 = Math.min(this._points.length - 1, p1 + 2);
+ if (p1 == p2) {
+ return this._points[p1][1];
+ }
+ return this._lerp((t - this._points[p1][0]) / (this._points[p2][0] - this._points[p1][0]), this._points[p0][1], this._points[p1][1], this._points[p2][1], this._points[p3][1]);
+ };
+ return CubicHermiteSpline;
+}());
+exports.CubicHermiteSpline = CubicHermiteSpline;
+;
+var LinearSpline = /** @class */ (function () {
+ function LinearSpline(lerp) {
+ this._points = [];
+ this._lerp = lerp;
+ }
+ LinearSpline.prototype.AddPoint = function (t, d) {
+ this._points.push([t, d]);
+ };
+ LinearSpline.prototype.Get = function (t) {
+ var p1 = 0;
+ for (var i = 0; i < this._points.length; i++) {
+ if (this._points[i][0] >= t) {
+ break;
+ }
+ p1 = i;
+ }
+ var p2 = Math.min(this._points.length - 1, p1 + 1);
+ if (p1 == p2) {
+ return this._points[p1][1];
+ }
+ return this._lerp((t - this._points[p1][0]) / (this._points[p2][0] - this._points[p1][0]), this._points[p1][1], this._points[p2][1]);
+ };
+ return LinearSpline;
+}());
+exports.LinearSpline = LinearSpline;
+//# sourceMappingURL=spline.js.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/spline.js.map b/packages/quick-3d-mmo-shared/dist/spline.js.map
new file mode 100644
index 00000000..e8a22e8a
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/spline.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"spline.js","sourceRoot":"","sources":["../src/spline.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/terrain-constants.d.ts b/packages/quick-3d-mmo-shared/dist/terrain-constants.d.ts
new file mode 100644
index 00000000..1d215828
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/terrain-constants.d.ts
@@ -0,0 +1,16 @@
+declare const QT_MIN_CELL_SIZE = 100;
+declare const QT_MIN_CELL_RESOLUTION = 16;
+declare const PLANET_RADIUS = 8000;
+declare const NOISE_HEIGHT = 800;
+declare const NOISE_SCALE = 1800;
+declare const NOISE_PARAMS: {
+ octaves: number;
+ persistence: number;
+ lacunarity: number;
+ exponentiation: number;
+ height: number;
+ scale: number;
+ seed: number;
+};
+export { QT_MIN_CELL_SIZE, QT_MIN_CELL_RESOLUTION, PLANET_RADIUS, NOISE_HEIGHT, NOISE_SCALE, NOISE_PARAMS, };
+//# sourceMappingURL=terrain-constants.d.ts.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/terrain-constants.d.ts.map b/packages/quick-3d-mmo-shared/dist/terrain-constants.d.ts.map
new file mode 100644
index 00000000..ae659b64
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/terrain-constants.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"terrain-constants.d.ts","sourceRoot":"","sources":["../src/terrain-constants.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,gBAAgB,MAAM,CAAC;AAE7B,QAAA,MAAM,sBAAsB,KAAK,CAAC;AAElC,QAAA,MAAM,aAAa,OAAS,CAAC;AAE7B,QAAA,MAAM,YAAY,MAAQ,CAAC;AAE3B,QAAA,MAAM,WAAW,OAAS,CAAC;AAC3B,QAAA,MAAM,YAAY;;;;;;;;CAQjB,CAAA;AAED,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EAEb,YAAY,EACZ,WAAW,EACX,YAAY,GACb,CAAA"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/terrain-constants.js b/packages/quick-3d-mmo-shared/dist/terrain-constants.js
new file mode 100644
index 00000000..2a15fb99
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/terrain-constants.js
@@ -0,0 +1,27 @@
+"use strict";
+exports.__esModule = true;
+exports.NOISE_PARAMS = exports.NOISE_SCALE = exports.NOISE_HEIGHT = exports.PLANET_RADIUS = exports.QT_MIN_CELL_RESOLUTION = exports.QT_MIN_CELL_SIZE = void 0;
+var QT_MIN_CELL_SIZE = 100;
+exports.QT_MIN_CELL_SIZE = QT_MIN_CELL_SIZE;
+// const QT_MIN_CELL_RESOLUTION = 24;
+var QT_MIN_CELL_RESOLUTION = 16;
+exports.QT_MIN_CELL_RESOLUTION = QT_MIN_CELL_RESOLUTION;
+// const QT_MIN_CELL_RESOLUTION = 4;
+var PLANET_RADIUS = 8000.0;
+exports.PLANET_RADIUS = PLANET_RADIUS;
+var NOISE_HEIGHT = 800.0;
+exports.NOISE_HEIGHT = NOISE_HEIGHT;
+// const NOISE_HEIGHT = 0.0;
+var NOISE_SCALE = 1800.0;
+exports.NOISE_SCALE = NOISE_SCALE;
+var NOISE_PARAMS = {
+ octaves: 10,
+ persistence: 0.5,
+ lacunarity: 1.6,
+ exponentiation: 7.5,
+ height: NOISE_HEIGHT,
+ scale: NOISE_SCALE,
+ seed: 1
+};
+exports.NOISE_PARAMS = NOISE_PARAMS;
+//# sourceMappingURL=terrain-constants.js.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/terrain-constants.js.map b/packages/quick-3d-mmo-shared/dist/terrain-constants.js.map
new file mode 100644
index 00000000..cb98de0e
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/terrain-constants.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"terrain-constants.js","sourceRoot":"","sources":["../src/terrain-constants.ts"],"names":[],"mappings":";;;AAAA,IAAM,gBAAgB,GAAG,GAAG,CAAC;AAoB3B,4CAAgB;AAnBlB,qCAAqC;AACrC,IAAM,sBAAsB,GAAG,EAAE,CAAC;AAmBhC,wDAAsB;AAlBxB,oCAAoC;AACpC,IAAM,aAAa,GAAG,MAAM,CAAC;AAkB3B,sCAAa;AAhBf,IAAM,YAAY,GAAG,KAAK,CAAC;AAkBzB,oCAAY;AAjBd,4BAA4B;AAC5B,IAAM,WAAW,GAAG,MAAM,CAAC;AAiBzB,kCAAW;AAhBb,IAAM,YAAY,GAAG;IACnB,OAAO,EAAE,EAAE;IACX,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,GAAG;IACf,cAAc,EAAE,GAAG;IACnB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,WAAW;IAClB,IAAI,EAAE,CAAC;CACR,CAAA;AASC,oCAAY"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/terrain-height.d.ts b/packages/quick-3d-mmo-shared/dist/terrain-height.d.ts
new file mode 100644
index 00000000..290ba033
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/terrain-height.d.ts
@@ -0,0 +1,8 @@
+import { Noise } from './noise.js';
+declare class HeightGenerator {
+ noise_: Noise;
+ constructor();
+ Get(x: any, y: any, z: any): number[];
+}
+export { HeightGenerator };
+//# sourceMappingURL=terrain-height.d.ts.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/terrain-height.d.ts.map b/packages/quick-3d-mmo-shared/dist/terrain-height.d.ts.map
new file mode 100644
index 00000000..1f8ce3d4
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/terrain-height.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"terrain-height.d.ts","sourceRoot":"","sources":["../src/terrain-height.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAEjC,cAAM,eAAe;IACnB,MAAM,EAAE,KAAK,CAAC;;IAKd,GAAG,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA,EAAE,CAAC,KAAA;CAGZ;AAED,OAAO,EAAC,eAAe,EAAC,CAAA"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/terrain-height.js b/packages/quick-3d-mmo-shared/dist/terrain-height.js
new file mode 100644
index 00000000..d784352f
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/terrain-height.js
@@ -0,0 +1,17 @@
+"use strict";
+exports.__esModule = true;
+exports.HeightGenerator = void 0;
+var terrain_constants_js_1 = require("./terrain-constants.js");
+var noise_js_1 = require("./noise.js");
+var HeightGenerator = /** @class */ (function () {
+ function HeightGenerator() {
+ this.noise_ = new noise_js_1.Noise(terrain_constants_js_1.NOISE_PARAMS);
+ }
+ HeightGenerator.prototype.Get = function (x, y, z) {
+ return [this.noise_.Get(x, y, z), 1];
+ };
+ return HeightGenerator;
+}());
+exports.HeightGenerator = HeightGenerator;
+;
+//# sourceMappingURL=terrain-height.js.map
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/dist/terrain-height.js.map b/packages/quick-3d-mmo-shared/dist/terrain-height.js.map
new file mode 100644
index 00000000..80881fee
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/dist/terrain-height.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"terrain-height.js","sourceRoot":"","sources":["../src/terrain-height.ts"],"names":[],"mappings":";;;AACA,+DAAoD;AACpD,uCAAiC;AAEjC;IAEE;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAK,CAAC,mCAAY,CAAC,CAAC;IACxC,CAAC;IAED,6BAAG,GAAH,UAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IACH,sBAAC;AAAD,CAAC,AATD,IASC;AAEO,0CAAe;AAFtB,CAAC"}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/package.json b/packages/quick-3d-mmo-shared/package.json
new file mode 100644
index 00000000..40352590
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/package.json
@@ -0,0 +1,14 @@
+{
+ "name": "quick-3d-mmo-shared",
+ "version": "0.0.1",
+ "main": "dist/index.js",
+ "types": "dist/index.d.ts",
+ "license": "MIT",
+ "dependencies": {
+ "webpack": "^5.30.0",
+ "webpack-cli": "^4.6.0"
+ },
+ "scripts": {
+ "build": "tsc --build"
+ }
+}
diff --git a/packages/shared/src/OrbitControls.ts b/packages/quick-3d-mmo-shared/src/OrbitControls.ts
similarity index 100%
rename from packages/shared/src/OrbitControls.ts
rename to packages/quick-3d-mmo-shared/src/OrbitControls.ts
diff --git a/packages/shared/src/constants.ts b/packages/quick-3d-mmo-shared/src/constants.ts
similarity index 95%
rename from packages/shared/src/constants.ts
rename to packages/quick-3d-mmo-shared/src/constants.ts
index e3dcecf8..9d1b3ea1 100644
--- a/packages/shared/src/constants.ts
+++ b/packages/quick-3d-mmo-shared/src/constants.ts
@@ -45,6 +45,8 @@ enum EVENT_TYPES {
INPUT_PICKED = 'input.picked',
}
+type IEVENT_TYPES = Record;
+
enum KNOWN_ENTITIES {
DATABASE = 'database',
INVENTORY_CONTROLLER = 'InventoryController',
@@ -55,7 +57,8 @@ enum KNOWN_ENTITIES {
SCENERY = 'scenery',
TERRAIN = 'terrain',
UI = 'ui',
- NETWORK = 'network'
+ NETWORK = 'network',
+ PLAYER = 'player'
}
enum NAMED_COMPONENTS {
@@ -107,6 +110,10 @@ enum DOM_IDS {
QUEST_UI = 'quest-ui',
}
+export type {
+ IEVENT_TYPES
+}
+
export {
_TIMEOUT,
ATTACK_TYPES,
diff --git a/packages/shared/src/defs.ts b/packages/quick-3d-mmo-shared/src/defs.ts
similarity index 96%
rename from packages/shared/src/defs.ts
rename to packages/quick-3d-mmo-shared/src/defs.ts
index f18de606..3bdfd8b9 100644
--- a/packages/shared/src/defs.ts
+++ b/packages/quick-3d-mmo-shared/src/defs.ts
@@ -1,4 +1,4 @@
-import { CLASS_TYPES_ENUM, WEAPON_TYPES_ENUM } from "./constants";
+import { CLASS_TYPES_ENUM, WEAPON_TYPES_ENUM } from "./constants.js";
declare module ICharacter {
@@ -55,7 +55,7 @@ interface ICharacterModels {
const CHARACTER_MODELS: ICharacterModels = {
[CLASS_TYPES_ENUM.PALADIN]: {
base: 'paladin.glb',
- path: './resources/characters/',
+ path: './src/resources/characters/',
anchors: {
rightHand: 'RightHandIndex1',
},
@@ -86,7 +86,7 @@ const CHARACTER_MODELS: ICharacterModels = {
},
[CLASS_TYPES_ENUM.SORCEROR]: {
base: 'sorceror.glb',
- path: './resources/characters/',
+ path: './src/resources/characters/',
anchors: {
rightHand: 'RightHandIndex1',
},
@@ -113,7 +113,7 @@ const CHARACTER_MODELS: ICharacterModels = {
},
[CLASS_TYPES_ENUM.WARROK]: {
base: 'warrok.glb',
- path: './resources/characters/',
+ path: './src/resources/characters/',
anchors: {
rightHand: 'RightHandIndex1',
},
@@ -140,7 +140,7 @@ const CHARACTER_MODELS: ICharacterModels = {
},
[CLASS_TYPES_ENUM.ZOMBIE]: {
base: 'zombie-guy.glb',
- path: './resources/characters/',
+ path: './src/resources/characters/',
anchors: {
rightHand: 'RightHandIndex1',
},
diff --git a/packages/shared/src/entity-manager.ts b/packages/quick-3d-mmo-shared/src/entity-manager.ts
similarity index 91%
rename from packages/shared/src/entity-manager.ts
rename to packages/quick-3d-mmo-shared/src/entity-manager.ts
index a86f601d..f1b14606 100644
--- a/packages/shared/src/entity-manager.ts
+++ b/packages/quick-3d-mmo-shared/src/entity-manager.ts
@@ -24,15 +24,16 @@ class EntityManager {
}
Add(e, n) {
+ // console.log("EntityManager.Add(): ", e, n)
if (!n) {
n = this._GenerateName();
}
-
+ e.SetName(n);
this._entitiesMap[n] = e;
this._entities.push(e);
e.SetParent(this);
- e.SetName(n);
+
e.InitEntity();
}
@@ -55,8 +56,8 @@ class EntityManager {
}
Update(timeElapsed) {
- const dead = [];
- const alive = [];
+ const dead: any[] = [];
+ const alive: any[] = [];
for (let i = 0; i < this._entities.length; ++i) {
const e = this._entities[i];
diff --git a/packages/shared/src/globaltypes.ts b/packages/quick-3d-mmo-shared/src/globaltypes.ts
similarity index 83%
rename from packages/shared/src/globaltypes.ts
rename to packages/quick-3d-mmo-shared/src/globaltypes.ts
index 740b2fd1..00489873 100644
--- a/packages/shared/src/globaltypes.ts
+++ b/packages/quick-3d-mmo-shared/src/globaltypes.ts
@@ -1,4 +1,4 @@
-import { EVENT_TYPES } from "./constants"
+import { EVENT_TYPES } from "./constants.js"
interface IOnMessageArgs {
(evt: TEvt, params: {
diff --git a/packages/quick-3d-mmo-shared/src/index.ts b/packages/quick-3d-mmo-shared/src/index.ts
new file mode 100644
index 00000000..6294c772
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/src/index.ts
@@ -0,0 +1,25 @@
+import * as Constants from './constants.js';
+import * as Defs from './defs.js';
+import * as Math from './math.js';
+import * as EntityManager from './entity-manager.js';
+import * as SpatialHashGrid from './spatial-hash-grid.js';
+import * as Noise from './noise.js';
+import * as TerrainHeight from './terrain-height.js';
+import * as TerrainConstants from './terrain-constants.js';
+import * as Spline from './spline.js';
+
+import type * as GlobalTypes from './globaltypes.js';
+
+export type {GlobalTypes}
+
+export {
+ Constants,
+ Defs,
+ Math,
+ EntityManager,
+ SpatialHashGrid,
+ Noise,
+ TerrainHeight,
+ TerrainConstants,
+ Spline,
+};
\ No newline at end of file
diff --git a/packages/shared/src/math.ts b/packages/quick-3d-mmo-shared/src/math.ts
similarity index 100%
rename from packages/shared/src/math.ts
rename to packages/quick-3d-mmo-shared/src/math.ts
diff --git a/packages/shared/src/noise.ts b/packages/quick-3d-mmo-shared/src/noise.ts
similarity index 95%
rename from packages/shared/src/noise.ts
rename to packages/quick-3d-mmo-shared/src/noise.ts
index 3aa101cf..18badb3e 100644
--- a/packages/shared/src/noise.ts
+++ b/packages/quick-3d-mmo-shared/src/noise.ts
@@ -1,4 +1,4 @@
-import { SimplexNoise } from './simplex-noise';
+import { SimplexNoise } from './simplex-noise.js';
class Noise {
_params: any;
// would love to add type def to this, but I don't wanna mess with the simplex function.
diff --git a/packages/shared/src/simplex-noise.ts b/packages/quick-3d-mmo-shared/src/simplex-noise.ts
similarity index 100%
rename from packages/shared/src/simplex-noise.ts
rename to packages/quick-3d-mmo-shared/src/simplex-noise.ts
diff --git a/packages/shared/src/spatial-hash-grid.ts b/packages/quick-3d-mmo-shared/src/spatial-hash-grid.ts
similarity index 94%
rename from packages/shared/src/spatial-hash-grid.ts
rename to packages/quick-3d-mmo-shared/src/spatial-hash-grid.ts
index 2c049a81..f8149cfd 100644
--- a/packages/shared/src/spatial-hash-grid.ts
+++ b/packages/quick-3d-mmo-shared/src/spatial-hash-grid.ts
@@ -1,4 +1,4 @@
-import * as math from './math';
+import * as math from './math.js';
class SpatialHashGrid {
_cells: any[][];
diff --git a/packages/shared/src/spline.ts b/packages/quick-3d-mmo-shared/src/spline.ts
similarity index 100%
rename from packages/shared/src/spline.ts
rename to packages/quick-3d-mmo-shared/src/spline.ts
diff --git a/packages/shared/src/terrain-constants.ts b/packages/quick-3d-mmo-shared/src/terrain-constants.ts
similarity index 100%
rename from packages/shared/src/terrain-constants.ts
rename to packages/quick-3d-mmo-shared/src/terrain-constants.ts
diff --git a/packages/shared/src/terrain-height.ts b/packages/quick-3d-mmo-shared/src/terrain-height.ts
similarity index 69%
rename from packages/shared/src/terrain-height.ts
rename to packages/quick-3d-mmo-shared/src/terrain-height.ts
index a323faa2..0382461d 100644
--- a/packages/shared/src/terrain-height.ts
+++ b/packages/quick-3d-mmo-shared/src/terrain-height.ts
@@ -1,6 +1,6 @@
-import {NOISE_PARAMS} from './terrain-constants';
-import {Noise} from './noise';
+import {NOISE_PARAMS} from './terrain-constants.js';
+import {Noise} from './noise.js';
class HeightGenerator {
noise_: Noise;
diff --git a/packages/quick-3d-mmo-shared/tsconfig.json b/packages/quick-3d-mmo-shared/tsconfig.json
new file mode 100644
index 00000000..5a735a93
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/tsconfig.json
@@ -0,0 +1,15 @@
+{
+ "compilerOptions": {
+ /* Basic Options */
+ "declaration": true,
+ "declarationMap": true,
+ "sourceMap": true,
+ "composite": true,
+ "outDir": "dist",
+ "rootDir": "src",
+ "skipLibCheck": true
+ },
+ "include": [
+ "src"
+ ]
+}
\ No newline at end of file
diff --git a/packages/quick-3d-mmo-shared/tsconfig.tsbuildinfo b/packages/quick-3d-mmo-shared/tsconfig.tsbuildinfo
new file mode 100644
index 00000000..452d1210
--- /dev/null
+++ b/packages/quick-3d-mmo-shared/tsconfig.tsbuildinfo
@@ -0,0 +1,5102 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../node_modules/typescript/lib/lib.d.ts": {
+ "version": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "signature": "2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "b3584bc5798ed422ce2516df360ffa9cf2d80b5eae852867db9ba3743145f895",
+ "signature": "b3584bc5798ed422ce2516df360ffa9cf2d80b5eae852867db9ba3743145f895",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2015.d.ts": {
+ "version": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "signature": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es2016.d.ts": {
+ "version": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "signature": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es2017.d.ts": {
+ "version": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "signature": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.es2018.d.ts": {
+ "version": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "signature": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "feeeb1dd8a80fb76be42b0426e8f3ffa9bdef3c2f3c12c147e7660b1c5ba8b3b",
+ "signature": "feeeb1dd8a80fb76be42b0426e8f3ffa9bdef3c2f3c12c147e7660b1c5ba8b3b",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2015.core.d.ts": {
+ "version": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "signature": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2015.collection.d.ts": {
+ "version": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "signature": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2015.generator.d.ts": {
+ "version": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "signature": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
+ "version": "8b2a5df1ce95f78f6b74f1a555ccdb6baab0486b42d8345e0871dd82811f9b9a",
+ "signature": "8b2a5df1ce95f78f6b74f1a555ccdb6baab0486b42d8345e0871dd82811f9b9a",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2015.promise.d.ts": {
+ "version": "2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c",
+ "signature": "2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
+ "version": "810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357",
+ "signature": "810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
+ "version": "62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6",
+ "signature": "62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
+ "version": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "signature": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
+ "version": "9d122b7e8c1a5c72506eea50c0973cba55b92b5532d5cafa8a6ce2c547d57551",
+ "signature": "9d122b7e8c1a5c72506eea50c0973cba55b92b5532d5cafa8a6ce2c547d57551",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
+ "version": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "signature": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2017.object.d.ts": {
+ "version": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "signature": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
+ "version": "7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98",
+ "signature": "7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2017.string.d.ts": {
+ "version": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "signature": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2017.intl.d.ts": {
+ "version": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "signature": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
+ "version": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "signature": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
+ "version": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "signature": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
+ "version": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "signature": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2018.intl.d.ts": {
+ "version": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "signature": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2018.promise.d.ts": {
+ "version": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "signature": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
+ "version": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
+ "version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/typescript/lib/lib.esnext.intl.d.ts": {
+ "version": "506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e",
+ "signature": "506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/@types/three/src/constants.d.ts": {
+ "version": "2eaf1bc69aa0154453a8ab69f00c0be5bd1be81ecf390b6db529ddaa6b00f276",
+ "signature": "2eaf1bc69aa0154453a8ab69f00c0be5bd1be81ecf390b6db529ddaa6b00f276",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/Three.Legacy.d.ts": {
+ "version": "8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881",
+ "signature": "8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/Interpolant.d.ts": {
+ "version": "4ba733d1a5ff0a0779b714468b13c9089f0d877e6fbd0147fac7c3af54c89fe0",
+ "signature": "4ba733d1a5ff0a0779b714468b13c9089f0d877e6fbd0147fac7c3af54c89fe0",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/interpolants/DiscreteInterpolant.d.ts": {
+ "version": "a39e9304639454356f4a1fe20741899de0c3163e1f040d0e0acfdc8532f779e3",
+ "signature": "a39e9304639454356f4a1fe20741899de0c3163e1f040d0e0acfdc8532f779e3",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/interpolants/LinearInterpolant.d.ts": {
+ "version": "3bf8a15acc2dbde99020f0ebe9d16ceba9e6220e41e034003fc8f835b47642af",
+ "signature": "3bf8a15acc2dbde99020f0ebe9d16ceba9e6220e41e034003fc8f835b47642af",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/interpolants/CubicInterpolant.d.ts": {
+ "version": "eae4d78e9a2660a6af2a638ac809a81d2bba1b90ec36620b2035a65cf296646b",
+ "signature": "eae4d78e9a2660a6af2a638ac809a81d2bba1b90ec36620b2035a65cf296646b",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts": {
+ "version": "43303fac4d13164e1dfb563f934fb33f66369ba0f1cf07bd6f99b67ffa8c2805",
+ "signature": "43303fac4d13164e1dfb563f934fb33f66369ba0f1cf07bd6f99b67ffa8c2805",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/animation/tracks/VectorKeyframeTrack.d.ts": {
+ "version": "b688ddf5ad2d24f3fa58efd84f9ac9e3e1455031d8881dd917d72432a951e9e8",
+ "signature": "b688ddf5ad2d24f3fa58efd84f9ac9e3e1455031d8881dd917d72432a951e9e8",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/animation/tracks/StringKeyframeTrack.d.ts": {
+ "version": "8cc83bf53997f80f7ddf98c0b70d4c625c3cd5b93ae2efe2fc0084a26d997a7a",
+ "signature": "8cc83bf53997f80f7ddf98c0b70d4c625c3cd5b93ae2efe2fc0084a26d997a7a",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/animation/tracks/QuaternionKeyframeTrack.d.ts": {
+ "version": "71eb65c9011c56ea56932a87d9d171cf225f29c3aa601cffdd5818ebd0e16bd7",
+ "signature": "71eb65c9011c56ea56932a87d9d171cf225f29c3aa601cffdd5818ebd0e16bd7",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/animation/tracks/NumberKeyframeTrack.d.ts": {
+ "version": "164f1c5c8ad203e80b827350fe3ca1c59c8106c8613e20a3ec4ea9e63dd2e730",
+ "signature": "164f1c5c8ad203e80b827350fe3ca1c59c8106c8613e20a3ec4ea9e63dd2e730",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/animation/tracks/ColorKeyframeTrack.d.ts": {
+ "version": "a228ab0a7976c724d6135bbc153016418e3b8560a44101999192c5204fd31dfd",
+ "signature": "a228ab0a7976c724d6135bbc153016418e3b8560a44101999192c5204fd31dfd",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/animation/tracks/BooleanKeyframeTrack.d.ts": {
+ "version": "7a921991afa2ab5da7c9d94d6ee81de34724f82520fb3fabbe6eeaa29a7b5661",
+ "signature": "7a921991afa2ab5da7c9d94d6ee81de34724f82520fb3fabbe6eeaa29a7b5661",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/animation/PropertyMixer.d.ts": {
+ "version": "4c136da3b1dce49c12eac152699c6b4bc64fa93d6c7224a43c816f7e51b00930",
+ "signature": "4c136da3b1dce49c12eac152699c6b4bc64fa93d6c7224a43c816f7e51b00930",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/animation/PropertyBinding.d.ts": {
+ "version": "bfac6d6a4817bf56d574b1f32b174f655e05ce45c5ddf6d17c9b592660f10935",
+ "signature": "bfac6d6a4817bf56d574b1f32b174f655e05ce45c5ddf6d17c9b592660f10935",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/Quaternion.d.ts": {
+ "version": "adeaf801104dcea2399264c342f4fd4b5209fa26a5f3aacf9ba16cc99356f69e",
+ "signature": "adeaf801104dcea2399264c342f4fd4b5209fa26a5f3aacf9ba16cc99356f69e",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/Matrix3.d.ts": {
+ "version": "b9351b40d154fceaf3394e9ab886d65b1c2c02bd0cf2db573825fc09decdab0c",
+ "signature": "b9351b40d154fceaf3394e9ab886d65b1c2c02bd0cf2db573825fc09decdab0c",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts": {
+ "version": "88f7f80c124dcada14f81e9dee5f293bd8fd0975c0195789a927bd92919774b8",
+ "signature": "88f7f80c124dcada14f81e9dee5f293bd8fd0975c0195789a927bd92919774b8",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/Euler.d.ts": {
+ "version": "cf4fdd3a742d65e06fd998588f322f3930b0301fd103931c59926ac22e3ed6e8",
+ "signature": "cf4fdd3a742d65e06fd998588f322f3930b0301fd103931c59926ac22e3ed6e8",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/core/Layers.d.ts": {
+ "version": "51d508d4ff9616032a769e6048f2ada3e54a729c251e5dcff834ee9e0c2b828a",
+ "signature": "51d508d4ff9616032a769e6048f2ada3e54a729c251e5dcff834ee9e0c2b828a",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts": {
+ "version": "916a6bfa21c90d26a0366e486208e3d8319931c2281480a69e5309de8a9d84d6",
+ "signature": "916a6bfa21c90d26a0366e486208e3d8319931c2281480a69e5309de8a9d84d6",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/Color.d.ts": {
+ "version": "4605b1af02345f54974473028ab6e20a4566e1237d31a57124d475b2d39b9128",
+ "signature": "4605b1af02345f54974473028ab6e20a4566e1237d31a57124d475b2d39b9128",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/scenes/Fog.d.ts": {
+ "version": "dfe3e8907d4c07589704e0b42626afff7e46758a2f1e8dda6b1747cb2e3ef79a",
+ "signature": "dfe3e8907d4c07589704e0b42626afff7e46758a2f1e8dda6b1747cb2e3ef79a",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/Vector2.d.ts": {
+ "version": "2f2f2d34f3a5c0291e3eb79dbaae0a4c9101b033fab3c28a3b6c161c0c333e76",
+ "signature": "2f2f2d34f3a5c0291e3eb79dbaae0a4c9101b033fab3c28a3b6c161c0c333e76",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/Triangle.d.ts": {
+ "version": "2cc978352f37eec71d1d65b6f63ba5fae0ddfb2f1c204c9496717b3a3139519f",
+ "signature": "2cc978352f37eec71d1d65b6f63ba5fae0ddfb2f1c204c9496717b3a3139519f",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/Box3.d.ts": {
+ "version": "d04b9cf296d4276d2f57827d7cb6e7e527c13b08b355888a37b1460ed1122287",
+ "signature": "d04b9cf296d4276d2f57827d7cb6e7e527c13b08b355888a37b1460ed1122287",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/Sphere.d.ts": {
+ "version": "50547449b9a609476250ca778cf62ce696551ed332972b97933ff603d8bca859",
+ "signature": "50547449b9a609476250ca778cf62ce696551ed332972b97933ff603d8bca859",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/Line3.d.ts": {
+ "version": "ecfe11afabf0836940c1fc2dc0204548ff643426dd0421dad964150b6bb72da3",
+ "signature": "ecfe11afabf0836940c1fc2dc0204548ff643426dd0421dad964150b6bb72da3",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/Plane.d.ts": {
+ "version": "733046ebecd9ab7b23e13389263880a9d52c0e663939be9ad28a98dc75554f44",
+ "signature": "733046ebecd9ab7b23e13389263880a9d52c0e663939be9ad28a98dc75554f44",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/core/EventDispatcher.d.ts": {
+ "version": "1dcf4e36b518fc1aa7c1ed7fb25e0f6e1160da98f7e4f9a1926e83eecb1804aa",
+ "signature": "1dcf4e36b518fc1aa7c1ed7fb25e0f6e1160da98f7e4f9a1926e83eecb1804aa",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/shaders/UniformsLib.d.ts": {
+ "version": "8868268b7cb5bfb508e3844fc129cbdde23e24fae35024fca6798653a3eed289",
+ "signature": "8868268b7cb5bfb508e3844fc129cbdde23e24fae35024fca6798653a3eed289",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/shaders/ShaderLib.d.ts": {
+ "version": "166c027b2bfc241c7540aaf3832fdee69018185a3f8a5c8e52baba6fdbcfbd20",
+ "signature": "166c027b2bfc241c7540aaf3832fdee69018185a3f8a5c8e52baba6fdbcfbd20",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/materials/Material.d.ts": {
+ "version": "68adc344cad433489316d887082fb31aad3727f573436282f643072999e47b7a",
+ "signature": "68adc344cad433489316d887082fb31aad3727f573436282f643072999e47b7a",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/textures/Texture.d.ts": {
+ "version": "fd0c4449f1357dfa4c65235b07a4d156100088254ad55ee3557a53d7beae2aef",
+ "signature": "fd0c4449f1357dfa4c65235b07a4d156100088254ad55ee3557a53d7beae2aef",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/Vector4.d.ts": {
+ "version": "4d66c748eed18b9520de8384c7d371ff374fd8381ec134ca5b788d09b047db94",
+ "signature": "4d66c748eed18b9520de8384c7d371ff374fd8381ec134ca5b788d09b047db94",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/textures/DepthTexture.d.ts": {
+ "version": "367bba45eb437cea29f41c3a382c292c6fe6cdb7b26a389ee5d3a5eea5d75040",
+ "signature": "367bba45eb437cea29f41c3a382c292c6fe6cdb7b26a389ee5d3a5eea5d75040",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/WebGLRenderTarget.d.ts": {
+ "version": "74b762fd4dea4bcbb20871265c2bb33700336fbed0ad499335beb222b87ffa52",
+ "signature": "74b762fd4dea4bcbb20871265c2bb33700336fbed0ad499335beb222b87ffa52",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/textures/CubeTexture.d.ts": {
+ "version": "21b08a722f729d8d95892465be0977a8563dcf630b38d87886517ce6f027389c",
+ "signature": "21b08a722f729d8d95892465be0977a8563dcf630b38d87886517ce6f027389c",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/WebGLCubeRenderTarget.d.ts": {
+ "version": "80639ea4472a40009209e18013d543954e3e2379c712b571101ac2e8c5da0fcb",
+ "signature": "80639ea4472a40009209e18013d543954e3e2379c712b571101ac2e8c5da0fcb",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/scenes/Scene.d.ts": {
+ "version": "f5e983730652fec8fafa9ea505f5fd1613c07eba776614e3044a421aeb22f33c",
+ "signature": "f5e983730652fec8fafa9ea505f5fd1613c07eba776614e3044a421aeb22f33c",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts": {
+ "version": "f30b0014b692111f093ac9b8f1f29e6047e2d0deb61005b60e68b562d2320fab",
+ "signature": "f30b0014b692111f093ac9b8f1f29e6047e2d0deb61005b60e68b562d2320fab",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts": {
+ "version": "fc3596b10eb99c07fccec7b04b9404d36bea341b9f486173aff1e234aceaccff",
+ "signature": "fc3596b10eb99c07fccec7b04b9404d36bea341b9f486173aff1e234aceaccff",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLShader.d.ts": {
+ "version": "b71e7f69e72d51d44ad171e6e93aedc2c33c339dab5fa2656e7b1ee5ba19b2ad",
+ "signature": "b71e7f69e72d51d44ad171e6e93aedc2c33c339dab5fa2656e7b1ee5ba19b2ad",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLState.d.ts": {
+ "version": "b613436b912db733f6731b4e5cac3395f5cfe70ba1b003853ce5a441f220ec8f",
+ "signature": "b613436b912db733f6731b4e5cac3395f5cfe70ba1b003853ce5a441f220ec8f",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProperties.d.ts": {
+ "version": "281eb8e4ddd65b6733cf1f175dd1af1bb2595bbcea7c12324f028079ba78fdf9",
+ "signature": "281eb8e4ddd65b6733cf1f175dd1af1bb2595bbcea7c12324f028079ba78fdf9",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLUtils.d.ts": {
+ "version": "54d68fee094e2ec6d34c4b7d89ba849ff87a2030fb8e907b0c4ad252009d40cf",
+ "signature": "54d68fee094e2ec6d34c4b7d89ba849ff87a2030fb8e907b0c4ad252009d40cf",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLTextures.d.ts": {
+ "version": "e0fdf687219271c3031ae25cd8d3e9fe7c16ce46453ce775292887f486c2aa16",
+ "signature": "e0fdf687219271c3031ae25cd8d3e9fe7c16ce46453ce775292887f486c2aa16",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLUniforms.d.ts": {
+ "version": "f17592fc258a847bb7d38ab25799eabce4865f24fcb441cc69a6a6277a48e6a7",
+ "signature": "f17592fc258a847bb7d38ab25799eabce4865f24fcb441cc69a6a6277a48e6a7",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProgram.d.ts": {
+ "version": "512d2b3f264aac071278060d3e4f019508b8a504283708a0fc503198f244c363",
+ "signature": "512d2b3f264aac071278060d3e4f019508b8a504283708a0fc503198f244c363",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLInfo.d.ts": {
+ "version": "5f477e9897e29f47b860b52218d645178362d3ebd17c990df9f36b0c52d0e6ff",
+ "signature": "5f477e9897e29f47b860b52218d645178362d3ebd17c990df9f36b0c52d0e6ff",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLObjects.d.ts": {
+ "version": "0df7497ada3a4f6459420803ecf7e555f1ad1e7bd43c1e17bdafbc34e19d7162",
+ "signature": "0df7497ada3a4f6459420803ecf7e555f1ad1e7bd43c1e17bdafbc34e19d7162",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/objects/Group.d.ts": {
+ "version": "2923047a1c951231f48fe77a6c2fffba8198c20dd05d4ec1b90f9e45f129adea",
+ "signature": "2923047a1c951231f48fe77a6c2fffba8198c20dd05d4ec1b90f9e45f129adea",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/core/InterleavedBuffer.d.ts": {
+ "version": "4a67b2b2c0d75420839fdfb71348d7e45617815cbc836451f6b6b713f3ae027d",
+ "signature": "4a67b2b2c0d75420839fdfb71348d7e45617815cbc836451f6b6b713f3ae027d",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/core/InterleavedBufferAttribute.d.ts": {
+ "version": "61151756294f487dc1e8eb4dc04e2b3f16f219476a83af8b1a163b0d3231e125",
+ "signature": "61151756294f487dc1e8eb4dc04e2b3f16f219476a83af8b1a163b0d3231e125",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts": {
+ "version": "2ee3c063fa092a063e5af32e89407ce5c8901b47ef161b20a7c493a6797e5942",
+ "signature": "2ee3c063fa092a063e5af32e89407ce5c8901b47ef161b20a7c493a6797e5942",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLRenderLists.d.ts": {
+ "version": "b005fce0e3020382ab379c1686511827b18d628a45f09c05fe13562d6ff9fbf8",
+ "signature": "b005fce0e3020382ab379c1686511827b18d628a45f09c05fe13562d6ff9fbf8",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/lights/LightShadow.d.ts": {
+ "version": "cb89d28353d59543e7462bbbc55db4f4b14bdff4a6fc041641a28bf7ca01c580",
+ "signature": "cb89d28353d59543e7462bbbc55db4f4b14bdff4a6fc041641a28bf7ca01c580",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/lights/Light.d.ts": {
+ "version": "76112f75c81cde794e557206dfd5176e321d9f650b86e4c049c4b6aa6081fa63",
+ "signature": "76112f75c81cde794e557206dfd5176e321d9f650b86e4c049c4b6aa6081fa63",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLShadowMap.d.ts": {
+ "version": "2c9bc3a14054cf2c82d57c29d3151fee1b27a4438d7c9699ba6fcdfe0c1690f7",
+ "signature": "2c9bc3a14054cf2c82d57c29d3151fee1b27a4438d7c9699ba6fcdfe0c1690f7",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webxr/WebXR.d.ts": {
+ "version": "c38cc2b20772e99f3ded463dba15a03a51f8f50d35071f22c567ffcd2c33a27d",
+ "signature": "c38cc2b20772e99f3ded463dba15a03a51f8f50d35071f22c567ffcd2c33a27d",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webxr/WebXRManager.d.ts": {
+ "version": "9c69db2c8116f5d70f763166d553e24530ffff7c79ef190ef4186d60cb2a2428",
+ "signature": "9c69db2c8116f5d70f763166d553e24530ffff7c79ef190ef4186d60cb2a2428",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/textures/DataTexture3D.d.ts": {
+ "version": "432fe3b8769c1e1090be43baff32bccfb436c1fce8d470a45fef5a8016dbaab1",
+ "signature": "432fe3b8769c1e1090be43baff32bccfb436c1fce8d470a45fef5a8016dbaab1",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/textures/DataTexture2DArray.d.ts": {
+ "version": "ed0e3159c03180a7ae7fe891f12b386eb311a9440a3a97e546c4d57039e43162",
+ "signature": "ed0e3159c03180a7ae7fe891f12b386eb311a9440a3a97e546c4d57039e43162",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts": {
+ "version": "52bb710e4227d90329c3a3e4304a880805db1599f2c1967cfd18e38a7890d5f8",
+ "signature": "52bb710e4227d90329c3a3e4304a880805db1599f2c1967cfd18e38a7890d5f8",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/Ray.d.ts": {
+ "version": "b148cec375fae1768c5b4089680d664fb05c60078df3871ccf430ad02ccce329",
+ "signature": "b148cec375fae1768c5b4089680d664fb05c60078df3871ccf430ad02ccce329",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/core/Raycaster.d.ts": {
+ "version": "129eaca80766e63a8c4b1f6aee427aea21a4e9826932a77cae021dd170d0f0fc",
+ "signature": "129eaca80766e63a8c4b1f6aee427aea21a4e9826932a77cae021dd170d0f0fc",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/core/Object3D.d.ts": {
+ "version": "8730619633dffe07eef990f00e1e327e59d574354540a3b63611f4af20d85567",
+ "signature": "8730619633dffe07eef990f00e1e327e59d574354540a3b63611f4af20d85567",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts": {
+ "version": "3470118b64b6e9ea140a7be15b04f8e39d9b17869182a177fd12be31b524c383",
+ "signature": "3470118b64b6e9ea140a7be15b04f8e39d9b17869182a177fd12be31b524c383",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/Spherical.d.ts": {
+ "version": "21a2391b9b0784854aba05ea34d50854807026b7b52fc07611f65c78d84399a1",
+ "signature": "21a2391b9b0784854aba05ea34d50854807026b7b52fc07611f65c78d84399a1",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/Cylindrical.d.ts": {
+ "version": "4f842cce29cb043bc64c1943521b244ff6cee453a3b6000265ff3631d7035a9c",
+ "signature": "4f842cce29cb043bc64c1943521b244ff6cee453a3b6000265ff3631d7035a9c",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/Vector3.d.ts": {
+ "version": "c0f556a6fa323dbb173bd1ab49d1903a61d437d53443d260dc4a51ce423e226f",
+ "signature": "c0f556a6fa323dbb173bd1ab49d1903a61d437d53443d260dc4a51ce423e226f",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/objects/Bone.d.ts": {
+ "version": "f677a74b2b038509ea5aef4030fadc0e090cc9fd4dca4c71147934e6697c23b0",
+ "signature": "f677a74b2b038509ea5aef4030fadc0e090cc9fd4dca4c71147934e6697c23b0",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/animation/AnimationClip.d.ts": {
+ "version": "ba6a7d0e5cecc3ac957d1b4c3d7ff1a0bab1c67253b3c3b858892323a29abd99",
+ "signature": "ba6a7d0e5cecc3ac957d1b4c3d7ff1a0bab1c67253b3c3b858892323a29abd99",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/animation/AnimationUtils.d.ts": {
+ "version": "bc7d1326a9187df243a5af0eddbc3095dc3442ffcc153c23e3974553e11b7972",
+ "signature": "bc7d1326a9187df243a5af0eddbc3095dc3442ffcc153c23e3974553e11b7972",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/animation/AnimationObjectGroup.d.ts": {
+ "version": "0e6b3c7f300f6e2587c62783ebf78c74e61e7e85d37591e1e1ecf82cc15adc01",
+ "signature": "0e6b3c7f300f6e2587c62783ebf78c74e61e7e85d37591e1e1ecf82cc15adc01",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/animation/AnimationAction.d.ts": {
+ "version": "139ab16e09553addf17cfb7122108eb39cd406b8009692c4d1d9e3dea96ef83d",
+ "signature": "139ab16e09553addf17cfb7122108eb39cd406b8009692c4d1d9e3dea96ef83d",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/animation/AnimationMixer.d.ts": {
+ "version": "69f3d18ee459096c5e1426df332673a939b56b8bafeeec0b31b3cab1a9e4dadd",
+ "signature": "69f3d18ee459096c5e1426df332673a939b56b8bafeeec0b31b3cab1a9e4dadd",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/audio/AudioContext.d.ts": {
+ "version": "192ad3de0ae2044e97d375c601ef54149382bcf59a9eec35066465a73c434c0a",
+ "signature": "192ad3de0ae2044e97d375c601ef54149382bcf59a9eec35066465a73c434c0a",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/audio/AudioListener.d.ts": {
+ "version": "a99712388b38c17ca788b4b93cee993cc487ba69e18d98dba66000031e90c378",
+ "signature": "a99712388b38c17ca788b4b93cee993cc487ba69e18d98dba66000031e90c378",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/audio/Audio.d.ts": {
+ "version": "d78026a89ce7ed12ae2492df52893b8524fbe4ee6546b60b83e57c1ab08faf2c",
+ "signature": "d78026a89ce7ed12ae2492df52893b8524fbe4ee6546b60b83e57c1ab08faf2c",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/audio/PositionalAudio.d.ts": {
+ "version": "e1b5820a2298308c97ac20096c391a4a064c02819ea897a20ea3f08f15051035",
+ "signature": "e1b5820a2298308c97ac20096c391a4a064c02819ea897a20ea3f08f15051035",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/audio/AudioAnalyser.d.ts": {
+ "version": "9d948541e42e0af1cf6e33967c13bdb3193d6507c4ff2bfde6849fe4ee15366c",
+ "signature": "9d948541e42e0af1cf6e33967c13bdb3193d6507c4ff2bfde6849fe4ee15366c",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/cameras/PerspectiveCamera.d.ts": {
+ "version": "a37385e604ee8726100c207afa819823079a766c30f5c38a242a9368d8c28e45",
+ "signature": "a37385e604ee8726100c207afa819823079a766c30f5c38a242a9368d8c28e45",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/cameras/StereoCamera.d.ts": {
+ "version": "ab8c6e4a2b49a17c71848a8c7d14aa7fae2a2620c734922d8d004d59baf59ffb",
+ "signature": "ab8c6e4a2b49a17c71848a8c7d14aa7fae2a2620c734922d8d004d59baf59ffb",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/cameras/OrthographicCamera.d.ts": {
+ "version": "c53f1e0dcd4a2c1c3e86c83345fd078ff75425ffb78654306b0f58521dc30f50",
+ "signature": "c53f1e0dcd4a2c1c3e86c83345fd078ff75425ffb78654306b0f58521dc30f50",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/cameras/CubeCamera.d.ts": {
+ "version": "1fc98030aad398bba258e0fd2d5d6e39ab085c5d22257fbcd8181e0c2621489f",
+ "signature": "1fc98030aad398bba258e0fd2d5d6e39ab085c5d22257fbcd8181e0c2621489f",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/cameras/ArrayCamera.d.ts": {
+ "version": "c60124cf00efc8b113c643d222cc146d15d5ea184c04df3cce9ce8652e42a6fc",
+ "signature": "c60124cf00efc8b113c643d222cc146d15d5ea184c04df3cce9ce8652e42a6fc",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/core/Uniform.d.ts": {
+ "version": "7bf91a5d5e38618029b7d1703db7c0219f9eda3024fd816360d2ae791e89d1b3",
+ "signature": "7bf91a5d5e38618029b7d1703db7c0219f9eda3024fd816360d2ae791e89d1b3",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/core/InstancedBufferGeometry.d.ts": {
+ "version": "0f4e57b76239328d40d68e9c6271b4f17a19970bdbff18d90e08031b04efc19d",
+ "signature": "0f4e57b76239328d40d68e9c6271b4f17a19970bdbff18d90e08031b04efc19d",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/core/InstancedInterleavedBuffer.d.ts": {
+ "version": "bd683b2b79122ede787c445f2a35505d9dc60cdd3c2ed08cc05d1140c6807241",
+ "signature": "bd683b2b79122ede787c445f2a35505d9dc60cdd3c2ed08cc05d1140c6807241",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/core/InstancedBufferAttribute.d.ts": {
+ "version": "361ec213e909dea3b00f0aa91e1f1ccafe04eaae327a45bf33fe3c3a9a28d13d",
+ "signature": "361ec213e909dea3b00f0aa91e1f1ccafe04eaae327a45bf33fe3c3a9a28d13d",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/core/GLBufferAttribute.d.ts": {
+ "version": "6a60665f3bf35c7be844746ab2f796bb4076118559a7c660cf95fe01163bc79f",
+ "signature": "6a60665f3bf35c7be844746ab2f796bb4076118559a7c660cf95fe01163bc79f",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/core/Clock.d.ts": {
+ "version": "6e322a837838dbaad00bd298c6f33f5dfc9a5fed6792b0ae1d00b2da68afc2ac",
+ "signature": "6e322a837838dbaad00bd298c6f33f5dfc9a5fed6792b0ae1d00b2da68afc2ac",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/objects/ImmediateRenderObject.d.ts": {
+ "version": "f54c06d4e8fbc4f666c8c0830ac3c1cd06e39bf682347dbd84bc0ae05d3a162f",
+ "signature": "f54c06d4e8fbc4f666c8c0830ac3c1cd06e39bf682347dbd84bc0ae05d3a162f",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts": {
+ "version": "d8fe7cefa0e694eb6c202bd5dcbaf037217574a68d82aae58d7344d37a1154fa",
+ "signature": "d8fe7cefa0e694eb6c202bd5dcbaf037217574a68d82aae58d7344d37a1154fa",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/curves/EllipseCurve.d.ts": {
+ "version": "0f638672b9749835cda995e8eea6ffd2c17c505eb5b51cd263686b1abb5af9ea",
+ "signature": "0f638672b9749835cda995e8eea6ffd2c17c505eb5b51cd263686b1abb5af9ea",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/curves/ArcCurve.d.ts": {
+ "version": "105d7842497ad972a7f358d57aa0f95f722d67ce8fb0efc7d93247be6e7b025d",
+ "signature": "105d7842497ad972a7f358d57aa0f95f722d67ce8fb0efc7d93247be6e7b025d",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/curves/CatmullRomCurve3.d.ts": {
+ "version": "beb69bf7a052aa881fc18d7f7ccd47918719c1ba9ea2c92304bca4266a95df6e",
+ "signature": "beb69bf7a052aa881fc18d7f7ccd47918719c1ba9ea2c92304bca4266a95df6e",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/curves/CubicBezierCurve.d.ts": {
+ "version": "1f0a034bc92b2b6bf1579253aa20a4983b2170cebdad9ff1e13718c5b58aadbc",
+ "signature": "1f0a034bc92b2b6bf1579253aa20a4983b2170cebdad9ff1e13718c5b58aadbc",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/curves/CubicBezierCurve3.d.ts": {
+ "version": "07d41369f44f66a60cdd99267d7fd3b4c195d8fb9576a7a326b439bf3cc7b11a",
+ "signature": "07d41369f44f66a60cdd99267d7fd3b4c195d8fb9576a7a326b439bf3cc7b11a",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/curves/LineCurve.d.ts": {
+ "version": "8eb1f35d3bd99cfb4a61c87f756ae9389709e3cfdc0c4a54589b2e37c814b5a5",
+ "signature": "8eb1f35d3bd99cfb4a61c87f756ae9389709e3cfdc0c4a54589b2e37c814b5a5",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/curves/LineCurve3.d.ts": {
+ "version": "8027a5c97cc51405a3382c6b59d9690fd4ad8166dbb43e7976e62efc4a49fdce",
+ "signature": "8027a5c97cc51405a3382c6b59d9690fd4ad8166dbb43e7976e62efc4a49fdce",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/curves/QuadraticBezierCurve.d.ts": {
+ "version": "d6fc38421f16d0a68a6d782a94f567464c1c441fc14949441a140b87a29d7ddd",
+ "signature": "d6fc38421f16d0a68a6d782a94f567464c1c441fc14949441a140b87a29d7ddd",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/curves/QuadraticBezierCurve3.d.ts": {
+ "version": "9e9e3b18823c2179e426b11a6945f6586450d9db21e9eea0eb60491d018fa62b",
+ "signature": "9e9e3b18823c2179e426b11a6945f6586450d9db21e9eea0eb60491d018fa62b",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/curves/SplineCurve.d.ts": {
+ "version": "d7a12dd03519d05cf43d70990cff5caf033f9b283aac0706e11519ddebf4e945",
+ "signature": "d7a12dd03519d05cf43d70990cff5caf033f9b283aac0706e11519ddebf4e945",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/curves/Curves.d.ts": {
+ "version": "4998cbff67e76f385d9955674a9f2ac385926e807ed371ed357ccb6f03a4d72e",
+ "signature": "4998cbff67e76f385d9955674a9f2ac385926e807ed371ed357ccb6f03a4d72e",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/core/CurvePath.d.ts": {
+ "version": "248195b6ec3d8c14855fa7ba39147abdcf4f2f6bab9c80b70252a96ae6fb1cec",
+ "signature": "248195b6ec3d8c14855fa7ba39147abdcf4f2f6bab9c80b70252a96ae6fb1cec",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/core/Path.d.ts": {
+ "version": "1c548e5976ee7f2a3c46b88c09db5d1e7d95d464eff7536cb26515eb62b68694",
+ "signature": "1c548e5976ee7f2a3c46b88c09db5d1e7d95d464eff7536cb26515eb62b68694",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/core/Shape.d.ts": {
+ "version": "9034bd380f5e5a35a6d2f986c2b003786fccbc1f86bde6dde029d7ce930e3dd6",
+ "signature": "9034bd380f5e5a35a6d2f986c2b003786fccbc1f86bde6dde029d7ce930e3dd6",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/core/ShapePath.d.ts": {
+ "version": "848c83b9294d41fc9fd8eb360b5a28563cc24f3e8f045f169b5cf1a7201a551a",
+ "signature": "848c83b9294d41fc9fd8eb360b5a28563cc24f3e8f045f169b5cf1a7201a551a",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/core/Font.d.ts": {
+ "version": "6bc8df13510289edc16bf48bff69384ae05288c9c5c0fd2c38e454dd222a9499",
+ "signature": "6bc8df13510289edc16bf48bff69384ae05288c9c5c0fd2c38e454dd222a9499",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/DataUtils.d.ts": {
+ "version": "08f77f39ef225aadaa1351d0ae1c4ca7a1d1886b1425c7cb63ef910885582c69",
+ "signature": "08f77f39ef225aadaa1351d0ae1c4ca7a1d1886b1425c7cb63ef910885582c69",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/ImageUtils.d.ts": {
+ "version": "b29f216a35d3fd0688b305d31f483781b27c64a40cf76816020a1dcda4816fe5",
+ "signature": "b29f216a35d3fd0688b305d31f483781b27c64a40cf76816020a1dcda4816fe5",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/ShapeUtils.d.ts": {
+ "version": "9fe3723a3f5f2daa1317099c833ddf6e9859c3298fdc0edb4e06b463f9805761",
+ "signature": "9fe3723a3f5f2daa1317099c833ddf6e9859c3298fdc0edb4e06b463f9805761",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/extras/PMREMGenerator.d.ts": {
+ "version": "09f59f210312b40890556fb204cc7822a41b918bdb90ba2618a932ab4af715da",
+ "signature": "09f59f210312b40890556fb204cc7822a41b918bdb90ba2618a932ab4af715da",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/BoxGeometry.d.ts": {
+ "version": "1193b14b29eb632f7c77ce91e0c4741eeb4c4252212241ae6db377b739682513",
+ "signature": "1193b14b29eb632f7c77ce91e0c4741eeb4c4252212241ae6db377b739682513",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/CircleGeometry.d.ts": {
+ "version": "b8076d6e64d95061f85a2dcdd6c2a8579898281dd611b15690131f19cb8ff401",
+ "signature": "b8076d6e64d95061f85a2dcdd6c2a8579898281dd611b15690131f19cb8ff401",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/CylinderGeometry.d.ts": {
+ "version": "65a84489e184bcb327b80ff765f4c1990a854c486834640e14cfcc4d26f4a42d",
+ "signature": "65a84489e184bcb327b80ff765f4c1990a854c486834640e14cfcc4d26f4a42d",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/ConeGeometry.d.ts": {
+ "version": "ef62fde1a4f8945a551420dd48b2b80848e1486034874339b8e93c2d385b16e5",
+ "signature": "ef62fde1a4f8945a551420dd48b2b80848e1486034874339b8e93c2d385b16e5",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/PolyhedronGeometry.d.ts": {
+ "version": "8259bab99eae433b2f46db925186028fa5d1e9fdadcaaba5f2e913d89060d165",
+ "signature": "8259bab99eae433b2f46db925186028fa5d1e9fdadcaaba5f2e913d89060d165",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/DodecahedronGeometry.d.ts": {
+ "version": "265d28e894deed6c0efd2670a1b7e9710c1549b3065ccbeac1225665fec812d7",
+ "signature": "265d28e894deed6c0efd2670a1b7e9710c1549b3065ccbeac1225665fec812d7",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/EdgesGeometry.d.ts": {
+ "version": "d3de1f092f689c00d81dc2fee835ea7589e898b5bbaec44ffe3185020169900f",
+ "signature": "d3de1f092f689c00d81dc2fee835ea7589e898b5bbaec44ffe3185020169900f",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/ExtrudeGeometry.d.ts": {
+ "version": "4f773d709c92c89c5ce002786b90c50285823b38cfb8943bd23242c85ec53f08",
+ "signature": "4f773d709c92c89c5ce002786b90c50285823b38cfb8943bd23242c85ec53f08",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/IcosahedronGeometry.d.ts": {
+ "version": "2765e673d9aaf53c3b49e212cf7873493d7f422b4ee33867d0b554326bf53c40",
+ "signature": "2765e673d9aaf53c3b49e212cf7873493d7f422b4ee33867d0b554326bf53c40",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/LatheGeometry.d.ts": {
+ "version": "38c6db11a91433901dca4051014222798f5c2b33beb7849bf4965ec4c79c908f",
+ "signature": "38c6db11a91433901dca4051014222798f5c2b33beb7849bf4965ec4c79c908f",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/OctahedronGeometry.d.ts": {
+ "version": "bd3cc45d94a9b70ba744db65fc1b2e5c25bec1c78640cad20ddcb2ebb67d102e",
+ "signature": "bd3cc45d94a9b70ba744db65fc1b2e5c25bec1c78640cad20ddcb2ebb67d102e",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/ParametricGeometry.d.ts": {
+ "version": "c7dd8530f4cf12cc2955e1d5ccc5d556934862f0b11649e1cfcc94a3d96df146",
+ "signature": "c7dd8530f4cf12cc2955e1d5ccc5d556934862f0b11649e1cfcc94a3d96df146",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/PlaneGeometry.d.ts": {
+ "version": "3a6e2fd4cd00fcf1645706cb47c18c0252cd5797b0cec996a78b74c9a8d4182e",
+ "signature": "3a6e2fd4cd00fcf1645706cb47c18c0252cd5797b0cec996a78b74c9a8d4182e",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/RingGeometry.d.ts": {
+ "version": "2064383adec81d5f61965f9481c3a2a80ada7f5c2f19fd065a07e23fb453bd7a",
+ "signature": "2064383adec81d5f61965f9481c3a2a80ada7f5c2f19fd065a07e23fb453bd7a",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/ShapeGeometry.d.ts": {
+ "version": "7b22b608bd6b8b2dbbfd5fadd6c1e435b83e3c0fc77eeac8e1c4ab6b0dc258d2",
+ "signature": "7b22b608bd6b8b2dbbfd5fadd6c1e435b83e3c0fc77eeac8e1c4ab6b0dc258d2",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/SphereGeometry.d.ts": {
+ "version": "7d039d5e0c5c81b77eb80ae80f04c8803223827b60877d926a644326ba7f0201",
+ "signature": "7d039d5e0c5c81b77eb80ae80f04c8803223827b60877d926a644326ba7f0201",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/TetrahedronGeometry.d.ts": {
+ "version": "271ef08ab1236d1125f94a8f79b600630d3c1a94179f8af832a234f7e9a89d60",
+ "signature": "271ef08ab1236d1125f94a8f79b600630d3c1a94179f8af832a234f7e9a89d60",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/TextGeometry.d.ts": {
+ "version": "77ef5826119e4179c93a5c693afb7eb2c71bf918e132b61b25eea49ca7f9cf0b",
+ "signature": "77ef5826119e4179c93a5c693afb7eb2c71bf918e132b61b25eea49ca7f9cf0b",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/TorusGeometry.d.ts": {
+ "version": "0a44dbe2497b8eab8dbc8d9adda03e0184911c6a3f3429357968219f6b112052",
+ "signature": "0a44dbe2497b8eab8dbc8d9adda03e0184911c6a3f3429357968219f6b112052",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/TorusKnotGeometry.d.ts": {
+ "version": "ea0d0fa3178b173e84905a63c66386d54d3a246226e6a363a8a5cd05d7d705f4",
+ "signature": "ea0d0fa3178b173e84905a63c66386d54d3a246226e6a363a8a5cd05d7d705f4",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/TubeGeometry.d.ts": {
+ "version": "7ec9d28642961fd2c54d535480f6ba4064c56aa8c03463749d3f516ce6b7b2b2",
+ "signature": "7ec9d28642961fd2c54d535480f6ba4064c56aa8c03463749d3f516ce6b7b2b2",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/WireframeGeometry.d.ts": {
+ "version": "5791278922d75f7f3aa13b64d3f8ec2821302c7d3b660c8bc6b98d4a6b7ceddd",
+ "signature": "5791278922d75f7f3aa13b64d3f8ec2821302c7d3b660c8bc6b98d4a6b7ceddd",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/geometries/Geometries.d.ts": {
+ "version": "76f3f959fcce95b9ada79dfac10b7c5df81ecd85bacaf4d15ce5478e8ac2dd31",
+ "signature": "76f3f959fcce95b9ada79dfac10b7c5df81ecd85bacaf4d15ce5478e8ac2dd31",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/objects/Line.d.ts": {
+ "version": "f1925b062f9caabf660d0bc80a041fed9ec060f7ff146fc8577b4274ff49cee9",
+ "signature": "f1925b062f9caabf660d0bc80a041fed9ec060f7ff146fc8577b4274ff49cee9",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts": {
+ "version": "816cfb03ec4b76b7a1aa07499f5180d764eba634d29ca928adc0a70b8101c522",
+ "signature": "816cfb03ec4b76b7a1aa07499f5180d764eba634d29ca928adc0a70b8101c522",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/helpers/SpotLightHelper.d.ts": {
+ "version": "1892b5ed89ec050e5e865096d42aa7ac776ffa7428a098dedf9d232f3bfde6af",
+ "signature": "1892b5ed89ec050e5e865096d42aa7ac776ffa7428a098dedf9d232f3bfde6af",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/helpers/SkeletonHelper.d.ts": {
+ "version": "5e739c6cdb908e7546e5da530ba079166632e69cddd942736660e570acb92479",
+ "signature": "5e739c6cdb908e7546e5da530ba079166632e69cddd942736660e570acb92479",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/lights/PointLightShadow.d.ts": {
+ "version": "8f7482100023e5397eb7c1d8fd2595c929727ff423ea1f0b904cebdd37051bc7",
+ "signature": "8f7482100023e5397eb7c1d8fd2595c929727ff423ea1f0b904cebdd37051bc7",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/lights/PointLight.d.ts": {
+ "version": "cc8689fec73132a375a149168a1ad42414a10d337bdae80290703159e148fb31",
+ "signature": "cc8689fec73132a375a149168a1ad42414a10d337bdae80290703159e148fb31",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/helpers/PointLightHelper.d.ts": {
+ "version": "34b2a938702294406c6930860ca67e2ac89d4395b2c5d21f41b65937773aef6e",
+ "signature": "34b2a938702294406c6930860ca67e2ac89d4395b2c5d21f41b65937773aef6e",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/lights/HemisphereLight.d.ts": {
+ "version": "78cd4fd3de5c5150323df1e297ac5392e5f433538862f6fceb30f7fcb4d3e406",
+ "signature": "78cd4fd3de5c5150323df1e297ac5392e5f433538862f6fceb30f7fcb4d3e406",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/materials/MeshBasicMaterial.d.ts": {
+ "version": "958ae685995c7da7a94631ead40e081351a81341f7fc66be5617985559bcbcf1",
+ "signature": "958ae685995c7da7a94631ead40e081351a81341f7fc66be5617985559bcbcf1",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/helpers/HemisphereLightHelper.d.ts": {
+ "version": "32810a066471bfb581ece580b082051dd63686cfc6af8cc0b370edfa97544fbf",
+ "signature": "32810a066471bfb581ece580b082051dd63686cfc6af8cc0b370edfa97544fbf",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/helpers/GridHelper.d.ts": {
+ "version": "842fe81ba5dc7260ff50174e3450b3e19d535df0280c0569bc95166b5f8994d1",
+ "signature": "842fe81ba5dc7260ff50174e3450b3e19d535df0280c0569bc95166b5f8994d1",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/helpers/PolarGridHelper.d.ts": {
+ "version": "438a188697101788b5dd8129844cf1f36cbbe2f866378bdc5de1d19bcefc55ef",
+ "signature": "438a188697101788b5dd8129844cf1f36cbbe2f866378bdc5de1d19bcefc55ef",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/lights/DirectionalLightShadow.d.ts": {
+ "version": "37bfbfbec5d900c379b7dc65bf3ad2a9a0312fad4c91778ae3c73590d2d37b6b",
+ "signature": "37bfbfbec5d900c379b7dc65bf3ad2a9a0312fad4c91778ae3c73590d2d37b6b",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/lights/DirectionalLight.d.ts": {
+ "version": "30defc187296b83860b3ef9e1175de0a5b44ed9e64e1fc79f406bc8aa0063637",
+ "signature": "30defc187296b83860b3ef9e1175de0a5b44ed9e64e1fc79f406bc8aa0063637",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/helpers/DirectionalLightHelper.d.ts": {
+ "version": "71dfddd1edbb4f345e0bb18af7064da94f35ff58c60f2210b3d534231a7aec38",
+ "signature": "71dfddd1edbb4f345e0bb18af7064da94f35ff58c60f2210b3d534231a7aec38",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/helpers/CameraHelper.d.ts": {
+ "version": "e91ae57529395e5375189f8cd3be4ad6a1039e4a0f874a7436ff706a09e395fc",
+ "signature": "e91ae57529395e5375189f8cd3be4ad6a1039e4a0f874a7436ff706a09e395fc",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/helpers/BoxHelper.d.ts": {
+ "version": "9cd5d2e584a62306dc5030bdd94e072ac03828e4a34a2531c0e4b90c5e595fd1",
+ "signature": "9cd5d2e584a62306dc5030bdd94e072ac03828e4a34a2531c0e4b90c5e595fd1",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/helpers/Box3Helper.d.ts": {
+ "version": "afd5b50a4d20db25e060396161acdf718fffa3b73a85fb3ec75f2607cfed03c6",
+ "signature": "afd5b50a4d20db25e060396161acdf718fffa3b73a85fb3ec75f2607cfed03c6",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/helpers/PlaneHelper.d.ts": {
+ "version": "752e7f35c0b26df44e99a773ca1f37195dacce8847394a28fb29fc2984d98bda",
+ "signature": "752e7f35c0b26df44e99a773ca1f37195dacce8847394a28fb29fc2984d98bda",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/objects/Mesh.d.ts": {
+ "version": "3cd6aee8e8eba196b46ce259f50f88a8596a1a058e1f611d861f8ac46b7f7477",
+ "signature": "3cd6aee8e8eba196b46ce259f50f88a8596a1a058e1f611d861f8ac46b7f7477",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/helpers/ArrowHelper.d.ts": {
+ "version": "b65159863b0acf230edf86fdd997cedcfd9c970d346a71c894257e9fdf5aff93",
+ "signature": "b65159863b0acf230edf86fdd997cedcfd9c970d346a71c894257e9fdf5aff93",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/helpers/AxesHelper.d.ts": {
+ "version": "39df3cb01af5a05735f446d704e822776ffc25b825659aa7597c50c2e94aa453",
+ "signature": "39df3cb01af5a05735f446d704e822776ffc25b825659aa7597c50c2e94aa453",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/lights/SpotLightShadow.d.ts": {
+ "version": "9fa45eaaf2626085d031569a52f54714405cec7b6bacb041f28fe7adfd247a05",
+ "signature": "9fa45eaaf2626085d031569a52f54714405cec7b6bacb041f28fe7adfd247a05",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/lights/SpotLight.d.ts": {
+ "version": "1f834258edd805e1a428dc400aeba9d2de2817c6ccc63de0f05f2887817e3fe9",
+ "signature": "1f834258edd805e1a428dc400aeba9d2de2817c6ccc63de0f05f2887817e3fe9",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/lights/RectAreaLight.d.ts": {
+ "version": "da940126d3840677351fc0df9fb2dc6571a8e783461197551bc592a20495351d",
+ "signature": "da940126d3840677351fc0df9fb2dc6571a8e783461197551bc592a20495351d",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/lights/AmbientLight.d.ts": {
+ "version": "f883682d6e812f8ec1f532103576858788bb2e481d1fab8b37b5f502d9339508",
+ "signature": "f883682d6e812f8ec1f532103576858788bb2e481d1fab8b37b5f502d9339508",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/SphericalHarmonics3.d.ts": {
+ "version": "8b6144459f42a74872f64be4506acf0c06b3b57ce7812ae3ba65c5b0a2fc0e2b",
+ "signature": "8b6144459f42a74872f64be4506acf0c06b3b57ce7812ae3ba65c5b0a2fc0e2b",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/lights/LightProbe.d.ts": {
+ "version": "25987a832e6a9303585accbe47950a9880445f1da53144094f6fc1090335392f",
+ "signature": "25987a832e6a9303585accbe47950a9880445f1da53144094f6fc1090335392f",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/lights/AmbientLightProbe.d.ts": {
+ "version": "6a5c27878e3144baade4159cb041ff0731dcca18ea00a58f9fab3b166fc92ce1",
+ "signature": "6a5c27878e3144baade4159cb041ff0731dcca18ea00a58f9fab3b166fc92ce1",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/lights/HemisphereLightProbe.d.ts": {
+ "version": "2951d20f3e51d0ef51bae56c0c3bf81e2cefae7c64790670d9abdfcb40f1dac5",
+ "signature": "2951d20f3e51d0ef51bae56c0c3bf81e2cefae7c64790670d9abdfcb40f1dac5",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts": {
+ "version": "a70bf51744ec939a5c87a636c383e0118d3b9332b9863b2c1df158194e1680a6",
+ "signature": "a70bf51744ec939a5c87a636c383e0118d3b9332b9863b2c1df158194e1680a6",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts": {
+ "version": "04a0be21f320db4716bd8f6283f5bba4560f639ded181eeaa6eef820594c1c55",
+ "signature": "04a0be21f320db4716bd8f6283f5bba4560f639ded181eeaa6eef820594c1c55",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/loaders/AnimationLoader.d.ts": {
+ "version": "24551b8482b56cba01f5a76871010c9898f87ef22c066b654bc79d6851fb65d8",
+ "signature": "24551b8482b56cba01f5a76871010c9898f87ef22c066b654bc79d6851fb65d8",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/textures/CompressedTexture.d.ts": {
+ "version": "e1b7d8ebc348369c2636d0548fcb95772a41f13669a92484998636d5c6f6f84c",
+ "signature": "e1b7d8ebc348369c2636d0548fcb95772a41f13669a92484998636d5c6f6f84c",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/loaders/CompressedTextureLoader.d.ts": {
+ "version": "0c39a6721f4481d28125672874d12f869db7beeb63efa5ea207a894a06b01990",
+ "signature": "0c39a6721f4481d28125672874d12f869db7beeb63efa5ea207a894a06b01990",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/textures/DataTexture.d.ts": {
+ "version": "5a4b056c4c7b1af3d3310ef90287b814f28062f2eb1b7ba1fbba74024ff751d5",
+ "signature": "5a4b056c4c7b1af3d3310ef90287b814f28062f2eb1b7ba1fbba74024ff751d5",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/loaders/DataTextureLoader.d.ts": {
+ "version": "fbf180777acc17ed6f59f0fd1639745c64dedecb2ca7886214999c0535ff02da",
+ "signature": "fbf180777acc17ed6f59f0fd1639745c64dedecb2ca7886214999c0535ff02da",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/loaders/CubeTextureLoader.d.ts": {
+ "version": "473a574ee3ffd1ab73bf001acb92d443c50c7ce58854c08c78ae89522f3b2af1",
+ "signature": "473a574ee3ffd1ab73bf001acb92d443c50c7ce58854c08c78ae89522f3b2af1",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/loaders/TextureLoader.d.ts": {
+ "version": "28cf4b88597d75f21d50d3e89cc60914ef1100ca7647c0bca0d44d0e04a83fdc",
+ "signature": "28cf4b88597d75f21d50d3e89cc60914ef1100ca7647c0bca0d44d0e04a83fdc",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/loaders/ObjectLoader.d.ts": {
+ "version": "4c7a863556a70d4619f5ec8b13e2d3d9e0fb87c79ab8daccc1f64cc8135cf14a",
+ "signature": "4c7a863556a70d4619f5ec8b13e2d3d9e0fb87c79ab8daccc1f64cc8135cf14a",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/loaders/MaterialLoader.d.ts": {
+ "version": "3e0528d53eb3f2386d770412b4dcdd508ea8db6d7a32fac07b27e857b200c6bc",
+ "signature": "3e0528d53eb3f2386d770412b4dcdd508ea8db6d7a32fac07b27e857b200c6bc",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/loaders/BufferGeometryLoader.d.ts": {
+ "version": "7efce11f987fd2d555babdcbbf505520c31671ad4ac08b298bc237f62ddd6941",
+ "signature": "7efce11f987fd2d555babdcbbf505520c31671ad4ac08b298bc237f62ddd6941",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/loaders/ImageLoader.d.ts": {
+ "version": "5d96064fd7419a9faf2ec2118c273a6245d4933ff18774b39237e3a130ba0ea0",
+ "signature": "5d96064fd7419a9faf2ec2118c273a6245d4933ff18774b39237e3a130ba0ea0",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/loaders/ImageBitmapLoader.d.ts": {
+ "version": "94755c3ecfcf813ef35c06e17b0494cea726eff490be46ec7f10b343cd6d6c66",
+ "signature": "94755c3ecfcf813ef35c06e17b0494cea726eff490be46ec7f10b343cd6d6c66",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/loaders/FontLoader.d.ts": {
+ "version": "780d4988de0352edd1800224ae70dced2a527a8d6bff3a7ab13927f3d778740d",
+ "signature": "780d4988de0352edd1800224ae70dced2a527a8d6bff3a7ab13927f3d778740d",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/loaders/FileLoader.d.ts": {
+ "version": "59bf56dbda4409f8e87676340c5bfb65cf674442e611a680f9f461c8898c46dd",
+ "signature": "59bf56dbda4409f8e87676340c5bfb65cf674442e611a680f9f461c8898c46dd",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/loaders/LoaderUtils.d.ts": {
+ "version": "7c9de3d7e945f169a38c135a9f3799746d5774958edc38e7cb800451ce551c6b",
+ "signature": "7c9de3d7e945f169a38c135a9f3799746d5774958edc38e7cb800451ce551c6b",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/loaders/Cache.d.ts": {
+ "version": "57f2d9377264cf90b169ba4bbbcee8135d1350d8523d60a41d5523cf8456f226",
+ "signature": "57f2d9377264cf90b169ba4bbbcee8135d1350d8523d60a41d5523cf8456f226",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/loaders/AudioLoader.d.ts": {
+ "version": "8d2a53c59c82a8fac953afd36ca75783f60dcc5dec4740f1a00e8986f1119634",
+ "signature": "8d2a53c59c82a8fac953afd36ca75783f60dcc5dec4740f1a00e8986f1119634",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/materials/ShadowMaterial.d.ts": {
+ "version": "d734cf304aba962e33f871ba9fdce61cbdb56a9f7874eefe8759b487853b1ff3",
+ "signature": "d734cf304aba962e33f871ba9fdce61cbdb56a9f7874eefe8759b487853b1ff3",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/materials/SpriteMaterial.d.ts": {
+ "version": "85f75c094579da83b34686c091e2983f6b5b795bb9859a3916e27a1407f3ba23",
+ "signature": "85f75c094579da83b34686c091e2983f6b5b795bb9859a3916e27a1407f3ba23",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/materials/ShaderMaterial.d.ts": {
+ "version": "8e6855b08084b2eda1ff8c38bbd309594442b191420c7a05221324bd3b3027c1",
+ "signature": "8e6855b08084b2eda1ff8c38bbd309594442b191420c7a05221324bd3b3027c1",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/materials/RawShaderMaterial.d.ts": {
+ "version": "1b905f84eb4131fdbbaa1df421065c1eabca4eb7c0836a52e3975b9f1a57ca3c",
+ "signature": "1b905f84eb4131fdbbaa1df421065c1eabca4eb7c0836a52e3975b9f1a57ca3c",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/materials/PointsMaterial.d.ts": {
+ "version": "7182b52bd8efc672067ad706492b23cd338556bdbbdeaf4f69b825e0efbd4f8d",
+ "signature": "7182b52bd8efc672067ad706492b23cd338556bdbbdeaf4f69b825e0efbd4f8d",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/materials/MeshStandardMaterial.d.ts": {
+ "version": "20cb99fc5b4d15cd9b966d49a36b6a6a2acd99db413fd359d712fe81d4e8c666",
+ "signature": "20cb99fc5b4d15cd9b966d49a36b6a6a2acd99db413fd359d712fe81d4e8c666",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/materials/MeshPhysicalMaterial.d.ts": {
+ "version": "8dab2c485ef578699b81bc2cdeed34b97a9014669dc20b8f74b2ccdbb91fca01",
+ "signature": "8dab2c485ef578699b81bc2cdeed34b97a9014669dc20b8f74b2ccdbb91fca01",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/materials/MeshPhongMaterial.d.ts": {
+ "version": "f895190bfdfff38996cede1fdc0a6e91141f5c5e0ceb70bf6acd9e901bbd38d8",
+ "signature": "f895190bfdfff38996cede1fdc0a6e91141f5c5e0ceb70bf6acd9e901bbd38d8",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/materials/MeshToonMaterial.d.ts": {
+ "version": "62b030f34b2854e29e2958f7db1cd58dfe4c50b5fb1fca4d731fac05fe7da81b",
+ "signature": "62b030f34b2854e29e2958f7db1cd58dfe4c50b5fb1fca4d731fac05fe7da81b",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/materials/MeshNormalMaterial.d.ts": {
+ "version": "49fc3b4a60cbf88b5b6c0feb1d3c432da102756adbdaa81ee54330b98545232f",
+ "signature": "49fc3b4a60cbf88b5b6c0feb1d3c432da102756adbdaa81ee54330b98545232f",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/materials/MeshLambertMaterial.d.ts": {
+ "version": "31c0b1ab3b6c6a82e4804e249f74db6c4bc4d9abdb0501ce4c012eb4a29d58cb",
+ "signature": "31c0b1ab3b6c6a82e4804e249f74db6c4bc4d9abdb0501ce4c012eb4a29d58cb",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/materials/MeshDepthMaterial.d.ts": {
+ "version": "3cc804687fa3d553f844f6dbe8f1a10edd3830273f13b8eef885408dfbd02709",
+ "signature": "3cc804687fa3d553f844f6dbe8f1a10edd3830273f13b8eef885408dfbd02709",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/materials/MeshDistanceMaterial.d.ts": {
+ "version": "a6832dd3109935e8af0440901add1fe7e276899eb00a2ead72cb258a0cb1ca2a",
+ "signature": "a6832dd3109935e8af0440901add1fe7e276899eb00a2ead72cb258a0cb1ca2a",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/materials/MeshMatcapMaterial.d.ts": {
+ "version": "2984fa039a55c3a4db211960a500037635372274ef07d4dba186b1058f2c4c96",
+ "signature": "2984fa039a55c3a4db211960a500037635372274ef07d4dba186b1058f2c4c96",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/materials/LineBasicMaterial.d.ts": {
+ "version": "487182ebba74b1d438a233885bb71029fc31834379816aaab54536fbc2ce4ba9",
+ "signature": "487182ebba74b1d438a233885bb71029fc31834379816aaab54536fbc2ce4ba9",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/materials/LineDashedMaterial.d.ts": {
+ "version": "6001413bc3314b05071ea04e9fb64ce675ac1ebe55b3d1188f8969addb15aaf0",
+ "signature": "6001413bc3314b05071ea04e9fb64ce675ac1ebe55b3d1188f8969addb15aaf0",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/materials/Materials.d.ts": {
+ "version": "355d745d283e4f89bd785542bdba50ae1ab31ca5fa9618f2e221fbe12b9933cc",
+ "signature": "355d745d283e4f89bd785542bdba50ae1ab31ca5fa9618f2e221fbe12b9933cc",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/interpolants/QuaternionLinearInterpolant.d.ts": {
+ "version": "384fddf003645c4e2212b1a9cf7709ac125dc572e0fec9c9378a2bf9ba6369d3",
+ "signature": "384fddf003645c4e2212b1a9cf7709ac125dc572e0fec9c9378a2bf9ba6369d3",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/MathUtils.d.ts": {
+ "version": "3f3508121b4d7af99807c0f7716b1eea7d2643c81e69874bf962585c7a73abad",
+ "signature": "3f3508121b4d7af99807c0f7716b1eea7d2643c81e69874bf962585c7a73abad",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/objects/Sprite.d.ts": {
+ "version": "bbcd46158e4cc0eccc0043c93b22cdc522148ab501cb09c90e96820f8d87d9ee",
+ "signature": "bbcd46158e4cc0eccc0043c93b22cdc522148ab501cb09c90e96820f8d87d9ee",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/Frustum.d.ts": {
+ "version": "ae3c0d4364589fb2e85909e65e8f2cb2c4f37d1560c38ab6743785efbf3bd2bc",
+ "signature": "ae3c0d4364589fb2e85909e65e8f2cb2c4f37d1560c38ab6743785efbf3bd2bc",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/math/Box2.d.ts": {
+ "version": "341bdc4a8ac3b71d48db0efd4069caef374fb2629cd912a9e5d172e558359bf4",
+ "signature": "341bdc4a8ac3b71d48db0efd4069caef374fb2629cd912a9e5d172e558359bf4",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/objects/LOD.d.ts": {
+ "version": "ef64d9a231218149fd0ca3a1ef5c27332ec1048288f7703e12d1ae69efb2d941",
+ "signature": "ef64d9a231218149fd0ca3a1ef5c27332ec1048288f7703e12d1ae69efb2d941",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/objects/InstancedMesh.d.ts": {
+ "version": "b3548a1a68e235b7a59439d81b1e6698ee319399f8aaa658fda75a637017dac6",
+ "signature": "b3548a1a68e235b7a59439d81b1e6698ee319399f8aaa658fda75a637017dac6",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/objects/Skeleton.d.ts": {
+ "version": "ed19c128f66ad5c7ab02e5ca8cdc96329a13dc0982fab3eec04147e235d13199",
+ "signature": "ed19c128f66ad5c7ab02e5ca8cdc96329a13dc0982fab3eec04147e235d13199",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/objects/SkinnedMesh.d.ts": {
+ "version": "e589f1c1f69947b4b0ffe590dc2a0eb817d354a42a131f1df97fb52d1017dff1",
+ "signature": "e589f1c1f69947b4b0ffe590dc2a0eb817d354a42a131f1df97fb52d1017dff1",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/objects/LineLoop.d.ts": {
+ "version": "6011e8396759ef161be4bcb5fefe7e70bf306a39532f8d13deef5d164ed04dcd",
+ "signature": "6011e8396759ef161be4bcb5fefe7e70bf306a39532f8d13deef5d164ed04dcd",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/objects/Points.d.ts": {
+ "version": "76de61b6b947c9b1636f755a8b6da3e899215e4cf53b47b40fc123187f679558",
+ "signature": "76de61b6b947c9b1636f755a8b6da3e899215e4cf53b47b40fc123187f679558",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/WebGLMultisampleRenderTarget.d.ts": {
+ "version": "a1325c800e29589d0931806b33b36eb23d44b735138734d0e7280d524e814a10",
+ "signature": "a1325c800e29589d0931806b33b36eb23d44b735138734d0e7280d524e814a10",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/WebGL1Renderer.d.ts": {
+ "version": "6f887e3afb0de4b6a4e79fb8512910736c1cb43909dabded07521a98fb3ab493",
+ "signature": "6f887e3afb0de4b6a4e79fb8512910736c1cb43909dabded07521a98fb3ab493",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/shaders/UniformsUtils.d.ts": {
+ "version": "1e23c65f00a3bbb5a94f4a344e7d16762fcc7a9abaf7be7600a8cd38f22531d8",
+ "signature": "1e23c65f00a3bbb5a94f4a344e7d16762fcc7a9abaf7be7600a8cd38f22531d8",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/shaders/ShaderChunk.d.ts": {
+ "version": "b428ef19e21c3a1895fef811262cc7ae0bde0274e77fe0426663c27ce86a1946",
+ "signature": "b428ef19e21c3a1895fef811262cc7ae0bde0274e77fe0426663c27ce86a1946",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLBufferRenderer.d.ts": {
+ "version": "6996398eb3a1f3ee5bc2540f38f716ab941c9ad70fbdfc5a7d7eea87ba6c3cab",
+ "signature": "6996398eb3a1f3ee5bc2540f38f716ab941c9ad70fbdfc5a7d7eea87ba6c3cab",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLClipping.d.ts": {
+ "version": "85a60dc56301151a1290f2935618f1c10642db39c9385d85bb56580f0481bdb3",
+ "signature": "85a60dc56301151a1290f2935618f1c10642db39c9385d85bb56580f0481bdb3",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLAttributes.d.ts": {
+ "version": "1d719263f4cb05d55e15d893f844445d9ebed33013a8b7dffd17fb5f228c89d0",
+ "signature": "1d719263f4cb05d55e15d893f844445d9ebed33013a8b7dffd17fb5f228c89d0",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLGeometries.d.ts": {
+ "version": "c0052b367c598946d934581c9156f5bf06846a543bd8f1a419fbbedf0c49db5d",
+ "signature": "c0052b367c598946d934581c9156f5bf06846a543bd8f1a419fbbedf0c49db5d",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLIndexedBufferRenderer.d.ts": {
+ "version": "2360668f67c85a1ea07864282b797189555b9b9928be94685773ed8381302588",
+ "signature": "2360668f67c85a1ea07864282b797189555b9b9928be94685773ed8381302588",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLLights.d.ts": {
+ "version": "59fc39062aec81b871c29e9f246333d14d0c60ce3d5e3a01b3eb6336f69b6473",
+ "signature": "59fc39062aec81b871c29e9f246333d14d0c60ce3d5e3a01b3eb6336f69b6473",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCubeMaps.d.ts": {
+ "version": "ccc6589b9029f32ed53b59cbe7bc71ce795ce0006a93b7cb2427f573856c74e9",
+ "signature": "ccc6589b9029f32ed53b59cbe7bc71ce795ce0006a93b7cb2427f573856c74e9",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLBindingStates.d.ts": {
+ "version": "821d22def6acf0fb49cdb3e0912881f47c5039f8dd730db1113bef321b9bb4ff",
+ "signature": "821d22def6acf0fb49cdb3e0912881f47c5039f8dd730db1113bef321b9bb4ff",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLPrograms.d.ts": {
+ "version": "6c5c5605ae801d8af7781b57643e379106763ba7c30d7535e42f65e5ed957b58",
+ "signature": "6c5c5605ae801d8af7781b57643e379106763ba7c30d7535e42f65e5ed957b58",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/renderers/webxr/WebXRController.d.ts": {
+ "version": "5e05074a4290312846bd48ca43d31d8fc22d792492481bef76eb3dd17974a7e0",
+ "signature": "5e05074a4290312846bd48ca43d31d8fc22d792492481bef76eb3dd17974a7e0",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/scenes/FogExp2.d.ts": {
+ "version": "408d7457ea4c677bac1a16b0266eba485959ebd5bb49cbc2653d3dbeb0ac38a4",
+ "signature": "408d7457ea4c677bac1a16b0266eba485959ebd5bb49cbc2653d3dbeb0ac38a4",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/textures/VideoTexture.d.ts": {
+ "version": "cf11f4e19b500ba6f488bdb61a1810c23e15d7bdb994e821d405470158ada1cf",
+ "signature": "cf11f4e19b500ba6f488bdb61a1810c23e15d7bdb994e821d405470158ada1cf",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/textures/CanvasTexture.d.ts": {
+ "version": "9736f4d069b690ae03aab866b7d899230edb963c3291db0290373bf6891ed2f8",
+ "signature": "9736f4d069b690ae03aab866b7d899230edb963c3291db0290373bf6891ed2f8",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/src/Three.d.ts": {
+ "version": "f9c0e30c8092b79f6d65b8e746757e546b85d35361808d6a5a5a25bf61dd40dc",
+ "signature": "f9c0e30c8092b79f6d65b8e746757e546b85d35361808d6a5a5a25bf61dd40dc",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/three/index.d.ts": {
+ "version": "b054ff8a6b935a750fc9d31f00ad986822b2545b33bd716a91336dbdc66d1ba4",
+ "signature": "b054ff8a6b935a750fc9d31f00ad986822b2545b33bd716a91336dbdc66d1ba4",
+ "affectsGlobalScope": false
+ },
+ "./src/OrbitControls.ts": {
+ "version": "ba7a60bcb8343d452c0502f297699375c87c7cdf347ab16640ae825369422ce7",
+ "signature": "7f79d2e65a6c65d37499954a054fcbb073438430b81be0472d6ed280ce4fe095",
+ "affectsGlobalScope": false
+ },
+ "./src/constants.ts": {
+ "version": "85de1f4dd061627f46104f72f569d1eb903dee8f783c9289b48ef1a9c94d412e",
+ "signature": "25d6ccf18e59c02f65eac6ccbc9e6498df501355a65115b0774494f6500a4e58",
+ "affectsGlobalScope": false
+ },
+ "./src/defs.ts": {
+ "version": "99ed8a889c3ed7d25ba8c6eed445e52b5432e90a2dc27fc8ee6d0fb6e8bbb8a3",
+ "signature": "70f7a3602e6c1253e4e7cfaf7caed9c14bbf0f50f80ce8f022671d3f62fbfa71",
+ "affectsGlobalScope": false
+ },
+ "./src/entity-manager.ts": {
+ "version": "c4a6b397135b13b084b68dc4ad59cee1aca23c00881166821853dc992b8b0f0c",
+ "signature": "3ac8d504e820eaf7bd25ad6659d53ceadc4e36151fa23535649e5b85ced046a6",
+ "affectsGlobalScope": false
+ },
+ "./src/globaltypes.ts": {
+ "version": "0605d0d50fe368f81f5836b8156dfc5567400f51b988d106dde73862fda2a1e9",
+ "signature": "cb8a0f5ce5b655d1ed93f4b3d767937c83c4421aebd6579603ce6aa53581ac3d",
+ "affectsGlobalScope": false
+ },
+ "./src/math.ts": {
+ "version": "3d8383c2056b4abbde276f415ce7da6be79a01c52bb3373642ff88521d23a0c4",
+ "signature": "8f74d26f95697fccaf35f2e547367380ef124ac13a4c22306ef235deafc89cd6",
+ "affectsGlobalScope": false
+ },
+ "./src/spatial-hash-grid.ts": {
+ "version": "b4d5fc9115998909195e005c28bdf3600cdfe77e9e2ccbad4fd7f3a66457a974",
+ "signature": "94acf0380d5ed01b01616d6fbd5bfbe83c6e90acb0520419cd90ddf3c0c9b9ba",
+ "affectsGlobalScope": false
+ },
+ "./src/simplex-noise.ts": {
+ "version": "9d46fb7195fd47f74ceb2de8620b0e68edc598101c547265ce9270c380d826f2",
+ "signature": "892889ee1b6d0940949d70f933bc9b34efe3fc45fdc224fe8ce1a14aaa5de47d",
+ "affectsGlobalScope": false
+ },
+ "./src/noise.ts": {
+ "version": "40d47270237d907988f890f02e5e305a275cf5e61e78c320a1b4cb9738950928",
+ "signature": "0948dd88dcb21fc3c8e8c90b80627404cf4ea1130a3105752b1816da441fbe23",
+ "affectsGlobalScope": false
+ },
+ "./src/terrain-constants.ts": {
+ "version": "7a715dfc01f25d93bc1b37d284455f5795d8ef68980377c04d86002fa5056e3d",
+ "signature": "2e54d9fea598f4ab39a11fc85530f3912f0e6ee890ebc0ee779868ae48f14347",
+ "affectsGlobalScope": false
+ },
+ "./src/terrain-height.ts": {
+ "version": "e4316e9042a68f3e68e561b963b4e268aba7c3149e3778802122933916ebd9fa",
+ "signature": "3c84c1b7f4069c0430c85a697bc4e32ab64f78ff51706960f1d11dad6055eb0d",
+ "affectsGlobalScope": false
+ },
+ "./src/spline.ts": {
+ "version": "32b2e5e577d4da4ac28058a9b6684e473dce3a9363648b54ca3d26586cf80e22",
+ "signature": "8ab6fe0abede8eedb143be2ad5fd3366c331c97367d6cc9e4cae36157f6e1191",
+ "affectsGlobalScope": false
+ },
+ "./src/index.ts": {
+ "version": "f52adbeb2bd3684ba4b28e8d9b955a357dee0ac908a38013699005bb5cc7f52c",
+ "signature": "7d40ea2c9eb614e316477ae0ff020c4ee7974002696bb3a744c30833955f4a40",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/component-emitter/index.d.ts": {
+ "version": "a3a88c1869ba1022dfaefac47ff7a984ec62510e9b4d60988f91d5e523266c34",
+ "signature": "a3a88c1869ba1022dfaefac47ff7a984ec62510e9b4d60988f91d5e523266c34",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/cookie/index.d.ts": {
+ "version": "405ad6db8aa3d5618c3be21cde8125de28a3e40690eb05136c123f420c05c082",
+ "signature": "405ad6db8aa3d5618c3be21cde8125de28a3e40690eb05136c123f420c05c082",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/cors/index.d.ts": {
+ "version": "a68969f643e0cb091046a9437b64cb1880a081fc07c70a4717b0edef2a38bc85",
+ "signature": "a68969f643e0cb091046a9437b64cb1880a081fc07c70a4717b0edef2a38bc85",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/eslint/helpers.d.ts": {
+ "version": "f345b0888d003fd69cb32bad3a0aa04c615ccafc572019e4bd86a52bd5e49e46",
+ "signature": "f345b0888d003fd69cb32bad3a0aa04c615ccafc572019e4bd86a52bd5e49e46",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/@types/eslint/lib/rules/index.d.ts": {
+ "version": "0133ebdd17a823ae56861948870cde4dac18dd8818ab641039c85bbb720429e0",
+ "signature": "0133ebdd17a823ae56861948870cde4dac18dd8818ab641039c85bbb720429e0",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/json-schema/index.d.ts": {
+ "version": "3a1e165b22a1cb8df82c44c9a09502fd2b33f160cd277de2cd3a055d8e5c6b27",
+ "signature": "3a1e165b22a1cb8df82c44c9a09502fd2b33f160cd277de2cd3a055d8e5c6b27",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/estree/index.d.ts": {
+ "version": "f1e8ecd1d960d12e57316fd2889b0a57635f38f8c4c976d8deafa29650bbf320",
+ "signature": "f1e8ecd1d960d12e57316fd2889b0a57635f38f8c4c976d8deafa29650bbf320",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/eslint/index.d.ts": {
+ "version": "649fbcb16a4a7e1d9f32a49db7381150ef5b2e472a0c52a1543d4c35a2aefa3c",
+ "signature": "649fbcb16a4a7e1d9f32a49db7381150ef5b2e472a0c52a1543d4c35a2aefa3c",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/eslint-scope/index.d.ts": {
+ "version": "274bda283ef15f4205603ca9967313fc013aa77ae89f2cbeab5fbd51439e96ed",
+ "signature": "274bda283ef15f4205603ca9967313fc013aa77ae89f2cbeab5fbd51439e96ed",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/globals.d.ts": {
+ "version": "25b4a0c4fab47c373ee49df4c239826ee3430019fc0c1b5e59edc3e398b7468d",
+ "signature": "25b4a0c4fab47c373ee49df4c239826ee3430019fc0c1b5e59edc3e398b7468d",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/@types/node/async_hooks.d.ts": {
+ "version": "d20f08527645f62facb2d66c2b7bd31ea964b59c897d00bddb1efe8c13890b72",
+ "signature": "d20f08527645f62facb2d66c2b7bd31ea964b59c897d00bddb1efe8c13890b72",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/buffer.d.ts": {
+ "version": "5726b5ce952dc5beaeb08d5f64236632501568a54a390363d2339ba1dc5393b1",
+ "signature": "5726b5ce952dc5beaeb08d5f64236632501568a54a390363d2339ba1dc5393b1",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/child_process.d.ts": {
+ "version": "674bedbfd2004e233e2a266a3d2286e524f0d58787a98522d834d6ccda1d215a",
+ "signature": "674bedbfd2004e233e2a266a3d2286e524f0d58787a98522d834d6ccda1d215a",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/cluster.d.ts": {
+ "version": "714637d594e1a38a075091fe464ca91c6abc0b154784b4287f6883200e28ccef",
+ "signature": "714637d594e1a38a075091fe464ca91c6abc0b154784b4287f6883200e28ccef",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/console.d.ts": {
+ "version": "23edba5f47d3409810c563fe8034ae2c59e718e1ef8570f4152ccdde1915a096",
+ "signature": "23edba5f47d3409810c563fe8034ae2c59e718e1ef8570f4152ccdde1915a096",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/@types/node/constants.d.ts": {
+ "version": "0e9c55f894ca2d9cf63b5b0d43a8cec1772dd560233fd16275bc7a485eb82f83",
+ "signature": "0e9c55f894ca2d9cf63b5b0d43a8cec1772dd560233fd16275bc7a485eb82f83",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/crypto.d.ts": {
+ "version": "d53b352a01645c470a0d8c31bf290ba791fc28ade0ce187a4a50f5c2f826f75e",
+ "signature": "d53b352a01645c470a0d8c31bf290ba791fc28ade0ce187a4a50f5c2f826f75e",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/dgram.d.ts": {
+ "version": "5f0a09de75bd965c21dc6d73671ba88830272f9ed62897bb0aa9754b369b1eed",
+ "signature": "5f0a09de75bd965c21dc6d73671ba88830272f9ed62897bb0aa9754b369b1eed",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/dns.d.ts": {
+ "version": "2b34e7fcba9e1f24e7f54ba5c8be5a8895b0b8b444ccf6548e04acdee0899317",
+ "signature": "2b34e7fcba9e1f24e7f54ba5c8be5a8895b0b8b444ccf6548e04acdee0899317",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/domain.d.ts": {
+ "version": "06d2be99c3dd2ff52114d02ee443ba486ab482423df1941d3c97d6a92e924d70",
+ "signature": "06d2be99c3dd2ff52114d02ee443ba486ab482423df1941d3c97d6a92e924d70",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/@types/node/events.d.ts": {
+ "version": "bfd4f140c07091b5e8a963c89e6fa3f44b6cfcbc11471b465cf63e2d020ad0eb",
+ "signature": "bfd4f140c07091b5e8a963c89e6fa3f44b6cfcbc11471b465cf63e2d020ad0eb",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/@types/node/fs.d.ts": {
+ "version": "a106a0bea088b70879ac88ff606dc253c0cc474ea05ad3a282b8bfb1091ae576",
+ "signature": "a106a0bea088b70879ac88ff606dc253c0cc474ea05ad3a282b8bfb1091ae576",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/fs/promises.d.ts": {
+ "version": "c98ce957db9eebd75f53edda3f6893e05ab2d2283b5667b18e31bcdb6427ed10",
+ "signature": "c98ce957db9eebd75f53edda3f6893e05ab2d2283b5667b18e31bcdb6427ed10",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/http.d.ts": {
+ "version": "1f08bd8305d4a789a68f71ab622156dfff993aa51a2aa58b9ccf166cc6f9fcf7",
+ "signature": "1f08bd8305d4a789a68f71ab622156dfff993aa51a2aa58b9ccf166cc6f9fcf7",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/http2.d.ts": {
+ "version": "9aff68f1b847b846d3d50a58c9f8f99389bedd0258d1b1c201f11b97ecfd36f8",
+ "signature": "9aff68f1b847b846d3d50a58c9f8f99389bedd0258d1b1c201f11b97ecfd36f8",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/https.d.ts": {
+ "version": "1978992206803f5761e99e893d93b25abc818c5fe619674fdf2ae02b29f641ba",
+ "signature": "1978992206803f5761e99e893d93b25abc818c5fe619674fdf2ae02b29f641ba",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/inspector.d.ts": {
+ "version": "05fbe81f09fc455a2c343d2458d2b3c600c90b92b22926be765ee79326be9466",
+ "signature": "05fbe81f09fc455a2c343d2458d2b3c600c90b92b22926be765ee79326be9466",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/module.d.ts": {
+ "version": "8e7d6dae9e19bbe47600dcfd4418db85b30ae7351474ea0aad5e628f9845d340",
+ "signature": "8e7d6dae9e19bbe47600dcfd4418db85b30ae7351474ea0aad5e628f9845d340",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/net.d.ts": {
+ "version": "f20ea392f7f27feb7a90e5a24319a4e365b07bf83c39a547711fe7ff9df68657",
+ "signature": "f20ea392f7f27feb7a90e5a24319a4e365b07bf83c39a547711fe7ff9df68657",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/os.d.ts": {
+ "version": "32542c4660ecda892a333a533feedba31738ee538ef6a78eb73af647137bc3fc",
+ "signature": "32542c4660ecda892a333a533feedba31738ee538ef6a78eb73af647137bc3fc",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/path.d.ts": {
+ "version": "0ecacea5047d1a7d350e7049dbd22f26435be5e8736a81a56afec5b3264db1ca",
+ "signature": "0ecacea5047d1a7d350e7049dbd22f26435be5e8736a81a56afec5b3264db1ca",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/perf_hooks.d.ts": {
+ "version": "ffcb4ebde21f83370ed402583888b28651d2eb7f05bfec9482eb46d82adedd7f",
+ "signature": "ffcb4ebde21f83370ed402583888b28651d2eb7f05bfec9482eb46d82adedd7f",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/process.d.ts": {
+ "version": "06c004006016a51c4d1855527a523562c329dc44c473931c65f10373281f730e",
+ "signature": "06c004006016a51c4d1855527a523562c329dc44c473931c65f10373281f730e",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/@types/node/punycode.d.ts": {
+ "version": "a7b43c69f9602d198825e403ee34e5d64f83c48b391b2897e8c0e6f72bca35f8",
+ "signature": "a7b43c69f9602d198825e403ee34e5d64f83c48b391b2897e8c0e6f72bca35f8",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/querystring.d.ts": {
+ "version": "f4a3fc4efc6944e7b7bd4ccfa45e0df68b6359808e6cf9d061f04fd964a7b2d3",
+ "signature": "f4a3fc4efc6944e7b7bd4ccfa45e0df68b6359808e6cf9d061f04fd964a7b2d3",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/readline.d.ts": {
+ "version": "73cad675aead7a2c05cf934e7e700c61d84b2037ac1d576c3f751199b25331da",
+ "signature": "73cad675aead7a2c05cf934e7e700c61d84b2037ac1d576c3f751199b25331da",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/repl.d.ts": {
+ "version": "8c3137ba3583ec18484429ec1c8eff89efdc42730542f157b38b102fdccc0c71",
+ "signature": "8c3137ba3583ec18484429ec1c8eff89efdc42730542f157b38b102fdccc0c71",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/stream.d.ts": {
+ "version": "d84300d886b45a198c346158e4ff7ae361cc7bc1c3deab44afb3db7de56b5d25",
+ "signature": "d84300d886b45a198c346158e4ff7ae361cc7bc1c3deab44afb3db7de56b5d25",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/string_decoder.d.ts": {
+ "version": "94ca7beec4e274d32362b54e0133152f7b4be9487db7b005070c03880b6363aa",
+ "signature": "94ca7beec4e274d32362b54e0133152f7b4be9487db7b005070c03880b6363aa",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/timers.d.ts": {
+ "version": "2d713cbcbd5bcc38d91546eaeea7bb1c8686dc4a2995a28556d957b1b9de11d9",
+ "signature": "2d713cbcbd5bcc38d91546eaeea7bb1c8686dc4a2995a28556d957b1b9de11d9",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/tls.d.ts": {
+ "version": "bbf21f210782db4193359010a4710786add43e3b50aa42fc0d371f45b4e4d8d3",
+ "signature": "bbf21f210782db4193359010a4710786add43e3b50aa42fc0d371f45b4e4d8d3",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/trace_events.d.ts": {
+ "version": "0b7733d83619ac4e3963e2a9f7c75dc1e9af6850cb2354c9554977813092c10a",
+ "signature": "0b7733d83619ac4e3963e2a9f7c75dc1e9af6850cb2354c9554977813092c10a",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/tty.d.ts": {
+ "version": "3ce933f0c3955f67f67eb7d6b5c83c2c54a18472c1d6f2bb651e51dd40c84837",
+ "signature": "3ce933f0c3955f67f67eb7d6b5c83c2c54a18472c1d6f2bb651e51dd40c84837",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/url.d.ts": {
+ "version": "631e96db896d645f7132c488ad34a16d71fd2be9f44696f8c98289ee1c8cbfa9",
+ "signature": "631e96db896d645f7132c488ad34a16d71fd2be9f44696f8c98289ee1c8cbfa9",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/util.d.ts": {
+ "version": "2c77230d381cba81eb6f87cda2fbfff6c0427c6546c2e2590110effff37c58f7",
+ "signature": "2c77230d381cba81eb6f87cda2fbfff6c0427c6546c2e2590110effff37c58f7",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/v8.d.ts": {
+ "version": "da86ee9a2f09a4583db1d5e37815894967e1f694ad9f3c25e84e0e4d40411e14",
+ "signature": "da86ee9a2f09a4583db1d5e37815894967e1f694ad9f3c25e84e0e4d40411e14",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/vm.d.ts": {
+ "version": "141a943e5690105898a67537a470f70b56d0e183441b56051d929e902376b7b2",
+ "signature": "141a943e5690105898a67537a470f70b56d0e183441b56051d929e902376b7b2",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/worker_threads.d.ts": {
+ "version": "ddc086b1adac44e2fccf55422da1e90fa970e659d77f99712422a421564b4877",
+ "signature": "ddc086b1adac44e2fccf55422da1e90fa970e659d77f99712422a421564b4877",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/zlib.d.ts": {
+ "version": "515ef1d99036ff0dafa5bf738e02222edea94e0d97a0aa0ff277ac5e96b57977",
+ "signature": "515ef1d99036ff0dafa5bf738e02222edea94e0d97a0aa0ff277ac5e96b57977",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/globals.global.d.ts": {
+ "version": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "signature": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "affectsGlobalScope": true
+ },
+ "../../node_modules/@types/node/wasi.d.ts": {
+ "version": "780058f4a804c8bdcdd2f60e7af64b2bc57d149c1586ee3db732a84d659a50bf",
+ "signature": "780058f4a804c8bdcdd2f60e7af64b2bc57d149c1586ee3db732a84d659a50bf",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/ts3.6/base.d.ts": {
+ "version": "ae68a04912ee5a0f589276f9ec60b095f8c40d48128a4575b3fdd7d93806931c",
+ "signature": "ae68a04912ee5a0f589276f9ec60b095f8c40d48128a4575b3fdd7d93806931c",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/assert.d.ts": {
+ "version": "19d580a3b42ad5caeaee266ae958260e23f2df0549ee201c886c8bd7a4f01d4e",
+ "signature": "19d580a3b42ad5caeaee266ae958260e23f2df0549ee201c886c8bd7a4f01d4e",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/base.d.ts": {
+ "version": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "signature": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/node/index.d.ts": {
+ "version": "9c4c395e927045b324877acdc4bfb95f128f36bc9f073266a2f0342495075a4f",
+ "signature": "9c4c395e927045b324877acdc4bfb95f128f36bc9f073266a2f0342495075a4f",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/minimatch/index.d.ts": {
+ "version": "95c22bc19835e28e2e524a4bb8898eb5f2107b640d7279a6d3aade261916bbf2",
+ "signature": "95c22bc19835e28e2e524a4bb8898eb5f2107b640d7279a6d3aade261916bbf2",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/glob/index.d.ts": {
+ "version": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "signature": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/html-minifier-terser/index.d.ts": {
+ "version": "6767cce098e1e6369c26258b7a1f9e569c5467d501a47a090136d5ea6e80ae6d",
+ "signature": "6767cce098e1e6369c26258b7a1f9e569c5467d501a47a090136d5ea6e80ae6d",
+ "affectsGlobalScope": false
+ },
+ "../../node_modules/@types/json5/index.d.ts": {
+ "version": "96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538",
+ "signature": "96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "declaration": true,
+ "declarationMap": true,
+ "sourceMap": true,
+ "composite": true,
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "skipLibCheck": true,
+ "watch": true,
+ "configFilePath": "./tsconfig.json"
+ },
+ "referencedMap": {
+ "../../node_modules/@types/cors/index.d.ts": [
+ "../../node_modules/@types/node/http.d.ts"
+ ],
+ "../../node_modules/@types/eslint-scope/index.d.ts": [
+ "../../node_modules/@types/eslint/index.d.ts",
+ "../../node_modules/@types/estree/index.d.ts"
+ ],
+ "../../node_modules/@types/eslint/index.d.ts": [
+ "../../node_modules/@types/eslint/helpers.d.ts",
+ "../../node_modules/@types/eslint/lib/rules/index.d.ts",
+ "../../node_modules/@types/estree/index.d.ts",
+ "../../node_modules/@types/json-schema/index.d.ts"
+ ],
+ "../../node_modules/@types/eslint/lib/rules/index.d.ts": [
+ "../../node_modules/@types/eslint/index.d.ts"
+ ],
+ "../../node_modules/@types/glob/index.d.ts": [
+ "../../node_modules/@types/minimatch/index.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../node_modules/@types/node/assert.d.ts": [
+ "../../node_modules/@types/node/assert.d.ts"
+ ],
+ "../../node_modules/@types/node/async_hooks.d.ts": [
+ "../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../node_modules/@types/node/base.d.ts": [
+ "../../node_modules/@types/node/assert.d.ts",
+ "../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../node_modules/@types/node/buffer.d.ts": [
+ "../../node_modules/@types/node/buffer.d.ts"
+ ],
+ "../../node_modules/@types/node/child_process.d.ts": [
+ "../../node_modules/@types/node/child_process.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../node_modules/@types/node/cluster.d.ts": [
+ "../../node_modules/@types/node/child_process.d.ts",
+ "../../node_modules/@types/node/cluster.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../node_modules/@types/node/console.d.ts": [
+ "../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../node_modules/@types/node/constants.d.ts": [
+ "../../node_modules/@types/node/constants.d.ts",
+ "../../node_modules/@types/node/crypto.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../node_modules/@types/node/crypto.d.ts": [
+ "../../node_modules/@types/node/crypto.d.ts",
+ "../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../node_modules/@types/node/dgram.d.ts": [
+ "../../node_modules/@types/node/dgram.d.ts",
+ "../../node_modules/@types/node/dns.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../node_modules/@types/node/dns.d.ts": [
+ "../../node_modules/@types/node/dns.d.ts"
+ ],
+ "../../node_modules/@types/node/domain.d.ts": [
+ "../../node_modules/@types/node/domain.d.ts",
+ "../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../node_modules/@types/node/events.d.ts": [
+ "../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../node_modules/@types/node/fs.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/fs/promises.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/fs/promises.d.ts"
+ ],
+ "../../node_modules/@types/node/http.d.ts": [
+ "../../node_modules/@types/node/http.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/http2.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/http.d.ts",
+ "../../node_modules/@types/node/http2.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/tls.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/https.d.ts": [
+ "../../node_modules/@types/node/http.d.ts",
+ "../../node_modules/@types/node/https.d.ts",
+ "../../node_modules/@types/node/tls.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/index.d.ts": [
+ "../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../node_modules/@types/node/inspector.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/inspector.d.ts"
+ ],
+ "../../node_modules/@types/node/module.d.ts": [
+ "../../node_modules/@types/node/module.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/net.d.ts": [
+ "../../node_modules/@types/node/dns.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../node_modules/@types/node/os.d.ts": [
+ "../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../node_modules/@types/node/path.d.ts": [
+ "../../node_modules/@types/node/path.d.ts"
+ ],
+ "../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../node_modules/@types/node/async_hooks.d.ts",
+ "../../node_modules/@types/node/perf_hooks.d.ts"
+ ],
+ "../../node_modules/@types/node/process.d.ts": [
+ "../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../node_modules/@types/node/punycode.d.ts": [
+ "../../node_modules/@types/node/punycode.d.ts"
+ ],
+ "../../node_modules/@types/node/querystring.d.ts": [
+ "../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../node_modules/@types/node/readline.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../node_modules/@types/node/repl.d.ts": [
+ "../../node_modules/@types/node/readline.d.ts",
+ "../../node_modules/@types/node/repl.d.ts",
+ "../../node_modules/@types/node/util.d.ts",
+ "../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../node_modules/@types/node/stream.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../node_modules/@types/node/string_decoder.d.ts": [
+ "../../node_modules/@types/node/string_decoder.d.ts"
+ ],
+ "../../node_modules/@types/node/timers.d.ts": [
+ "../../node_modules/@types/node/timers.d.ts"
+ ],
+ "../../node_modules/@types/node/tls.d.ts": [
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/tls.d.ts"
+ ],
+ "../../node_modules/@types/node/trace_events.d.ts": [
+ "../../node_modules/@types/node/trace_events.d.ts"
+ ],
+ "../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../node_modules/@types/node/async_hooks.d.ts",
+ "../../node_modules/@types/node/buffer.d.ts",
+ "../../node_modules/@types/node/child_process.d.ts",
+ "../../node_modules/@types/node/cluster.d.ts",
+ "../../node_modules/@types/node/console.d.ts",
+ "../../node_modules/@types/node/constants.d.ts",
+ "../../node_modules/@types/node/crypto.d.ts",
+ "../../node_modules/@types/node/dgram.d.ts",
+ "../../node_modules/@types/node/dns.d.ts",
+ "../../node_modules/@types/node/domain.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/fs/promises.d.ts",
+ "../../node_modules/@types/node/globals.d.ts",
+ "../../node_modules/@types/node/globals.global.d.ts",
+ "../../node_modules/@types/node/http.d.ts",
+ "../../node_modules/@types/node/http2.d.ts",
+ "../../node_modules/@types/node/https.d.ts",
+ "../../node_modules/@types/node/inspector.d.ts",
+ "../../node_modules/@types/node/module.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/os.d.ts",
+ "../../node_modules/@types/node/path.d.ts",
+ "../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../node_modules/@types/node/process.d.ts",
+ "../../node_modules/@types/node/punycode.d.ts",
+ "../../node_modules/@types/node/querystring.d.ts",
+ "../../node_modules/@types/node/readline.d.ts",
+ "../../node_modules/@types/node/repl.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/string_decoder.d.ts",
+ "../../node_modules/@types/node/timers.d.ts",
+ "../../node_modules/@types/node/tls.d.ts",
+ "../../node_modules/@types/node/trace_events.d.ts",
+ "../../node_modules/@types/node/tty.d.ts",
+ "../../node_modules/@types/node/url.d.ts",
+ "../../node_modules/@types/node/util.d.ts",
+ "../../node_modules/@types/node/v8.d.ts",
+ "../../node_modules/@types/node/vm.d.ts",
+ "../../node_modules/@types/node/wasi.d.ts",
+ "../../node_modules/@types/node/worker_threads.d.ts",
+ "../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../node_modules/@types/node/tty.d.ts": [
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../node_modules/@types/node/url.d.ts": [
+ "../../node_modules/@types/node/querystring.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/util.d.ts": [
+ "../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../node_modules/@types/node/v8.d.ts": [
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/v8.d.ts"
+ ],
+ "../../node_modules/@types/node/vm.d.ts": [
+ "../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../node_modules/@types/node/wasi.d.ts": [
+ "../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs/promises.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/url.d.ts",
+ "../../node_modules/@types/node/vm.d.ts",
+ "../../node_modules/@types/node/worker_threads.d.ts"
+ ],
+ "../../node_modules/@types/node/zlib.d.ts": [
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../node_modules/@types/three/index.d.ts": [
+ "../../node_modules/@types/three/src/Three.d.ts"
+ ],
+ "../../node_modules/@types/three/src/Three.d.ts": [
+ "../../node_modules/@types/three/src/Three.Legacy.d.ts",
+ "../../node_modules/@types/three/src/animation/AnimationAction.d.ts",
+ "../../node_modules/@types/three/src/animation/AnimationClip.d.ts",
+ "../../node_modules/@types/three/src/animation/AnimationMixer.d.ts",
+ "../../node_modules/@types/three/src/animation/AnimationObjectGroup.d.ts",
+ "../../node_modules/@types/three/src/animation/AnimationUtils.d.ts",
+ "../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/animation/PropertyBinding.d.ts",
+ "../../node_modules/@types/three/src/animation/PropertyMixer.d.ts",
+ "../../node_modules/@types/three/src/animation/tracks/BooleanKeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/animation/tracks/ColorKeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/animation/tracks/NumberKeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/animation/tracks/QuaternionKeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/animation/tracks/StringKeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/animation/tracks/VectorKeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/audio/Audio.d.ts",
+ "../../node_modules/@types/three/src/audio/AudioAnalyser.d.ts",
+ "../../node_modules/@types/three/src/audio/AudioContext.d.ts",
+ "../../node_modules/@types/three/src/audio/AudioListener.d.ts",
+ "../../node_modules/@types/three/src/audio/PositionalAudio.d.ts",
+ "../../node_modules/@types/three/src/cameras/ArrayCamera.d.ts",
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/cameras/CubeCamera.d.ts",
+ "../../node_modules/@types/three/src/cameras/OrthographicCamera.d.ts",
+ "../../node_modules/@types/three/src/cameras/PerspectiveCamera.d.ts",
+ "../../node_modules/@types/three/src/cameras/StereoCamera.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/Clock.d.ts",
+ "../../node_modules/@types/three/src/core/EventDispatcher.d.ts",
+ "../../node_modules/@types/three/src/core/GLBufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/InstancedBufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/InstancedBufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/InstancedInterleavedBuffer.d.ts",
+ "../../node_modules/@types/three/src/core/InterleavedBuffer.d.ts",
+ "../../node_modules/@types/three/src/core/InterleavedBufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/Layers.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/core/Raycaster.d.ts",
+ "../../node_modules/@types/three/src/core/Uniform.d.ts",
+ "../../node_modules/@types/three/src/extras/DataUtils.d.ts",
+ "../../node_modules/@types/three/src/extras/ImageUtils.d.ts",
+ "../../node_modules/@types/three/src/extras/PMREMGenerator.d.ts",
+ "../../node_modules/@types/three/src/extras/ShapeUtils.d.ts",
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/extras/core/CurvePath.d.ts",
+ "../../node_modules/@types/three/src/extras/core/Font.d.ts",
+ "../../node_modules/@types/three/src/extras/core/Path.d.ts",
+ "../../node_modules/@types/three/src/extras/core/Shape.d.ts",
+ "../../node_modules/@types/three/src/extras/core/ShapePath.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/Curves.d.ts",
+ "../../node_modules/@types/three/src/extras/objects/ImmediateRenderObject.d.ts",
+ "../../node_modules/@types/three/src/geometries/Geometries.d.ts",
+ "../../node_modules/@types/three/src/helpers/ArrowHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/AxesHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/Box3Helper.d.ts",
+ "../../node_modules/@types/three/src/helpers/BoxHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/CameraHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/DirectionalLightHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/GridHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/HemisphereLightHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/PlaneHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/PointLightHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/PolarGridHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/SkeletonHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/SpotLightHelper.d.ts",
+ "../../node_modules/@types/three/src/lights/AmbientLight.d.ts",
+ "../../node_modules/@types/three/src/lights/AmbientLightProbe.d.ts",
+ "../../node_modules/@types/three/src/lights/DirectionalLight.d.ts",
+ "../../node_modules/@types/three/src/lights/DirectionalLightShadow.d.ts",
+ "../../node_modules/@types/three/src/lights/HemisphereLight.d.ts",
+ "../../node_modules/@types/three/src/lights/HemisphereLightProbe.d.ts",
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/lights/LightProbe.d.ts",
+ "../../node_modules/@types/three/src/lights/LightShadow.d.ts",
+ "../../node_modules/@types/three/src/lights/PointLight.d.ts",
+ "../../node_modules/@types/three/src/lights/PointLightShadow.d.ts",
+ "../../node_modules/@types/three/src/lights/RectAreaLight.d.ts",
+ "../../node_modules/@types/three/src/lights/SpotLight.d.ts",
+ "../../node_modules/@types/three/src/lights/SpotLightShadow.d.ts",
+ "../../node_modules/@types/three/src/loaders/AnimationLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/AudioLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/BufferGeometryLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/Cache.d.ts",
+ "../../node_modules/@types/three/src/loaders/CompressedTextureLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/CubeTextureLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/DataTextureLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/FileLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/FontLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/ImageBitmapLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/ImageLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoaderUtils.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts",
+ "../../node_modules/@types/three/src/loaders/MaterialLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/ObjectLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/TextureLoader.d.ts",
+ "../../node_modules/@types/three/src/materials/Materials.d.ts",
+ "../../node_modules/@types/three/src/math/Box2.d.ts",
+ "../../node_modules/@types/three/src/math/Box3.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Cylindrical.d.ts",
+ "../../node_modules/@types/three/src/math/Euler.d.ts",
+ "../../node_modules/@types/three/src/math/Frustum.d.ts",
+ "../../node_modules/@types/three/src/math/Interpolant.d.ts",
+ "../../node_modules/@types/three/src/math/Line3.d.ts",
+ "../../node_modules/@types/three/src/math/MathUtils.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix3.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Plane.d.ts",
+ "../../node_modules/@types/three/src/math/Quaternion.d.ts",
+ "../../node_modules/@types/three/src/math/Ray.d.ts",
+ "../../node_modules/@types/three/src/math/Sphere.d.ts",
+ "../../node_modules/@types/three/src/math/Spherical.d.ts",
+ "../../node_modules/@types/three/src/math/SphericalHarmonics3.d.ts",
+ "../../node_modules/@types/three/src/math/Triangle.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts",
+ "../../node_modules/@types/three/src/math/Vector4.d.ts",
+ "../../node_modules/@types/three/src/math/interpolants/CubicInterpolant.d.ts",
+ "../../node_modules/@types/three/src/math/interpolants/DiscreteInterpolant.d.ts",
+ "../../node_modules/@types/three/src/math/interpolants/LinearInterpolant.d.ts",
+ "../../node_modules/@types/three/src/math/interpolants/QuaternionLinearInterpolant.d.ts",
+ "../../node_modules/@types/three/src/objects/Bone.d.ts",
+ "../../node_modules/@types/three/src/objects/Group.d.ts",
+ "../../node_modules/@types/three/src/objects/InstancedMesh.d.ts",
+ "../../node_modules/@types/three/src/objects/LOD.d.ts",
+ "../../node_modules/@types/three/src/objects/Line.d.ts",
+ "../../node_modules/@types/three/src/objects/LineLoop.d.ts",
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts",
+ "../../node_modules/@types/three/src/objects/Mesh.d.ts",
+ "../../node_modules/@types/three/src/objects/Points.d.ts",
+ "../../node_modules/@types/three/src/objects/Skeleton.d.ts",
+ "../../node_modules/@types/three/src/objects/SkinnedMesh.d.ts",
+ "../../node_modules/@types/three/src/objects/Sprite.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGL1Renderer.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLCubeRenderTarget.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLMultisampleRenderTarget.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderTarget.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts",
+ "../../node_modules/@types/three/src/renderers/shaders/ShaderChunk.d.ts",
+ "../../node_modules/@types/three/src/renderers/shaders/ShaderLib.d.ts",
+ "../../node_modules/@types/three/src/renderers/shaders/UniformsLib.d.ts",
+ "../../node_modules/@types/three/src/renderers/shaders/UniformsUtils.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLBufferRenderer.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLClipping.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLGeometries.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLIndexedBufferRenderer.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLInfo.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLLights.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLObjects.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProgram.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLPrograms.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProperties.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLRenderLists.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLShader.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLShadowMap.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLState.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLTextures.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLUniforms.d.ts",
+ "../../node_modules/@types/three/src/renderers/webxr/WebXR.d.ts",
+ "../../node_modules/@types/three/src/renderers/webxr/WebXRController.d.ts",
+ "../../node_modules/@types/three/src/renderers/webxr/WebXRManager.d.ts",
+ "../../node_modules/@types/three/src/scenes/Fog.d.ts",
+ "../../node_modules/@types/three/src/scenes/FogExp2.d.ts",
+ "../../node_modules/@types/three/src/scenes/Scene.d.ts",
+ "../../node_modules/@types/three/src/textures/CanvasTexture.d.ts",
+ "../../node_modules/@types/three/src/textures/CompressedTexture.d.ts",
+ "../../node_modules/@types/three/src/textures/CubeTexture.d.ts",
+ "../../node_modules/@types/three/src/textures/DataTexture.d.ts",
+ "../../node_modules/@types/three/src/textures/DataTexture2DArray.d.ts",
+ "../../node_modules/@types/three/src/textures/DataTexture3D.d.ts",
+ "../../node_modules/@types/three/src/textures/DepthTexture.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts",
+ "../../node_modules/@types/three/src/textures/VideoTexture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/AnimationAction.d.ts": [
+ "../../node_modules/@types/three/src/animation/AnimationClip.d.ts",
+ "../../node_modules/@types/three/src/animation/AnimationMixer.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/AnimationClip.d.ts": [
+ "../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts",
+ "../../node_modules/@types/three/src/objects/Bone.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/AnimationMixer.d.ts": [
+ "../../node_modules/@types/three/src/animation/AnimationAction.d.ts",
+ "../../node_modules/@types/three/src/animation/AnimationClip.d.ts",
+ "../../node_modules/@types/three/src/animation/AnimationObjectGroup.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/core/EventDispatcher.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/AnimationUtils.d.ts": [
+ "../../node_modules/@types/three/src/animation/AnimationClip.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/math/interpolants/CubicInterpolant.d.ts",
+ "../../node_modules/@types/three/src/math/interpolants/DiscreteInterpolant.d.ts",
+ "../../node_modules/@types/three/src/math/interpolants/LinearInterpolant.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/tracks/BooleanKeyframeTrack.d.ts": [
+ "../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/tracks/ColorKeyframeTrack.d.ts": [
+ "../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/tracks/NumberKeyframeTrack.d.ts": [
+ "../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/tracks/QuaternionKeyframeTrack.d.ts": [
+ "../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/tracks/StringKeyframeTrack.d.ts": [
+ "../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/tracks/VectorKeyframeTrack.d.ts": [
+ "../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts"
+ ],
+ "../../node_modules/@types/three/src/audio/Audio.d.ts": [
+ "../../node_modules/@types/three/src/audio/AudioContext.d.ts",
+ "../../node_modules/@types/three/src/audio/AudioListener.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts"
+ ],
+ "../../node_modules/@types/three/src/audio/AudioAnalyser.d.ts": [
+ "../../node_modules/@types/three/src/audio/Audio.d.ts"
+ ],
+ "../../node_modules/@types/three/src/audio/AudioListener.d.ts": [
+ "../../node_modules/@types/three/src/audio/AudioContext.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts"
+ ],
+ "../../node_modules/@types/three/src/audio/PositionalAudio.d.ts": [
+ "../../node_modules/@types/three/src/audio/Audio.d.ts",
+ "../../node_modules/@types/three/src/audio/AudioListener.d.ts"
+ ],
+ "../../node_modules/@types/three/src/cameras/ArrayCamera.d.ts": [
+ "../../node_modules/@types/three/src/cameras/PerspectiveCamera.d.ts"
+ ],
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/cameras/CubeCamera.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLCubeRenderTarget.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts",
+ "../../node_modules/@types/three/src/scenes/Scene.d.ts"
+ ],
+ "../../node_modules/@types/three/src/cameras/OrthographicCamera.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts"
+ ],
+ "../../node_modules/@types/three/src/cameras/PerspectiveCamera.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts"
+ ],
+ "../../node_modules/@types/three/src/cameras/StereoCamera.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/cameras/PerspectiveCamera.d.ts"
+ ],
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix3.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts"
+ ],
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/EventDispatcher.d.ts",
+ "../../node_modules/@types/three/src/core/InterleavedBufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/math/Box3.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Sphere.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/core/InstancedBufferAttribute.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/core/InstancedBufferGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/core/InstancedInterleavedBuffer.d.ts": [
+ "../../node_modules/@types/three/src/core/InterleavedBuffer.d.ts"
+ ],
+ "../../node_modules/@types/three/src/core/InterleavedBuffer.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/core/InterleavedBufferAttribute.d.ts"
+ ],
+ "../../node_modules/@types/three/src/core/InterleavedBufferAttribute.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/InterleavedBuffer.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts"
+ ],
+ "../../node_modules/@types/three/src/core/Object3D.d.ts": [
+ "../../node_modules/@types/three/src/animation/AnimationClip.d.ts",
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/EventDispatcher.d.ts",
+ "../../node_modules/@types/three/src/core/Layers.d.ts",
+ "../../node_modules/@types/three/src/core/Raycaster.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Euler.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix3.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Quaternion.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts",
+ "../../node_modules/@types/three/src/objects/Group.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts",
+ "../../node_modules/@types/three/src/scenes/Scene.d.ts"
+ ],
+ "../../node_modules/@types/three/src/core/Raycaster.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/core/Layers.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/math/Ray.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/ImageUtils.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/PMREMGenerator.d.ts": [
+ "../../node_modules/@types/three/src/renderers/WebGLRenderTarget.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts",
+ "../../node_modules/@types/three/src/scenes/Scene.d.ts",
+ "../../node_modules/@types/three/src/textures/CubeTexture.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts": [
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/core/CurvePath.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/core/Font.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Shape.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/core/Path.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/CurvePath.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/core/Shape.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Path.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/core/ShapePath.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Shape.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/ArcCurve.d.ts": [
+ "../../node_modules/@types/three/src/extras/curves/EllipseCurve.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/CatmullRomCurve3.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/CubicBezierCurve.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/CubicBezierCurve3.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/Curves.d.ts": [
+ "../../node_modules/@types/three/src/extras/curves/ArcCurve.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/CatmullRomCurve3.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/CubicBezierCurve.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/CubicBezierCurve3.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/EllipseCurve.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/LineCurve.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/LineCurve3.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/QuadraticBezierCurve.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/QuadraticBezierCurve3.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/SplineCurve.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/EllipseCurve.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/LineCurve.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/LineCurve3.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/QuadraticBezierCurve.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/QuadraticBezierCurve3.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/SplineCurve.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/objects/ImmediateRenderObject.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/BoxGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/CircleGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/ConeGeometry.d.ts": [
+ "../../node_modules/@types/three/src/geometries/CylinderGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/CylinderGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/DodecahedronGeometry.d.ts": [
+ "../../node_modules/@types/three/src/geometries/PolyhedronGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/EdgesGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/ExtrudeGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/extras/core/Shape.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/Geometries.d.ts": [
+ "../../node_modules/@types/three/src/geometries/BoxGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/CircleGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/ConeGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/CylinderGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/DodecahedronGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/EdgesGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/ExtrudeGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/IcosahedronGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/LatheGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/OctahedronGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/ParametricGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/PlaneGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/PolyhedronGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/RingGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/ShapeGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/SphereGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/TetrahedronGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/TextGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/TorusGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/TorusKnotGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/TubeGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/WireframeGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/IcosahedronGeometry.d.ts": [
+ "../../node_modules/@types/three/src/geometries/PolyhedronGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/LatheGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/OctahedronGeometry.d.ts": [
+ "../../node_modules/@types/three/src/geometries/PolyhedronGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/ParametricGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/PlaneGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/PolyhedronGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/RingGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/ShapeGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/extras/core/Shape.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/SphereGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/TetrahedronGeometry.d.ts": [
+ "../../node_modules/@types/three/src/geometries/PolyhedronGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/TextGeometry.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Font.d.ts",
+ "../../node_modules/@types/three/src/geometries/ExtrudeGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/TorusGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/TorusKnotGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/TubeGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/WireframeGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/ArrowHelper.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts",
+ "../../node_modules/@types/three/src/objects/Line.d.ts",
+ "../../node_modules/@types/three/src/objects/Mesh.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/AxesHelper.d.ts": [
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/Box3Helper.d.ts": [
+ "../../node_modules/@types/three/src/math/Box3.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/BoxHelper.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/CameraHelper.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/DirectionalLightHelper.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/lights/DirectionalLight.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/objects/Line.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/GridHelper.d.ts": [
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/HemisphereLightHelper.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/lights/HemisphereLight.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshBasicMaterial.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/PlaneHelper.d.ts": [
+ "../../node_modules/@types/three/src/math/Plane.d.ts",
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/PointLightHelper.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/lights/PointLight.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/PolarGridHelper.d.ts": [
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/SkeletonHelper.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/objects/Bone.d.ts",
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/SpotLightHelper.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/AmbientLight.d.ts": [
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/AmbientLightProbe.d.ts": [
+ "../../node_modules/@types/three/src/lights/LightProbe.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/DirectionalLight.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/lights/DirectionalLightShadow.d.ts",
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/DirectionalLightShadow.d.ts": [
+ "../../node_modules/@types/three/src/cameras/OrthographicCamera.d.ts",
+ "../../node_modules/@types/three/src/lights/LightShadow.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/HemisphereLight.d.ts": [
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/HemisphereLightProbe.d.ts": [
+ "../../node_modules/@types/three/src/lights/LightProbe.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/Light.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/lights/LightShadow.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/LightProbe.d.ts": [
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/math/SphericalHarmonics3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/LightShadow.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/math/Vector4.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLRenderLists.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/PointLight.d.ts": [
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/lights/PointLightShadow.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/PointLightShadow.d.ts": [
+ "../../node_modules/@types/three/src/cameras/PerspectiveCamera.d.ts",
+ "../../node_modules/@types/three/src/lights/LightShadow.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/RectAreaLight.d.ts": [
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/SpotLight.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/lights/SpotLightShadow.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/SpotLightShadow.d.ts": [
+ "../../node_modules/@types/three/src/cameras/PerspectiveCamera.d.ts",
+ "../../node_modules/@types/three/src/lights/LightShadow.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/AnimationLoader.d.ts": [
+ "../../node_modules/@types/three/src/animation/AnimationClip.d.ts",
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/AudioLoader.d.ts": [
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/BufferGeometryLoader.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/InstancedBufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/CompressedTextureLoader.d.ts": [
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts",
+ "../../node_modules/@types/three/src/textures/CompressedTexture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/CubeTextureLoader.d.ts": [
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts",
+ "../../node_modules/@types/three/src/textures/CubeTexture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/DataTextureLoader.d.ts": [
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts",
+ "../../node_modules/@types/three/src/textures/DataTexture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/FileLoader.d.ts": [
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/FontLoader.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Font.d.ts",
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/ImageBitmapLoader.d.ts": [
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/ImageLoader.d.ts": [
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts": [
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts": [
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/MaterialLoader.d.ts": [
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/ObjectLoader.d.ts": [
+ "../../node_modules/@types/three/src/animation/AnimationClip.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/TextureLoader.d.ts": [
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/LineBasicMaterial.d.ts": [
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/LineDashedMaterial.d.ts": [
+ "../../node_modules/@types/three/src/materials/LineBasicMaterial.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/Material.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/core/EventDispatcher.d.ts",
+ "../../node_modules/@types/three/src/math/Plane.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts",
+ "../../node_modules/@types/three/src/renderers/shaders/ShaderLib.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/Materials.d.ts": [
+ "../../node_modules/@types/three/src/materials/LineBasicMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/LineDashedMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshBasicMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshDepthMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshDistanceMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshLambertMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshMatcapMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshNormalMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshPhongMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshPhysicalMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshStandardMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshToonMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/PointsMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/RawShaderMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/ShaderMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/ShadowMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/SpriteMaterial.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/MeshBasicMaterial.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/MeshDepthMaterial.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/MeshDistanceMaterial.d.ts": [
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/MeshLambertMaterial.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/MeshMatcapMaterial.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/MeshNormalMaterial.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/MeshPhongMaterial.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/MeshPhysicalMaterial.d.ts": [
+ "../../node_modules/@types/three/src/materials/MeshStandardMaterial.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/MeshStandardMaterial.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/MeshToonMaterial.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/PointsMaterial.d.ts": [
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/RawShaderMaterial.d.ts": [
+ "../../node_modules/@types/three/src/materials/ShaderMaterial.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/ShaderMaterial.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/renderers/shaders/UniformsLib.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/ShadowMaterial.d.ts": [
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/SpriteMaterial.d.ts": [
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Box2.d.ts": [
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Box3.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Plane.d.ts",
+ "../../node_modules/@types/three/src/math/Sphere.d.ts",
+ "../../node_modules/@types/three/src/math/Triangle.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Color.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Cylindrical.d.ts": [
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Euler.d.ts": [
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Quaternion.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Frustum.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/math/Box3.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Plane.d.ts",
+ "../../node_modules/@types/three/src/math/Sphere.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts",
+ "../../node_modules/@types/three/src/objects/Sprite.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Line3.d.ts": [
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/MathUtils.d.ts": [
+ "../../node_modules/@types/three/src/math/Quaternion.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Matrix3.d.ts": [
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts": [
+ "../../node_modules/@types/three/src/math/Euler.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix3.d.ts",
+ "../../node_modules/@types/three/src/math/Quaternion.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Plane.d.ts": [
+ "../../node_modules/@types/three/src/math/Box3.d.ts",
+ "../../node_modules/@types/three/src/math/Line3.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix3.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Sphere.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Quaternion.d.ts": [
+ "../../node_modules/@types/three/src/math/Euler.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Ray.d.ts": [
+ "../../node_modules/@types/three/src/math/Box3.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Plane.d.ts",
+ "../../node_modules/@types/three/src/math/Sphere.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Sphere.d.ts": [
+ "../../node_modules/@types/three/src/math/Box3.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Plane.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Spherical.d.ts": [
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/SphericalHarmonics3.d.ts": [
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Triangle.d.ts": [
+ "../../node_modules/@types/three/src/math/Box3.d.ts",
+ "../../node_modules/@types/three/src/math/Plane.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Vector2.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Vector3.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/InterleavedBufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/math/Cylindrical.d.ts",
+ "../../node_modules/@types/three/src/math/Euler.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix3.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Quaternion.d.ts",
+ "../../node_modules/@types/three/src/math/Spherical.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Vector4.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Quaternion.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/interpolants/CubicInterpolant.d.ts": [
+ "../../node_modules/@types/three/src/math/Interpolant.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/interpolants/DiscreteInterpolant.d.ts": [
+ "../../node_modules/@types/three/src/math/Interpolant.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/interpolants/LinearInterpolant.d.ts": [
+ "../../node_modules/@types/three/src/math/Interpolant.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/interpolants/QuaternionLinearInterpolant.d.ts": [
+ "../../node_modules/@types/three/src/math/Interpolant.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/Bone.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/Group.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/InstancedMesh.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/objects/Mesh.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/LOD.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/core/Raycaster.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/Line.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/core/Raycaster.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/LineLoop.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/objects/Line.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/objects/Line.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/Mesh.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/core/Raycaster.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/Points.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/core/Raycaster.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/Skeleton.d.ts": [
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/objects/Bone.d.ts",
+ "../../node_modules/@types/three/src/textures/DataTexture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/SkinnedMesh.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts",
+ "../../node_modules/@types/three/src/objects/Mesh.d.ts",
+ "../../node_modules/@types/three/src/objects/Skeleton.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/Sprite.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/core/Raycaster.d.ts",
+ "../../node_modules/@types/three/src/materials/Materials.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/WebGL1Renderer.d.ts": [
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/WebGLCubeRenderTarget.d.ts": [
+ "../../node_modules/@types/three/src/renderers/WebGLRenderTarget.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts",
+ "../../node_modules/@types/three/src/textures/CubeTexture.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/WebGLMultisampleRenderTarget.d.ts": [
+ "../../node_modules/@types/three/src/renderers/WebGLRenderTarget.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/WebGLRenderTarget.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/core/EventDispatcher.d.ts",
+ "../../node_modules/@types/three/src/math/Vector4.d.ts",
+ "../../node_modules/@types/three/src/textures/DepthTexture.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Box3.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts",
+ "../../node_modules/@types/three/src/math/Vector4.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderTarget.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLInfo.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProgram.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProperties.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLRenderLists.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLShadowMap.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLState.d.ts",
+ "../../node_modules/@types/three/src/renderers/webxr/WebXR.d.ts",
+ "../../node_modules/@types/three/src/renderers/webxr/WebXRManager.d.ts",
+ "../../node_modules/@types/three/src/scenes/Scene.d.ts",
+ "../../node_modules/@types/three/src/textures/DataTexture2DArray.d.ts",
+ "../../node_modules/@types/three/src/textures/DataTexture3D.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/shaders/ShaderLib.d.ts": [
+ "../../node_modules/@types/three/src/renderers/shaders/UniformsLib.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLAttributes.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/InterleavedBufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLBindingStates.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLAttributes.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProgram.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLBufferRenderer.d.ts": [
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLInfo.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLClipping.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProperties.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCubeMaps.d.ts": [
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts": [
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLGeometries.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLAttributes.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLInfo.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLInfo.d.ts": [
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProgram.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLLights.d.ts": [
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProgram.d.ts": [
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLShader.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLUniforms.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLPrograms.d.ts": [
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLBindingStates.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLClipping.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCubeMaps.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProgram.d.ts",
+ "../../node_modules/@types/three/src/scenes/Scene.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLRenderLists.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/objects/Group.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProgram.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProperties.d.ts",
+ "../../node_modules/@types/three/src/scenes/Scene.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLShadowMap.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLObjects.d.ts",
+ "../../node_modules/@types/three/src/scenes/Scene.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLState.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Vector4.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLTextures.d.ts": [
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLInfo.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProperties.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLState.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLUtils.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLUniforms.d.ts": [
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProgram.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLTextures.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webxr/WebXRController.d.ts": [
+ "../../node_modules/@types/three/src/objects/Group.d.ts",
+ "../../node_modules/@types/three/src/renderers/webxr/WebXR.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webxr/WebXRManager.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/core/EventDispatcher.d.ts",
+ "../../node_modules/@types/three/src/objects/Group.d.ts",
+ "../../node_modules/@types/three/src/renderers/webxr/WebXR.d.ts"
+ ],
+ "../../node_modules/@types/three/src/scenes/Fog.d.ts": [
+ "../../node_modules/@types/three/src/math/Color.d.ts"
+ ],
+ "../../node_modules/@types/three/src/scenes/FogExp2.d.ts": [
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/scenes/Fog.d.ts"
+ ],
+ "../../node_modules/@types/three/src/scenes/Scene.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLCubeRenderTarget.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderTarget.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts",
+ "../../node_modules/@types/three/src/scenes/Fog.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/textures/CanvasTexture.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/textures/CompressedTexture.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/textures/CubeTexture.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/textures/DataTexture.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/textures/DataTexture2DArray.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/textures/DataTexture3D.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/textures/DepthTexture.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/textures/Texture.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/core/EventDispatcher.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix3.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/textures/VideoTexture.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "./src/OrbitControls.ts": [
+ "../../node_modules/@types/three/index.d.ts"
+ ],
+ "./src/defs.ts": [
+ "./src/constants.ts"
+ ],
+ "./src/globaltypes.ts": [
+ "./src/constants.ts"
+ ],
+ "./src/index.ts": [
+ "./src/constants.ts",
+ "./src/defs.ts",
+ "./src/entity-manager.ts",
+ "./src/globaltypes.ts",
+ "./src/math.ts",
+ "./src/noise.ts",
+ "./src/spatial-hash-grid.ts",
+ "./src/spline.ts",
+ "./src/terrain-constants.ts",
+ "./src/terrain-height.ts"
+ ],
+ "./src/noise.ts": [
+ "./src/simplex-noise.ts"
+ ],
+ "./src/spatial-hash-grid.ts": [
+ "./src/math.ts"
+ ],
+ "./src/terrain-height.ts": [
+ "./src/noise.ts",
+ "./src/terrain-constants.ts"
+ ]
+ },
+ "exportedModulesMap": {
+ "../../node_modules/@types/cors/index.d.ts": [
+ "../../node_modules/@types/node/http.d.ts"
+ ],
+ "../../node_modules/@types/eslint-scope/index.d.ts": [
+ "../../node_modules/@types/eslint/index.d.ts",
+ "../../node_modules/@types/estree/index.d.ts"
+ ],
+ "../../node_modules/@types/eslint/index.d.ts": [
+ "../../node_modules/@types/eslint/helpers.d.ts",
+ "../../node_modules/@types/eslint/lib/rules/index.d.ts",
+ "../../node_modules/@types/estree/index.d.ts",
+ "../../node_modules/@types/json-schema/index.d.ts"
+ ],
+ "../../node_modules/@types/eslint/lib/rules/index.d.ts": [
+ "../../node_modules/@types/eslint/index.d.ts"
+ ],
+ "../../node_modules/@types/glob/index.d.ts": [
+ "../../node_modules/@types/minimatch/index.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../node_modules/@types/node/assert.d.ts": [
+ "../../node_modules/@types/node/assert.d.ts"
+ ],
+ "../../node_modules/@types/node/async_hooks.d.ts": [
+ "../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../node_modules/@types/node/base.d.ts": [
+ "../../node_modules/@types/node/assert.d.ts",
+ "../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../node_modules/@types/node/buffer.d.ts": [
+ "../../node_modules/@types/node/buffer.d.ts"
+ ],
+ "../../node_modules/@types/node/child_process.d.ts": [
+ "../../node_modules/@types/node/child_process.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../node_modules/@types/node/cluster.d.ts": [
+ "../../node_modules/@types/node/child_process.d.ts",
+ "../../node_modules/@types/node/cluster.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../node_modules/@types/node/console.d.ts": [
+ "../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../node_modules/@types/node/constants.d.ts": [
+ "../../node_modules/@types/node/constants.d.ts",
+ "../../node_modules/@types/node/crypto.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../node_modules/@types/node/crypto.d.ts": [
+ "../../node_modules/@types/node/crypto.d.ts",
+ "../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../node_modules/@types/node/dgram.d.ts": [
+ "../../node_modules/@types/node/dgram.d.ts",
+ "../../node_modules/@types/node/dns.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../node_modules/@types/node/dns.d.ts": [
+ "../../node_modules/@types/node/dns.d.ts"
+ ],
+ "../../node_modules/@types/node/domain.d.ts": [
+ "../../node_modules/@types/node/domain.d.ts",
+ "../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../node_modules/@types/node/events.d.ts": [
+ "../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../node_modules/@types/node/fs.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/fs/promises.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/fs/promises.d.ts"
+ ],
+ "../../node_modules/@types/node/http.d.ts": [
+ "../../node_modules/@types/node/http.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/http2.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/http.d.ts",
+ "../../node_modules/@types/node/http2.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/tls.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/https.d.ts": [
+ "../../node_modules/@types/node/http.d.ts",
+ "../../node_modules/@types/node/https.d.ts",
+ "../../node_modules/@types/node/tls.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/index.d.ts": [
+ "../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../node_modules/@types/node/inspector.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/inspector.d.ts"
+ ],
+ "../../node_modules/@types/node/module.d.ts": [
+ "../../node_modules/@types/node/module.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/net.d.ts": [
+ "../../node_modules/@types/node/dns.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../node_modules/@types/node/os.d.ts": [
+ "../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../node_modules/@types/node/path.d.ts": [
+ "../../node_modules/@types/node/path.d.ts"
+ ],
+ "../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../node_modules/@types/node/async_hooks.d.ts",
+ "../../node_modules/@types/node/perf_hooks.d.ts"
+ ],
+ "../../node_modules/@types/node/process.d.ts": [
+ "../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../node_modules/@types/node/punycode.d.ts": [
+ "../../node_modules/@types/node/punycode.d.ts"
+ ],
+ "../../node_modules/@types/node/querystring.d.ts": [
+ "../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../node_modules/@types/node/readline.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/readline.d.ts"
+ ],
+ "../../node_modules/@types/node/repl.d.ts": [
+ "../../node_modules/@types/node/readline.d.ts",
+ "../../node_modules/@types/node/repl.d.ts",
+ "../../node_modules/@types/node/util.d.ts",
+ "../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../node_modules/@types/node/stream.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../node_modules/@types/node/string_decoder.d.ts": [
+ "../../node_modules/@types/node/string_decoder.d.ts"
+ ],
+ "../../node_modules/@types/node/timers.d.ts": [
+ "../../node_modules/@types/node/timers.d.ts"
+ ],
+ "../../node_modules/@types/node/tls.d.ts": [
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/tls.d.ts"
+ ],
+ "../../node_modules/@types/node/trace_events.d.ts": [
+ "../../node_modules/@types/node/trace_events.d.ts"
+ ],
+ "../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../node_modules/@types/node/async_hooks.d.ts",
+ "../../node_modules/@types/node/buffer.d.ts",
+ "../../node_modules/@types/node/child_process.d.ts",
+ "../../node_modules/@types/node/cluster.d.ts",
+ "../../node_modules/@types/node/console.d.ts",
+ "../../node_modules/@types/node/constants.d.ts",
+ "../../node_modules/@types/node/crypto.d.ts",
+ "../../node_modules/@types/node/dgram.d.ts",
+ "../../node_modules/@types/node/dns.d.ts",
+ "../../node_modules/@types/node/domain.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/fs/promises.d.ts",
+ "../../node_modules/@types/node/globals.d.ts",
+ "../../node_modules/@types/node/globals.global.d.ts",
+ "../../node_modules/@types/node/http.d.ts",
+ "../../node_modules/@types/node/http2.d.ts",
+ "../../node_modules/@types/node/https.d.ts",
+ "../../node_modules/@types/node/inspector.d.ts",
+ "../../node_modules/@types/node/module.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/os.d.ts",
+ "../../node_modules/@types/node/path.d.ts",
+ "../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../node_modules/@types/node/process.d.ts",
+ "../../node_modules/@types/node/punycode.d.ts",
+ "../../node_modules/@types/node/querystring.d.ts",
+ "../../node_modules/@types/node/readline.d.ts",
+ "../../node_modules/@types/node/repl.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/string_decoder.d.ts",
+ "../../node_modules/@types/node/timers.d.ts",
+ "../../node_modules/@types/node/tls.d.ts",
+ "../../node_modules/@types/node/trace_events.d.ts",
+ "../../node_modules/@types/node/tty.d.ts",
+ "../../node_modules/@types/node/url.d.ts",
+ "../../node_modules/@types/node/util.d.ts",
+ "../../node_modules/@types/node/v8.d.ts",
+ "../../node_modules/@types/node/vm.d.ts",
+ "../../node_modules/@types/node/wasi.d.ts",
+ "../../node_modules/@types/node/worker_threads.d.ts",
+ "../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../node_modules/@types/node/tty.d.ts": [
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../node_modules/@types/node/url.d.ts": [
+ "../../node_modules/@types/node/querystring.d.ts",
+ "../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../node_modules/@types/node/util.d.ts": [
+ "../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../node_modules/@types/node/v8.d.ts": [
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/v8.d.ts"
+ ],
+ "../../node_modules/@types/node/vm.d.ts": [
+ "../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../node_modules/@types/node/wasi.d.ts": [
+ "../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs/promises.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/url.d.ts",
+ "../../node_modules/@types/node/vm.d.ts",
+ "../../node_modules/@types/node/worker_threads.d.ts"
+ ],
+ "../../node_modules/@types/node/zlib.d.ts": [
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../node_modules/@types/three/index.d.ts": [
+ "../../node_modules/@types/three/src/Three.d.ts"
+ ],
+ "../../node_modules/@types/three/src/Three.d.ts": [
+ "../../node_modules/@types/three/src/Three.Legacy.d.ts",
+ "../../node_modules/@types/three/src/animation/AnimationAction.d.ts",
+ "../../node_modules/@types/three/src/animation/AnimationClip.d.ts",
+ "../../node_modules/@types/three/src/animation/AnimationMixer.d.ts",
+ "../../node_modules/@types/three/src/animation/AnimationObjectGroup.d.ts",
+ "../../node_modules/@types/three/src/animation/AnimationUtils.d.ts",
+ "../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/animation/PropertyBinding.d.ts",
+ "../../node_modules/@types/three/src/animation/PropertyMixer.d.ts",
+ "../../node_modules/@types/three/src/animation/tracks/BooleanKeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/animation/tracks/ColorKeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/animation/tracks/NumberKeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/animation/tracks/QuaternionKeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/animation/tracks/StringKeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/animation/tracks/VectorKeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/audio/Audio.d.ts",
+ "../../node_modules/@types/three/src/audio/AudioAnalyser.d.ts",
+ "../../node_modules/@types/three/src/audio/AudioContext.d.ts",
+ "../../node_modules/@types/three/src/audio/AudioListener.d.ts",
+ "../../node_modules/@types/three/src/audio/PositionalAudio.d.ts",
+ "../../node_modules/@types/three/src/cameras/ArrayCamera.d.ts",
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/cameras/CubeCamera.d.ts",
+ "../../node_modules/@types/three/src/cameras/OrthographicCamera.d.ts",
+ "../../node_modules/@types/three/src/cameras/PerspectiveCamera.d.ts",
+ "../../node_modules/@types/three/src/cameras/StereoCamera.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/Clock.d.ts",
+ "../../node_modules/@types/three/src/core/EventDispatcher.d.ts",
+ "../../node_modules/@types/three/src/core/GLBufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/InstancedBufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/InstancedBufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/InstancedInterleavedBuffer.d.ts",
+ "../../node_modules/@types/three/src/core/InterleavedBuffer.d.ts",
+ "../../node_modules/@types/three/src/core/InterleavedBufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/Layers.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/core/Raycaster.d.ts",
+ "../../node_modules/@types/three/src/core/Uniform.d.ts",
+ "../../node_modules/@types/three/src/extras/DataUtils.d.ts",
+ "../../node_modules/@types/three/src/extras/ImageUtils.d.ts",
+ "../../node_modules/@types/three/src/extras/PMREMGenerator.d.ts",
+ "../../node_modules/@types/three/src/extras/ShapeUtils.d.ts",
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/extras/core/CurvePath.d.ts",
+ "../../node_modules/@types/three/src/extras/core/Font.d.ts",
+ "../../node_modules/@types/three/src/extras/core/Path.d.ts",
+ "../../node_modules/@types/three/src/extras/core/Shape.d.ts",
+ "../../node_modules/@types/three/src/extras/core/ShapePath.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/Curves.d.ts",
+ "../../node_modules/@types/three/src/extras/objects/ImmediateRenderObject.d.ts",
+ "../../node_modules/@types/three/src/geometries/Geometries.d.ts",
+ "../../node_modules/@types/three/src/helpers/ArrowHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/AxesHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/Box3Helper.d.ts",
+ "../../node_modules/@types/three/src/helpers/BoxHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/CameraHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/DirectionalLightHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/GridHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/HemisphereLightHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/PlaneHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/PointLightHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/PolarGridHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/SkeletonHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/SpotLightHelper.d.ts",
+ "../../node_modules/@types/three/src/lights/AmbientLight.d.ts",
+ "../../node_modules/@types/three/src/lights/AmbientLightProbe.d.ts",
+ "../../node_modules/@types/three/src/lights/DirectionalLight.d.ts",
+ "../../node_modules/@types/three/src/lights/DirectionalLightShadow.d.ts",
+ "../../node_modules/@types/three/src/lights/HemisphereLight.d.ts",
+ "../../node_modules/@types/three/src/lights/HemisphereLightProbe.d.ts",
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/lights/LightProbe.d.ts",
+ "../../node_modules/@types/three/src/lights/LightShadow.d.ts",
+ "../../node_modules/@types/three/src/lights/PointLight.d.ts",
+ "../../node_modules/@types/three/src/lights/PointLightShadow.d.ts",
+ "../../node_modules/@types/three/src/lights/RectAreaLight.d.ts",
+ "../../node_modules/@types/three/src/lights/SpotLight.d.ts",
+ "../../node_modules/@types/three/src/lights/SpotLightShadow.d.ts",
+ "../../node_modules/@types/three/src/loaders/AnimationLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/AudioLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/BufferGeometryLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/Cache.d.ts",
+ "../../node_modules/@types/three/src/loaders/CompressedTextureLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/CubeTextureLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/DataTextureLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/FileLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/FontLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/ImageBitmapLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/ImageLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoaderUtils.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts",
+ "../../node_modules/@types/three/src/loaders/MaterialLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/ObjectLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/TextureLoader.d.ts",
+ "../../node_modules/@types/three/src/materials/Materials.d.ts",
+ "../../node_modules/@types/three/src/math/Box2.d.ts",
+ "../../node_modules/@types/three/src/math/Box3.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Cylindrical.d.ts",
+ "../../node_modules/@types/three/src/math/Euler.d.ts",
+ "../../node_modules/@types/three/src/math/Frustum.d.ts",
+ "../../node_modules/@types/three/src/math/Interpolant.d.ts",
+ "../../node_modules/@types/three/src/math/Line3.d.ts",
+ "../../node_modules/@types/three/src/math/MathUtils.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix3.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Plane.d.ts",
+ "../../node_modules/@types/three/src/math/Quaternion.d.ts",
+ "../../node_modules/@types/three/src/math/Ray.d.ts",
+ "../../node_modules/@types/three/src/math/Sphere.d.ts",
+ "../../node_modules/@types/three/src/math/Spherical.d.ts",
+ "../../node_modules/@types/three/src/math/SphericalHarmonics3.d.ts",
+ "../../node_modules/@types/three/src/math/Triangle.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts",
+ "../../node_modules/@types/three/src/math/Vector4.d.ts",
+ "../../node_modules/@types/three/src/math/interpolants/CubicInterpolant.d.ts",
+ "../../node_modules/@types/three/src/math/interpolants/DiscreteInterpolant.d.ts",
+ "../../node_modules/@types/three/src/math/interpolants/LinearInterpolant.d.ts",
+ "../../node_modules/@types/three/src/math/interpolants/QuaternionLinearInterpolant.d.ts",
+ "../../node_modules/@types/three/src/objects/Bone.d.ts",
+ "../../node_modules/@types/three/src/objects/Group.d.ts",
+ "../../node_modules/@types/three/src/objects/InstancedMesh.d.ts",
+ "../../node_modules/@types/three/src/objects/LOD.d.ts",
+ "../../node_modules/@types/three/src/objects/Line.d.ts",
+ "../../node_modules/@types/three/src/objects/LineLoop.d.ts",
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts",
+ "../../node_modules/@types/three/src/objects/Mesh.d.ts",
+ "../../node_modules/@types/three/src/objects/Points.d.ts",
+ "../../node_modules/@types/three/src/objects/Skeleton.d.ts",
+ "../../node_modules/@types/three/src/objects/SkinnedMesh.d.ts",
+ "../../node_modules/@types/three/src/objects/Sprite.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGL1Renderer.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLCubeRenderTarget.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLMultisampleRenderTarget.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderTarget.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts",
+ "../../node_modules/@types/three/src/renderers/shaders/ShaderChunk.d.ts",
+ "../../node_modules/@types/three/src/renderers/shaders/ShaderLib.d.ts",
+ "../../node_modules/@types/three/src/renderers/shaders/UniformsLib.d.ts",
+ "../../node_modules/@types/three/src/renderers/shaders/UniformsUtils.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLBufferRenderer.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLClipping.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLGeometries.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLIndexedBufferRenderer.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLInfo.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLLights.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLObjects.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProgram.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLPrograms.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProperties.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLRenderLists.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLShader.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLShadowMap.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLState.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLTextures.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLUniforms.d.ts",
+ "../../node_modules/@types/three/src/renderers/webxr/WebXR.d.ts",
+ "../../node_modules/@types/three/src/renderers/webxr/WebXRController.d.ts",
+ "../../node_modules/@types/three/src/renderers/webxr/WebXRManager.d.ts",
+ "../../node_modules/@types/three/src/scenes/Fog.d.ts",
+ "../../node_modules/@types/three/src/scenes/FogExp2.d.ts",
+ "../../node_modules/@types/three/src/scenes/Scene.d.ts",
+ "../../node_modules/@types/three/src/textures/CanvasTexture.d.ts",
+ "../../node_modules/@types/three/src/textures/CompressedTexture.d.ts",
+ "../../node_modules/@types/three/src/textures/CubeTexture.d.ts",
+ "../../node_modules/@types/three/src/textures/DataTexture.d.ts",
+ "../../node_modules/@types/three/src/textures/DataTexture2DArray.d.ts",
+ "../../node_modules/@types/three/src/textures/DataTexture3D.d.ts",
+ "../../node_modules/@types/three/src/textures/DepthTexture.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts",
+ "../../node_modules/@types/three/src/textures/VideoTexture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/AnimationAction.d.ts": [
+ "../../node_modules/@types/three/src/animation/AnimationClip.d.ts",
+ "../../node_modules/@types/three/src/animation/AnimationMixer.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/AnimationClip.d.ts": [
+ "../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts",
+ "../../node_modules/@types/three/src/objects/Bone.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/AnimationMixer.d.ts": [
+ "../../node_modules/@types/three/src/animation/AnimationAction.d.ts",
+ "../../node_modules/@types/three/src/animation/AnimationClip.d.ts",
+ "../../node_modules/@types/three/src/animation/AnimationObjectGroup.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/core/EventDispatcher.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/AnimationUtils.d.ts": [
+ "../../node_modules/@types/three/src/animation/AnimationClip.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/math/interpolants/CubicInterpolant.d.ts",
+ "../../node_modules/@types/three/src/math/interpolants/DiscreteInterpolant.d.ts",
+ "../../node_modules/@types/three/src/math/interpolants/LinearInterpolant.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/tracks/BooleanKeyframeTrack.d.ts": [
+ "../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/tracks/ColorKeyframeTrack.d.ts": [
+ "../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/tracks/NumberKeyframeTrack.d.ts": [
+ "../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/tracks/QuaternionKeyframeTrack.d.ts": [
+ "../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/tracks/StringKeyframeTrack.d.ts": [
+ "../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts"
+ ],
+ "../../node_modules/@types/three/src/animation/tracks/VectorKeyframeTrack.d.ts": [
+ "../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts"
+ ],
+ "../../node_modules/@types/three/src/audio/Audio.d.ts": [
+ "../../node_modules/@types/three/src/audio/AudioContext.d.ts",
+ "../../node_modules/@types/three/src/audio/AudioListener.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts"
+ ],
+ "../../node_modules/@types/three/src/audio/AudioAnalyser.d.ts": [
+ "../../node_modules/@types/three/src/audio/Audio.d.ts"
+ ],
+ "../../node_modules/@types/three/src/audio/AudioListener.d.ts": [
+ "../../node_modules/@types/three/src/audio/AudioContext.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts"
+ ],
+ "../../node_modules/@types/three/src/audio/PositionalAudio.d.ts": [
+ "../../node_modules/@types/three/src/audio/Audio.d.ts",
+ "../../node_modules/@types/three/src/audio/AudioListener.d.ts"
+ ],
+ "../../node_modules/@types/three/src/cameras/ArrayCamera.d.ts": [
+ "../../node_modules/@types/three/src/cameras/PerspectiveCamera.d.ts"
+ ],
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/cameras/CubeCamera.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLCubeRenderTarget.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts",
+ "../../node_modules/@types/three/src/scenes/Scene.d.ts"
+ ],
+ "../../node_modules/@types/three/src/cameras/OrthographicCamera.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts"
+ ],
+ "../../node_modules/@types/three/src/cameras/PerspectiveCamera.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts"
+ ],
+ "../../node_modules/@types/three/src/cameras/StereoCamera.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/cameras/PerspectiveCamera.d.ts"
+ ],
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix3.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts"
+ ],
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/EventDispatcher.d.ts",
+ "../../node_modules/@types/three/src/core/InterleavedBufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/math/Box3.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Sphere.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/core/InstancedBufferAttribute.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/core/InstancedBufferGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/core/InstancedInterleavedBuffer.d.ts": [
+ "../../node_modules/@types/three/src/core/InterleavedBuffer.d.ts"
+ ],
+ "../../node_modules/@types/three/src/core/InterleavedBuffer.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/core/InterleavedBufferAttribute.d.ts"
+ ],
+ "../../node_modules/@types/three/src/core/InterleavedBufferAttribute.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/InterleavedBuffer.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts"
+ ],
+ "../../node_modules/@types/three/src/core/Object3D.d.ts": [
+ "../../node_modules/@types/three/src/animation/AnimationClip.d.ts",
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/EventDispatcher.d.ts",
+ "../../node_modules/@types/three/src/core/Layers.d.ts",
+ "../../node_modules/@types/three/src/core/Raycaster.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Euler.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix3.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Quaternion.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts",
+ "../../node_modules/@types/three/src/objects/Group.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts",
+ "../../node_modules/@types/three/src/scenes/Scene.d.ts"
+ ],
+ "../../node_modules/@types/three/src/core/Raycaster.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/core/Layers.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/math/Ray.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/ImageUtils.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/PMREMGenerator.d.ts": [
+ "../../node_modules/@types/three/src/renderers/WebGLRenderTarget.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts",
+ "../../node_modules/@types/three/src/scenes/Scene.d.ts",
+ "../../node_modules/@types/three/src/textures/CubeTexture.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts": [
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/core/CurvePath.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/core/Font.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Shape.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/core/Path.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/CurvePath.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/core/Shape.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Path.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/core/ShapePath.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Shape.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/ArcCurve.d.ts": [
+ "../../node_modules/@types/three/src/extras/curves/EllipseCurve.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/CatmullRomCurve3.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/CubicBezierCurve.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/CubicBezierCurve3.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/Curves.d.ts": [
+ "../../node_modules/@types/three/src/extras/curves/ArcCurve.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/CatmullRomCurve3.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/CubicBezierCurve.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/CubicBezierCurve3.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/EllipseCurve.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/LineCurve.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/LineCurve3.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/QuadraticBezierCurve.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/QuadraticBezierCurve3.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/SplineCurve.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/EllipseCurve.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/LineCurve.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/LineCurve3.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/QuadraticBezierCurve.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/QuadraticBezierCurve3.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/curves/SplineCurve.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/extras/objects/ImmediateRenderObject.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/BoxGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/CircleGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/ConeGeometry.d.ts": [
+ "../../node_modules/@types/three/src/geometries/CylinderGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/CylinderGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/DodecahedronGeometry.d.ts": [
+ "../../node_modules/@types/three/src/geometries/PolyhedronGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/EdgesGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/ExtrudeGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/extras/core/Shape.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/Geometries.d.ts": [
+ "../../node_modules/@types/three/src/geometries/BoxGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/CircleGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/ConeGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/CylinderGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/DodecahedronGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/EdgesGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/ExtrudeGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/IcosahedronGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/LatheGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/OctahedronGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/ParametricGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/PlaneGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/PolyhedronGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/RingGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/ShapeGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/SphereGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/TetrahedronGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/TextGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/TorusGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/TorusKnotGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/TubeGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/WireframeGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/IcosahedronGeometry.d.ts": [
+ "../../node_modules/@types/three/src/geometries/PolyhedronGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/LatheGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/OctahedronGeometry.d.ts": [
+ "../../node_modules/@types/three/src/geometries/PolyhedronGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/ParametricGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/PlaneGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/PolyhedronGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/RingGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/ShapeGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/extras/core/Shape.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/SphereGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/TetrahedronGeometry.d.ts": [
+ "../../node_modules/@types/three/src/geometries/PolyhedronGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/TextGeometry.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Font.d.ts",
+ "../../node_modules/@types/three/src/geometries/ExtrudeGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/TorusGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/TorusKnotGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/TubeGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/geometries/WireframeGeometry.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/ArrowHelper.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts",
+ "../../node_modules/@types/three/src/objects/Line.d.ts",
+ "../../node_modules/@types/three/src/objects/Mesh.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/AxesHelper.d.ts": [
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/Box3Helper.d.ts": [
+ "../../node_modules/@types/three/src/math/Box3.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/BoxHelper.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/CameraHelper.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/DirectionalLightHelper.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/lights/DirectionalLight.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/objects/Line.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/GridHelper.d.ts": [
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/HemisphereLightHelper.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/lights/HemisphereLight.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshBasicMaterial.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/PlaneHelper.d.ts": [
+ "../../node_modules/@types/three/src/math/Plane.d.ts",
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/PointLightHelper.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/lights/PointLight.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/PolarGridHelper.d.ts": [
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/SkeletonHelper.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/objects/Bone.d.ts",
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts"
+ ],
+ "../../node_modules/@types/three/src/helpers/SpotLightHelper.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/AmbientLight.d.ts": [
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/AmbientLightProbe.d.ts": [
+ "../../node_modules/@types/three/src/lights/LightProbe.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/DirectionalLight.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/lights/DirectionalLightShadow.d.ts",
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/DirectionalLightShadow.d.ts": [
+ "../../node_modules/@types/three/src/cameras/OrthographicCamera.d.ts",
+ "../../node_modules/@types/three/src/lights/LightShadow.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/HemisphereLight.d.ts": [
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/HemisphereLightProbe.d.ts": [
+ "../../node_modules/@types/three/src/lights/LightProbe.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/Light.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/lights/LightShadow.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/LightProbe.d.ts": [
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/math/SphericalHarmonics3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/LightShadow.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/math/Vector4.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLRenderLists.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/PointLight.d.ts": [
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/lights/PointLightShadow.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/PointLightShadow.d.ts": [
+ "../../node_modules/@types/three/src/cameras/PerspectiveCamera.d.ts",
+ "../../node_modules/@types/three/src/lights/LightShadow.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/RectAreaLight.d.ts": [
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/SpotLight.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/lights/SpotLightShadow.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/lights/SpotLightShadow.d.ts": [
+ "../../node_modules/@types/three/src/cameras/PerspectiveCamera.d.ts",
+ "../../node_modules/@types/three/src/lights/LightShadow.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/AnimationLoader.d.ts": [
+ "../../node_modules/@types/three/src/animation/AnimationClip.d.ts",
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/AudioLoader.d.ts": [
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/BufferGeometryLoader.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/InstancedBufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/CompressedTextureLoader.d.ts": [
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts",
+ "../../node_modules/@types/three/src/textures/CompressedTexture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/CubeTextureLoader.d.ts": [
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts",
+ "../../node_modules/@types/three/src/textures/CubeTexture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/DataTextureLoader.d.ts": [
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts",
+ "../../node_modules/@types/three/src/textures/DataTexture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/FileLoader.d.ts": [
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/FontLoader.d.ts": [
+ "../../node_modules/@types/three/src/extras/core/Font.d.ts",
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/ImageBitmapLoader.d.ts": [
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/ImageLoader.d.ts": [
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts": [
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts": [
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/MaterialLoader.d.ts": [
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/ObjectLoader.d.ts": [
+ "../../node_modules/@types/three/src/animation/AnimationClip.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/loaders/TextureLoader.d.ts": [
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/LineBasicMaterial.d.ts": [
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/LineDashedMaterial.d.ts": [
+ "../../node_modules/@types/three/src/materials/LineBasicMaterial.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/Material.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/core/EventDispatcher.d.ts",
+ "../../node_modules/@types/three/src/math/Plane.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts",
+ "../../node_modules/@types/three/src/renderers/shaders/ShaderLib.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/Materials.d.ts": [
+ "../../node_modules/@types/three/src/materials/LineBasicMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/LineDashedMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshBasicMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshDepthMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshDistanceMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshLambertMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshMatcapMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshNormalMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshPhongMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshPhysicalMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshStandardMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshToonMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/PointsMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/RawShaderMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/ShaderMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/ShadowMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/SpriteMaterial.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/MeshBasicMaterial.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/MeshDepthMaterial.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/MeshDistanceMaterial.d.ts": [
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/MeshLambertMaterial.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/MeshMatcapMaterial.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/MeshNormalMaterial.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/MeshPhongMaterial.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/MeshPhysicalMaterial.d.ts": [
+ "../../node_modules/@types/three/src/materials/MeshStandardMaterial.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/MeshStandardMaterial.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/MeshToonMaterial.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/PointsMaterial.d.ts": [
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/RawShaderMaterial.d.ts": [
+ "../../node_modules/@types/three/src/materials/ShaderMaterial.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/ShaderMaterial.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/renderers/shaders/UniformsLib.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/ShadowMaterial.d.ts": [
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts"
+ ],
+ "../../node_modules/@types/three/src/materials/SpriteMaterial.d.ts": [
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Box2.d.ts": [
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Box3.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Plane.d.ts",
+ "../../node_modules/@types/three/src/math/Sphere.d.ts",
+ "../../node_modules/@types/three/src/math/Triangle.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Color.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Cylindrical.d.ts": [
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Euler.d.ts": [
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Quaternion.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Frustum.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/math/Box3.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Plane.d.ts",
+ "../../node_modules/@types/three/src/math/Sphere.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts",
+ "../../node_modules/@types/three/src/objects/Sprite.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Line3.d.ts": [
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/MathUtils.d.ts": [
+ "../../node_modules/@types/three/src/math/Quaternion.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Matrix3.d.ts": [
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts": [
+ "../../node_modules/@types/three/src/math/Euler.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix3.d.ts",
+ "../../node_modules/@types/three/src/math/Quaternion.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Plane.d.ts": [
+ "../../node_modules/@types/three/src/math/Box3.d.ts",
+ "../../node_modules/@types/three/src/math/Line3.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix3.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Sphere.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Quaternion.d.ts": [
+ "../../node_modules/@types/three/src/math/Euler.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Ray.d.ts": [
+ "../../node_modules/@types/three/src/math/Box3.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Plane.d.ts",
+ "../../node_modules/@types/three/src/math/Sphere.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Sphere.d.ts": [
+ "../../node_modules/@types/three/src/math/Box3.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Plane.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Spherical.d.ts": [
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/SphericalHarmonics3.d.ts": [
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Triangle.d.ts": [
+ "../../node_modules/@types/three/src/math/Box3.d.ts",
+ "../../node_modules/@types/three/src/math/Plane.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Vector2.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix3.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Vector3.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/InterleavedBufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/math/Cylindrical.d.ts",
+ "../../node_modules/@types/three/src/math/Euler.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix3.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Quaternion.d.ts",
+ "../../node_modules/@types/three/src/math/Spherical.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/Vector4.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Quaternion.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/interpolants/CubicInterpolant.d.ts": [
+ "../../node_modules/@types/three/src/math/Interpolant.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/interpolants/DiscreteInterpolant.d.ts": [
+ "../../node_modules/@types/three/src/math/Interpolant.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/interpolants/LinearInterpolant.d.ts": [
+ "../../node_modules/@types/three/src/math/Interpolant.d.ts"
+ ],
+ "../../node_modules/@types/three/src/math/interpolants/QuaternionLinearInterpolant.d.ts": [
+ "../../node_modules/@types/three/src/math/Interpolant.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/Bone.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/Group.d.ts": [
+ "../../node_modules/@types/three/src/core/Object3D.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/InstancedMesh.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/objects/Mesh.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/LOD.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/core/Raycaster.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/Line.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/core/Raycaster.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/LineLoop.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/objects/Line.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/objects/Line.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/Mesh.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/core/Raycaster.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/Points.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/core/Raycaster.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/Skeleton.d.ts": [
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/objects/Bone.d.ts",
+ "../../node_modules/@types/three/src/textures/DataTexture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/SkinnedMesh.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts",
+ "../../node_modules/@types/three/src/objects/Mesh.d.ts",
+ "../../node_modules/@types/three/src/objects/Skeleton.d.ts"
+ ],
+ "../../node_modules/@types/three/src/objects/Sprite.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/core/Raycaster.d.ts",
+ "../../node_modules/@types/three/src/materials/Materials.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/WebGL1Renderer.d.ts": [
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/WebGLCubeRenderTarget.d.ts": [
+ "../../node_modules/@types/three/src/renderers/WebGLRenderTarget.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts",
+ "../../node_modules/@types/three/src/textures/CubeTexture.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/WebGLMultisampleRenderTarget.d.ts": [
+ "../../node_modules/@types/three/src/renderers/WebGLRenderTarget.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/WebGLRenderTarget.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/core/EventDispatcher.d.ts",
+ "../../node_modules/@types/three/src/math/Vector4.d.ts",
+ "../../node_modules/@types/three/src/textures/DepthTexture.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Box3.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts",
+ "../../node_modules/@types/three/src/math/Vector4.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderTarget.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLInfo.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProgram.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProperties.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLRenderLists.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLShadowMap.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLState.d.ts",
+ "../../node_modules/@types/three/src/renderers/webxr/WebXR.d.ts",
+ "../../node_modules/@types/three/src/renderers/webxr/WebXRManager.d.ts",
+ "../../node_modules/@types/three/src/scenes/Scene.d.ts",
+ "../../node_modules/@types/three/src/textures/DataTexture2DArray.d.ts",
+ "../../node_modules/@types/three/src/textures/DataTexture3D.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/shaders/ShaderLib.d.ts": [
+ "../../node_modules/@types/three/src/renderers/shaders/UniformsLib.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLAttributes.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/InterleavedBufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLBindingStates.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLAttributes.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProgram.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLBufferRenderer.d.ts": [
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLInfo.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLClipping.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProperties.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCubeMaps.d.ts": [
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts": [
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLGeometries.d.ts": [
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLAttributes.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLInfo.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLInfo.d.ts": [
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProgram.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLLights.d.ts": [
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProgram.d.ts": [
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLShader.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLUniforms.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLPrograms.d.ts": [
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLBindingStates.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLClipping.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCubeMaps.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProgram.d.ts",
+ "../../node_modules/@types/three/src/scenes/Scene.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLRenderLists.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/objects/Group.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProgram.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProperties.d.ts",
+ "../../node_modules/@types/three/src/scenes/Scene.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLShadowMap.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLObjects.d.ts",
+ "../../node_modules/@types/three/src/scenes/Scene.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLState.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Vector4.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLTextures.d.ts": [
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLInfo.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProperties.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLState.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLUtils.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLUniforms.d.ts": [
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProgram.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLTextures.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webxr/WebXRController.d.ts": [
+ "../../node_modules/@types/three/src/objects/Group.d.ts",
+ "../../node_modules/@types/three/src/renderers/webxr/WebXR.d.ts"
+ ],
+ "../../node_modules/@types/three/src/renderers/webxr/WebXRManager.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/core/EventDispatcher.d.ts",
+ "../../node_modules/@types/three/src/objects/Group.d.ts",
+ "../../node_modules/@types/three/src/renderers/webxr/WebXR.d.ts"
+ ],
+ "../../node_modules/@types/three/src/scenes/Fog.d.ts": [
+ "../../node_modules/@types/three/src/math/Color.d.ts"
+ ],
+ "../../node_modules/@types/three/src/scenes/FogExp2.d.ts": [
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/scenes/Fog.d.ts"
+ ],
+ "../../node_modules/@types/three/src/scenes/Scene.d.ts": [
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLCubeRenderTarget.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderTarget.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts",
+ "../../node_modules/@types/three/src/scenes/Fog.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/textures/CanvasTexture.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/textures/CompressedTexture.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/textures/CubeTexture.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/textures/DataTexture.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/textures/DataTexture2DArray.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/textures/DataTexture3D.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/textures/DepthTexture.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "../../node_modules/@types/three/src/textures/Texture.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/core/EventDispatcher.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix3.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts"
+ ],
+ "../../node_modules/@types/three/src/textures/VideoTexture.d.ts": [
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts"
+ ],
+ "./src/defs.ts": [
+ "./src/constants.ts"
+ ],
+ "./src/globaltypes.ts": [
+ "./src/constants.ts"
+ ],
+ "./src/index.ts": [
+ "./src/constants.ts",
+ "./src/defs.ts",
+ "./src/entity-manager.ts",
+ "./src/globaltypes.ts",
+ "./src/math.ts",
+ "./src/noise.ts",
+ "./src/spatial-hash-grid.ts",
+ "./src/spline.ts",
+ "./src/terrain-constants.ts",
+ "./src/terrain-height.ts"
+ ],
+ "./src/terrain-height.ts": [
+ "./src/noise.ts"
+ ]
+ },
+ "semanticDiagnosticsPerFile": [
+ "../../node_modules/@types/component-emitter/index.d.ts",
+ "../../node_modules/@types/cookie/index.d.ts",
+ "../../node_modules/@types/cors/index.d.ts",
+ "../../node_modules/@types/eslint-scope/index.d.ts",
+ "../../node_modules/@types/eslint/helpers.d.ts",
+ "../../node_modules/@types/eslint/index.d.ts",
+ "../../node_modules/@types/eslint/lib/rules/index.d.ts",
+ "../../node_modules/@types/estree/index.d.ts",
+ "../../node_modules/@types/glob/index.d.ts",
+ "../../node_modules/@types/html-minifier-terser/index.d.ts",
+ "../../node_modules/@types/json-schema/index.d.ts",
+ "../../node_modules/@types/json5/index.d.ts",
+ "../../node_modules/@types/minimatch/index.d.ts",
+ "../../node_modules/@types/node/assert.d.ts",
+ "../../node_modules/@types/node/async_hooks.d.ts",
+ "../../node_modules/@types/node/base.d.ts",
+ "../../node_modules/@types/node/buffer.d.ts",
+ "../../node_modules/@types/node/child_process.d.ts",
+ "../../node_modules/@types/node/cluster.d.ts",
+ "../../node_modules/@types/node/console.d.ts",
+ "../../node_modules/@types/node/constants.d.ts",
+ "../../node_modules/@types/node/crypto.d.ts",
+ "../../node_modules/@types/node/dgram.d.ts",
+ "../../node_modules/@types/node/dns.d.ts",
+ "../../node_modules/@types/node/domain.d.ts",
+ "../../node_modules/@types/node/events.d.ts",
+ "../../node_modules/@types/node/fs.d.ts",
+ "../../node_modules/@types/node/fs/promises.d.ts",
+ "../../node_modules/@types/node/globals.d.ts",
+ "../../node_modules/@types/node/globals.global.d.ts",
+ "../../node_modules/@types/node/http.d.ts",
+ "../../node_modules/@types/node/http2.d.ts",
+ "../../node_modules/@types/node/https.d.ts",
+ "../../node_modules/@types/node/index.d.ts",
+ "../../node_modules/@types/node/inspector.d.ts",
+ "../../node_modules/@types/node/module.d.ts",
+ "../../node_modules/@types/node/net.d.ts",
+ "../../node_modules/@types/node/os.d.ts",
+ "../../node_modules/@types/node/path.d.ts",
+ "../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../node_modules/@types/node/process.d.ts",
+ "../../node_modules/@types/node/punycode.d.ts",
+ "../../node_modules/@types/node/querystring.d.ts",
+ "../../node_modules/@types/node/readline.d.ts",
+ "../../node_modules/@types/node/repl.d.ts",
+ "../../node_modules/@types/node/stream.d.ts",
+ "../../node_modules/@types/node/string_decoder.d.ts",
+ "../../node_modules/@types/node/timers.d.ts",
+ "../../node_modules/@types/node/tls.d.ts",
+ "../../node_modules/@types/node/trace_events.d.ts",
+ "../../node_modules/@types/node/ts3.6/base.d.ts",
+ "../../node_modules/@types/node/tty.d.ts",
+ "../../node_modules/@types/node/url.d.ts",
+ "../../node_modules/@types/node/util.d.ts",
+ "../../node_modules/@types/node/v8.d.ts",
+ "../../node_modules/@types/node/vm.d.ts",
+ "../../node_modules/@types/node/wasi.d.ts",
+ "../../node_modules/@types/node/worker_threads.d.ts",
+ "../../node_modules/@types/node/zlib.d.ts",
+ "../../node_modules/@types/three/index.d.ts",
+ "../../node_modules/@types/three/src/Three.Legacy.d.ts",
+ "../../node_modules/@types/three/src/Three.d.ts",
+ "../../node_modules/@types/three/src/animation/AnimationAction.d.ts",
+ "../../node_modules/@types/three/src/animation/AnimationClip.d.ts",
+ "../../node_modules/@types/three/src/animation/AnimationMixer.d.ts",
+ "../../node_modules/@types/three/src/animation/AnimationObjectGroup.d.ts",
+ "../../node_modules/@types/three/src/animation/AnimationUtils.d.ts",
+ "../../node_modules/@types/three/src/animation/KeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/animation/PropertyBinding.d.ts",
+ "../../node_modules/@types/three/src/animation/PropertyMixer.d.ts",
+ "../../node_modules/@types/three/src/animation/tracks/BooleanKeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/animation/tracks/ColorKeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/animation/tracks/NumberKeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/animation/tracks/QuaternionKeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/animation/tracks/StringKeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/animation/tracks/VectorKeyframeTrack.d.ts",
+ "../../node_modules/@types/three/src/audio/Audio.d.ts",
+ "../../node_modules/@types/three/src/audio/AudioAnalyser.d.ts",
+ "../../node_modules/@types/three/src/audio/AudioContext.d.ts",
+ "../../node_modules/@types/three/src/audio/AudioListener.d.ts",
+ "../../node_modules/@types/three/src/audio/PositionalAudio.d.ts",
+ "../../node_modules/@types/three/src/cameras/ArrayCamera.d.ts",
+ "../../node_modules/@types/three/src/cameras/Camera.d.ts",
+ "../../node_modules/@types/three/src/cameras/CubeCamera.d.ts",
+ "../../node_modules/@types/three/src/cameras/OrthographicCamera.d.ts",
+ "../../node_modules/@types/three/src/cameras/PerspectiveCamera.d.ts",
+ "../../node_modules/@types/three/src/cameras/StereoCamera.d.ts",
+ "../../node_modules/@types/three/src/constants.d.ts",
+ "../../node_modules/@types/three/src/core/BufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/BufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/Clock.d.ts",
+ "../../node_modules/@types/three/src/core/EventDispatcher.d.ts",
+ "../../node_modules/@types/three/src/core/GLBufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/InstancedBufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/InstancedBufferGeometry.d.ts",
+ "../../node_modules/@types/three/src/core/InstancedInterleavedBuffer.d.ts",
+ "../../node_modules/@types/three/src/core/InterleavedBuffer.d.ts",
+ "../../node_modules/@types/three/src/core/InterleavedBufferAttribute.d.ts",
+ "../../node_modules/@types/three/src/core/Layers.d.ts",
+ "../../node_modules/@types/three/src/core/Object3D.d.ts",
+ "../../node_modules/@types/three/src/core/Raycaster.d.ts",
+ "../../node_modules/@types/three/src/core/Uniform.d.ts",
+ "../../node_modules/@types/three/src/extras/DataUtils.d.ts",
+ "../../node_modules/@types/three/src/extras/ImageUtils.d.ts",
+ "../../node_modules/@types/three/src/extras/PMREMGenerator.d.ts",
+ "../../node_modules/@types/three/src/extras/ShapeUtils.d.ts",
+ "../../node_modules/@types/three/src/extras/core/Curve.d.ts",
+ "../../node_modules/@types/three/src/extras/core/CurvePath.d.ts",
+ "../../node_modules/@types/three/src/extras/core/Font.d.ts",
+ "../../node_modules/@types/three/src/extras/core/Path.d.ts",
+ "../../node_modules/@types/three/src/extras/core/Shape.d.ts",
+ "../../node_modules/@types/three/src/extras/core/ShapePath.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/ArcCurve.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/CatmullRomCurve3.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/CubicBezierCurve.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/CubicBezierCurve3.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/Curves.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/EllipseCurve.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/LineCurve.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/LineCurve3.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/QuadraticBezierCurve.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/QuadraticBezierCurve3.d.ts",
+ "../../node_modules/@types/three/src/extras/curves/SplineCurve.d.ts",
+ "../../node_modules/@types/three/src/extras/objects/ImmediateRenderObject.d.ts",
+ "../../node_modules/@types/three/src/geometries/BoxGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/CircleGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/ConeGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/CylinderGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/DodecahedronGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/EdgesGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/ExtrudeGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/Geometries.d.ts",
+ "../../node_modules/@types/three/src/geometries/IcosahedronGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/LatheGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/OctahedronGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/ParametricGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/PlaneGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/PolyhedronGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/RingGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/ShapeGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/SphereGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/TetrahedronGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/TextGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/TorusGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/TorusKnotGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/TubeGeometry.d.ts",
+ "../../node_modules/@types/three/src/geometries/WireframeGeometry.d.ts",
+ "../../node_modules/@types/three/src/helpers/ArrowHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/AxesHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/Box3Helper.d.ts",
+ "../../node_modules/@types/three/src/helpers/BoxHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/CameraHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/DirectionalLightHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/GridHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/HemisphereLightHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/PlaneHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/PointLightHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/PolarGridHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/SkeletonHelper.d.ts",
+ "../../node_modules/@types/three/src/helpers/SpotLightHelper.d.ts",
+ "../../node_modules/@types/three/src/lights/AmbientLight.d.ts",
+ "../../node_modules/@types/three/src/lights/AmbientLightProbe.d.ts",
+ "../../node_modules/@types/three/src/lights/DirectionalLight.d.ts",
+ "../../node_modules/@types/three/src/lights/DirectionalLightShadow.d.ts",
+ "../../node_modules/@types/three/src/lights/HemisphereLight.d.ts",
+ "../../node_modules/@types/three/src/lights/HemisphereLightProbe.d.ts",
+ "../../node_modules/@types/three/src/lights/Light.d.ts",
+ "../../node_modules/@types/three/src/lights/LightProbe.d.ts",
+ "../../node_modules/@types/three/src/lights/LightShadow.d.ts",
+ "../../node_modules/@types/three/src/lights/PointLight.d.ts",
+ "../../node_modules/@types/three/src/lights/PointLightShadow.d.ts",
+ "../../node_modules/@types/three/src/lights/RectAreaLight.d.ts",
+ "../../node_modules/@types/three/src/lights/SpotLight.d.ts",
+ "../../node_modules/@types/three/src/lights/SpotLightShadow.d.ts",
+ "../../node_modules/@types/three/src/loaders/AnimationLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/AudioLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/BufferGeometryLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/Cache.d.ts",
+ "../../node_modules/@types/three/src/loaders/CompressedTextureLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/CubeTextureLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/DataTextureLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/FileLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/FontLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/ImageBitmapLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/ImageLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/Loader.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoaderUtils.d.ts",
+ "../../node_modules/@types/three/src/loaders/LoadingManager.d.ts",
+ "../../node_modules/@types/three/src/loaders/MaterialLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/ObjectLoader.d.ts",
+ "../../node_modules/@types/three/src/loaders/TextureLoader.d.ts",
+ "../../node_modules/@types/three/src/materials/LineBasicMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/LineDashedMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/Material.d.ts",
+ "../../node_modules/@types/three/src/materials/Materials.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshBasicMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshDepthMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshDistanceMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshLambertMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshMatcapMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshNormalMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshPhongMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshPhysicalMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshStandardMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/MeshToonMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/PointsMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/RawShaderMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/ShaderMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/ShadowMaterial.d.ts",
+ "../../node_modules/@types/three/src/materials/SpriteMaterial.d.ts",
+ "../../node_modules/@types/three/src/math/Box2.d.ts",
+ "../../node_modules/@types/three/src/math/Box3.d.ts",
+ "../../node_modules/@types/three/src/math/Color.d.ts",
+ "../../node_modules/@types/three/src/math/Cylindrical.d.ts",
+ "../../node_modules/@types/three/src/math/Euler.d.ts",
+ "../../node_modules/@types/three/src/math/Frustum.d.ts",
+ "../../node_modules/@types/three/src/math/Interpolant.d.ts",
+ "../../node_modules/@types/three/src/math/Line3.d.ts",
+ "../../node_modules/@types/three/src/math/MathUtils.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix3.d.ts",
+ "../../node_modules/@types/three/src/math/Matrix4.d.ts",
+ "../../node_modules/@types/three/src/math/Plane.d.ts",
+ "../../node_modules/@types/three/src/math/Quaternion.d.ts",
+ "../../node_modules/@types/three/src/math/Ray.d.ts",
+ "../../node_modules/@types/three/src/math/Sphere.d.ts",
+ "../../node_modules/@types/three/src/math/Spherical.d.ts",
+ "../../node_modules/@types/three/src/math/SphericalHarmonics3.d.ts",
+ "../../node_modules/@types/three/src/math/Triangle.d.ts",
+ "../../node_modules/@types/three/src/math/Vector2.d.ts",
+ "../../node_modules/@types/three/src/math/Vector3.d.ts",
+ "../../node_modules/@types/three/src/math/Vector4.d.ts",
+ "../../node_modules/@types/three/src/math/interpolants/CubicInterpolant.d.ts",
+ "../../node_modules/@types/three/src/math/interpolants/DiscreteInterpolant.d.ts",
+ "../../node_modules/@types/three/src/math/interpolants/LinearInterpolant.d.ts",
+ "../../node_modules/@types/three/src/math/interpolants/QuaternionLinearInterpolant.d.ts",
+ "../../node_modules/@types/three/src/objects/Bone.d.ts",
+ "../../node_modules/@types/three/src/objects/Group.d.ts",
+ "../../node_modules/@types/three/src/objects/InstancedMesh.d.ts",
+ "../../node_modules/@types/three/src/objects/LOD.d.ts",
+ "../../node_modules/@types/three/src/objects/Line.d.ts",
+ "../../node_modules/@types/three/src/objects/LineLoop.d.ts",
+ "../../node_modules/@types/three/src/objects/LineSegments.d.ts",
+ "../../node_modules/@types/three/src/objects/Mesh.d.ts",
+ "../../node_modules/@types/three/src/objects/Points.d.ts",
+ "../../node_modules/@types/three/src/objects/Skeleton.d.ts",
+ "../../node_modules/@types/three/src/objects/SkinnedMesh.d.ts",
+ "../../node_modules/@types/three/src/objects/Sprite.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGL1Renderer.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLCubeRenderTarget.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLMultisampleRenderTarget.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderTarget.d.ts",
+ "../../node_modules/@types/three/src/renderers/WebGLRenderer.d.ts",
+ "../../node_modules/@types/three/src/renderers/shaders/ShaderChunk.d.ts",
+ "../../node_modules/@types/three/src/renderers/shaders/ShaderLib.d.ts",
+ "../../node_modules/@types/three/src/renderers/shaders/UniformsLib.d.ts",
+ "../../node_modules/@types/three/src/renderers/shaders/UniformsUtils.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLAttributes.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLBindingStates.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLBufferRenderer.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCapabilities.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLClipping.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLCubeMaps.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLExtensions.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLGeometries.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLIndexedBufferRenderer.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLInfo.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLLights.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLObjects.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProgram.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLPrograms.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLProperties.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLRenderLists.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLShader.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLShadowMap.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLState.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLTextures.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLUniforms.d.ts",
+ "../../node_modules/@types/three/src/renderers/webgl/WebGLUtils.d.ts",
+ "../../node_modules/@types/three/src/renderers/webxr/WebXR.d.ts",
+ "../../node_modules/@types/three/src/renderers/webxr/WebXRController.d.ts",
+ "../../node_modules/@types/three/src/renderers/webxr/WebXRManager.d.ts",
+ "../../node_modules/@types/three/src/scenes/Fog.d.ts",
+ "../../node_modules/@types/three/src/scenes/FogExp2.d.ts",
+ "../../node_modules/@types/three/src/scenes/Scene.d.ts",
+ "../../node_modules/@types/three/src/textures/CanvasTexture.d.ts",
+ "../../node_modules/@types/three/src/textures/CompressedTexture.d.ts",
+ "../../node_modules/@types/three/src/textures/CubeTexture.d.ts",
+ "../../node_modules/@types/three/src/textures/DataTexture.d.ts",
+ "../../node_modules/@types/three/src/textures/DataTexture2DArray.d.ts",
+ "../../node_modules/@types/three/src/textures/DataTexture3D.d.ts",
+ "../../node_modules/@types/three/src/textures/DepthTexture.d.ts",
+ "../../node_modules/@types/three/src/textures/Texture.d.ts",
+ "../../node_modules/@types/three/src/textures/VideoTexture.d.ts",
+ "../../node_modules/typescript/lib/lib.d.ts",
+ "../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../node_modules/typescript/lib/lib.es2015.collection.d.ts",
+ "../../node_modules/typescript/lib/lib.es2015.core.d.ts",
+ "../../node_modules/typescript/lib/lib.es2015.d.ts",
+ "../../node_modules/typescript/lib/lib.es2015.generator.d.ts",
+ "../../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
+ "../../node_modules/typescript/lib/lib.es2015.promise.d.ts",
+ "../../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
+ "../../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
+ "../../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
+ "../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
+ "../../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
+ "../../node_modules/typescript/lib/lib.es2016.d.ts",
+ "../../node_modules/typescript/lib/lib.es2017.d.ts",
+ "../../node_modules/typescript/lib/lib.es2017.intl.d.ts",
+ "../../node_modules/typescript/lib/lib.es2017.object.d.ts",
+ "../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
+ "../../node_modules/typescript/lib/lib.es2017.string.d.ts",
+ "../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
+ "../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
+ "../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
+ "../../node_modules/typescript/lib/lib.es2018.d.ts",
+ "../../node_modules/typescript/lib/lib.es2018.intl.d.ts",
+ "../../node_modules/typescript/lib/lib.es2018.promise.d.ts",
+ "../../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
+ "../../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
+ "../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../node_modules/typescript/lib/lib.esnext.intl.d.ts",
+ "../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts",
+ "./src/OrbitControls.ts",
+ "./src/constants.ts",
+ "./src/defs.ts",
+ "./src/entity-manager.ts",
+ "./src/globaltypes.ts",
+ "./src/index.ts",
+ "./src/math.ts",
+ "./src/noise.ts",
+ "./src/simplex-noise.ts",
+ "./src/spatial-hash-grid.ts",
+ "./src/spline.ts",
+ "./src/terrain-constants.ts",
+ "./src/terrain-height.ts"
+ ]
+ },
+ "version": "4.2.3"
+}
\ No newline at end of file
diff --git a/packages/server/dist/index.js b/packages/server/dist/index.js
deleted file mode 100644
index d240c1bd..00000000
--- a/packages/server/dist/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import { test } from 'shared';
-import * as http from 'http';
-import * as socket_io from 'socket.io';
-import { WorldServer } from './scripts/world-server';
-function Main() {
- const port = process.env.PORT || 3000;
- const server = http.createServer();
- const io = new socket_io.Server(server, {
- cors: {
- origin: '*'
- }
- });
- server.listen(port, () => {
- console.log(`listening on: ${port} : ${test}`);
- });
- const _WORLD = new WorldServer(io);
- _WORLD.Run();
-}
-Main();
diff --git a/packages/server/dist/scripts/world-server.js b/packages/server/dist/scripts/world-server.js
deleted file mode 100644
index da9dfa34..00000000
--- a/packages/server/dist/scripts/world-server.js
+++ /dev/null
@@ -1,77 +0,0 @@
-import { performance } from 'perf_hooks';
-import { WorldManager } from './world-manager';
-import { LoginQueue } from './login-queue';
-class SocketWrapper {
- constructor(params) {
- this.socket_ = params.socket;
- this.onMessage = null;
- this.dead_ = false;
- this.SetupSocket_();
- }
- get ID() {
- return this.socket_.id;
- }
- get IsAlive() {
- return !this.dead_;
- }
- SetupSocket_() {
- this.socket_.on('user-connected', () => {
- console.log('socket.id: ' + this.socket_.id);
- });
- this.socket_.on('disconnect', () => {
- console.log('Client disconnected.');
- this.dead_ = true;
- });
- this.socket_.onAny((e, d) => {
- try {
- if (!this.onMessage(e, d)) {
- console.log('Unknown command (' + e + '), disconnected.');
- this.Disconnect();
- }
- }
- catch (err) {
- console.error(err);
- this.Disconnect();
- }
- });
- }
- Disconnect() {
- this.socket_.disconnect(true);
- }
- Send(msg, data) {
- this.socket_.emit(msg, data);
- }
- onMessage(e, d) { return false; }
-}
-;
-class WorldServer {
- constructor(io) {
- this.loginQueue_ = new LoginQueue((c, p) => { this.OnLogin_(c, p); });
- this.worldMgr_ = new WorldManager({ parent: this });
- this.SetupIO_(io);
- }
- SetupIO_(io) {
- io.on('connection', socket => {
- this.loginQueue_.Add(new SocketWrapper({ socket: socket }));
- });
- }
- OnLogin_(client, params) {
- this.worldMgr_.Add(client, params);
- }
- Run() {
- let t1 = performance.now();
- this.Schedule_(t1);
- }
- Schedule_(t1) {
- setTimeout(() => {
- let t2 = performance.now();
- this.Update_((t2 - t1) * 0.001);
- this.Schedule_(t2);
- });
- }
- Update_(timeElapsed) {
- this.worldMgr_.Update(timeElapsed);
- }
-}
-;
-export { WorldServer, SocketWrapper };
diff --git a/packages/server/package.json b/packages/server/package.json
deleted file mode 100644
index 26c8bb89..00000000
--- a/packages/server/package.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "name": "server",
- "version": "0.0.1",
- "dependencies": {
- "gl-matrix": "^3.3.0",
- "http": "^0.0.1-security",
- "shared": "0.0.1",
- "socket.io": "^4.0.0",
- "typescript": "^4.2.3"
- },
- "devDependencies": {
- "cross-env": "^5.0.5",
- "nodemon": "^2.0.7",
- "tsc-watch": "^4.2.9"
- },
- "scripts": {
- "build": "tsc --build",
- "start:dev": "tsc-watch --onSuccess 'node ./dist/index.js'",
- "start": "node ./dist/index.js"
- }
-}
diff --git a/packages/server/tsconfig.json b/packages/server/tsconfig.json
deleted file mode 100644
index af521dca..00000000
--- a/packages/server/tsconfig.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "extends": "../../tsconfig.packages.json",
- "compilerOptions": {
- "rootDir": "src",
- "outDir": "dist",
- "target": "ES6",
- "moduleResolution": "Node"
- },
- "include": ["./src/*.ts"],
- "exclude": ["./dist", "node_modules"],
- "references": [{"path": "../shared"}]
-}
\ No newline at end of file
diff --git a/packages/shared/package.json b/packages/shared/package.json
deleted file mode 100644
index cc049af1..00000000
--- a/packages/shared/package.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "name": "shared",
- "version": "0.0.1",
- "devDependencies": {
- "cross-env": "^5.0.5",
- "nodemon": "^2.0.7",
- "tsc-watch": "^4.2.9",
- "typescript": "^4.2.3"
- },
- "main": "src/index.ts"
-}
diff --git a/packages/shared/src/dat.gui.module.ts b/packages/shared/src/dat.gui.module.ts
deleted file mode 100644
index b545c77a..00000000
--- a/packages/shared/src/dat.gui.module.ts
+++ /dev/null
@@ -1,3576 +0,0 @@
-// @ts-nocheck
-/**
- * dat-gui JavaScript Controller Library
- * http://code.google.com/p/dat-gui
- *
- * Copyright 2011 Data Arts Team, Google Creative Lab
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- */
-
-function ___$insertStyle(css) {
-
- if (!css) {
-
- return;
-
- }
- if (typeof window === 'undefined') {
-
- return;
-
- }
-
- var style = document.createElement('style');
-
- style.setAttribute('type', 'text/css');
- style.innerHTML = css;
- document.head.appendChild(style);
-
- return css;
-
-}
-
-function colorToString(color, forceCSSHex) {
-
- var colorFormat = color.__state.conversionName.toString();
- var r = Math.round(color.r);
- var g = Math.round(color.g);
- var b = Math.round(color.b);
- var a = color.a;
- var h = Math.round(color.h);
- var s = color.s.toFixed(1);
- var v = color.v.toFixed(1);
- if (forceCSSHex || colorFormat === 'THREE_CHAR_HEX' || colorFormat === 'SIX_CHAR_HEX') {
-
- var str = color.hex.toString(16);
- while (str.length < 6) {
-
- str = '0' + str;
-
- }
- return '#' + str;
-
- } else if (colorFormat === 'CSS_RGB') {
-
- return 'rgb(' + r + ',' + g + ',' + b + ')';
-
- } else if (colorFormat === 'CSS_RGBA') {
-
- return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';
-
- } else if (colorFormat === 'HEX') {
-
- return '0x' + color.hex.toString(16);
-
- } else if (colorFormat === 'RGB_ARRAY') {
-
- return '[' + r + ',' + g + ',' + b + ']';
-
- } else if (colorFormat === 'RGBA_ARRAY') {
-
- return '[' + r + ',' + g + ',' + b + ',' + a + ']';
-
- } else if (colorFormat === 'RGB_OBJ') {
-
- return '{r:' + r + ',g:' + g + ',b:' + b + '}';
-
- } else if (colorFormat === 'RGBA_OBJ') {
-
- return '{r:' + r + ',g:' + g + ',b:' + b + ',a:' + a + '}';
-
- } else if (colorFormat === 'HSV_OBJ') {
-
- return '{h:' + h + ',s:' + s + ',v:' + v + '}';
-
- } else if (colorFormat === 'HSVA_OBJ') {
-
- return '{h:' + h + ',s:' + s + ',v:' + v + ',a:' + a + '}';
-
- }
- return 'unknown format';
-
-}
-
-var ARR_EACH = Array.prototype.forEach;
-var ARR_SLICE = Array.prototype.slice;
-var Common = {
- BREAK: {},
- extend: function extend(target) {
-
- this.each(ARR_SLICE.call(arguments, 1), function (obj) {
-
- var keys = this.isObject(obj) ? Object.keys(obj) : [];
- keys.forEach(function (key) {
-
- if (!this.isUndefined(obj[key])) {
-
- target[key] = obj[key];
-
- }
-
- }.bind(this));
-
- }, this);
- return target;
-
- },
- defaults: function defaults(target) {
-
- this.each(ARR_SLICE.call(arguments, 1), function (obj) {
-
- var keys = this.isObject(obj) ? Object.keys(obj) : [];
- keys.forEach(function (key) {
-
- if (this.isUndefined(target[key])) {
-
- target[key] = obj[key];
-
- }
-
- }.bind(this));
-
- }, this);
- return target;
-
- },
- compose: function compose() {
-
- var toCall = ARR_SLICE.call(arguments);
- return function () {
-
- var args = ARR_SLICE.call(arguments);
- for (var i = toCall.length - 1; i >= 0; i--) {
-
- args = [toCall[i].apply(this, args)];
-
- }
- return args[0];
-
- };
-
- },
- each: function each(obj, itr, scope) {
-
- if (!obj) {
-
- return;
-
- }
- if (ARR_EACH && obj.forEach && obj.forEach === ARR_EACH) {
-
- obj.forEach(itr, scope);
-
- } else if (obj.length === obj.length + 0) {
-
- var key = void 0;
- var l = void 0;
- for (key = 0, l = obj.length; key < l; key++) {
-
- if (key in obj && itr.call(scope, obj[key], key) === this.BREAK) {
-
- return;
-
- }
-
- }
-
- } else {
-
- for (var _key in obj) {
-
- if (itr.call(scope, obj[_key], _key) === this.BREAK) {
-
- return;
-
- }
-
- }
-
- }
-
- },
- defer: function defer(fnc) {
-
- setTimeout(fnc, 0);
-
- },
- debounce: function debounce(func, threshold, callImmediately) {
-
- var timeout = void 0;
- return function () {
-
- var obj = this;
- var args = arguments;
- function delayed() {
-
- timeout = null;
- if (!callImmediately) func.apply(obj, args);
-
- }
- var callNow = callImmediately || !timeout;
- clearTimeout(timeout);
- timeout = setTimeout(delayed, threshold);
- if (callNow) {
-
- func.apply(obj, args);
-
- }
-
- };
-
- },
- toArray: function toArray(obj) {
-
- if (obj.toArray) return obj.toArray();
- return ARR_SLICE.call(obj);
-
- },
- isUndefined: function isUndefined(obj) {
-
- return obj === undefined;
-
- },
- isNull: function isNull(obj) {
-
- return obj === null;
-
- },
- isNaN: function (_isNaN) {
-
- function isNaN() {
-
- return _isNaN.apply(this, arguments);
-
- }
- isNaN.toString = function () {
-
- return _isNaN.toString();
-
- };
- return isNaN;
-
- }(function (obj) {
-
- return isNaN(obj);
-
- }),
- isArray: Array.isArray || function (obj) {
-
- return obj.constructor === Array;
-
- },
- isObject: function isObject(obj) {
-
- return obj === Object(obj);
-
- },
- isNumber: function isNumber(obj) {
-
- return obj === obj + 0;
-
- },
- isString: function isString(obj) {
-
- return obj === obj + '';
-
- },
- isBoolean: function isBoolean(obj) {
-
- return obj === false || obj === true;
-
- },
- isFunction: function isFunction(obj) {
-
- return obj instanceof Function;
-
- }
-};
-
-var INTERPRETATIONS = [
- {
- litmus: Common.isString,
- conversions: {
- THREE_CHAR_HEX: {
- read: function read(original) {
-
- var test = original.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);
- if (test === null) {
-
- return false;
-
- }
- return {
- space: 'HEX',
- hex: parseInt('0x' + test[1].toString() + test[1].toString() + test[2].toString() + test[2].toString() + test[3].toString() + test[3].toString(), 0)
- };
-
- },
- write: colorToString
- },
- SIX_CHAR_HEX: {
- read: function read(original) {
-
- var test = original.match(/^#([A-F0-9]{6})$/i);
- if (test === null) {
-
- return false;
-
- }
- return {
- space: 'HEX',
- hex: parseInt('0x' + test[1].toString(), 0)
- };
-
- },
- write: colorToString
- },
- CSS_RGB: {
- read: function read(original) {
-
- var test = original.match(/^rgb\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/);
- if (test === null) {
-
- return false;
-
- }
- return {
- space: 'RGB',
- r: parseFloat(test[1]),
- g: parseFloat(test[2]),
- b: parseFloat(test[3])
- };
-
- },
- write: colorToString
- },
- CSS_RGBA: {
- read: function read(original) {
-
- var test = original.match(/^rgba\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/);
- if (test === null) {
-
- return false;
-
- }
- return {
- space: 'RGB',
- r: parseFloat(test[1]),
- g: parseFloat(test[2]),
- b: parseFloat(test[3]),
- a: parseFloat(test[4])
- };
-
- },
- write: colorToString
- }
- }
- },
- {
- litmus: Common.isNumber,
- conversions: {
- HEX: {
- read: function read(original) {
-
- return {
- space: 'HEX',
- hex: original,
- conversionName: 'HEX'
- };
-
- },
- write: function write(color) {
-
- return color.hex;
-
- }
- }
- }
- },
- {
- litmus: Common.isArray,
- conversions: {
- RGB_ARRAY: {
- read: function read(original) {
-
- if (original.length !== 3) {
-
- return false;
-
- }
- return {
- space: 'RGB',
- r: original[0],
- g: original[1],
- b: original[2]
- };
-
- },
- write: function write(color) {
-
- return [color.r, color.g, color.b];
-
- }
- },
- RGBA_ARRAY: {
- read: function read(original) {
-
- if (original.length !== 4) return false;
- return {
- space: 'RGB',
- r: original[0],
- g: original[1],
- b: original[2],
- a: original[3]
- };
-
- },
- write: function write(color) {
-
- return [color.r, color.g, color.b, color.a];
-
- }
- }
- }
- },
- {
- litmus: Common.isObject,
- conversions: {
- RGBA_OBJ: {
- read: function read(original) {
-
- if (Common.isNumber(original.r) && Common.isNumber(original.g) && Common.isNumber(original.b) && Common.isNumber(original.a)) {
-
- return {
- space: 'RGB',
- r: original.r,
- g: original.g,
- b: original.b,
- a: original.a
- };
-
- }
- return false;
-
- },
- write: function write(color) {
-
- return {
- r: color.r,
- g: color.g,
- b: color.b,
- a: color.a
- };
-
- }
- },
- RGB_OBJ: {
- read: function read(original) {
-
- if (Common.isNumber(original.r) && Common.isNumber(original.g) && Common.isNumber(original.b)) {
-
- return {
- space: 'RGB',
- r: original.r,
- g: original.g,
- b: original.b
- };
-
- }
- return false;
-
- },
- write: function write(color) {
-
- return {
- r: color.r,
- g: color.g,
- b: color.b
- };
-
- }
- },
- HSVA_OBJ: {
- read: function read(original) {
-
- if (Common.isNumber(original.h) && Common.isNumber(original.s) && Common.isNumber(original.v) && Common.isNumber(original.a)) {
-
- return {
- space: 'HSV',
- h: original.h,
- s: original.s,
- v: original.v,
- a: original.a
- };
-
- }
- return false;
-
- },
- write: function write(color) {
-
- return {
- h: color.h,
- s: color.s,
- v: color.v,
- a: color.a
- };
-
- }
- },
- HSV_OBJ: {
- read: function read(original) {
-
- if (Common.isNumber(original.h) && Common.isNumber(original.s) && Common.isNumber(original.v)) {
-
- return {
- space: 'HSV',
- h: original.h,
- s: original.s,
- v: original.v
- };
-
- }
- return false;
-
- },
- write: function write(color) {
-
- return {
- h: color.h,
- s: color.s,
- v: color.v
- };
-
- }
- }
- }
- }];
-var result = void 0;
-var toReturn = void 0;
-var interpret = function interpret() {
-
- toReturn = false;
- var original = arguments.length > 1 ? Common.toArray(arguments) : arguments[0];
- Common.each(INTERPRETATIONS, function (family) {
-
- if (family.litmus(original)) {
-
- Common.each(family.conversions, function (conversion, conversionName) {
-
- result = conversion.read(original);
- if (toReturn === false && result !== false) {
-
- toReturn = result;
- result.conversionName = conversionName;
- result.conversion = conversion;
- return Common.BREAK;
-
- }
-
- }, null);
- return Common.BREAK;
-
- }
-
- });
- return toReturn;
-
-};
-
-var tmpComponent = void 0;
-var ColorMath = {
- hsv_to_rgb: function hsv_to_rgb(h, s, v) {
-
- var hi = Math.floor(h / 60) % 6;
- var f = h / 60 - Math.floor(h / 60);
- var p = v * (1.0 - s);
- var q = v * (1.0 - f * s);
- var t = v * (1.0 - (1.0 - f) * s);
- var c = [[v, t, p], [q, v, p], [p, v, t], [p, q, v], [t, p, v], [v, p, q]][hi];
- return {
- r: c[0] * 255,
- g: c[1] * 255,
- b: c[2] * 255
- };
-
- },
- rgb_to_hsv: function rgb_to_hsv(r, g, b) {
-
- var min = Math.min(r, g, b);
- var max = Math.max(r, g, b);
- var delta = max - min;
- var h = void 0;
- var s = void 0;
- if (max !== 0) {
-
- s = delta / max;
-
- } else {
-
- return {
- h: NaN,
- s: 0,
- v: 0
- };
-
- }
- if (r === max) {
-
- h = (g - b) / delta;
-
- } else if (g === max) {
-
- h = 2 + (b - r) / delta;
-
- } else {
-
- h = 4 + (r - g) / delta;
-
- }
- h /= 6;
- if (h < 0) {
-
- h += 1;
-
- }
- return {
- h: h * 360,
- s: s,
- v: max / 255
- };
-
- },
- rgb_to_hex: function rgb_to_hex(r, g, b) {
-
- var hex = this.hex_with_component(0, 2, r);
- hex = this.hex_with_component(hex, 1, g);
- hex = this.hex_with_component(hex, 0, b);
- return hex;
-
- },
- component_from_hex: function component_from_hex(hex, componentIndex) {
-
- return hex >> componentIndex * 8 & 0xFF;
-
- },
- hex_with_component: function hex_with_component(hex, componentIndex, value) {
-
- return value << (tmpComponent = componentIndex * 8) | hex & ~(0xFF << tmpComponent);
-
- }
-};
-
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
-
- return typeof obj;
-
-} : function (obj) {
-
- return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
-
-};
-
-
-
-
-
-
-
-
-
-
-
-var classCallCheck = function (instance, Constructor) {
-
- if (!(instance instanceof Constructor)) {
-
- throw new TypeError("Cannot call a class as a function");
-
- }
-
-};
-
-var createClass = function () {
-
- function defineProperties(target, props) {
-
- for (var i = 0; i < props.length; i++) {
-
- var descriptor = props[i];
- descriptor.enumerable = descriptor.enumerable || false;
- descriptor.configurable = true;
- if ("value" in descriptor) descriptor.writable = true;
- Object.defineProperty(target, descriptor.key, descriptor);
-
- }
-
- }
-
- return function (Constructor, protoProps, staticProps) {
-
- if (protoProps) defineProperties(Constructor.prototype, protoProps);
- if (staticProps) defineProperties(Constructor, staticProps);
- return Constructor;
-
- };
-
-}();
-
-
-
-
-
-
-
-var get = function get(object, property, receiver) {
-
- if (object === null) object = Function.prototype;
- var desc = Object.getOwnPropertyDescriptor(object, property);
-
- if (desc === undefined) {
-
- var parent = Object.getPrototypeOf(object);
-
- if (parent === null) {
-
- return undefined;
-
- } else {
-
- return get(parent, property, receiver);
-
- }
-
- } else if ("value" in desc) {
-
- return desc.value;
-
- } else {
-
- var getter = desc.get;
-
- if (getter === undefined) {
-
- return undefined;
-
- }
-
- return getter.call(receiver);
-
- }
-
-};
-
-var inherits = function (subClass, superClass) {
-
- if (typeof superClass !== "function" && superClass !== null) {
-
- throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
-
- }
-
- subClass.prototype = Object.create(superClass && superClass.prototype, {
- constructor: {
- value: subClass,
- enumerable: false,
- writable: true,
- configurable: true
- }
- });
- if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
-
-};
-
-
-
-
-
-
-
-
-
-
-
-var possibleConstructorReturn = function (self, call) {
-
- if (!self) {
-
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
-
- }
-
- return call && (typeof call === "object" || typeof call === "function") ? call : self;
-
-};
-
-var Color = function () {
-
- function Color() {
-
- classCallCheck(this, Color);
- this.__state = interpret.apply(this, arguments);
- if (this.__state === false) {
-
- throw new Error('Failed to interpret color arguments');
-
- }
- this.__state.a = this.__state.a || 1;
-
- }
- createClass(Color, [{
- key: 'toString',
- value: function toString() {
-
- return colorToString(this);
-
- }
- }, {
- key: 'toHexString',
- value: function toHexString() {
-
- return colorToString(this, true);
-
- }
- }, {
- key: 'toOriginal',
- value: function toOriginal() {
-
- return this.__state.conversion.write(this);
-
- }
- }]);
- return Color;
-
-}();
-function defineRGBComponent(target, component, componentHexIndex) {
-
- Object.defineProperty(target, component, {
- get: function get$$1() {
-
- if (this.__state.space === 'RGB') {
-
- return this.__state[component];
-
- }
- Color.recalculateRGB(this, component, componentHexIndex);
- return this.__state[component];
-
- },
- set: function set$$1(v) {
-
- if (this.__state.space !== 'RGB') {
-
- Color.recalculateRGB(this, component, componentHexIndex);
- this.__state.space = 'RGB';
-
- }
- this.__state[component] = v;
-
- }
- });
-
-}
-function defineHSVComponent(target, component) {
-
- Object.defineProperty(target, component, {
- get: function get$$1() {
-
- if (this.__state.space === 'HSV') {
-
- return this.__state[component];
-
- }
- Color.recalculateHSV(this);
- return this.__state[component];
-
- },
- set: function set$$1(v) {
-
- if (this.__state.space !== 'HSV') {
-
- Color.recalculateHSV(this);
- this.__state.space = 'HSV';
-
- }
- this.__state[component] = v;
-
- }
- });
-
-}
-Color.recalculateRGB = function (color, component, componentHexIndex) {
-
- if (color.__state.space === 'HEX') {
-
- color.__state[component] = ColorMath.component_from_hex(color.__state.hex, componentHexIndex);
-
- } else if (color.__state.space === 'HSV') {
-
- Common.extend(color.__state, ColorMath.hsv_to_rgb(color.__state.h, color.__state.s, color.__state.v));
-
- } else {
-
- throw new Error('Corrupted color state');
-
- }
-
-};
-Color.recalculateHSV = function (color) {
-
- var result = ColorMath.rgb_to_hsv(color.r, color.g, color.b);
- Common.extend(color.__state, {
- s: result.s,
- v: result.v
- });
- if (!Common.isNaN(result.h)) {
-
- color.__state.h = result.h;
-
- } else if (Common.isUndefined(color.__state.h)) {
-
- color.__state.h = 0;
-
- }
-
-};
-Color.COMPONENTS = ['r', 'g', 'b', 'h', 's', 'v', 'hex', 'a'];
-defineRGBComponent(Color.prototype, 'r', 2);
-defineRGBComponent(Color.prototype, 'g', 1);
-defineRGBComponent(Color.prototype, 'b', 0);
-defineHSVComponent(Color.prototype, 'h');
-defineHSVComponent(Color.prototype, 's');
-defineHSVComponent(Color.prototype, 'v');
-Object.defineProperty(Color.prototype, 'a', {
- get: function get$$1() {
-
- return this.__state.a;
-
- },
- set: function set$$1(v) {
-
- this.__state.a = v;
-
- }
-});
-Object.defineProperty(Color.prototype, 'hex', {
- get: function get$$1() {
-
- if (this.__state.space !== 'HEX') {
-
- this.__state.hex = ColorMath.rgb_to_hex(this.r, this.g, this.b);
- this.__state.space = 'HEX';
-
- }
- return this.__state.hex;
-
- },
- set: function set$$1(v) {
-
- this.__state.space = 'HEX';
- this.__state.hex = v;
-
- }
-});
-
-var Controller = function () {
-
- function Controller(object, property) {
-
- classCallCheck(this, Controller);
- this.initialValue = object[property];
- this.domElement = document.createElement('div');
- this.object = object;
- this.property = property;
- this.__onChange = undefined;
- this.__onFinishChange = undefined;
-
- }
- createClass(Controller, [{
- key: 'onChange',
- value: function onChange(fnc) {
-
- this.__onChange = fnc;
- return this;
-
- }
- }, {
- key: 'onFinishChange',
- value: function onFinishChange(fnc) {
-
- this.__onFinishChange = fnc;
- return this;
-
- }
- }, {
- key: 'setValue',
- value: function setValue(newValue) {
-
- this.object[this.property] = newValue;
- if (this.__onChange) {
-
- this.__onChange.call(this, newValue);
-
- }
- this.updateDisplay();
- return this;
-
- }
- }, {
- key: 'getValue',
- value: function getValue() {
-
- return this.object[this.property];
-
- }
- }, {
- key: 'updateDisplay',
- value: function updateDisplay() {
-
- return this;
-
- }
- }, {
- key: 'isModified',
- value: function isModified() {
-
- return this.initialValue !== this.getValue();
-
- }
- }]);
- return Controller;
-
-}();
-
-var EVENT_MAP = {
- HTMLEvents: ['change'],
- MouseEvents: ['click', 'mousemove', 'mousedown', 'mouseup', 'mouseover'],
- KeyboardEvents: ['keydown']
-};
-var EVENT_MAP_INV = {};
-Common.each(EVENT_MAP, function (v, k) {
-
- Common.each(v, function (e) {
-
- EVENT_MAP_INV[e] = k;
-
- });
-
-});
-var CSS_VALUE_PIXELS = /(\d+(\.\d+)?)px/;
-function cssValueToPixels(val) {
-
- if (val === '0' || Common.isUndefined(val)) {
-
- return 0;
-
- }
- var match = val.match(CSS_VALUE_PIXELS);
- if (!Common.isNull(match)) {
-
- return parseFloat(match[1]);
-
- }
- return 0;
-
-}
-var dom = {
- makeSelectable: function makeSelectable(elem, selectable) {
-
- if (elem === undefined || elem.style === undefined) return;
- elem.onselectstart = selectable ? function () {
-
- return false;
-
- } : function () { };
- elem.style.MozUserSelect = selectable ? 'auto' : 'none';
- elem.style.KhtmlUserSelect = selectable ? 'auto' : 'none';
- elem.unselectable = selectable ? 'on' : 'off';
-
- },
- makeFullscreen: function makeFullscreen(elem, hor, vert) {
-
- var vertical = vert;
- var horizontal = hor;
- if (Common.isUndefined(horizontal)) {
-
- horizontal = true;
-
- }
- if (Common.isUndefined(vertical)) {
-
- vertical = true;
-
- }
- elem.style.position = 'absolute';
- if (horizontal) {
-
- elem.style.left = 0;
- elem.style.right = 0;
-
- }
- if (vertical) {
-
- elem.style.top = 0;
- elem.style.bottom = 0;
-
- }
-
- },
- fakeEvent: function fakeEvent(elem, eventType, pars, aux) {
-
- var params = pars || {};
- var className = EVENT_MAP_INV[eventType];
- if (!className) {
-
- throw new Error('Event type ' + eventType + ' not supported.');
-
- }
- var evt = document.createEvent(className);
- switch (className) {
-
- case 'MouseEvents':
- {
-
- var clientX = params.x || params.clientX || 0;
- var clientY = params.y || params.clientY || 0;
- evt.initMouseEvent(eventType, params.bubbles || false, params.cancelable || true, window, params.clickCount || 1, 0,
- 0,
- clientX,
- clientY,
- false, false, false, false, 0, null);
- break;
-
- }
- case 'KeyboardEvents':
- {
-
- var init = evt.initKeyboardEvent || evt.initKeyEvent;
- Common.defaults(params, {
- cancelable: true,
- ctrlKey: false,
- altKey: false,
- shiftKey: false,
- metaKey: false,
- keyCode: undefined,
- charCode: undefined
- });
- init(eventType, params.bubbles || false, params.cancelable, window, params.ctrlKey, params.altKey, params.shiftKey, params.metaKey, params.keyCode, params.charCode);
- break;
-
- }
- default:
- {
-
- evt.initEvent(eventType, params.bubbles || false, params.cancelable || true);
- break;
-
- }
-
- }
- Common.defaults(evt, aux);
- elem.dispatchEvent(evt);
-
- },
- bind: function bind(elem, event, func, newBool) {
-
- var bool = newBool || false;
- if (elem.addEventListener) {
-
- elem.addEventListener(event, func, bool);
-
- } else if (elem.attachEvent) {
-
- elem.attachEvent('on' + event, func);
-
- }
- return dom;
-
- },
- unbind: function unbind(elem, event, func, newBool) {
-
- var bool = newBool || false;
- if (elem.removeEventListener) {
-
- elem.removeEventListener(event, func, bool);
-
- } else if (elem.detachEvent) {
-
- elem.detachEvent('on' + event, func);
-
- }
- return dom;
-
- },
- addClass: function addClass(elem, className) {
-
- if (elem.className === undefined) {
-
- elem.className = className;
-
- } else if (elem.className !== className) {
-
- var classes = elem.className.split(/ +/);
- if (classes.indexOf(className) === - 1) {
-
- classes.push(className);
- elem.className = classes.join(' ').replace(/^\s+/, '').replace(/\s+$/, '');
-
- }
-
- }
- return dom;
-
- },
- removeClass: function removeClass(elem, className) {
-
- if (className) {
-
- if (elem.className === className) {
-
- elem.removeAttribute('class');
-
- } else {
-
- var classes = elem.className.split(/ +/);
- var index = classes.indexOf(className);
- if (index !== - 1) {
-
- classes.splice(index, 1);
- elem.className = classes.join(' ');
-
- }
-
- }
-
- } else {
-
- elem.className = undefined;
-
- }
- return dom;
-
- },
- hasClass: function hasClass(elem, className) {
-
- return new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)').test(elem.className) || false;
-
- },
- getWidth: function getWidth(elem) {
-
- var style = getComputedStyle(elem);
- return cssValueToPixels(style['border-left-width']) + cssValueToPixels(style['border-right-width']) + cssValueToPixels(style['padding-left']) + cssValueToPixels(style['padding-right']) + cssValueToPixels(style.width);
-
- },
- getHeight: function getHeight(elem) {
-
- var style = getComputedStyle(elem);
- return cssValueToPixels(style['border-top-width']) + cssValueToPixels(style['border-bottom-width']) + cssValueToPixels(style['padding-top']) + cssValueToPixels(style['padding-bottom']) + cssValueToPixels(style.height);
-
- },
- getOffset: function getOffset(el) {
-
- var elem = el;
- var offset = { left: 0, top: 0 };
- if (elem.offsetParent) {
-
- do {
-
- offset.left += elem.offsetLeft;
- offset.top += elem.offsetTop;
- elem = elem.offsetParent;
-
- } while (elem);
-
- }
- return offset;
-
- },
- isActive: function isActive(elem) {
-
- return elem === document.activeElement && (elem.type || elem.href);
-
- }
-};
-
-var BooleanController = function (_Controller) {
-
- inherits(BooleanController, _Controller);
- function BooleanController(object, property) {
-
- classCallCheck(this, BooleanController);
- var _this2 = possibleConstructorReturn(this, (BooleanController.__proto__ || Object.getPrototypeOf(BooleanController)).call(this, object, property));
- var _this = _this2;
- _this2.__prev = _this2.getValue();
- _this2.__checkbox = document.createElement('input');
- _this2.__checkbox.setAttribute('type', 'checkbox');
- function onChange() {
-
- _this.setValue(!_this.__prev);
-
- }
- dom.bind(_this2.__checkbox, 'change', onChange, false);
- _this2.domElement.appendChild(_this2.__checkbox);
- _this2.updateDisplay();
- return _this2;
-
- }
- createClass(BooleanController, [{
- key: 'setValue',
- value: function setValue(v) {
-
- var toReturn = get(BooleanController.prototype.__proto__ || Object.getPrototypeOf(BooleanController.prototype), 'setValue', this).call(this, v);
- if (this.__onFinishChange) {
-
- this.__onFinishChange.call(this, this.getValue());
-
- }
- this.__prev = this.getValue();
- return toReturn;
-
- }
- }, {
- key: 'updateDisplay',
- value: function updateDisplay() {
-
- if (this.getValue() === true) {
-
- this.__checkbox.setAttribute('checked', 'checked');
- this.__checkbox.checked = true;
- this.__prev = true;
-
- } else {
-
- this.__checkbox.checked = false;
- this.__prev = false;
-
- }
- return get(BooleanController.prototype.__proto__ || Object.getPrototypeOf(BooleanController.prototype), 'updateDisplay', this).call(this);
-
- }
- }]);
- return BooleanController;
-
-}(Controller);
-
-var OptionController = function (_Controller) {
-
- inherits(OptionController, _Controller);
- function OptionController(object, property, opts) {
-
- classCallCheck(this, OptionController);
- var _this2 = possibleConstructorReturn(this, (OptionController.__proto__ || Object.getPrototypeOf(OptionController)).call(this, object, property));
- var options = opts;
- var _this = _this2;
- _this2.__select = document.createElement('select');
- if (Common.isArray(options)) {
-
- var map = {};
- Common.each(options, function (element) {
-
- map[element] = element;
-
- });
- options = map;
-
- }
- Common.each(options, function (value, key) {
-
- var opt = document.createElement('option');
- opt.innerHTML = key;
- opt.setAttribute('value', value);
- _this.__select.appendChild(opt);
-
- });
- _this2.updateDisplay();
- dom.bind(_this2.__select, 'change', function () {
-
- var desiredValue = this.options[this.selectedIndex].value;
- _this.setValue(desiredValue);
-
- });
- _this2.domElement.appendChild(_this2.__select);
- return _this2;
-
- }
- createClass(OptionController, [{
- key: 'setValue',
- value: function setValue(v) {
-
- var toReturn = get(OptionController.prototype.__proto__ || Object.getPrototypeOf(OptionController.prototype), 'setValue', this).call(this, v);
- if (this.__onFinishChange) {
-
- this.__onFinishChange.call(this, this.getValue());
-
- }
- return toReturn;
-
- }
- }, {
- key: 'updateDisplay',
- value: function updateDisplay() {
-
- if (dom.isActive(this.__select)) return this;
- this.__select.value = this.getValue();
- return get(OptionController.prototype.__proto__ || Object.getPrototypeOf(OptionController.prototype), 'updateDisplay', this).call(this);
-
- }
- }]);
- return OptionController;
-
-}(Controller);
-
-var StringController = function (_Controller) {
-
- inherits(StringController, _Controller);
- function StringController(object, property) {
-
- classCallCheck(this, StringController);
- var _this2 = possibleConstructorReturn(this, (StringController.__proto__ || Object.getPrototypeOf(StringController)).call(this, object, property));
- var _this = _this2;
- function onChange() {
-
- _this.setValue(_this.__input.value);
-
- }
- function onBlur() {
-
- if (_this.__onFinishChange) {
-
- _this.__onFinishChange.call(_this, _this.getValue());
-
- }
-
- }
- _this2.__input = document.createElement('input');
- _this2.__input.setAttribute('type', 'text');
- dom.bind(_this2.__input, 'keyup', onChange);
- dom.bind(_this2.__input, 'change', onChange);
- dom.bind(_this2.__input, 'blur', onBlur);
- dom.bind(_this2.__input, 'keydown', function (e) {
-
- if (e.keyCode === 13) {
-
- this.blur();
-
- }
-
- });
- _this2.updateDisplay();
- _this2.domElement.appendChild(_this2.__input);
- return _this2;
-
- }
- createClass(StringController, [{
- key: 'updateDisplay',
- value: function updateDisplay() {
-
- if (!dom.isActive(this.__input)) {
-
- this.__input.value = this.getValue();
-
- }
- return get(StringController.prototype.__proto__ || Object.getPrototypeOf(StringController.prototype), 'updateDisplay', this).call(this);
-
- }
- }]);
- return StringController;
-
-}(Controller);
-
-function numDecimals(x) {
-
- var _x = x.toString();
- if (_x.indexOf('.') > - 1) {
-
- return _x.length - _x.indexOf('.') - 1;
-
- }
- return 0;
-
-}
-var NumberController = function (_Controller) {
-
- inherits(NumberController, _Controller);
- function NumberController(object, property, params) {
-
- classCallCheck(this, NumberController);
- var _this = possibleConstructorReturn(this, (NumberController.__proto__ || Object.getPrototypeOf(NumberController)).call(this, object, property));
- var _params = params || {};
- _this.__min = _params.min;
- _this.__max = _params.max;
- _this.__step = _params.step;
- if (Common.isUndefined(_this.__step)) {
-
- if (_this.initialValue === 0) {
-
- _this.__impliedStep = 1;
-
- } else {
-
- _this.__impliedStep = Math.pow(10, Math.floor(Math.log(Math.abs(_this.initialValue)) / Math.LN10)) / 10;
-
- }
-
- } else {
-
- _this.__impliedStep = _this.__step;
-
- }
- _this.__precision = numDecimals(_this.__impliedStep);
- return _this;
-
- }
- createClass(NumberController, [{
- key: 'setValue',
- value: function setValue(v) {
-
- var _v = v;
- if (this.__min !== undefined && _v < this.__min) {
-
- _v = this.__min;
-
- } else if (this.__max !== undefined && _v > this.__max) {
-
- _v = this.__max;
-
- }
- if (this.__step !== undefined && _v % this.__step !== 0) {
-
- _v = Math.round(_v / this.__step) * this.__step;
-
- }
- return get(NumberController.prototype.__proto__ || Object.getPrototypeOf(NumberController.prototype), 'setValue', this).call(this, _v);
-
- }
- }, {
- key: 'min',
- value: function min(minValue) {
-
- this.__min = minValue;
- return this;
-
- }
- }, {
- key: 'max',
- value: function max(maxValue) {
-
- this.__max = maxValue;
- return this;
-
- }
- }, {
- key: 'step',
- value: function step(stepValue) {
-
- this.__step = stepValue;
- this.__impliedStep = stepValue;
- this.__precision = numDecimals(stepValue);
- return this;
-
- }
- }]);
- return NumberController;
-
-}(Controller);
-
-function roundToDecimal(value, decimals) {
-
- var tenTo = Math.pow(10, decimals);
- return Math.round(value * tenTo) / tenTo;
-
-}
-var NumberControllerBox = function (_NumberController) {
-
- inherits(NumberControllerBox, _NumberController);
- function NumberControllerBox(object, property, params) {
-
- classCallCheck(this, NumberControllerBox);
- var _this2 = possibleConstructorReturn(this, (NumberControllerBox.__proto__ || Object.getPrototypeOf(NumberControllerBox)).call(this, object, property, params));
- _this2.__truncationSuspended = false;
- var _this = _this2;
- var prevY = void 0;
- function onChange() {
-
- var attempted = parseFloat(_this.__input.value);
- if (!Common.isNaN(attempted)) {
-
- _this.setValue(attempted);
-
- }
-
- }
- function onFinish() {
-
- if (_this.__onFinishChange) {
-
- _this.__onFinishChange.call(_this, _this.getValue());
-
- }
-
- }
- function onBlur() {
-
- onFinish();
-
- }
- function onMouseDrag(e) {
-
- var diff = prevY - e.clientY;
- _this.setValue(_this.getValue() + diff * _this.__impliedStep);
- prevY = e.clientY;
-
- }
- function onMouseUp() {
-
- dom.unbind(window, 'mousemove', onMouseDrag);
- dom.unbind(window, 'mouseup', onMouseUp);
- onFinish();
-
- }
- function onMouseDown(e) {
-
- dom.bind(window, 'mousemove', onMouseDrag);
- dom.bind(window, 'mouseup', onMouseUp);
- prevY = e.clientY;
-
- }
- _this2.__input = document.createElement('input');
- _this2.__input.setAttribute('type', 'text');
- dom.bind(_this2.__input, 'change', onChange);
- dom.bind(_this2.__input, 'blur', onBlur);
- dom.bind(_this2.__input, 'mousedown', onMouseDown);
- dom.bind(_this2.__input, 'keydown', function (e) {
-
- if (e.keyCode === 13) {
-
- _this.__truncationSuspended = true;
- this.blur();
- _this.__truncationSuspended = false;
- onFinish();
-
- }
-
- });
- _this2.updateDisplay();
- _this2.domElement.appendChild(_this2.__input);
- return _this2;
-
- }
- createClass(NumberControllerBox, [{
- key: 'updateDisplay',
- value: function updateDisplay() {
-
- this.__input.value = this.__truncationSuspended ? this.getValue() : roundToDecimal(this.getValue(), this.__precision);
- return get(NumberControllerBox.prototype.__proto__ || Object.getPrototypeOf(NumberControllerBox.prototype), 'updateDisplay', this).call(this);
-
- }
- }]);
- return NumberControllerBox;
-
-}(NumberController);
-
-function map(v, i1, i2, o1, o2) {
-
- return o1 + (o2 - o1) * ((v - i1) / (i2 - i1));
-
-}
-var NumberControllerSlider = function (_NumberController) {
-
- inherits(NumberControllerSlider, _NumberController);
- function NumberControllerSlider(object, property, min, max, step) {
-
- classCallCheck(this, NumberControllerSlider);
- var _this2 = possibleConstructorReturn(this, (NumberControllerSlider.__proto__ || Object.getPrototypeOf(NumberControllerSlider)).call(this, object, property, { min: min, max: max, step: step }));
- var _this = _this2;
- _this2.__background = document.createElement('div');
- _this2.__foreground = document.createElement('div');
- dom.bind(_this2.__background, 'mousedown', onMouseDown);
- dom.bind(_this2.__background, 'touchstart', onTouchStart);
- dom.addClass(_this2.__background, 'slider');
- dom.addClass(_this2.__foreground, 'slider-fg');
- function onMouseDown(e) {
-
- document.activeElement.blur();
- dom.bind(window, 'mousemove', onMouseDrag);
- dom.bind(window, 'mouseup', onMouseUp);
- onMouseDrag(e);
-
- }
- function onMouseDrag(e) {
-
- e.preventDefault();
- var bgRect = _this.__background.getBoundingClientRect();
- _this.setValue(map(e.clientX, bgRect.left, bgRect.right, _this.__min, _this.__max));
- return false;
-
- }
- function onMouseUp() {
-
- dom.unbind(window, 'mousemove', onMouseDrag);
- dom.unbind(window, 'mouseup', onMouseUp);
- if (_this.__onFinishChange) {
-
- _this.__onFinishChange.call(_this, _this.getValue());
-
- }
-
- }
- function onTouchStart(e) {
-
- if (e.touches.length !== 1) {
-
- return;
-
- }
- dom.bind(window, 'touchmove', onTouchMove);
- dom.bind(window, 'touchend', onTouchEnd);
- onTouchMove(e);
-
- }
- function onTouchMove(e) {
-
- var clientX = e.touches[0].clientX;
- var bgRect = _this.__background.getBoundingClientRect();
- _this.setValue(map(clientX, bgRect.left, bgRect.right, _this.__min, _this.__max));
-
- }
- function onTouchEnd() {
-
- dom.unbind(window, 'touchmove', onTouchMove);
- dom.unbind(window, 'touchend', onTouchEnd);
- if (_this.__onFinishChange) {
-
- _this.__onFinishChange.call(_this, _this.getValue());
-
- }
-
- }
- _this2.updateDisplay();
- _this2.__background.appendChild(_this2.__foreground);
- _this2.domElement.appendChild(_this2.__background);
- return _this2;
-
- }
- createClass(NumberControllerSlider, [{
- key: 'updateDisplay',
- value: function updateDisplay() {
-
- var pct = (this.getValue() - this.__min) / (this.__max - this.__min);
- this.__foreground.style.width = pct * 100 + '%';
- return get(NumberControllerSlider.prototype.__proto__ || Object.getPrototypeOf(NumberControllerSlider.prototype), 'updateDisplay', this).call(this);
-
- }
- }]);
- return NumberControllerSlider;
-
-}(NumberController);
-
-var FunctionController = function (_Controller) {
-
- inherits(FunctionController, _Controller);
- function FunctionController(object, property, text) {
-
- classCallCheck(this, FunctionController);
- var _this2 = possibleConstructorReturn(this, (FunctionController.__proto__ || Object.getPrototypeOf(FunctionController)).call(this, object, property));
- var _this = _this2;
- _this2.__button = document.createElement('div');
- _this2.__button.innerHTML = text === undefined ? 'Fire' : text;
- dom.bind(_this2.__button, 'click', function (e) {
-
- e.preventDefault();
- _this.fire();
- return false;
-
- });
- dom.addClass(_this2.__button, 'button');
- _this2.domElement.appendChild(_this2.__button);
- return _this2;
-
- }
- createClass(FunctionController, [{
- key: 'fire',
- value: function fire() {
-
- if (this.__onChange) {
-
- this.__onChange.call(this);
-
- }
- this.getValue().call(this.object);
- if (this.__onFinishChange) {
-
- this.__onFinishChange.call(this, this.getValue());
-
- }
-
- }
- }]);
- return FunctionController;
-
-}(Controller);
-
-var ColorController = function (_Controller) {
-
- inherits(ColorController, _Controller);
- function ColorController(object, property) {
-
- classCallCheck(this, ColorController);
- var _this2 = possibleConstructorReturn(this, (ColorController.__proto__ || Object.getPrototypeOf(ColorController)).call(this, object, property));
- _this2.__color = new Color(_this2.getValue());
- _this2.__temp = new Color(0);
- var _this = _this2;
- _this2.domElement = document.createElement('div');
- dom.makeSelectable(_this2.domElement, false);
- _this2.__selector = document.createElement('div');
- _this2.__selector.className = 'selector';
- _this2.__saturation_field = document.createElement('div');
- _this2.__saturation_field.className = 'saturation-field';
- _this2.__field_knob = document.createElement('div');
- _this2.__field_knob.className = 'field-knob';
- _this2.__field_knob_border = '2px solid ';
- _this2.__hue_knob = document.createElement('div');
- _this2.__hue_knob.className = 'hue-knob';
- _this2.__hue_field = document.createElement('div');
- _this2.__hue_field.className = 'hue-field';
- _this2.__input = document.createElement('input');
- _this2.__input.type = 'text';
- _this2.__input_textShadow = '0 1px 1px ';
- dom.bind(_this2.__input, 'keydown', function (e) {
-
- if (e.keyCode === 13) {
-
- onBlur.call(this);
-
- }
-
- });
- dom.bind(_this2.__input, 'blur', onBlur);
- dom.bind(_this2.__selector, 'mousedown', function () {
-
- dom.addClass(this, 'drag').bind(window, 'mouseup', function () {
-
- dom.removeClass(_this.__selector, 'drag');
-
- });
-
- });
- dom.bind(_this2.__selector, 'touchstart', function () {
-
- dom.addClass(this, 'drag').bind(window, 'touchend', function () {
-
- dom.removeClass(_this.__selector, 'drag');
-
- });
-
- });
- var valueField = document.createElement('div');
- Common.extend(_this2.__selector.style, {
- width: '122px',
- height: '102px',
- padding: '3px',
- backgroundColor: '#222',
- boxShadow: '0px 1px 3px rgba(0,0,0,0.3)'
- });
- Common.extend(_this2.__field_knob.style, {
- position: 'absolute',
- width: '12px',
- height: '12px',
- border: _this2.__field_knob_border + (_this2.__color.v < 0.5 ? '#fff' : '#000'),
- boxShadow: '0px 1px 3px rgba(0,0,0,0.5)',
- borderRadius: '12px',
- zIndex: 1
- });
- Common.extend(_this2.__hue_knob.style, {
- position: 'absolute',
- width: '15px',
- height: '2px',
- borderRight: '4px solid #fff',
- zIndex: 1
- });
- Common.extend(_this2.__saturation_field.style, {
- width: '100px',
- height: '100px',
- border: '1px solid #555',
- marginRight: '3px',
- display: 'inline-block',
- cursor: 'pointer'
- });
- Common.extend(valueField.style, {
- width: '100%',
- height: '100%',
- background: 'none'
- });
- linearGradient(valueField, 'top', 'rgba(0,0,0,0)', '#000');
- Common.extend(_this2.__hue_field.style, {
- width: '15px',
- height: '100px',
- border: '1px solid #555',
- cursor: 'ns-resize',
- position: 'absolute',
- top: '3px',
- right: '3px'
- });
- hueGradient(_this2.__hue_field);
- Common.extend(_this2.__input.style, {
- outline: 'none',
- textAlign: 'center',
- color: '#fff',
- border: 0,
- fontWeight: 'bold',
- textShadow: _this2.__input_textShadow + 'rgba(0,0,0,0.7)'
- });
- dom.bind(_this2.__saturation_field, 'mousedown', fieldDown);
- dom.bind(_this2.__saturation_field, 'touchstart', fieldDown);
- dom.bind(_this2.__field_knob, 'mousedown', fieldDown);
- dom.bind(_this2.__field_knob, 'touchstart', fieldDown);
- dom.bind(_this2.__hue_field, 'mousedown', fieldDownH);
- dom.bind(_this2.__hue_field, 'touchstart', fieldDownH);
- function fieldDown(e) {
-
- setSV(e);
- dom.bind(window, 'mousemove', setSV);
- dom.bind(window, 'touchmove', setSV);
- dom.bind(window, 'mouseup', fieldUpSV);
- dom.bind(window, 'touchend', fieldUpSV);
-
- }
- function fieldDownH(e) {
-
- setH(e);
- dom.bind(window, 'mousemove', setH);
- dom.bind(window, 'touchmove', setH);
- dom.bind(window, 'mouseup', fieldUpH);
- dom.bind(window, 'touchend', fieldUpH);
-
- }
- function fieldUpSV() {
-
- dom.unbind(window, 'mousemove', setSV);
- dom.unbind(window, 'touchmove', setSV);
- dom.unbind(window, 'mouseup', fieldUpSV);
- dom.unbind(window, 'touchend', fieldUpSV);
- onFinish();
-
- }
- function fieldUpH() {
-
- dom.unbind(window, 'mousemove', setH);
- dom.unbind(window, 'touchmove', setH);
- dom.unbind(window, 'mouseup', fieldUpH);
- dom.unbind(window, 'touchend', fieldUpH);
- onFinish();
-
- }
- function onBlur() {
-
- var i = interpret(this.value);
- if (i !== false) {
-
- _this.__color.__state = i;
- _this.setValue(_this.__color.toOriginal());
-
- } else {
-
- this.value = _this.__color.toString();
-
- }
-
- }
- function onFinish() {
-
- if (_this.__onFinishChange) {
-
- _this.__onFinishChange.call(_this, _this.__color.toOriginal());
-
- }
-
- }
- _this2.__saturation_field.appendChild(valueField);
- _this2.__selector.appendChild(_this2.__field_knob);
- _this2.__selector.appendChild(_this2.__saturation_field);
- _this2.__selector.appendChild(_this2.__hue_field);
- _this2.__hue_field.appendChild(_this2.__hue_knob);
- _this2.domElement.appendChild(_this2.__input);
- _this2.domElement.appendChild(_this2.__selector);
- _this2.updateDisplay();
- function setSV(e) {
-
- if (e.type.indexOf('touch') === - 1) {
-
- e.preventDefault();
-
- }
- var fieldRect = _this.__saturation_field.getBoundingClientRect();
- var _ref = e.touches && e.touches[0] || e,
- clientX = _ref.clientX,
- clientY = _ref.clientY;
- var s = (clientX - fieldRect.left) / (fieldRect.right - fieldRect.left);
- var v = 1 - (clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);
- if (v > 1) {
-
- v = 1;
-
- } else if (v < 0) {
-
- v = 0;
-
- }
- if (s > 1) {
-
- s = 1;
-
- } else if (s < 0) {
-
- s = 0;
-
- }
- _this.__color.v = v;
- _this.__color.s = s;
- _this.setValue(_this.__color.toOriginal());
- return false;
-
- }
- function setH(e) {
-
- if (e.type.indexOf('touch') === - 1) {
-
- e.preventDefault();
-
- }
- var fieldRect = _this.__hue_field.getBoundingClientRect();
- var _ref2 = e.touches && e.touches[0] || e,
- clientY = _ref2.clientY;
- var h = 1 - (clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);
- if (h > 1) {
-
- h = 1;
-
- } else if (h < 0) {
-
- h = 0;
-
- }
- _this.__color.h = h * 360;
- _this.setValue(_this.__color.toOriginal());
- return false;
-
- }
- return _this2;
-
- }
- createClass(ColorController, [{
- key: 'updateDisplay',
- value: function updateDisplay() {
-
- var i = interpret(this.getValue());
- if (i !== false) {
-
- var mismatch = false;
- Common.each(Color.COMPONENTS, function (component) {
-
- if (!Common.isUndefined(i[component]) && !Common.isUndefined(this.__color.__state[component]) && i[component] !== this.__color.__state[component]) {
-
- mismatch = true;
- return {};
-
- }
-
- }, this);
- if (mismatch) {
-
- Common.extend(this.__color.__state, i);
-
- }
-
- }
- Common.extend(this.__temp.__state, this.__color.__state);
- this.__temp.a = 1;
- var flip = this.__color.v < 0.5 || this.__color.s > 0.5 ? 255 : 0;
- var _flip = 255 - flip;
- Common.extend(this.__field_knob.style, {
- marginLeft: 100 * this.__color.s - 7 + 'px',
- marginTop: 100 * (1 - this.__color.v) - 7 + 'px',
- backgroundColor: this.__temp.toHexString(),
- border: this.__field_knob_border + 'rgb(' + flip + ',' + flip + ',' + flip + ')'
- });
- this.__hue_knob.style.marginTop = (1 - this.__color.h / 360) * 100 + 'px';
- this.__temp.s = 1;
- this.__temp.v = 1;
- linearGradient(this.__saturation_field, 'left', '#fff', this.__temp.toHexString());
- this.__input.value = this.__color.toString();
- Common.extend(this.__input.style, {
- backgroundColor: this.__color.toHexString(),
- color: 'rgb(' + flip + ',' + flip + ',' + flip + ')',
- textShadow: this.__input_textShadow + 'rgba(' + _flip + ',' + _flip + ',' + _flip + ',.7)'
- });
-
- }
- }]);
- return ColorController;
-
-}(Controller);
-var vendors = ['-moz-', '-o-', '-webkit-', '-ms-', ''];
-function linearGradient(elem, x, a, b) {
-
- elem.style.background = '';
- Common.each(vendors, function (vendor) {
-
- elem.style.cssText += 'background: ' + vendor + 'linear-gradient(' + x + ', ' + a + ' 0%, ' + b + ' 100%); ';
-
- });
-
-}
-function hueGradient(elem) {
-
- elem.style.background = '';
- elem.style.cssText += 'background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);';
- elem.style.cssText += 'background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';
- elem.style.cssText += 'background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';
- elem.style.cssText += 'background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';
- elem.style.cssText += 'background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';
-
-}
-
-var css = {
- load: function load(url, indoc) {
-
- var doc = indoc || document;
- var link = doc.createElement('link');
- link.type = 'text/css';
- link.rel = 'stylesheet';
- link.href = url;
- doc.getElementsByTagName('head')[0].appendChild(link);
-
- },
- inject: function inject(cssContent, indoc) {
-
- var doc = indoc || document;
- var injected = document.createElement('style');
- injected.type = 'text/css';
- injected.innerHTML = cssContent;
- var head = doc.getElementsByTagName('head')[0];
- try {
-
- head.appendChild(injected);
-
- } catch (e) {
- }
-
- }
-};
-
-var saveDialogContents = "
\n\n Here's the new load parameter for your GUI's constructor:\n\n \n\n
\n\n Automatically save\n values to localStorage on exit.\n\n
The values saved to localStorage will\n override those passed to dat.GUI's constructor. This makes it\n easier to work incrementally, but localStorage is fragile,\n and your friends may not see the same values you do.\n\n