A assets/dist/spritesheet-125 => assets/dist/spritesheet-125 +0 -0
A assets/dist/spritesheet-125.json => assets/dist/spritesheet-125.json +201 -0
@@ 0,0 1,201 @@
+{
+ "frames": {
+ "moon.png": {
+ "frame": { "x": 0, "y": 0, "w": 256, "h": 256 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 256, "h": 256 },
+ "sourceSize": { "w": 256, "h": 256 },
+ "pivot": { "x": 128, "y": 128 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 256, "h": 256 }
+ },
+ "earth.png": {
+ "frame": { "x": 0, "y": 256, "w": 256, "h": 256 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 256, "h": 256 },
+ "sourceSize": { "w": 256, "h": 256 },
+ "pivot": { "x": 128, "y": 128 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 256, "h": 256 }
+ },
+ "starfield.png": {
+ "frame": { "x": 0, "y": 512, "w": 64, "h": 64 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
+ "sourceSize": { "w": 64, "h": 64 },
+ "pivot": { "x": 32, "y": 32 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
+ },
+ "autoplr_cfg.png": {
+ "frame": { "x": 0, "y": 576, "w": 64, "h": 64 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
+ "sourceSize": { "w": 64, "h": 64 },
+ "pivot": { "x": 32, "y": 32 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
+ },
+ "autoplr_error.png": {
+ "frame": { "x": 0, "y": 640, "w": 64, "h": 64 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
+ "sourceSize": { "w": 64, "h": 64 },
+ "pivot": { "x": 32, "y": 32 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
+ },
+ "hearty.png": {
+ "frame": { "x": 0, "y": 704, "w": 64, "h": 64 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
+ "sourceSize": { "w": 64, "h": 64 },
+ "pivot": { "x": 32, "y": 32 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
+ },
+ "superthruster_on.png": {
+ "frame": { "x": 0, "y": 768, "w": 64, "h": 64 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
+ "sourceSize": { "w": 64, "h": 64 },
+ "pivot": { "x": 32, "y": 32 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
+ },
+ "ecothruster_on.png": {
+ "frame": { "x": 0, "y": 832, "w": 64, "h": 64 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
+ "sourceSize": { "w": 64, "h": 64 },
+ "pivot": { "x": 32, "y": 32 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
+ },
+ "landingthruster_on.png": {
+ "frame": { "x": 0, "y": 896, "w": 64, "h": 64 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
+ "sourceSize": { "w": 64, "h": 64 },
+ "pivot": { "x": 32, "y": 32 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
+ },
+ "thruster_on.png": {
+ "frame": { "x": 0, "y": 960, "w": 64, "h": 64 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
+ "sourceSize": { "w": 64, "h": 64 },
+ "pivot": { "x": 32, "y": 32 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
+ },
+ "landingleg.png": {
+ "frame": { "x": 0, "y": 1024, "w": 64, "h": 64 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
+ "sourceSize": { "w": 64, "h": 64 },
+ "pivot": { "x": 32, "y": 32 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
+ },
+ "autoplr_on.png": {
+ "frame": { "x": 0, "y": 1088, "w": 64, "h": 64 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
+ "sourceSize": { "w": 64, "h": 64 },
+ "pivot": { "x": 32, "y": 32 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
+ },
+ "hub_on.png": {
+ "frame": { "x": 0, "y": 1152, "w": 64, "h": 64 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
+ "sourceSize": { "w": 64, "h": 64 },
+ "pivot": { "x": 32, "y": 32 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
+ },
+ "powerhub_on.png": {
+ "frame": { "x": 0, "y": 1216, "w": 64, "h": 64 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
+ "sourceSize": { "w": 64, "h": 64 },
+ "pivot": { "x": 32, "y": 32 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
+ },
+ "superthruster_off.png": {
+ "frame": { "x": 0, "y": 1280, "w": 64, "h": 64 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
+ "sourceSize": { "w": 64, "h": 64 },
+ "pivot": { "x": 32, "y": 32 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
+ },
+ "landingthruster_off.png": {
+ "frame": { "x": 0, "y": 1344, "w": 64, "h": 64 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
+ "sourceSize": { "w": 64, "h": 64 },
+ "pivot": { "x": 32, "y": 32 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
+ },
+ "thruster_off.png": {
+ "frame": { "x": 0, "y": 1408, "w": 64, "h": 64 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
+ "sourceSize": { "w": 64, "h": 64 },
+ "pivot": { "x": 32, "y": 32 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
+ },
+ "cargo_on.png": {
+ "frame": { "x": 0, "y": 1472, "w": 64, "h": 64 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
+ "sourceSize": { "w": 64, "h": 64 },
+ "pivot": { "x": 32, "y": 32 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
+ },
+ "cargo_off.png": {
+ "frame": { "x": 0, "y": 1536, "w": 64, "h": 64 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
+ "sourceSize": { "w": 64, "h": 64 },
+ "pivot": { "x": 32, "y": 32 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
+ },
+ "powerhub_off.png": {
+ "frame": { "x": 0, "y": 1600, "w": 64, "h": 64 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
+ "sourceSize": { "w": 64, "h": 64 },
+ "pivot": { "x": 32, "y": 32 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
+ },
+ "hub_off.png": {
+ "frame": { "x": 0, "y": 1664, "w": 64, "h": 64 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
+ "sourceSize": { "w": 64, "h": 64 },
+ "pivot": { "x": 32, "y": 32 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
+ }
+ },
+ "meta": {
+ "app": "atlasify https://github.com/soimy/atlasify#readme",
+ "version": "0.4.1",
+ "image": "spritesheet-125.png",
+ "format": "RGBA8888",
+ "size": { "w": 4096, "h": 4096 },
+ "scale": 1
+ }
+}<
\ No newline at end of file
A assets/dist/spritesheet-125.png => assets/dist/spritesheet-125.png +0 -0
A assets/dist/spritesheet-375 => assets/dist/spritesheet-375 +0 -0
A assets/dist/spritesheet-375.json => assets/dist/spritesheet-375.json +201 -0
@@ 0,0 1,201 @@
+{
+ "frames": {
+ "moon.png": {
+ "frame": { "x": 0, "y": 0, "w": 768, "h": 768 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 768, "h": 768 },
+ "sourceSize": { "w": 768, "h": 768 },
+ "pivot": { "x": 384, "y": 384 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 768, "h": 768 }
+ },
+ "earth.png": {
+ "frame": { "x": 0, "y": 768, "w": 768, "h": 768 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 768, "h": 768 },
+ "sourceSize": { "w": 768, "h": 768 },
+ "pivot": { "x": 384, "y": 384 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 768, "h": 768 }
+ },
+ "starfield.png": {
+ "frame": { "x": 0, "y": 1536, "w": 192, "h": 192 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
+ "sourceSize": { "w": 192, "h": 192 },
+ "pivot": { "x": 96, "y": 96 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
+ },
+ "autoplr_cfg.png": {
+ "frame": { "x": 0, "y": 1728, "w": 192, "h": 192 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
+ "sourceSize": { "w": 192, "h": 192 },
+ "pivot": { "x": 96, "y": 96 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
+ },
+ "autoplr_error.png": {
+ "frame": { "x": 0, "y": 1920, "w": 192, "h": 192 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
+ "sourceSize": { "w": 192, "h": 192 },
+ "pivot": { "x": 96, "y": 96 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
+ },
+ "hearty.png": {
+ "frame": { "x": 0, "y": 2112, "w": 192, "h": 192 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
+ "sourceSize": { "w": 192, "h": 192 },
+ "pivot": { "x": 96, "y": 96 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
+ },
+ "superthruster_on.png": {
+ "frame": { "x": 0, "y": 2304, "w": 192, "h": 192 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
+ "sourceSize": { "w": 192, "h": 192 },
+ "pivot": { "x": 96, "y": 96 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
+ },
+ "ecothruster_on.png": {
+ "frame": { "x": 0, "y": 2496, "w": 192, "h": 192 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
+ "sourceSize": { "w": 192, "h": 192 },
+ "pivot": { "x": 96, "y": 96 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
+ },
+ "landingthruster_on.png": {
+ "frame": { "x": 0, "y": 2688, "w": 192, "h": 192 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
+ "sourceSize": { "w": 192, "h": 192 },
+ "pivot": { "x": 96, "y": 96 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
+ },
+ "thruster_on.png": {
+ "frame": { "x": 0, "y": 2880, "w": 192, "h": 192 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
+ "sourceSize": { "w": 192, "h": 192 },
+ "pivot": { "x": 96, "y": 96 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
+ },
+ "landingleg.png": {
+ "frame": { "x": 0, "y": 3072, "w": 192, "h": 192 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
+ "sourceSize": { "w": 192, "h": 192 },
+ "pivot": { "x": 96, "y": 96 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
+ },
+ "autoplr_on.png": {
+ "frame": { "x": 0, "y": 3264, "w": 192, "h": 192 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
+ "sourceSize": { "w": 192, "h": 192 },
+ "pivot": { "x": 96, "y": 96 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
+ },
+ "hub_on.png": {
+ "frame": { "x": 0, "y": 3456, "w": 192, "h": 192 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
+ "sourceSize": { "w": 192, "h": 192 },
+ "pivot": { "x": 96, "y": 96 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
+ },
+ "powerhub_on.png": {
+ "frame": { "x": 0, "y": 3648, "w": 192, "h": 192 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
+ "sourceSize": { "w": 192, "h": 192 },
+ "pivot": { "x": 96, "y": 96 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
+ },
+ "landingthruster_off.png": {
+ "frame": { "x": 0, "y": 3840, "w": 192, "h": 192 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
+ "sourceSize": { "w": 192, "h": 192 },
+ "pivot": { "x": 96, "y": 96 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
+ },
+ "superthruster_off.png": {
+ "frame": { "x": 192, "y": 1536, "w": 192, "h": 192 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
+ "sourceSize": { "w": 192, "h": 192 },
+ "pivot": { "x": 96, "y": 96 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
+ },
+ "thruster_off.png": {
+ "frame": { "x": 192, "y": 1728, "w": 192, "h": 192 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
+ "sourceSize": { "w": 192, "h": 192 },
+ "pivot": { "x": 96, "y": 96 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
+ },
+ "cargo_on.png": {
+ "frame": { "x": 192, "y": 1920, "w": 192, "h": 192 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
+ "sourceSize": { "w": 192, "h": 192 },
+ "pivot": { "x": 96, "y": 96 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
+ },
+ "cargo_off.png": {
+ "frame": { "x": 192, "y": 2112, "w": 192, "h": 192 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
+ "sourceSize": { "w": 192, "h": 192 },
+ "pivot": { "x": 96, "y": 96 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
+ },
+ "powerhub_off.png": {
+ "frame": { "x": 192, "y": 2304, "w": 192, "h": 192 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
+ "sourceSize": { "w": 192, "h": 192 },
+ "pivot": { "x": 96, "y": 96 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
+ },
+ "hub_off.png": {
+ "frame": { "x": 192, "y": 2496, "w": 192, "h": 192 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
+ "sourceSize": { "w": 192, "h": 192 },
+ "pivot": { "x": 96, "y": 96 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
+ }
+ },
+ "meta": {
+ "app": "atlasify https://github.com/soimy/atlasify#readme",
+ "version": "0.4.1",
+ "image": "spritesheet-375.png",
+ "format": "RGBA8888",
+ "size": { "w": 4096, "h": 4096 },
+ "scale": 1
+ }
+}<
\ No newline at end of file
A assets/dist/spritesheet-375.png => assets/dist/spritesheet-375.png +0 -0
A assets/dist/spritesheet-full => assets/dist/spritesheet-full +0 -0
A assets/dist/spritesheet-full.json => assets/dist/spritesheet-full.json +201 -0
@@ 0,0 1,201 @@
+{
+ "frames": {
+ "moon.png": {
+ "frame": { "x": 0, "y": 0, "w": 2048, "h": 2048 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 2048, "h": 2048 },
+ "sourceSize": { "w": 2048, "h": 2048 },
+ "pivot": { "x": 1024, "y": 1024 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 2048, "h": 2048 }
+ },
+ "earth.png": {
+ "frame": { "x": 0, "y": 2048, "w": 2048, "h": 2048 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 2048, "h": 2048 },
+ "sourceSize": { "w": 2048, "h": 2048 },
+ "pivot": { "x": 1024, "y": 1024 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 2048, "h": 2048 }
+ },
+ "starfield.png": {
+ "frame": { "x": 2048, "y": 0, "w": 512, "h": 512 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
+ "sourceSize": { "w": 512, "h": 512 },
+ "pivot": { "x": 256, "y": 256 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
+ },
+ "autoplr_cfg.png": {
+ "frame": { "x": 2560, "y": 0, "w": 512, "h": 512 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
+ "sourceSize": { "w": 512, "h": 512 },
+ "pivot": { "x": 256, "y": 256 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
+ },
+ "autoplr_error.png": {
+ "frame": { "x": 3072, "y": 0, "w": 512, "h": 512 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
+ "sourceSize": { "w": 512, "h": 512 },
+ "pivot": { "x": 256, "y": 256 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
+ },
+ "hearty.png": {
+ "frame": { "x": 3584, "y": 0, "w": 512, "h": 512 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
+ "sourceSize": { "w": 512, "h": 512 },
+ "pivot": { "x": 256, "y": 256 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
+ },
+ "superthruster_on.png": {
+ "frame": { "x": 2048, "y": 512, "w": 512, "h": 512 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
+ "sourceSize": { "w": 512, "h": 512 },
+ "pivot": { "x": 256, "y": 256 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
+ },
+ "ecothruster_on.png": {
+ "frame": { "x": 2560, "y": 512, "w": 512, "h": 512 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
+ "sourceSize": { "w": 512, "h": 512 },
+ "pivot": { "x": 256, "y": 256 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
+ },
+ "landingthruster_on.png": {
+ "frame": { "x": 3072, "y": 512, "w": 512, "h": 512 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
+ "sourceSize": { "w": 512, "h": 512 },
+ "pivot": { "x": 256, "y": 256 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
+ },
+ "thruster_on.png": {
+ "frame": { "x": 3584, "y": 512, "w": 512, "h": 512 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
+ "sourceSize": { "w": 512, "h": 512 },
+ "pivot": { "x": 256, "y": 256 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
+ },
+ "landingleg.png": {
+ "frame": { "x": 2048, "y": 1024, "w": 512, "h": 512 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
+ "sourceSize": { "w": 512, "h": 512 },
+ "pivot": { "x": 256, "y": 256 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
+ },
+ "autoplr_on.png": {
+ "frame": { "x": 2560, "y": 1024, "w": 512, "h": 512 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
+ "sourceSize": { "w": 512, "h": 512 },
+ "pivot": { "x": 256, "y": 256 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
+ },
+ "hub_on.png": {
+ "frame": { "x": 3072, "y": 1024, "w": 512, "h": 512 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
+ "sourceSize": { "w": 512, "h": 512 },
+ "pivot": { "x": 256, "y": 256 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
+ },
+ "powerhub_on.png": {
+ "frame": { "x": 3584, "y": 1024, "w": 512, "h": 512 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
+ "sourceSize": { "w": 512, "h": 512 },
+ "pivot": { "x": 256, "y": 256 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
+ },
+ "superthruster_off.png": {
+ "frame": { "x": 2048, "y": 1536, "w": 512, "h": 512 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
+ "sourceSize": { "w": 512, "h": 512 },
+ "pivot": { "x": 256, "y": 256 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
+ },
+ "landingthruster_off.png": {
+ "frame": { "x": 2560, "y": 1536, "w": 512, "h": 512 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
+ "sourceSize": { "w": 512, "h": 512 },
+ "pivot": { "x": 256, "y": 256 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
+ },
+ "thruster_off.png": {
+ "frame": { "x": 3072, "y": 1536, "w": 512, "h": 512 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
+ "sourceSize": { "w": 512, "h": 512 },
+ "pivot": { "x": 256, "y": 256 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
+ },
+ "cargo_on.png": {
+ "frame": { "x": 3584, "y": 1536, "w": 512, "h": 512 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
+ "sourceSize": { "w": 512, "h": 512 },
+ "pivot": { "x": 256, "y": 256 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
+ },
+ "cargo_off.png": {
+ "frame": { "x": 2048, "y": 2048, "w": 512, "h": 512 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
+ "sourceSize": { "w": 512, "h": 512 },
+ "pivot": { "x": 256, "y": 256 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
+ },
+ "powerhub_off.png": {
+ "frame": { "x": 2048, "y": 2560, "w": 512, "h": 512 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
+ "sourceSize": { "w": 512, "h": 512 },
+ "pivot": { "x": 256, "y": 256 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
+ },
+ "hub_off.png": {
+ "frame": { "x": 2048, "y": 3072, "w": 512, "h": 512 },
+ "rotated": false,
+ "trimmed": false,
+ "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
+ "sourceSize": { "w": 512, "h": 512 },
+ "pivot": { "x": 256, "y": 256 },
+ "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
+ }
+ },
+ "meta": {
+ "app": "atlasify https://github.com/soimy/atlasify#readme",
+ "version": "0.4.1",
+ "image": "spritesheet-full.png",
+ "format": "RGBA8888",
+ "size": { "w": 4096, "h": 4096 },
+ "scale": 1
+ }
+}<
\ No newline at end of file
A assets/dist/spritesheet-full.png => assets/dist/spritesheet-full.png +0 -0
M server/src/handler.rs => server/src/handler.rs +0 -1
@@ 140,7 140,6 @@ pub async fn handle_client(mgr: ClientManager, data: Arc<RwLock<PhysicsData>>, r
.build();
let player_collider: Collider = ColliderBuilder::cuboid(25.0 / SCALE, 25.0 / SCALE)
.mass_properties(MassProperties::new(point![0.0, 0.0], 120.0, 122500.0))
- //.mass(75.0)
.build();
let player_handle = rigid_body_set.insert(player_body);
M server/src/orbit/constants.rs => server/src/orbit/constants.rs +6 -5
@@ 1,6 1,7 @@
pub const GAME_SCALE_DISTANCE: f64 = 0.0001567865; // 1000 / EARTH_RADIUS_RL
pub const GAME_SCALE_MASS: f64 = 0.0000000000000000000006697923643670463; // 4000 / EARTH_MASS_RL
-pub const GAME_SCALE_TIME: f64 = 0.00038580246913580245; // 900 / MOON_ORBIT_TIME_RL
+pub const GAME_SCALE_TIME: f64 = 0.00051440329218107; // 1200 / MOON_ORBIT_TIME_RL
+pub const GAME_ORBITS_ENABLED: bool = true;
pub const EARTH_RADIUS_BIAS: f64 = 1.0;
pub const EARTH_MASS_BIAS: f64 = 1.0;
@@ 11,10 12,10 @@ pub const EARTH_MASS_RL: f64 = 5972000000000000000000000.0;
pub const EARTH_MASS: f64 = EARTH_MASS_RL * GAME_SCALE_MASS * EARTH_MASS_BIAS;
pub const MOON_RADIUS_BIAS: f64 = 1.0;
-pub const MOON_MASS_BIAS: f64 = 1.0;
-pub const MOON_PERIAPSIS_BIAS: f64 = 1.0;
-pub const MOON_APOAPSIS_BIAS: f64 = 1.0;
-pub const MOON_ORBIT_TIME_BIAS: f64 = 1.0;
+pub const MOON_MASS_BIAS: f64 = 10.0;
+pub const MOON_PERIAPSIS_BIAS: f64 = 0.1;
+pub const MOON_APOAPSIS_BIAS: f64 = 0.1;
+pub const MOON_ORBIT_TIME_BIAS: f64 = 0.5;
pub const MOON_RADIUS_RL: f64 = 1_737_400.0;
pub const MOON_RADIUS: f64 = MOON_RADIUS_RL * GAME_SCALE_DISTANCE * MOON_RADIUS_BIAS;
M server/src/orbit/mod.rs => server/src/orbit/mod.rs +2 -1
@@ 1,4 1,5 @@
pub mod constants;
pub mod orbit;
pub mod newtonian;
-pub mod kepler;>
\ No newline at end of file
+pub mod kepler;
+pub mod vis_viva;<
\ No newline at end of file
M server/src/orbit/orbit.rs => server/src/orbit/orbit.rs +30 -0
@@ 3,6 3,36 @@
use nalgebra::{vector, Vector2};
use crate::orbit::newtonian::solve_kepler_with_newtonian;
+use crate::orbit::vis_viva::vis_viva;
+use crate::planet::GRAVITY;
+
+pub fn calculate_vector_of_orbit(periapsis: f64, apoapsis: f64, t: f64, mass_of_bigger: f64, current_x_vel: f64, current_y_vel: f64, delta_t: f64, mass_of_orbiter: f64) -> Vector2<f64> {
+ let semi_major_length = (apoapsis + periapsis) / 2.0;
+ let linear_eccentricity = semi_major_length - periapsis; // distance between center and focus
+
+ let distances = calculate_point_on_orbit(periapsis, apoapsis, t);
+ let distance_x = distances[0];
+ let distance_y = distances[1];
+
+ let distance = (distance_x * distance_x + distance_y * distance_y).sqrt();
+
+ let velocity = vis_viva(distance, semi_major_length, GRAVITY, mass_of_bigger);
+
+ let ellipse_center_x = -linear_eccentricity;
+
+ let theta = (ellipse_center_x / velocity).acos() - std::f64::consts::PI / 2.0;
+
+ let x_vel = velocity * theta.sin();
+ let y_vel = velocity * theta.cos();
+
+ let x_accel = current_x_vel - x_vel / delta_t;
+ let y_accel = current_y_vel - y_vel / delta_t;
+
+ let x_force = mass_of_orbiter * x_accel;
+ let y_force = mass_of_orbiter * y_accel;
+
+ vector![x_force, y_force]
+}
pub fn calculate_point_on_orbit(periapsis: f64, apoapsis: f64, t: f64) -> Vector2<f64> {
let semi_major_length = (apoapsis + periapsis) / 2.0;
A server/src/orbit/vis_viva.rs => server/src/orbit/vis_viva.rs +3 -0
@@ 0,0 1,3 @@
+pub fn vis_viva(distance_between_centers: f64, semi_major: f64, g: f64, mass_of_bigger: f64) -> f64 {
+ (g * mass_of_bigger * (2.0 / distance_between_centers - 1.0 / semi_major)).sqrt()
+}<
\ No newline at end of file
M server/src/planet.rs => server/src/planet.rs +1 -1
@@ 8,7 8,7 @@ use crate::orbit::constants::{EARTH_MASS, EARTH_RADIUS, MOON_APOAPSIS, MOON_MASS
use crate::orbit::orbit::{calculate_point_on_orbit, calculate_world_position_of_orbit};
//const GRAVITY: f64 = 0.001;
-const GRAVITY: f64 = 12.6674;
+pub const GRAVITY: f64 = 12.6674;
#[derive(Clone)]
pub struct Planet {
M server/src/timer.rs => server/src/timer.rs +10 -5
@@ 6,8 6,8 @@ use async_std::sync::RwLock;
use async_std::task::sleep;
use starkingdoms_protocol::player::Player;
use crate::{manager::{ClientHandlerMessage, ClientManager, PhysicsData}, SCALE, planet::Planets};
-use crate::orbit::constants::{MOON_APOAPSIS, MOON_ORBIT_TIME, MOON_PERIAPSIS};
-use crate::orbit::orbit::{calculate_point_on_orbit, calculate_world_position_of_orbit};
+use crate::orbit::constants::{EARTH_MASS, GAME_ORBITS_ENABLED, MOON_APOAPSIS, MOON_MASS, MOON_ORBIT_TIME, MOON_PERIAPSIS};
+use crate::orbit::orbit::{calculate_point_on_orbit, calculate_vector_of_orbit, calculate_world_position_of_orbit};
pub const ROTATIONAL_FORCE: f64 = 100.0;
pub const LATERAL_FORCE: f64 = 100.0;
@@ 24,7 24,10 @@ pub async fn timer_main(mgr: ClientManager, physics_data: Arc<RwLock<PhysicsData
let mut physics_data = physics_data.write().await;
// update orbits (but dont, actually, yet)
- {
+ // DO NOT SIMPLIFY EXPRESSION
+ // IT MAY ALWAYS BE TRUE
+ // THATS FINE
+ if GAME_ORBITS_ENABLED {
let mut planets = world_data.write().await;
// update earth (nothing changes, yet)
@@ 32,8 35,10 @@ pub async fn timer_main(mgr: ClientManager, physics_data: Arc<RwLock<PhysicsData
// update moon
let new_moon_position = calculate_world_position_of_orbit(calculate_point_on_orbit(MOON_PERIAPSIS, MOON_APOAPSIS, time / MOON_ORBIT_TIME), new_earth_position);
- //planets.get_planet_mut("moon").unwrap().position = (new_moon_position[0] / SCALE, new_moon_position[1] / SCALE);
- //physics_data.rigid_body_set.get_mut(planets.get_planet_mut("moon").unwrap().body_handle).unwrap().set_position(new_moon_position.into(), true);
+ let moon_body = physics_data.rigid_body_set.get_mut(planets.get_planet_mut("moon").unwrap().body_handle).unwrap();
+ let moon_force = calculate_vector_of_orbit(MOON_PERIAPSIS, MOON_APOAPSIS, time / MOON_ORBIT_TIME, EARTH_MASS, moon_body.linvel().x, moon_body.linvel().y, 1f64/20f64, MOON_MASS);
+ moon_body.apply_impulse(moon_force, true);
+ planets.get_planet_mut("moon").unwrap().position = (new_moon_position[0] / SCALE, new_moon_position[1] / SCALE);
}
physics_data.tick(&mut pipeline);