aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjacopograndi <jacopo.grandi@outlook.it>2021-12-24 21:10:33 +0100
committerjacopograndi <jacopo.grandi@outlook.it>2021-12-24 21:10:33 +0100
commite9598b88841374301646a7115253ab38ac904e4c (patch)
tree0ddc46c3ebd34762408cb108a3dbfb98d669af85
parent156420f2a4635a84390e8ff488d12b8f84fea94f (diff)
working
-rw-r--r--assets/VoxelCore.ink.svg310
-rw-r--r--assets/VoxelCore.ink.svg.import35
-rw-r--r--assets/VoxelCore.jpgbin63534 -> 0 bytes
-rw-r--r--assets/VoxelCore.jpg.import35
-rw-r--r--assets/VoxelCore.pngbin22543 -> 0 bytes
-rw-r--r--assets/VoxelCore.png.import35
-rw-r--r--assets/VoxelCore.splash.pngbin24110 -> 0 bytes
-rw-r--r--assets/VoxelCore.splash.png.import35
-rw-r--r--assets/VoxelCore.svg252
-rw-r--r--assets/VoxelCore.svg.import35
-rw-r--r--assets/promo.jpgbin103205 -> 0 bytes
-rw-r--r--assets/promo.jpg.import35
-rw-r--r--default_env.tres11
-rw-r--r--models/shapes/T.glbbin1324 -> 1528 bytes
-rw-r--r--models/shapes/aT.glbbin1664 -> 1872 bytes
-rw-r--r--models/shapes/aaT.glbbin2600 -> 2804 bytes
-rw-r--r--models/shapes/aaaT.glbbin4284 -> 4492 bytes
-rw-r--r--models/shapes/aasT.glbbin10096 -> 10304 bytes
-rw-r--r--models/shapes/asT.glbbin5808 -> 6012 bytes
-rw-r--r--models/shapes/daT.glbbin1780 -> 1988 bytes
-rw-r--r--models/shapes/daaT.glbbin2608 -> 2812 bytes
-rw-r--r--models/shapes/daaaT.glbbin4312 -> 4516 bytes
-rw-r--r--models/shapes/daasT.glbbin9356 -> 9560 bytes
-rw-r--r--models/shapes/dasT.glbbin5148 -> 5352 bytes
-rw-r--r--models/shapes/dkT.glbbin2472 -> 2680 bytes
-rw-r--r--models/shapes/dkaT.glbbin3900 -> 4108 bytes
-rw-r--r--models/shapes/dkdaT.glbbin4032 -> 4236 bytes
-rw-r--r--models/shapes/dkdaaT.glbbin7140 -> 7344 bytes
-rw-r--r--models/shapes/dkdasT.glbbin17480 -> 17684 bytes
-rw-r--r--models/shapes/dkdsT.glbbin8684 -> 8892 bytes
-rw-r--r--models/shapes/dksT.glbbin9708 -> 9912 bytes
-rw-r--r--models/shapes/dsT.glbbin3852 -> 4060 bytes
-rw-r--r--models/shapes/dsaT.glbbin6756 -> 6960 bytes
-rw-r--r--models/shapes/dssT.glbbin15472 -> 15676 bytes
-rw-r--r--models/shapes/kT.glbbin2148 -> 2356 bytes
-rw-r--r--models/shapes/kaT.glbbin3304 -> 3508 bytes
-rw-r--r--models/shapes/kdaT.glbbin3392 -> 3600 bytes
-rw-r--r--models/shapes/kdaaT.glbbin5844 -> 6052 bytes
-rw-r--r--models/shapes/kdasT.glbbin13196 -> 13404 bytes
-rw-r--r--models/shapes/kdsT.glbbin9708 -> 9912 bytes
-rw-r--r--models/shapes/ksT.glbbin7068 -> 7276 bytes
-rw-r--r--models/shapes/sT.glbbin2976 -> 3184 bytes
-rw-r--r--models/shapes/saT.glbbin5056 -> 5260 bytes
-rw-r--r--models/shapes/ssT.glbbin12020 -> 12224 bytes
-rw-r--r--models/turrets/GunMat.materialbin1629 -> 742 bytes
-rw-r--r--models/turrets/laser0.glbbin219384 -> 0 bytes
-rw-r--r--models/turrets/laser0.glb.import1065
-rw-r--r--project.godot11
-rw-r--r--scenes/gui.tscn455
-rw-r--r--scripts/bullet.gd6
-rw-r--r--scripts/debug.gd7
-rw-r--r--scripts/enemies.gd41
-rw-r--r--scripts/fx/fx_enemy_damage.gd5
-rw-r--r--scripts/gui.gd27
-rw-r--r--scripts/movement.gd398
-rw-r--r--scripts/path.gd9
-rw-r--r--scripts/turret.gd109
-rw-r--r--shaders/dissolve_mat.tres8
-rw-r--r--world.tscn39
59 files changed, 707 insertions, 2256 deletions
diff --git a/assets/VoxelCore.ink.svg b/assets/VoxelCore.ink.svg
deleted file mode 100644
index 80122f7..0000000
--- a/assets/VoxelCore.ink.svg
+++ /dev/null
@@ -1,310 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="429.04938"
- height="429.04938"
- viewBox="0 0 113.51932 113.51932"
- version="1.1"
- id="svg8"
- sodipodi:docname="VoxelCore.ink.svg"
- inkscape:version="0.92.3 (2405546, 2018-03-11)">
- <defs
- id="defs2">
- <filter
- x="-0.25"
- width="1.5"
- y="-0.25"
- height="1.5"
- inkscape:menu-tooltip="Smooth rainbow colors melted along the edges and colorizable"
- inkscape:menu="Textures"
- inkscape:label="Tinted Rainbow"
- style="color-interpolation-filters:sRGB"
- id="filter5016">
- <feTurbulence
- type="turbulence"
- numOctaves="5"
- baseFrequency="0.08 0.175"
- seed="25"
- id="feTurbulence4994" />
- <feColorMatrix
- result="result5"
- values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 2 0 "
- id="feColorMatrix4996" />
- <feComposite
- in="SourceGraphic"
- operator="in"
- in2="result5"
- id="feComposite4998" />
- <feMorphology
- operator="dilate"
- radius="0.65"
- result="result3"
- id="feMorphology5000" />
- <feTurbulence
- numOctaves="7"
- baseFrequency="0.05 0.09"
- type="fractalNoise"
- seed="25"
- id="feTurbulence5002" />
- <feGaussianBlur
- stdDeviation="2"
- result="result7"
- id="feGaussianBlur5004" />
- <feDisplacementMap
- in="result3"
- xChannelSelector="R"
- yChannelSelector="G"
- scale="5"
- result="result4"
- in2="result7"
- id="feDisplacementMap5006" />
- <feFlood
- flood-opacity="1"
- flood-color="rgb(255,255,255)"
- id="feFlood5008" />
- <feComposite
- k3="0.7"
- k1="0.7"
- result="result2"
- operator="arithmetic"
- in2="result4"
- id="feComposite5010"
- k2="0"
- k4="0" />
- <feComposite
- k2="1"
- in="result2"
- operator="arithmetic"
- in2="SourceAlpha"
- k1="1"
- result="result6"
- id="feComposite5012"
- k3="0"
- k4="0" />
- <feBlend
- mode="multiply"
- in2="result6"
- in="result6"
- id="feBlend5014"
- result="fbSourceGraphic" />
- <feColorMatrix
- result="fbSourceGraphicAlpha"
- in="fbSourceGraphic"
- values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
- id="feColorMatrix5018" />
- <feGaussianBlur
- id="feGaussianBlur5020"
- result="result8"
- stdDeviation="5"
- in="fbSourceGraphic" />
- <feTurbulence
- id="feTurbulence5022"
- baseFrequency="0.015"
- numOctaves="2"
- type="fractalNoise"
- result="result7"
- seed="20" />
- <feComposite
- in2="result8"
- id="feComposite5024"
- in="fbSourceGraphic"
- operator="in"
- result="result6" />
- <feComposite
- in2="result7"
- id="feComposite5026"
- in="result6"
- operator="arithmetic"
- result="result2"
- k3="1.7"
- k1="0"
- k2="0"
- k4="0" />
- <feComposite
- in2="result6"
- id="feComposite5028"
- operator="in"
- in="result2"
- result="fbSourceGraphic" />
- <feComposite
- in2="fbSourceGraphic"
- id="feComposite5030"
- in="fbSourceGraphic"
- k3="0.3"
- k2="1.5"
- operator="arithmetic"
- result="result9"
- k1="0"
- k4="0" />
- </filter>
- <marker
- inkscape:isstock="true"
- style="overflow:visible"
- id="Arrow1Lstart"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="Arrow1Lstart">
- <path
- transform="matrix(0.8,0,0,0.8,10,0)"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
- d="M 0,0 5,-5 -12.5,0 5,5 Z"
- id="path824"
- inkscape:connector-curvature="0" />
- </marker>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="2.0000001"
- inkscape:cx="156.39088"
- inkscape:cy="227.46396"
- inkscape:document-units="mm"
- inkscape:current-layer="layer4"
- showgrid="false"
- units="px"
- inkscape:window-width="1920"
- inkscape:window-height="1017"
- inkscape:window-x="-8"
- inkscape:window-y="-8"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid925"
- originx="-205.17786"
- originy="-128.438" />
- </sodipodi:namedview>
- <metadata
- id="metadata5">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="border"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-205.17784,-55.042676)"
- style="display:inline;opacity:1">
- <g
- id="g1504"
- transform="matrix(0.68690266,0,0,0.68690266,90.671229,27.917036)" />
- <g
- id="g5242"
- transform="matrix(1.0150329,0,0,1.0150329,208.22534,58.090176)">
- <g
- transform="translate(0,-191.16665)"
- id="layer1-8"
- inkscape:label="Layer 1">
- <path
- id="path822"
- d="m 106.88071,244.08332 v 0 c 0,29.80352 -24.160528,53.96404 -53.964046,53.96404 -29.803517,0 -53.9640413,-24.16052 -53.9640435,-53.96404 -3.3e-6,-29.80352 24.1605225,-53.96405 53.9640435,-53.96405 29.679128,0 53.964046,24.30841 53.964046,53.96405 z"
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3.90997171;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccsscc" />
- </g>
- <g
- inkscape:label="Layer 2"
- id="layer2">
- <path
- inkscape:connector-curvature="0"
- id="path1109"
- d="m 52.916666,29.104166 c 0.755952,-1.259922 0.755952,-1.259922 0,0"
- style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
- </g>
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer4"
- inkscape:label="colors"
- style="display:inline">
- <g
- id="g1061"
- style="fill:#00ff00;fill-opacity:1;stroke:#01fe00;stroke-opacity:1;stroke-width:0.79375;stroke-miterlimit:4;stroke-dasharray:none;stroke-linejoin:round;stroke-linecap:round">
- <path
- id="path914"
- d="m 56.759841,19.740397 -18.203022,5.392436 18.203022,6.742226 18.203024,-6.742226 z"
- style="opacity:1;fill:#00ff00;fill-opacity:1;fill-rule:evenodd;stroke:#01fe00;stroke-width:0.79375;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- inkscape:connector-curvature="0" />
- <path
- id="path912"
- d="M 37.124865,26.013916 V 48.62494 l 18.973002,5.621361 V 33.040879 Z"
- style="opacity:1;fill:#00ff00;fill-opacity:1;fill-rule:evenodd;stroke:#01fe00;stroke-width:0.79375;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- inkscape:connector-curvature="0" />
- <path
- id="path910"
- d="M 76.394819,26.013916 57.421816,33.040879 V 54.246301 L 76.394819,48.62494 Z"
- style="opacity:1;fill:#00ff00;fill-opacity:1;fill-rule:evenodd;stroke:#01fe00;stroke-width:0.79375;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g1056"
- style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:0.66145831;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round;stroke-linecap:round">
- <path
- id="path908"
- d="m 36.464957,49.808847 -17.970995,5.324221 17.970995,5.322157 17.96893,-5.322157 z"
- style="opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.66145831;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- inkscape:connector-curvature="0" />
- <path
- id="path904"
- d="m 16.82998,56.017768 v 22.673554 l 18.973003,5.621361 V 61.638614 Z"
- style="opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.66145831;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- inkscape:connector-curvature="0" />
- <path
- id="path902"
- d="M 56.097867,56.017768 37.124865,61.638614 V 84.312683 L 56.097867,78.691322 Z"
- style="opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.66145831;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g1066"
- style="fill:#0000ff;fill-opacity:1;stroke:#010dff;stroke-opacity:1;stroke-width:0.79375;stroke-miterlimit:4;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round">
- <path
- id="path906"
- d="m 77.054727,49.808847 -17.968928,5.324221 17.968928,5.322157 17.970479,-5.322157 z"
- style="opacity:1;fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#010dff;stroke-width:0.79375;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- inkscape:connector-curvature="0" />
- <path
- id="path900"
- d="m 57.421816,56.017768 v 22.673554 l 18.973003,5.621361 V 61.638614 Z"
- style="opacity:1;fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#010dff;stroke-width:0.79375;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- inkscape:connector-curvature="0" />
- <path
- id="rect889"
- d="M 96.689705,56.017768 77.716701,61.638614 V 84.312683 L 96.689705,78.691322 Z"
- style="opacity:1;fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#010dff;stroke-width:0.79375;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer3"
- inkscape:label="icon"
- transform="translate(-0.08587038,-0.08587188)"
- style="display:inline">
- <path
- inkscape:connector-curvature="0"
- d="M 77.141415,25.149425 V 49.203807 M 56.845529,32.666422 V 55.217405 M 36.549637,25.149425 56.845529,32.666422 77.141415,25.149426 56.845529,19.13583 Z m 0,24.054382 V 25.149425 m 60.887669,30.06798 -20.295891,-6.013598 m -40.591778,0 20.295892,6.013598 20.295886,-6.013598 m -60.887663,6.013598 20.295885,-6.013598 m 0,12.027199 -20.295885,-6.013601 m 0,24.05439 V 55.217405 M 36.549637,85.285388 16.253752,79.271795 m 60.887663,6.013593 20.295891,-6.013593 M 77.141415,61.231006 97.437306,55.217405 v 24.05439 m -40.591777,0 20.295886,6.013593 m 0,-24.054382 V 85.285388 M 56.845529,79.271795 36.549637,85.285388 m 0,-24.054382 V 85.285388 M 56.845529,55.217405 v 24.05439 M 77.141415,61.231006 56.845529,55.217405 36.549637,61.231006"
- style="display:inline;opacity:1;fill:none;stroke:#030000;stroke-width:1.32291663;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
- id="path4718" />
- </g>
-</svg>
diff --git a/assets/VoxelCore.ink.svg.import b/assets/VoxelCore.ink.svg.import
deleted file mode 100644
index 0bc261f..0000000
--- a/assets/VoxelCore.ink.svg.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="StreamTexture"
-path="res://.import/VoxelCore.ink.svg-4718d4ac4629898f64ded822ab0e621c.stex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://assets/VoxelCore.ink.svg"
-dest_files=[ "res://.import/VoxelCore.ink.svg-4718d4ac4629898f64ded822ab0e621c.stex" ]
-
-[params]
-
-compress/mode=0
-compress/lossy_quality=0.7
-compress/hdr_mode=0
-compress/bptc_ldr=0
-compress/normal_map=0
-flags/repeat=0
-flags/filter=true
-flags/mipmaps=false
-flags/anisotropic=false
-flags/srgb=2
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/HDR_as_SRGB=false
-process/invert_color=false
-process/normal_map_invert_y=false
-stream=false
-size_limit=0
-detect_3d=true
-svg/scale=1.0
diff --git a/assets/VoxelCore.jpg b/assets/VoxelCore.jpg
deleted file mode 100644
index 0682677..0000000
--- a/assets/VoxelCore.jpg
+++ /dev/null
Binary files differ
diff --git a/assets/VoxelCore.jpg.import b/assets/VoxelCore.jpg.import
deleted file mode 100644
index b7462c6..0000000
--- a/assets/VoxelCore.jpg.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="StreamTexture"
-path="res://.import/VoxelCore.jpg-546a802807085d7294c1a4ac9736c075.stex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://assets/VoxelCore.jpg"
-dest_files=[ "res://.import/VoxelCore.jpg-546a802807085d7294c1a4ac9736c075.stex" ]
-
-[params]
-
-compress/mode=0
-compress/lossy_quality=0.7
-compress/hdr_mode=0
-compress/bptc_ldr=0
-compress/normal_map=0
-flags/repeat=0
-flags/filter=true
-flags/mipmaps=false
-flags/anisotropic=false
-flags/srgb=2
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/HDR_as_SRGB=false
-process/invert_color=false
-process/normal_map_invert_y=false
-stream=false
-size_limit=0
-detect_3d=true
-svg/scale=1.0
diff --git a/assets/VoxelCore.png b/assets/VoxelCore.png
deleted file mode 100644
index c2b7b8b..0000000
--- a/assets/VoxelCore.png
+++ /dev/null
Binary files differ
diff --git a/assets/VoxelCore.png.import b/assets/VoxelCore.png.import
deleted file mode 100644
index 4a186c6..0000000
--- a/assets/VoxelCore.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="StreamTexture"
-path="res://.import/VoxelCore.png-b5b1979c6a7e5e89c6102575742c8591.stex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://assets/VoxelCore.png"
-dest_files=[ "res://.import/VoxelCore.png-b5b1979c6a7e5e89c6102575742c8591.stex" ]
-
-[params]
-
-compress/mode=0
-compress/lossy_quality=0.7
-compress/hdr_mode=0
-compress/bptc_ldr=0
-compress/normal_map=0
-flags/repeat=0
-flags/filter=true
-flags/mipmaps=false
-flags/anisotropic=false
-flags/srgb=2
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/HDR_as_SRGB=false
-process/invert_color=false
-process/normal_map_invert_y=false
-stream=false
-size_limit=0
-detect_3d=true
-svg/scale=1.0
diff --git a/assets/VoxelCore.splash.png b/assets/VoxelCore.splash.png
deleted file mode 100644
index 2918198..0000000
--- a/assets/VoxelCore.splash.png
+++ /dev/null
Binary files differ
diff --git a/assets/VoxelCore.splash.png.import b/assets/VoxelCore.splash.png.import
deleted file mode 100644
index 405a808..0000000
--- a/assets/VoxelCore.splash.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="StreamTexture"
-path="res://.import/VoxelCore.splash.png-a49420f88bbec24a9c00c9fd284f5d33.stex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://assets/VoxelCore.splash.png"
-dest_files=[ "res://.import/VoxelCore.splash.png-a49420f88bbec24a9c00c9fd284f5d33.stex" ]
-
-[params]
-
-compress/mode=0
-compress/lossy_quality=0.7
-compress/hdr_mode=0
-compress/bptc_ldr=0
-compress/normal_map=0
-flags/repeat=0
-flags/filter=true
-flags/mipmaps=false
-flags/anisotropic=false
-flags/srgb=2
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/HDR_as_SRGB=false
-process/invert_color=false
-process/normal_map_invert_y=false
-stream=false
-size_limit=0
-detect_3d=false
-svg/scale=1.0
diff --git a/assets/VoxelCore.svg b/assets/VoxelCore.svg
deleted file mode 100644
index 7c80149..0000000
--- a/assets/VoxelCore.svg
+++ /dev/null
@@ -1,252 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- id="svg8"
- version="1.1"
- viewBox="0 0 113.51932 113.51932"
- height="429.04938"
- width="429.04938">
- <defs
- id="defs2">
- <filter
- id="filter5016"
- style="color-interpolation-filters:sRGB"
- height="1.5"
- y="-0.25"
- width="1.5"
- x="-0.25">
- <feTurbulence
- id="feTurbulence4994"
- seed="25"
- baseFrequency="0.08 0.175"
- numOctaves="5"
- type="turbulence" />
- <feColorMatrix
- id="feColorMatrix4996"
- values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 2 0 "
- result="result5" />
- <feComposite
- id="feComposite4998"
- in2="result5"
- operator="in"
- in="SourceGraphic" />
- <feMorphology
- id="feMorphology5000"
- result="result3"
- radius="0.65"
- operator="dilate" />
- <feTurbulence
- id="feTurbulence5002"
- seed="25"
- type="fractalNoise"
- baseFrequency="0.05 0.09"
- numOctaves="7" />
- <feGaussianBlur
- id="feGaussianBlur5004"
- result="result7"
- stdDeviation="2" />
- <feDisplacementMap
- id="feDisplacementMap5006"
- in2="result7"
- result="result4"
- scale="5"
- yChannelSelector="G"
- xChannelSelector="R"
- in="result3" />
- <feFlood
- id="feFlood5008"
- flood-color="rgb(255,255,255)"
- flood-opacity="1" />
- <feComposite
- k4="0"
- k2="0"
- id="feComposite5010"
- in2="result4"
- operator="arithmetic"
- result="result2"
- k1="0.7"
- k3="0.7" />
- <feComposite
- k4="0"
- k3="0"
- id="feComposite5012"
- result="result6"
- k1="1"
- in2="SourceAlpha"
- operator="arithmetic"
- in="result2"
- k2="1" />
- <feBlend
- result="fbSourceGraphic"
- id="feBlend5014"
- in="result6"
- in2="result6"
- mode="multiply" />
- <feColorMatrix
- id="feColorMatrix5018"
- values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
- in="fbSourceGraphic"
- result="fbSourceGraphicAlpha" />
- <feGaussianBlur
- in="fbSourceGraphic"
- stdDeviation="5"
- result="result8"
- id="feGaussianBlur5020" />
- <feTurbulence
- seed="20"
- result="result7"
- type="fractalNoise"
- numOctaves="2"
- baseFrequency="0.015"
- id="feTurbulence5022" />
- <feComposite
- result="result6"
- operator="in"
- in="fbSourceGraphic"
- id="feComposite5024"
- in2="result8" />
- <feComposite
- k4="0"
- k2="0"
- k1="0"
- k3="1.7"
- result="result2"
- operator="arithmetic"
- in="result6"
- id="feComposite5026"
- in2="result7" />
- <feComposite
- result="fbSourceGraphic"
- in="result2"
- operator="in"
- id="feComposite5028"
- in2="result6" />
- <feComposite
- k4="0"
- k1="0"
- result="result9"
- operator="arithmetic"
- k2="1.5"
- k3="0.3"
- in="fbSourceGraphic"
- id="feComposite5030"
- in2="fbSourceGraphic" />
- </filter>
- <marker
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lstart"
- style="overflow:visible">
- <path
- id="path824"
- d="M 0,0 5,-5 -12.5,0 5,5 Z"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
- transform="matrix(0.8,0,0,0.8,10,0)" />
- </marker>
- </defs>
- <metadata
- id="metadata5">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- style="display:inline;opacity:1"
- transform="translate(-205.17784,-55.042676)"
- id="layer1">
- <g
- transform="matrix(0.68690266,0,0,0.68690266,90.671229,27.917036)"
- id="g1504" />
- <g
- transform="matrix(1.0150329,0,0,1.0150329,208.22534,58.090176)"
- id="g5242">
- <g
- id="layer1-8"
- transform="translate(0,-191.16665)">
- <path
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3.90997171;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
- d="m 106.88071,244.08332 v 0 c 0,29.80352 -24.160528,53.96404 -53.964046,53.96404 -29.803517,0 -53.9640413,-24.16052 -53.9640435,-53.96404 -3.3e-6,-29.80352 24.1605225,-53.96405 53.9640435,-53.96405 29.679128,0 53.964046,24.30841 53.964046,53.96405 z"
- id="path822" />
- </g>
- <g
- id="layer2">
- <path
- style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 52.916666,29.104166 c 0.755952,-1.259922 0.755952,-1.259922 0,0"
- id="path1109" />
- </g>
- </g>
- </g>
- <g
- style="display:inline"
- id="layer4">
- <g
- style="fill:#00ff00;fill-opacity:1;stroke:#01fe00;stroke-opacity:1;stroke-width:0.79375;stroke-miterlimit:4;stroke-dasharray:none;stroke-linejoin:round;stroke-linecap:round"
- id="g1061">
- <path
- style="opacity:1;fill:#00ff00;fill-opacity:1;fill-rule:evenodd;stroke:#01fe00;stroke-width:0.79375;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- d="m 56.759841,19.740397 -18.203022,5.392436 18.203022,6.742226 18.203024,-6.742226 z"
- id="path914" />
- <path
- style="opacity:1;fill:#00ff00;fill-opacity:1;fill-rule:evenodd;stroke:#01fe00;stroke-width:0.79375;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- d="M 37.124865,26.013916 V 48.62494 l 18.973002,5.621361 V 33.040879 Z"
- id="path912" />
- <path
- style="opacity:1;fill:#00ff00;fill-opacity:1;fill-rule:evenodd;stroke:#01fe00;stroke-width:0.79375;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- d="M 76.394819,26.013916 57.421816,33.040879 V 54.246301 L 76.394819,48.62494 Z"
- id="path910" />
- </g>
- <g
- style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:0.66145831;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round;stroke-linecap:round"
- id="g1056">
- <path
- style="opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.66145831;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- d="m 36.464957,49.808847 -17.970995,5.324221 17.970995,5.322157 17.96893,-5.322157 z"
- id="path908" />
- <path
- style="opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.66145831;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- d="m 16.82998,56.017768 v 22.673554 l 18.973003,5.621361 V 61.638614 Z"
- id="path904" />
- <path
- style="opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.66145831;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- d="M 56.097867,56.017768 37.124865,61.638614 V 84.312683 L 56.097867,78.691322 Z"
- id="path902" />
- </g>
- <g
- style="fill:#0000ff;fill-opacity:1;stroke:#010dff;stroke-opacity:1;stroke-width:0.79375;stroke-miterlimit:4;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round"
- id="g1066">
- <path
- style="opacity:1;fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#010dff;stroke-width:0.79375;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- d="m 77.054727,49.808847 -17.968928,5.324221 17.968928,5.322157 17.970479,-5.322157 z"
- id="path906" />
- <path
- style="opacity:1;fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#010dff;stroke-width:0.79375;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- d="m 57.421816,56.017768 v 22.673554 l 18.973003,5.621361 V 61.638614 Z"
- id="path900" />
- <path
- style="opacity:1;fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#010dff;stroke-width:0.79375;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- d="M 96.689705,56.017768 77.716701,61.638614 V 84.312683 L 96.689705,78.691322 Z"
- id="rect889" />
- </g>
- </g>
- <g
- style="display:inline"
- transform="translate(-0.08587038,-0.08587188)"
- id="layer3">
- <path
- id="path4718"
- style="display:inline;opacity:1;fill:none;stroke:#030000;stroke-width:1.32291663;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
- d="M 77.141415,25.149425 V 49.203807 M 56.845529,32.666422 V 55.217405 M 36.549637,25.149425 56.845529,32.666422 77.141415,25.149426 56.845529,19.13583 Z m 0,24.054382 V 25.149425 m 60.887669,30.06798 -20.295891,-6.013598 m -40.591778,0 20.295892,6.013598 20.295886,-6.013598 m -60.887663,6.013598 20.295885,-6.013598 m 0,12.027199 -20.295885,-6.013601 m 0,24.05439 V 55.217405 M 36.549637,85.285388 16.253752,79.271795 m 60.887663,6.013593 20.295891,-6.013593 M 77.141415,61.231006 97.437306,55.217405 v 24.05439 m -40.591777,0 20.295886,6.013593 m 0,-24.054382 V 85.285388 M 56.845529,79.271795 36.549637,85.285388 m 0,-24.054382 V 85.285388 M 56.845529,55.217405 v 24.05439 M 77.141415,61.231006 56.845529,55.217405 36.549637,61.231006" />
- </g>
-</svg>
diff --git a/assets/VoxelCore.svg.import b/assets/VoxelCore.svg.import
deleted file mode 100644
index e2ac6be..0000000
--- a/assets/VoxelCore.svg.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="StreamTexture"
-path="res://.import/VoxelCore.svg-91360d56fcb3faae17f0313f95f6ea48.stex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://assets/VoxelCore.svg"
-dest_files=[ "res://.import/VoxelCore.svg-91360d56fcb3faae17f0313f95f6ea48.stex" ]
-
-[params]
-
-compress/mode=0
-compress/lossy_quality=0.7
-compress/hdr_mode=0
-compress/bptc_ldr=0
-compress/normal_map=0
-flags/repeat=0
-flags/filter=true
-flags/mipmaps=false
-flags/anisotropic=false
-flags/srgb=2
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/HDR_as_SRGB=false
-process/invert_color=false
-process/normal_map_invert_y=false
-stream=false
-size_limit=0
-detect_3d=true
-svg/scale=1.0
diff --git a/assets/promo.jpg b/assets/promo.jpg
deleted file mode 100644
index 33b327c..0000000
--- a/assets/promo.jpg
+++ /dev/null
Binary files differ
diff --git a/assets/promo.jpg.import b/assets/promo.jpg.import
deleted file mode 100644
index d31ff59..0000000
--- a/assets/promo.jpg.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="StreamTexture"
-path="res://.import/promo.jpg-cc4ade6b028ccd982c4f1e280b0afbf0.stex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://assets/promo.jpg"
-dest_files=[ "res://.import/promo.jpg-cc4ade6b028ccd982c4f1e280b0afbf0.stex" ]
-
-[params]
-
-compress/mode=0
-compress/lossy_quality=0.7
-compress/hdr_mode=0
-compress/bptc_ldr=0
-compress/normal_map=0
-flags/repeat=0
-flags/filter=true
-flags/mipmaps=false
-flags/anisotropic=false
-flags/srgb=2
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/HDR_as_SRGB=false
-process/invert_color=false
-process/normal_map_invert_y=false
-stream=false
-size_limit=0
-detect_3d=true
-svg/scale=1.0
diff --git a/default_env.tres b/default_env.tres
index 2ba632d..b2f9bcc 100644
--- a/default_env.tres
+++ b/default_env.tres
@@ -7,9 +7,10 @@ background_mode = 2
background_sky = SubResource( 1 )
ambient_light_color = Color( 1, 1, 1, 1 )
ambient_light_energy = 1.83
-auto_exposure_enabled = true
-auto_exposure_speed = 2.35
-ss_reflections_enabled = true
-ssao_enabled = true
-ssao_bias = 0.102
+tonemap_mode = 3
+auto_exposure_speed = 21.0
+ssao_radius = 0.2
ssao_quality = 2
+glow_intensity = 0.1
+adjustment_enabled = true
+adjustment_saturation = 1.2
diff --git a/models/shapes/T.glb b/models/shapes/T.glb
index e31db85..015d6ae 100644
--- a/models/shapes/T.glb
+++ b/models/shapes/T.glb
Binary files differ
diff --git a/models/shapes/aT.glb b/models/shapes/aT.glb
index 532099f..9466b48 100644
--- a/models/shapes/aT.glb
+++ b/models/shapes/aT.glb
Binary files differ
diff --git a/models/shapes/aaT.glb b/models/shapes/aaT.glb
index 1b7bf94..54e4d7b 100644
--- a/models/shapes/aaT.glb
+++ b/models/shapes/aaT.glb
Binary files differ
diff --git a/models/shapes/aaaT.glb b/models/shapes/aaaT.glb
index 8c60771..1973a9e 100644
--- a/models/shapes/aaaT.glb
+++ b/models/shapes/aaaT.glb
Binary files differ
diff --git a/models/shapes/aasT.glb b/models/shapes/aasT.glb
index 0a142c8..cab8368 100644
--- a/models/shapes/aasT.glb
+++ b/models/shapes/aasT.glb
Binary files differ
diff --git a/models/shapes/asT.glb b/models/shapes/asT.glb
index f7c3835..f606062 100644
--- a/models/shapes/asT.glb
+++ b/models/shapes/asT.glb
Binary files differ
diff --git a/models/shapes/daT.glb b/models/shapes/daT.glb
index b496618..536cc52 100644
--- a/models/shapes/daT.glb
+++ b/models/shapes/daT.glb
Binary files differ
diff --git a/models/shapes/daaT.glb b/models/shapes/daaT.glb
index 0f06eac..29258c9 100644
--- a/models/shapes/daaT.glb
+++ b/models/shapes/daaT.glb
Binary files differ
diff --git a/models/shapes/daaaT.glb b/models/shapes/daaaT.glb
index a96360f..e2a5d05 100644
--- a/models/shapes/daaaT.glb
+++ b/models/shapes/daaaT.glb
Binary files differ
diff --git a/models/shapes/daasT.glb b/models/shapes/daasT.glb
index e42bff1..66ff689 100644
--- a/models/shapes/daasT.glb
+++ b/models/shapes/daasT.glb
Binary files differ
diff --git a/models/shapes/dasT.glb b/models/shapes/dasT.glb
index 06b78f1..f1e441b 100644
--- a/models/shapes/dasT.glb
+++ b/models/shapes/dasT.glb
Binary files differ
diff --git a/models/shapes/dkT.glb b/models/shapes/dkT.glb
index 8ec1036..11704b5 100644
--- a/models/shapes/dkT.glb
+++ b/models/shapes/dkT.glb
Binary files differ
diff --git a/models/shapes/dkaT.glb b/models/shapes/dkaT.glb
index 31f70e3..2c9650a 100644
--- a/models/shapes/dkaT.glb
+++ b/models/shapes/dkaT.glb
Binary files differ
diff --git a/models/shapes/dkdaT.glb b/models/shapes/dkdaT.glb
index e3c736c..1f0bca4 100644
--- a/models/shapes/dkdaT.glb
+++ b/models/shapes/dkdaT.glb
Binary files differ
diff --git a/models/shapes/dkdaaT.glb b/models/shapes/dkdaaT.glb
index a0efc23..d9f6814 100644
--- a/models/shapes/dkdaaT.glb
+++ b/models/shapes/dkdaaT.glb
Binary files differ
diff --git a/models/shapes/dkdasT.glb b/models/shapes/dkdasT.glb
index 1e664e4..182a33b 100644
--- a/models/shapes/dkdasT.glb
+++ b/models/shapes/dkdasT.glb
Binary files differ
diff --git a/models/shapes/dkdsT.glb b/models/shapes/dkdsT.glb
index a856970..aca6a45 100644
--- a/models/shapes/dkdsT.glb
+++ b/models/shapes/dkdsT.glb
Binary files differ
diff --git a/models/shapes/dksT.glb b/models/shapes/dksT.glb
index 9994e57..d22f530 100644
--- a/models/shapes/dksT.glb
+++ b/models/shapes/dksT.glb
Binary files differ
diff --git a/models/shapes/dsT.glb b/models/shapes/dsT.glb
index dff9c0d..6879c87 100644
--- a/models/shapes/dsT.glb
+++ b/models/shapes/dsT.glb
Binary files differ
diff --git a/models/shapes/dsaT.glb b/models/shapes/dsaT.glb
index a233665..8022fe9 100644
--- a/models/shapes/dsaT.glb
+++ b/models/shapes/dsaT.glb
Binary files differ
diff --git a/models/shapes/dssT.glb b/models/shapes/dssT.glb
index 4167013..026e479 100644
--- a/models/shapes/dssT.glb
+++ b/models/shapes/dssT.glb
Binary files differ
diff --git a/models/shapes/kT.glb b/models/shapes/kT.glb
index aea8199..e7c6500 100644
--- a/models/shapes/kT.glb
+++ b/models/shapes/kT.glb
Binary files differ
diff --git a/models/shapes/kaT.glb b/models/shapes/kaT.glb
index ba1f035..c09bd94 100644
--- a/models/shapes/kaT.glb
+++ b/models/shapes/kaT.glb
Binary files differ
diff --git a/models/shapes/kdaT.glb b/models/shapes/kdaT.glb
index d6920bd..17a0fb4 100644
--- a/models/shapes/kdaT.glb
+++ b/models/shapes/kdaT.glb
Binary files differ
diff --git a/models/shapes/kdaaT.glb b/models/shapes/kdaaT.glb
index d457de9..301214d 100644
--- a/models/shapes/kdaaT.glb
+++ b/models/shapes/kdaaT.glb
Binary files differ
diff --git a/models/shapes/kdasT.glb b/models/shapes/kdasT.glb
index 38366e9..bc866e6 100644
--- a/models/shapes/kdasT.glb
+++ b/models/shapes/kdasT.glb
Binary files differ
diff --git a/models/shapes/kdsT.glb b/models/shapes/kdsT.glb
index 89e441b..4a9edc2 100644
--- a/models/shapes/kdsT.glb
+++ b/models/shapes/kdsT.glb
Binary files differ
diff --git a/models/shapes/ksT.glb b/models/shapes/ksT.glb
index 4ffdf0a..e679c04 100644
--- a/models/shapes/ksT.glb
+++ b/models/shapes/ksT.glb
Binary files differ
diff --git a/models/shapes/sT.glb b/models/shapes/sT.glb
index 10bb6d5..d04e1aa 100644
--- a/models/shapes/sT.glb
+++ b/models/shapes/sT.glb
Binary files differ
diff --git a/models/shapes/saT.glb b/models/shapes/saT.glb
index 62366c3..450d8d2 100644
--- a/models/shapes/saT.glb
+++ b/models/shapes/saT.glb
Binary files differ
diff --git a/models/shapes/ssT.glb b/models/shapes/ssT.glb
index b98818a..f97cf40 100644
--- a/models/shapes/ssT.glb
+++ b/models/shapes/ssT.glb
Binary files differ
diff --git a/models/turrets/GunMat.material b/models/turrets/GunMat.material
index 7ac3f7b..eed9446 100644
--- a/models/turrets/GunMat.material
+++ b/models/turrets/GunMat.material
Binary files differ
diff --git a/models/turrets/laser0.glb b/models/turrets/laser0.glb
deleted file mode 100644
index 0b1093e..0000000
--- a/models/turrets/laser0.glb
+++ /dev/null
Binary files differ
diff --git a/models/turrets/laser0.glb.import b/models/turrets/laser0.glb.import
deleted file mode 100644
index db22b6f..0000000
--- a/models/turrets/laser0.glb.import
+++ /dev/null
@@ -1,1065 +0,0 @@
-[remap]
-
-importer="scene"
-type="PackedScene"
-path="res://.import/laser0.glb-e49ff0ef5ae347a57585d5712ace136d.scn"
-
-[deps]
-
-source_file="res://models/turrets/laser0.glb"
-dest_files=[ "res://.import/laser0.glb-e49ff0ef5ae347a57585d5712ace136d.scn" ]
-
-[params]
-
-nodes/root_type="Spatial"
-nodes/root_name="Scene Root"
-nodes/root_scale=1.0
-nodes/custom_script=""
-nodes/storage=0
-nodes/use_legacy_names=true
-materials/location=1
-materials/storage=1
-materials/keep_on_reimport=true
-meshes/octahedral_compression=true
-meshes/compress=4286
-meshes/ensure_tangents=true
-meshes/storage=0
-meshes/light_baking=0
-meshes/lightmap_texel_size=0.1
-skins/use_named_skins=true
-external_files/store_in_subdir=false
-animation/import=true
-animation/fps=15
-animation/filter_script=""
-animation/storage=false
-animation/keep_custom_tracks=false
-animation/optimizer/enabled=true
-animation/optimizer/max_linear_error=0.05
-animation/optimizer/max_angular_error=0.01
-animation/optimizer/max_angle=22
-animation/optimizer/remove_unused_tracks=true
-animation/clips/amount=0
-animation/clip_1/name=""
-animation/clip_1/start_frame=0
-animation/clip_1/end_frame=0
-animation/clip_1/loops=false
-animation/clip_2/name=""
-animation/clip_2/start_frame=0
-animation/clip_2/end_frame=0
-animation/clip_2/loops=false
-animation/clip_3/name=""
-animation/clip_3/start_frame=0
-animation/clip_3/end_frame=0
-animation/clip_3/loops=false
-animation/clip_4/name=""
-animation/clip_4/start_frame=0
-animation/clip_4/end_frame=0
-animation/clip_4/loops=false
-animation/clip_5/name=""
-animation/clip_5/start_frame=0
-animation/clip_5/end_frame=0
-animation/clip_5/loops=false
-animation/clip_6/name=""
-animation/clip_6/start_frame=0
-animation/clip_6/end_frame=0
-animation/clip_6/loops=false
-animation/clip_7/name=""
-animation/clip_7/start_frame=0
-animation/clip_7/end_frame=0
-animation/clip_7/loops=false
-animation/clip_8/name=""
-animation/clip_8/start_frame=0
-animation/clip_8/end_frame=0
-animation/clip_8/loops=false
-animation/clip_9/name=""
-animation/clip_9/start_frame=0
-animation/clip_9/end_frame=0
-animation/clip_9/loops=false
-animation/clip_10/name=""
-animation/clip_10/start_frame=0
-animation/clip_10/end_frame=0
-animation/clip_10/loops=false
-animation/clip_11/name=""
-animation/clip_11/start_frame=0
-animation/clip_11/end_frame=0
-animation/clip_11/loops=false
-animation/clip_12/name=""
-animation/clip_12/start_frame=0
-animation/clip_12/end_frame=0
-animation/clip_12/loops=false
-animation/clip_13/name=""
-animation/clip_13/start_frame=0
-animation/clip_13/end_frame=0
-animation/clip_13/loops=false
-animation/clip_14/name=""
-animation/clip_14/start_frame=0
-animation/clip_14/end_frame=0
-animation/clip_14/loops=false
-animation/clip_15/name=""
-animation/clip_15/start_frame=0
-animation/clip_15/end_frame=0
-animation/clip_15/loops=false
-animation/clip_16/name=""
-animation/clip_16/start_frame=0
-animation/clip_16/end_frame=0
-animation/clip_16/loops=false
-animation/clip_17/name=""
-animation/clip_17/start_frame=0
-animation/clip_17/end_frame=0
-animation/clip_17/loops=false
-animation/clip_18/name=""
-animation/clip_18/start_frame=0
-animation/clip_18/end_frame=0
-animation/clip_18/loops=false
-animation/clip_19/name=""
-animation/clip_19/start_frame=0
-animation/clip_19/end_frame=0
-animation/clip_19/loops=false
-animation/clip_20/name=""
-animation/clip_20/start_frame=0
-animation/clip_20/end_frame=0
-animation/clip_20/loops=false
-animation/clip_21/name=""
-animation/clip_21/start_frame=0
-animation/clip_21/end_frame=0
-animation/clip_21/loops=false
-animation/clip_22/name=""
-animation/clip_22/start_frame=0
-animation/clip_22/end_frame=0
-animation/clip_22/loops=false
-animation/clip_23/name=""
-animation/clip_23/start_frame=0
-animation/clip_23/end_frame=0
-animation/clip_23/loops=false
-animation/clip_24/name=""
-animation/clip_24/start_frame=0
-animation/clip_24/end_frame=0
-animation/clip_24/loops=false
-animation/clip_25/name=""
-animation/clip_25/start_frame=0
-animation/clip_25/end_frame=0
-animation/clip_25/loops=false
-animation/clip_26/name=""
-animation/clip_26/start_frame=0
-animation/clip_26/end_frame=0
-animation/clip_26/loops=false
-animation/clip_27/name=""
-animation/clip_27/start_frame=0
-animation/clip_27/end_frame=0
-animation/clip_27/loops=false
-animation/clip_28/name=""
-animation/clip_28/start_frame=0
-animation/clip_28/end_frame=0
-animation/clip_28/loops=false
-animation/clip_29/name=""
-animation/clip_29/start_frame=0
-animation/clip_29/end_frame=0
-animation/clip_29/loops=false
-animation/clip_30/name=""
-animation/clip_30/start_frame=0
-animation/clip_30/end_frame=0
-animation/clip_30/loops=false
-animation/clip_31/name=""
-animation/clip_31/start_frame=0
-animation/clip_31/end_frame=0
-animation/clip_31/loops=false
-animation/clip_32/name=""
-animation/clip_32/start_frame=0
-animation/clip_32/end_frame=0
-animation/clip_32/loops=false
-animation/clip_33/name=""
-animation/clip_33/start_frame=0
-animation/clip_33/end_frame=0
-animation/clip_33/loops=false
-animation/clip_34/name=""
-animation/clip_34/start_frame=0
-animation/clip_34/end_frame=0
-animation/clip_34/loops=false
-animation/clip_35/name=""
-animation/clip_35/start_frame=0
-animation/clip_35/end_frame=0
-animation/clip_35/loops=false
-animation/clip_36/name=""
-animation/clip_36/start_frame=0
-animation/clip_36/end_frame=0
-animation/clip_36/loops=false
-animation/clip_37/name=""
-animation/clip_37/start_frame=0
-animation/clip_37/end_frame=0
-animation/clip_37/loops=false
-animation/clip_38/name=""
-animation/clip_38/start_frame=0
-animation/clip_38/end_frame=0
-animation/clip_38/loops=false
-animation/clip_39/name=""
-animation/clip_39/start_frame=0
-animation/clip_39/end_frame=0
-animation/clip_39/loops=false
-animation/clip_40/name=""
-animation/clip_40/start_frame=0
-animation/clip_40/end_frame=0
-animation/clip_40/loops=false
-animation/clip_41/name=""
-animation/clip_41/start_frame=0
-animation/clip_41/end_frame=0
-animation/clip_41/loops=false
-animation/clip_42/name=""
-animation/clip_42/start_frame=0
-animation/clip_42/end_frame=0
-animation/clip_42/loops=false
-animation/clip_43/name=""
-animation/clip_43/start_frame=0
-animation/clip_43/end_frame=0
-animation/clip_43/loops=false
-animation/clip_44/name=""
-animation/clip_44/start_frame=0
-animation/clip_44/end_frame=0
-animation/clip_44/loops=false
-animation/clip_45/name=""
-animation/clip_45/start_frame=0
-animation/clip_45/end_frame=0
-animation/clip_45/loops=false
-animation/clip_46/name=""
-animation/clip_46/start_frame=0
-animation/clip_46/end_frame=0
-animation/clip_46/loops=false
-animation/clip_47/name=""
-animation/clip_47/start_frame=0
-animation/clip_47/end_frame=0
-animation/clip_47/loops=false
-animation/clip_48/name=""
-animation/clip_48/start_frame=0
-animation/clip_48/end_frame=0
-animation/clip_48/loops=false
-animation/clip_49/name=""
-animation/clip_49/start_frame=0
-animation/clip_49/end_frame=0
-animation/clip_49/loops=false
-animation/clip_50/name=""
-animation/clip_50/start_frame=0
-animation/clip_50/end_frame=0
-animation/clip_50/loops=false
-animation/clip_51/name=""
-animation/clip_51/start_frame=0
-animation/clip_51/end_frame=0
-animation/clip_51/loops=false
-animation/clip_52/name=""
-animation/clip_52/start_frame=0
-animation/clip_52/end_frame=0
-animation/clip_52/loops=false
-animation/clip_53/name=""
-animation/clip_53/start_frame=0
-animation/clip_53/end_frame=0
-animation/clip_53/loops=false
-animation/clip_54/name=""
-animation/clip_54/start_frame=0
-animation/clip_54/end_frame=0
-animation/clip_54/loops=false
-animation/clip_55/name=""
-animation/clip_55/start_frame=0
-animation/clip_55/end_frame=0
-animation/clip_55/loops=false
-animation/clip_56/name=""
-animation/clip_56/start_frame=0
-animation/clip_56/end_frame=0
-animation/clip_56/loops=false
-animation/clip_57/name=""
-animation/clip_57/start_frame=0
-animation/clip_57/end_frame=0
-animation/clip_57/loops=false
-animation/clip_58/name=""
-animation/clip_58/start_frame=0
-animation/clip_58/end_frame=0
-animation/clip_58/loops=false
-animation/clip_59/name=""
-animation/clip_59/start_frame=0
-animation/clip_59/end_frame=0
-animation/clip_59/loops=false
-animation/clip_60/name=""
-animation/clip_60/start_frame=0
-animation/clip_60/end_frame=0
-animation/clip_60/loops=false
-animation/clip_61/name=""
-animation/clip_61/start_frame=0
-animation/clip_61/end_frame=0
-animation/clip_61/loops=false
-animation/clip_62/name=""
-animation/clip_62/start_frame=0
-animation/clip_62/end_frame=0
-animation/clip_62/loops=false
-animation/clip_63/name=""
-animation/clip_63/start_frame=0
-animation/clip_63/end_frame=0
-animation/clip_63/loops=false
-animation/clip_64/name=""
-animation/clip_64/start_frame=0
-animation/clip_64/end_frame=0
-animation/clip_64/loops=false
-animation/clip_65/name=""
-animation/clip_65/start_frame=0
-animation/clip_65/end_frame=0
-animation/clip_65/loops=false
-animation/clip_66/name=""
-animation/clip_66/start_frame=0
-animation/clip_66/end_frame=0
-animation/clip_66/loops=false
-animation/clip_67/name=""
-animation/clip_67/start_frame=0
-animation/clip_67/end_frame=0
-animation/clip_67/loops=false
-animation/clip_68/name=""
-animation/clip_68/start_frame=0
-animation/clip_68/end_frame=0
-animation/clip_68/loops=false
-animation/clip_69/name=""
-animation/clip_69/start_frame=0
-animation/clip_69/end_frame=0
-animation/clip_69/loops=false
-animation/clip_70/name=""
-animation/clip_70/start_frame=0
-animation/clip_70/end_frame=0
-animation/clip_70/loops=false
-animation/clip_71/name=""
-animation/clip_71/start_frame=0
-animation/clip_71/end_frame=0
-animation/clip_71/loops=false
-animation/clip_72/name=""
-animation/clip_72/start_frame=0
-animation/clip_72/end_frame=0
-animation/clip_72/loops=false
-animation/clip_73/name=""
-animation/clip_73/start_frame=0
-animation/clip_73/end_frame=0
-animation/clip_73/loops=false
-animation/clip_74/name=""
-animation/clip_74/start_frame=0
-animation/clip_74/end_frame=0
-animation/clip_74/loops=false
-animation/clip_75/name=""
-animation/clip_75/start_frame=0
-animation/clip_75/end_frame=0
-animation/clip_75/loops=false
-animation/clip_76/name=""
-animation/clip_76/start_frame=0
-animation/clip_76/end_frame=0
-animation/clip_76/loops=false
-animation/clip_77/name=""
-animation/clip_77/start_frame=0
-animation/clip_77/end_frame=0
-animation/clip_77/loops=false
-animation/clip_78/name=""
-animation/clip_78/start_frame=0
-animation/clip_78/end_frame=0
-animation/clip_78/loops=false
-animation/clip_79/name=""
-animation/clip_79/start_frame=0
-animation/clip_79/end_frame=0
-animation/clip_79/loops=false
-animation/clip_80/name=""
-animation/clip_80/start_frame=0
-animation/clip_80/end_frame=0
-animation/clip_80/loops=false
-animation/clip_81/name=""
-animation/clip_81/start_frame=0
-animation/clip_81/end_frame=0
-animation/clip_81/loops=false
-animation/clip_82/name=""
-animation/clip_82/start_frame=0
-animation/clip_82/end_frame=0
-animation/clip_82/loops=false
-animation/clip_83/name=""
-animation/clip_83/start_frame=0
-animation/clip_83/end_frame=0
-animation/clip_83/loops=false
-animation/clip_84/name=""
-animation/clip_84/start_frame=0
-animation/clip_84/end_frame=0
-animation/clip_84/loops=false
-animation/clip_85/name=""
-animation/clip_85/start_frame=0
-animation/clip_85/end_frame=0
-animation/clip_85/loops=false
-animation/clip_86/name=""
-animation/clip_86/start_frame=0
-animation/clip_86/end_frame=0
-animation/clip_86/loops=false
-animation/clip_87/name=""
-animation/clip_87/start_frame=0
-animation/clip_87/end_frame=0
-animation/clip_87/loops=false
-animation/clip_88/name=""
-animation/clip_88/start_frame=0
-animation/clip_88/end_frame=0
-animation/clip_88/loops=false
-animation/clip_89/name=""
-animation/clip_89/start_frame=0
-animation/clip_89/end_frame=0
-animation/clip_89/loops=false
-animation/clip_90/name=""
-animation/clip_90/start_frame=0
-animation/clip_90/end_frame=0
-animation/clip_90/loops=false
-animation/clip_91/name=""
-animation/clip_91/start_frame=0
-animation/clip_91/end_frame=0
-animation/clip_91/loops=false
-animation/clip_92/name=""
-animation/clip_92/start_frame=0
-animation/clip_92/end_frame=0
-animation/clip_92/loops=false
-animation/clip_93/name=""
-animation/clip_93/start_frame=0
-animation/clip_93/end_frame=0
-animation/clip_93/loops=false
-animation/clip_94/name=""
-animation/clip_94/start_frame=0
-animation/clip_94/end_frame=0
-animation/clip_94/loops=false
-animation/clip_95/name=""
-animation/clip_95/start_frame=0
-animation/clip_95/end_frame=0
-animation/clip_95/loops=false
-animation/clip_96/name=""
-animation/clip_96/start_frame=0
-animation/clip_96/end_frame=0
-animation/clip_96/loops=false
-animation/clip_97/name=""
-animation/clip_97/start_frame=0
-animation/clip_97/end_frame=0
-animation/clip_97/loops=false
-animation/clip_98/name=""
-animation/clip_98/start_frame=0
-animation/clip_98/end_frame=0
-animation/clip_98/loops=false
-animation/clip_99/name=""
-animation/clip_99/start_frame=0
-animation/clip_99/end_frame=0
-animation/clip_99/loops=false
-animation/clip_100/name=""
-animation/clip_100/start_frame=0
-animation/clip_100/end_frame=0
-animation/clip_100/loops=false
-animation/clip_101/name=""
-animation/clip_101/start_frame=0
-animation/clip_101/end_frame=0
-animation/clip_101/loops=false
-animation/clip_102/name=""
-animation/clip_102/start_frame=0
-animation/clip_102/end_frame=0
-animation/clip_102/loops=false
-animation/clip_103/name=""
-animation/clip_103/start_frame=0
-animation/clip_103/end_frame=0
-animation/clip_103/loops=false
-animation/clip_104/name=""
-animation/clip_104/start_frame=0
-animation/clip_104/end_frame=0
-animation/clip_104/loops=false
-animation/clip_105/name=""
-animation/clip_105/start_frame=0
-animation/clip_105/end_frame=0
-animation/clip_105/loops=false
-animation/clip_106/name=""
-animation/clip_106/start_frame=0
-animation/clip_106/end_frame=0
-animation/clip_106/loops=false
-animation/clip_107/name=""
-animation/clip_107/start_frame=0
-animation/clip_107/end_frame=0
-animation/clip_107/loops=false
-animation/clip_108/name=""
-animation/clip_108/start_frame=0
-animation/clip_108/end_frame=0
-animation/clip_108/loops=false
-animation/clip_109/name=""
-animation/clip_109/start_frame=0
-animation/clip_109/end_frame=0
-animation/clip_109/loops=false
-animation/clip_110/name=""
-animation/clip_110/start_frame=0
-animation/clip_110/end_frame=0
-animation/clip_110/loops=false
-animation/clip_111/name=""
-animation/clip_111/start_frame=0
-animation/clip_111/end_frame=0
-animation/clip_111/loops=false
-animation/clip_112/name=""
-animation/clip_112/start_frame=0
-animation/clip_112/end_frame=0
-animation/clip_112/loops=false
-animation/clip_113/name=""
-animation/clip_113/start_frame=0
-animation/clip_113/end_frame=0
-animation/clip_113/loops=false
-animation/clip_114/name=""
-animation/clip_114/start_frame=0
-animation/clip_114/end_frame=0
-animation/clip_114/loops=false
-animation/clip_115/name=""
-animation/clip_115/start_frame=0
-animation/clip_115/end_frame=0
-animation/clip_115/loops=false
-animation/clip_116/name=""
-animation/clip_116/start_frame=0
-animation/clip_116/end_frame=0
-animation/clip_116/loops=false
-animation/clip_117/name=""
-animation/clip_117/start_frame=0
-animation/clip_117/end_frame=0
-animation/clip_117/loops=false
-animation/clip_118/name=""
-animation/clip_118/start_frame=0
-animation/clip_118/end_frame=0
-animation/clip_118/loops=false
-animation/clip_119/name=""
-animation/clip_119/start_frame=0
-animation/clip_119/end_frame=0
-animation/clip_119/loops=false
-animation/clip_120/name=""
-animation/clip_120/start_frame=0
-animation/clip_120/end_frame=0
-animation/clip_120/loops=false
-animation/clip_121/name=""
-animation/clip_121/start_frame=0
-animation/clip_121/end_frame=0
-animation/clip_121/loops=false
-animation/clip_122/name=""
-animation/clip_122/start_frame=0
-animation/clip_122/end_frame=0
-animation/clip_122/loops=false
-animation/clip_123/name=""
-animation/clip_123/start_frame=0
-animation/clip_123/end_frame=0
-animation/clip_123/loops=false
-animation/clip_124/name=""
-animation/clip_124/start_frame=0
-animation/clip_124/end_frame=0
-animation/clip_124/loops=false
-animation/clip_125/name=""
-animation/clip_125/start_frame=0
-animation/clip_125/end_frame=0
-animation/clip_125/loops=false
-animation/clip_126/name=""
-animation/clip_126/start_frame=0
-animation/clip_126/end_frame=0
-animation/clip_126/loops=false
-animation/clip_127/name=""
-animation/clip_127/start_frame=0
-animation/clip_127/end_frame=0
-animation/clip_127/loops=false
-animation/clip_128/name=""
-animation/clip_128/start_frame=0
-animation/clip_128/end_frame=0
-animation/clip_128/loops=false
-animation/clip_129/name=""
-animation/clip_129/start_frame=0
-animation/clip_129/end_frame=0
-animation/clip_129/loops=false
-animation/clip_130/name=""
-animation/clip_130/start_frame=0
-animation/clip_130/end_frame=0
-animation/clip_130/loops=false
-animation/clip_131/name=""
-animation/clip_131/start_frame=0
-animation/clip_131/end_frame=0
-animation/clip_131/loops=false
-animation/clip_132/name=""
-animation/clip_132/start_frame=0
-animation/clip_132/end_frame=0
-animation/clip_132/loops=false
-animation/clip_133/name=""
-animation/clip_133/start_frame=0
-animation/clip_133/end_frame=0
-animation/clip_133/loops=false
-animation/clip_134/name=""
-animation/clip_134/start_frame=0
-animation/clip_134/end_frame=0
-animation/clip_134/loops=false
-animation/clip_135/name=""
-animation/clip_135/start_frame=0
-animation/clip_135/end_frame=0
-animation/clip_135/loops=false
-animation/clip_136/name=""
-animation/clip_136/start_frame=0
-animation/clip_136/end_frame=0
-animation/clip_136/loops=false
-animation/clip_137/name=""
-animation/clip_137/start_frame=0
-animation/clip_137/end_frame=0
-animation/clip_137/loops=false
-animation/clip_138/name=""
-animation/clip_138/start_frame=0
-animation/clip_138/end_frame=0
-animation/clip_138/loops=false
-animation/clip_139/name=""
-animation/clip_139/start_frame=0
-animation/clip_139/end_frame=0
-animation/clip_139/loops=false
-animation/clip_140/name=""
-animation/clip_140/start_frame=0
-animation/clip_140/end_frame=0
-animation/clip_140/loops=false
-animation/clip_141/name=""
-animation/clip_141/start_frame=0
-animation/clip_141/end_frame=0
-animation/clip_141/loops=false
-animation/clip_142/name=""
-animation/clip_142/start_frame=0
-animation/clip_142/end_frame=0
-animation/clip_142/loops=false
-animation/clip_143/name=""
-animation/clip_143/start_frame=0
-animation/clip_143/end_frame=0
-animation/clip_143/loops=false
-animation/clip_144/name=""
-animation/clip_144/start_frame=0
-animation/clip_144/end_frame=0
-animation/clip_144/loops=false
-animation/clip_145/name=""
-animation/clip_145/start_frame=0
-animation/clip_145/end_frame=0
-animation/clip_145/loops=false
-animation/clip_146/name=""
-animation/clip_146/start_frame=0
-animation/clip_146/end_frame=0
-animation/clip_146/loops=false
-animation/clip_147/name=""
-animation/clip_147/start_frame=0
-animation/clip_147/end_frame=0
-animation/clip_147/loops=false
-animation/clip_148/name=""
-animation/clip_148/start_frame=0
-animation/clip_148/end_frame=0
-animation/clip_148/loops=false
-animation/clip_149/name=""
-animation/clip_149/start_frame=0
-animation/clip_149/end_frame=0
-animation/clip_149/loops=false
-animation/clip_150/name=""
-animation/clip_150/start_frame=0
-animation/clip_150/end_frame=0
-animation/clip_150/loops=false
-animation/clip_151/name=""
-animation/clip_151/start_frame=0
-animation/clip_151/end_frame=0
-animation/clip_151/loops=false
-animation/clip_152/name=""
-animation/clip_152/start_frame=0
-animation/clip_152/end_frame=0
-animation/clip_152/loops=false
-animation/clip_153/name=""
-animation/clip_153/start_frame=0
-animation/clip_153/end_frame=0
-animation/clip_153/loops=false
-animation/clip_154/name=""
-animation/clip_154/start_frame=0
-animation/clip_154/end_frame=0
-animation/clip_154/loops=false
-animation/clip_155/name=""
-animation/clip_155/start_frame=0
-animation/clip_155/end_frame=0
-animation/clip_155/loops=false
-animation/clip_156/name=""
-animation/clip_156/start_frame=0
-animation/clip_156/end_frame=0
-animation/clip_156/loops=false
-animation/clip_157/name=""
-animation/clip_157/start_frame=0
-animation/clip_157/end_frame=0
-animation/clip_157/loops=false
-animation/clip_158/name=""
-animation/clip_158/start_frame=0
-animation/clip_158/end_frame=0
-animation/clip_158/loops=false
-animation/clip_159/name=""
-animation/clip_159/start_frame=0
-animation/clip_159/end_frame=0
-animation/clip_159/loops=false
-animation/clip_160/name=""
-animation/clip_160/start_frame=0
-animation/clip_160/end_frame=0
-animation/clip_160/loops=false
-animation/clip_161/name=""
-animation/clip_161/start_frame=0
-animation/clip_161/end_frame=0
-animation/clip_161/loops=false
-animation/clip_162/name=""
-animation/clip_162/start_frame=0
-animation/clip_162/end_frame=0
-animation/clip_162/loops=false
-animation/clip_163/name=""
-animation/clip_163/start_frame=0
-animation/clip_163/end_frame=0
-animation/clip_163/loops=false
-animation/clip_164/name=""
-animation/clip_164/start_frame=0
-animation/clip_164/end_frame=0
-animation/clip_164/loops=false
-animation/clip_165/name=""
-animation/clip_165/start_frame=0
-animation/clip_165/end_frame=0
-animation/clip_165/loops=false
-animation/clip_166/name=""
-animation/clip_166/start_frame=0
-animation/clip_166/end_frame=0
-animation/clip_166/loops=false
-animation/clip_167/name=""
-animation/clip_167/start_frame=0
-animation/clip_167/end_frame=0
-animation/clip_167/loops=false
-animation/clip_168/name=""
-animation/clip_168/start_frame=0
-animation/clip_168/end_frame=0
-animation/clip_168/loops=false
-animation/clip_169/name=""
-animation/clip_169/start_frame=0
-animation/clip_169/end_frame=0
-animation/clip_169/loops=false
-animation/clip_170/name=""
-animation/clip_170/start_frame=0
-animation/clip_170/end_frame=0
-animation/clip_170/loops=false
-animation/clip_171/name=""
-animation/clip_171/start_frame=0
-animation/clip_171/end_frame=0
-animation/clip_171/loops=false
-animation/clip_172/name=""
-animation/clip_172/start_frame=0
-animation/clip_172/end_frame=0
-animation/clip_172/loops=false
-animation/clip_173/name=""
-animation/clip_173/start_frame=0
-animation/clip_173/end_frame=0
-animation/clip_173/loops=false
-animation/clip_174/name=""
-animation/clip_174/start_frame=0
-animation/clip_174/end_frame=0
-animation/clip_174/loops=false
-animation/clip_175/name=""
-animation/clip_175/start_frame=0
-animation/clip_175/end_frame=0
-animation/clip_175/loops=false
-animation/clip_176/name=""
-animation/clip_176/start_frame=0
-animation/clip_176/end_frame=0
-animation/clip_176/loops=false
-animation/clip_177/name=""
-animation/clip_177/start_frame=0
-animation/clip_177/end_frame=0
-animation/clip_177/loops=false
-animation/clip_178/name=""
-animation/clip_178/start_frame=0
-animation/clip_178/end_frame=0
-animation/clip_178/loops=false
-animation/clip_179/name=""
-animation/clip_179/start_frame=0
-animation/clip_179/end_frame=0
-animation/clip_179/loops=false
-animation/clip_180/name=""
-animation/clip_180/start_frame=0
-animation/clip_180/end_frame=0
-animation/clip_180/loops=false
-animation/clip_181/name=""
-animation/clip_181/start_frame=0
-animation/clip_181/end_frame=0
-animation/clip_181/loops=false
-animation/clip_182/name=""
-animation/clip_182/start_frame=0
-animation/clip_182/end_frame=0
-animation/clip_182/loops=false
-animation/clip_183/name=""
-animation/clip_183/start_frame=0
-animation/clip_183/end_frame=0
-animation/clip_183/loops=false
-animation/clip_184/name=""
-animation/clip_184/start_frame=0
-animation/clip_184/end_frame=0
-animation/clip_184/loops=false
-animation/clip_185/name=""
-animation/clip_185/start_frame=0
-animation/clip_185/end_frame=0
-animation/clip_185/loops=false
-animation/clip_186/name=""
-animation/clip_186/start_frame=0
-animation/clip_186/end_frame=0
-animation/clip_186/loops=false
-animation/clip_187/name=""
-animation/clip_187/start_frame=0
-animation/clip_187/end_frame=0
-animation/clip_187/loops=false
-animation/clip_188/name=""
-animation/clip_188/start_frame=0
-animation/clip_188/end_frame=0
-animation/clip_188/loops=false
-animation/clip_189/name=""
-animation/clip_189/start_frame=0
-animation/clip_189/end_frame=0
-animation/clip_189/loops=false
-animation/clip_190/name=""
-animation/clip_190/start_frame=0
-animation/clip_190/end_frame=0
-animation/clip_190/loops=false
-animation/clip_191/name=""
-animation/clip_191/start_frame=0
-animation/clip_191/end_frame=0
-animation/clip_191/loops=false
-animation/clip_192/name=""
-animation/clip_192/start_frame=0
-animation/clip_192/end_frame=0
-animation/clip_192/loops=false
-animation/clip_193/name=""
-animation/clip_193/start_frame=0
-animation/clip_193/end_frame=0
-animation/clip_193/loops=false
-animation/clip_194/name=""
-animation/clip_194/start_frame=0
-animation/clip_194/end_frame=0
-animation/clip_194/loops=false
-animation/clip_195/name=""
-animation/clip_195/start_frame=0
-animation/clip_195/end_frame=0
-animation/clip_195/loops=false
-animation/clip_196/name=""
-animation/clip_196/start_frame=0
-animation/clip_196/end_frame=0
-animation/clip_196/loops=false
-animation/clip_197/name=""
-animation/clip_197/start_frame=0
-animation/clip_197/end_frame=0
-animation/clip_197/loops=false
-animation/clip_198/name=""
-animation/clip_198/start_frame=0
-animation/clip_198/end_frame=0
-animation/clip_198/loops=false
-animation/clip_199/name=""
-animation/clip_199/start_frame=0
-animation/clip_199/end_frame=0
-animation/clip_199/loops=false
-animation/clip_200/name=""
-animation/clip_200/start_frame=0
-animation/clip_200/end_frame=0
-animation/clip_200/loops=false
-animation/clip_201/name=""
-animation/clip_201/start_frame=0
-animation/clip_201/end_frame=0
-animation/clip_201/loops=false
-animation/clip_202/name=""
-animation/clip_202/start_frame=0
-animation/clip_202/end_frame=0
-animation/clip_202/loops=false
-animation/clip_203/name=""
-animation/clip_203/start_frame=0
-animation/clip_203/end_frame=0
-animation/clip_203/loops=false
-animation/clip_204/name=""
-animation/clip_204/start_frame=0
-animation/clip_204/end_frame=0
-animation/clip_204/loops=false
-animation/clip_205/name=""
-animation/clip_205/start_frame=0
-animation/clip_205/end_frame=0
-animation/clip_205/loops=false
-animation/clip_206/name=""
-animation/clip_206/start_frame=0
-animation/clip_206/end_frame=0
-animation/clip_206/loops=false
-animation/clip_207/name=""
-animation/clip_207/start_frame=0
-animation/clip_207/end_frame=0
-animation/clip_207/loops=false
-animation/clip_208/name=""
-animation/clip_208/start_frame=0
-animation/clip_208/end_frame=0
-animation/clip_208/loops=false
-animation/clip_209/name=""
-animation/clip_209/start_frame=0
-animation/clip_209/end_frame=0
-animation/clip_209/loops=false
-animation/clip_210/name=""
-animation/clip_210/start_frame=0
-animation/clip_210/end_frame=0
-animation/clip_210/loops=false
-animation/clip_211/name=""
-animation/clip_211/start_frame=0
-animation/clip_211/end_frame=0
-animation/clip_211/loops=false
-animation/clip_212/name=""
-animation/clip_212/start_frame=0
-animation/clip_212/end_frame=0
-animation/clip_212/loops=false
-animation/clip_213/name=""
-animation/clip_213/start_frame=0
-animation/clip_213/end_frame=0
-animation/clip_213/loops=false
-animation/clip_214/name=""
-animation/clip_214/start_frame=0
-animation/clip_214/end_frame=0
-animation/clip_214/loops=false
-animation/clip_215/name=""
-animation/clip_215/start_frame=0
-animation/clip_215/end_frame=0
-animation/clip_215/loops=false
-animation/clip_216/name=""
-animation/clip_216/start_frame=0
-animation/clip_216/end_frame=0
-animation/clip_216/loops=false
-animation/clip_217/name=""
-animation/clip_217/start_frame=0
-animation/clip_217/end_frame=0
-animation/clip_217/loops=false
-animation/clip_218/name=""
-animation/clip_218/start_frame=0
-animation/clip_218/end_frame=0
-animation/clip_218/loops=false
-animation/clip_219/name=""
-animation/clip_219/start_frame=0
-animation/clip_219/end_frame=0
-animation/clip_219/loops=false
-animation/clip_220/name=""
-animation/clip_220/start_frame=0
-animation/clip_220/end_frame=0
-animation/clip_220/loops=false
-animation/clip_221/name=""
-animation/clip_221/start_frame=0
-animation/clip_221/end_frame=0
-animation/clip_221/loops=false
-animation/clip_222/name=""
-animation/clip_222/start_frame=0
-animation/clip_222/end_frame=0
-animation/clip_222/loops=false
-animation/clip_223/name=""
-animation/clip_223/start_frame=0
-animation/clip_223/end_frame=0
-animation/clip_223/loops=false
-animation/clip_224/name=""
-animation/clip_224/start_frame=0
-animation/clip_224/end_frame=0
-animation/clip_224/loops=false
-animation/clip_225/name=""
-animation/clip_225/start_frame=0
-animation/clip_225/end_frame=0
-animation/clip_225/loops=false
-animation/clip_226/name=""
-animation/clip_226/start_frame=0
-animation/clip_226/end_frame=0
-animation/clip_226/loops=false
-animation/clip_227/name=""
-animation/clip_227/start_frame=0
-animation/clip_227/end_frame=0
-animation/clip_227/loops=false
-animation/clip_228/name=""
-animation/clip_228/start_frame=0
-animation/clip_228/end_frame=0
-animation/clip_228/loops=false
-animation/clip_229/name=""
-animation/clip_229/start_frame=0
-animation/clip_229/end_frame=0
-animation/clip_229/loops=false
-animation/clip_230/name=""
-animation/clip_230/start_frame=0
-animation/clip_230/end_frame=0
-animation/clip_230/loops=false
-animation/clip_231/name=""
-animation/clip_231/start_frame=0
-animation/clip_231/end_frame=0
-animation/clip_231/loops=false
-animation/clip_232/name=""
-animation/clip_232/start_frame=0
-animation/clip_232/end_frame=0
-animation/clip_232/loops=false
-animation/clip_233/name=""
-animation/clip_233/start_frame=0
-animation/clip_233/end_frame=0
-animation/clip_233/loops=false
-animation/clip_234/name=""
-animation/clip_234/start_frame=0
-animation/clip_234/end_frame=0
-animation/clip_234/loops=false
-animation/clip_235/name=""
-animation/clip_235/start_frame=0
-animation/clip_235/end_frame=0
-animation/clip_235/loops=false
-animation/clip_236/name=""
-animation/clip_236/start_frame=0
-animation/clip_236/end_frame=0
-animation/clip_236/loops=false
-animation/clip_237/name=""
-animation/clip_237/start_frame=0
-animation/clip_237/end_frame=0
-animation/clip_237/loops=false
-animation/clip_238/name=""
-animation/clip_238/start_frame=0
-animation/clip_238/end_frame=0
-animation/clip_238/loops=false
-animation/clip_239/name=""
-animation/clip_239/start_frame=0
-animation/clip_239/end_frame=0
-animation/clip_239/loops=false
-animation/clip_240/name=""
-animation/clip_240/start_frame=0
-animation/clip_240/end_frame=0
-animation/clip_240/loops=false
-animation/clip_241/name=""
-animation/clip_241/start_frame=0
-animation/clip_241/end_frame=0
-animation/clip_241/loops=false
-animation/clip_242/name=""
-animation/clip_242/start_frame=0
-animation/clip_242/end_frame=0
-animation/clip_242/loops=false
-animation/clip_243/name=""
-animation/clip_243/start_frame=0
-animation/clip_243/end_frame=0
-animation/clip_243/loops=false
-animation/clip_244/name=""
-animation/clip_244/start_frame=0
-animation/clip_244/end_frame=0
-animation/clip_244/loops=false
-animation/clip_245/name=""
-animation/clip_245/start_frame=0
-animation/clip_245/end_frame=0
-animation/clip_245/loops=false
-animation/clip_246/name=""
-animation/clip_246/start_frame=0
-animation/clip_246/end_frame=0
-animation/clip_246/loops=false
-animation/clip_247/name=""
-animation/clip_247/start_frame=0
-animation/clip_247/end_frame=0
-animation/clip_247/loops=false
-animation/clip_248/name=""
-animation/clip_248/start_frame=0
-animation/clip_248/end_frame=0
-animation/clip_248/loops=false
-animation/clip_249/name=""
-animation/clip_249/start_frame=0
-animation/clip_249/end_frame=0
-animation/clip_249/loops=false
-animation/clip_250/name=""
-animation/clip_250/start_frame=0
-animation/clip_250/end_frame=0
-animation/clip_250/loops=false
-animation/clip_251/name=""
-animation/clip_251/start_frame=0
-animation/clip_251/end_frame=0
-animation/clip_251/loops=false
-animation/clip_252/name=""
-animation/clip_252/start_frame=0
-animation/clip_252/end_frame=0
-animation/clip_252/loops=false
-animation/clip_253/name=""
-animation/clip_253/start_frame=0
-animation/clip_253/end_frame=0
-animation/clip_253/loops=false
-animation/clip_254/name=""
-animation/clip_254/start_frame=0
-animation/clip_254/end_frame=0
-animation/clip_254/loops=false
-animation/clip_255/name=""
-animation/clip_255/start_frame=0
-animation/clip_255/end_frame=0
-animation/clip_255/loops=false
-animation/clip_256/name=""
-animation/clip_256/start_frame=0
-animation/clip_256/end_frame=0
-animation/clip_256/loops=false
diff --git a/project.godot b/project.godot
index 11f4819..4fa3d6c 100644
--- a/project.godot
+++ b/project.godot
@@ -68,7 +68,7 @@ _global_script_class_icons={
[application]
-config/name="snub2"
+config/name="snub"
run/main_scene="res://world.tscn"
config/icon="res://icon.png"
@@ -76,6 +76,12 @@ config/icon="res://icon.png"
enabled=PoolStringArray( "res://addons/voxel-core/plugin.cfg" )
+[gui]
+
+theme/use_hidpi=true
+theme/custom="res://themes/DarkTheme/Dark.theme"
+theme/custom_font="res://themes/font.tres"
+
[input]
movement_forward={
@@ -164,4 +170,7 @@ common/enable_pause_aware_picking=true
[rendering]
+quality/subsurface_scattering/quality=2
+quality/filters/msaa=4
+quality/filters/use_fxaa=true
environment/default_environment="res://default_env.tres"
diff --git a/scenes/gui.tscn b/scenes/gui.tscn
index cde9dce..f6588d9 100644
--- a/scenes/gui.tscn
+++ b/scenes/gui.tscn
@@ -1,55 +1,446 @@
-[gd_scene load_steps=3 format=2]
+[gd_scene load_steps=10 format=2]
[ext_resource path="res://scripts/gui.gd" type="Script" id=1]
-[ext_resource path="res://scripts/debug.gd" type="Script" id=2]
+[ext_resource path="res://themes/DarkTheme/Dark.theme" type="Theme" id=2]
+[ext_resource path="res://scripts/gui_picker.gd" type="Script" id=3]
+[ext_resource path="res://scenes/gui/gui_turret.tscn" type="PackedScene" id=4]
+[ext_resource path="res://scripts/gui_turret.gd" type="Script" id=5]
+[ext_resource path="res://scripts/gui_bottom_bar.gd" type="Script" id=6]
+[ext_resource path="res://scripts/gui_top_bar.gd" type="Script" id=7]
+
+[sub_resource type="OpenSimplexNoise" id=1]
+seed = -7
+
+[sub_resource type="NoiseTexture" id=2]
+width = 100
+height = 100
+seamless = true
+noise = SubResource( 1 )
[node name="gui" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
+theme = ExtResource( 2 )
+script = ExtResource( 1 )
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="center_dot" type="ColorRect" parent="."]
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+margin_left = -1.0
+margin_top = -1.0
+margin_right = 1.0
+margin_bottom = 1.0
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="top_bar" type="Control" parent="."]
+anchor_right = 1.0
+anchor_bottom = 1.0
+rect_min_size = Vector2( 0, 40 )
+mouse_filter = 2
+script = ExtResource( 7 )
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="panel" type="Panel" parent="top_bar"]
+anchor_right = 1.0
+margin_bottom = 40.0
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="resources" type="Control" parent="top_bar/panel"]
+anchor_right = 0.5
+anchor_bottom = 1.0
+margin_right = -100.0
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="HBoxContainer" type="HBoxContainer" parent="top_bar/panel/resources"]
+margin_right = 40.0
+margin_bottom = 40.0
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="cash_label" type="Label" parent="top_bar/panel/resources/HBoxContainer"]
+margin_top = 7.0
+margin_right = 76.4
+margin_bottom = 31.4
+text = "Resources:"
+valign = 1
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="T" type="Label" parent="top_bar/panel/resources/HBoxContainer"]
+margin_left = 79.0
+margin_top = 7.0
+margin_right = 113.4
+margin_bottom = 31.4
+text = "500T"
+valign = 1
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="k" type="Label" parent="top_bar/panel/resources/HBoxContainer"]
+margin_left = 116.0
+margin_top = 7.0
+margin_right = 136.4
+margin_bottom = 31.4
+custom_colors/font_color = Color( 0.588235, 0, 1, 1 )
+text = "0k"
+valign = 1
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="a" type="Label" parent="top_bar/panel/resources/HBoxContainer"]
+margin_left = 139.0
+margin_top = 7.0
+margin_right = 159.4
+margin_bottom = 31.4
+custom_colors/font_color = Color( 1, 0, 0, 1 )
+text = "0a"
+valign = 1
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="d" type="Label" parent="top_bar/panel/resources/HBoxContainer"]
+margin_left = 162.0
+margin_top = 7.0
+margin_right = 182.4
+margin_bottom = 31.4
+custom_colors/font_color = Color( 0, 0.203922, 1, 1 )
+text = "0d"
+valign = 1
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="s" type="Label" parent="top_bar/panel/resources/HBoxContainer"]
+margin_left = 185.0
+margin_top = 7.0
+margin_right = 205.4
+margin_bottom = 31.4
+custom_colors/font_color = Color( 1, 0.619608, 0, 1 )
+text = "0s"
+valign = 1
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="editor_button" type="Button" parent="top_bar/panel"]
+anchor_left = 1.0
+anchor_right = 1.0
+anchor_bottom = 1.0
+margin_left = -60.0
+margin_top = 5.0
+margin_right = -5.0
+margin_bottom = -5.0
+grow_horizontal = 0
+text = "Editor"
__meta__ = {
"_edit_use_anchors_": false
}
-[node name="Panel" type="Panel" parent="."]
+[node name="wave_label" type="Label" parent="top_bar/panel"]
+anchor_left = 0.5
+anchor_right = 0.5
+anchor_bottom = 1.0
+margin_top = 5.0
+margin_right = -10.0
+margin_bottom = -5.0
+grow_horizontal = 0
+text = "Wave 3/10"
+align = 1
+valign = 1
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="wave_button" type="Button" parent="top_bar/panel"]
+anchor_left = 0.5
+anchor_right = 0.5
+anchor_bottom = 1.0
margin_left = 10.0
-margin_top = 11.0
-margin_right = 133.0
-margin_bottom = 124.0
-script = ExtResource( 2 )
+margin_top = 5.0
+margin_right = 81.0
+margin_bottom = -5.0
+text = "Next Wave"
+
+[node name="bottom_bar" type="Control" parent="."]
+anchor_right = 1.0
+anchor_bottom = 1.0
+mouse_filter = 2
+theme = ExtResource( 2 )
+script = ExtResource( 6 )
+__meta__ = {
+"_edit_use_anchors_": false
+}
-[node name="Button" type="Button" parent="Panel"]
-margin_left = 8.0
-margin_top = 4.0
-margin_right = 98.0
-margin_bottom = 37.0
-text = "spawn"
+[node name="voxels" type="Panel" parent="bottom_bar"]
+anchor_top = 1.0
+anchor_right = 1.0
+anchor_bottom = 1.0
+margin_top = -270.0
+margin_bottom = -220.0
+script = ExtResource( 3 )
+__meta__ = {
+"_edit_use_anchors_": false
+}
-[node name="Button2" type="Button" parent="Panel"]
-margin_left = 5.0
-margin_top = 57.0
-margin_right = 80.0
-margin_bottom = 93.0
-text = "compute path"
+[node name="ScrollContainer" type="ScrollContainer" parent="bottom_bar/voxels"]
+anchor_right = 1.0
+anchor_bottom = 1.0
+scroll_vertical_enabled = false
__meta__ = {
"_edit_use_anchors_": false
}
-[node name="Panel2" type="Panel" parent="."]
-margin_left = 21.0
-margin_top = 544.0
+[node name="Hbox" type="HBoxContainer" parent="bottom_bar/voxels/ScrollContainer"]
margin_right = 101.0
-margin_bottom = 573.0
-script = ExtResource( 1 )
+margin_bottom = 50.0
+custom_constants/separation = 1
+alignment = 1
+__meta__ = {
+"_edit_use_anchors_": false
+}
-[node name="Label" type="Label" parent="Panel2"]
-margin_left = 6.0
-margin_top = 6.0
-margin_right = 55.0
-margin_bottom = 20.0
-text = "aawfawf"
+[node name="0" type="TextureButton" parent="bottom_bar/voxels/ScrollContainer/Hbox"]
+margin_right = 50.0
+margin_bottom = 50.0
+rect_min_size = Vector2( 50, 50 )
+rect_pivot_offset = Vector2( 25, 25 )
+size_flags_horizontal = 9
+script = ExtResource( 5 )
__meta__ = {
"_edit_use_anchors_": false
}
-[connection signal="button_down" from="Panel/Button" to="Panel" method="_on_Button_button_down"]
-[connection signal="button_down" from="Panel/Button2" to="Panel" method="_on_Button2_button_down"]
+[node name="TextureRect" type="ColorRect" parent="bottom_bar/voxels/ScrollContainer/Hbox/0"]
+margin_right = 50.0
+margin_bottom = 50.0
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="1" type="TextureButton" parent="bottom_bar/voxels/ScrollContainer/Hbox"]
+margin_left = 51.0
+margin_right = 101.0
+margin_bottom = 50.0
+rect_min_size = Vector2( 50, 50 )
+rect_pivot_offset = Vector2( 25, 25 )
+size_flags_horizontal = 9
+script = ExtResource( 5 )
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="TextureRect" type="ColorRect" parent="bottom_bar/voxels/ScrollContainer/Hbox/1"]
+margin_right = 50.0
+margin_bottom = 50.0
+color = Color( 0.619608, 0, 0.639216, 1 )
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="map_tools" type="Panel" parent="bottom_bar"]
+anchor_top = 1.0
+anchor_right = 1.0
+anchor_bottom = 1.0
+margin_top = -220.0
+margin_bottom = -120.0
+script = ExtResource( 3 )
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="ScrollContainer" type="ScrollContainer" parent="bottom_bar/map_tools"]
+anchor_right = 1.0
+anchor_bottom = 1.0
+scroll_vertical_enabled = false
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="Hbox" type="HBoxContainer" parent="bottom_bar/map_tools/ScrollContainer"]
+margin_right = 403.0
+margin_bottom = 100.0
+custom_constants/separation = 1
+alignment = 1
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="attach" type="TextureButton" parent="bottom_bar/map_tools/ScrollContainer/Hbox"]
+margin_right = 100.0
+margin_bottom = 100.0
+rect_min_size = Vector2( 100, 100 )
+rect_pivot_offset = Vector2( 50, 50 )
+size_flags_horizontal = 9
+script = ExtResource( 5 )
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="TextureRect" type="TextureRect" parent="bottom_bar/map_tools/ScrollContainer/Hbox/attach"]
+margin_right = 100.0
+margin_bottom = 100.0
+texture = SubResource( 2 )
+flip_v = true
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="Label" type="Label" parent="bottom_bar/map_tools/ScrollContainer/Hbox/attach"]
+margin_left = 29.0
+margin_top = 5.0
+margin_right = 69.0
+margin_bottom = 19.0
+text = "attach"
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="start path" type="TextureButton" parent="bottom_bar/map_tools/ScrollContainer/Hbox"]
+margin_left = 101.0
+margin_right = 201.0
+margin_bottom = 100.0
+rect_min_size = Vector2( 100, 100 )
+rect_pivot_offset = Vector2( 50, 50 )
+size_flags_horizontal = 9
+script = ExtResource( 5 )
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="TextureRect" type="TextureRect" parent="bottom_bar/map_tools/ScrollContainer/Hbox/start path"]
+margin_right = 100.0
+margin_bottom = 100.0
+texture = SubResource( 2 )
+flip_v = true
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="Label" type="Label" parent="bottom_bar/map_tools/ScrollContainer/Hbox/start path"]
+margin_left = 29.0
+margin_top = 5.0
+margin_right = 69.0
+margin_bottom = 19.0
+text = "start path"
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="path" type="TextureButton" parent="bottom_bar/map_tools/ScrollContainer/Hbox"]
+margin_left = 202.0
+margin_right = 302.0
+margin_bottom = 100.0
+rect_min_size = Vector2( 100, 100 )
+rect_pivot_offset = Vector2( 50, 50 )
+size_flags_horizontal = 9
+script = ExtResource( 5 )
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="TextureRect" type="TextureRect" parent="bottom_bar/map_tools/ScrollContainer/Hbox/path"]
+margin_right = 100.0
+margin_bottom = 100.0
+texture = SubResource( 2 )
+flip_v = true
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="Label" type="Label" parent="bottom_bar/map_tools/ScrollContainer/Hbox/path"]
+margin_left = 29.0
+margin_top = 5.0
+margin_right = 69.0
+margin_bottom = 19.0
+text = "path"
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="end path" type="TextureButton" parent="bottom_bar/map_tools/ScrollContainer/Hbox"]
+margin_left = 303.0
+margin_right = 403.0
+margin_bottom = 100.0
+rect_min_size = Vector2( 100, 100 )
+rect_pivot_offset = Vector2( 50, 50 )
+size_flags_horizontal = 9
+script = ExtResource( 5 )
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="TextureRect" type="TextureRect" parent="bottom_bar/map_tools/ScrollContainer/Hbox/end path"]
+margin_right = 100.0
+margin_bottom = 100.0
+texture = SubResource( 2 )
+flip_v = true
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="Label" type="Label" parent="bottom_bar/map_tools/ScrollContainer/Hbox/end path"]
+margin_left = 29.0
+margin_top = 5.0
+margin_right = 69.0
+margin_bottom = 19.0
+text = "end path"
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="turrets" type="Panel" parent="bottom_bar"]
+anchor_top = 1.0
+anchor_right = 1.0
+anchor_bottom = 1.0
+margin_top = -120.0
+margin_bottom = 1.0
+script = ExtResource( 3 )
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="ScrollContainer" type="ScrollContainer" parent="bottom_bar/turrets"]
+anchor_right = 1.0
+anchor_bottom = 1.0
+follow_focus = true
+scroll_vertical_enabled = false
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="Hbox" type="HBoxContainer" parent="bottom_bar/turrets/ScrollContainer"]
+margin_right = 201.0
+margin_bottom = 120.0
+rect_min_size = Vector2( 0, 120 )
+custom_constants/separation = 1
+alignment = 1
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="gui_turret" parent="bottom_bar/turrets/ScrollContainer/Hbox" instance=ExtResource( 4 )]
+
+[node name="gui_turret2" parent="bottom_bar/turrets/ScrollContainer/Hbox" instance=ExtResource( 4 )]
+margin_left = 101.0
+margin_right = 201.0
+
+[connection signal="button_down" from="top_bar/panel/editor_button" to="top_bar" method="_on_editor_button_down"]
+[connection signal="pressed" from="top_bar/panel/wave_button" to="top_bar" method="_on_wave_button_pressed"]
diff --git a/scripts/bullet.gd b/scripts/bullet.gd
index 9b4434d..994d3d1 100644
--- a/scripts/bullet.gd
+++ b/scripts/bullet.gd
@@ -3,6 +3,8 @@ extends Spatial
var _enemies_holder
var shooter
+var damage = 1
+
var timer = 0
var time_life = 3
var speed = 7
@@ -10,7 +12,7 @@ var hit_something = false
func _ready():
_enemies_holder = get_tree().root.get_child(0).find_node("enemies")
- $Area.connect("body_entered", self, "collided")
+ var _err = $Area.connect("body_entered", self, "collided")
func _physics_process(delta):
var forward_dir = -global_transform.basis.z.normalized()
@@ -27,7 +29,7 @@ func collided(body):
if hit_something == false:
var groups = parent.get_groups()
if "enemies" in groups:
- _enemies_holder.damage(parent.name)
+ _enemies_holder.damage(parent.name, damage)
hit_something = true
queue_free()
diff --git a/scripts/debug.gd b/scripts/debug.gd
index 339eec7..b65bd79 100644
--- a/scripts/debug.gd
+++ b/scripts/debug.gd
@@ -5,9 +5,9 @@ var _path
var _enemies
func _ready():
- _path = get_tree().root.get_child(0).find_node("path")
- _player = get_tree().root.get_child(0).find_node("player")
- _enemies = get_tree().root.get_child(0).find_node("enemies")
+ _path = get_tree().root.get_child(0).get_node("path")
+ _player = get_tree().root.get_child(0).get_node("player")
+ _enemies = get_tree().root.get_child(0).get_node("enemies")
func _process(delta):
pass
@@ -16,7 +16,6 @@ func _process(delta):
func _on_Button_button_down():
_enemies.spawn()
-
func _on_Button2_button_down():
var res = _path.load_nodes()
_path.hide()
diff --git a/scripts/enemies.gd b/scripts/enemies.gd
index 08cc389..2144bdf 100644
--- a/scripts/enemies.gd
+++ b/scripts/enemies.gd
@@ -1,8 +1,11 @@
extends Node
+var _resources : Node
+
var _path
var _enemy_blue
var _dissolve_mat : ShaderMaterial
+var _enemy_mat : Material
var _fx_holder
var _fx_enemy_damage
@@ -12,11 +15,27 @@ var _shapes = {}
var serial_enemy = 0
var enemies = {}
+var colors = [
+ Color.red,
+ Color.purple,
+ Color.blue,
+ Color.mediumseagreen,
+ Color.green,
+ Color.greenyellow,
+ Color.yellow,
+ Color.orange,
+ Color.violet,
+ Color.indigo,
+]
+
func _ready():
- _fx_holder = get_tree().root.get_child(0).find_node("fx")
- _path = get_tree().root.get_child(0).find_node("path")
+ var root = get_tree().root.get_child(0)
+ _fx_holder = root.get_node("fx")
+ _path = root.get_node("path")
+ _resources = root.get_node("player").get_node("resources")
_dissolve_mat = load("res://shaders/dissolve_mat.tres")
+ _enemy_mat = load("res://models/shapes/Enemy.material")
_enemy_blue = load("res://scenes/enemy.tscn")
_fx_enemy_damage = load("res://scenes/fx/enemy_damage.tscn")
@@ -42,10 +61,13 @@ func spawn():
instance.name = str(serial_enemy)
var instance_model = _shapes[_shapes.keys()[randi() % _shapes.size()]].instance()
instance.add_child(instance_model)
+ instance_model.get_child(0).set_surface_material(0, _enemy_mat.duplicate())
+
var axis : Vector3 = Quat(Vector3(0, randf()*TAU, 0)) * Vector3.RIGHT
enemies[serial_enemy] = {
"cur": 0, "hp": 10, "rel": 0, "ops": instance_model.name,
- "axis": [axis.x, axis.y, axis.z] }
+ "axis": [axis.x, axis.y, axis.z]
+ }
serial_enemy += 1
func node_from_id (id):
@@ -87,18 +109,23 @@ func _physics_process(delta):
var axis = Vector3(enemy.axis[0], enemy.axis[1], enemy.axis[2])
child.transform.basis = child.transform.basis.rotated(axis, delta)
+
+ var mesh : MeshInstance = child.get_node(enemy.ops).get_child(0)
+ mesh.get_active_material(0).albedo_color = colors[enemy.hp-1]
for id in delist:
get_node(str(id)).queue_free()
enemies.erase(id)
-func damage(name):
+func damage(name, amt):
var id = int(name)
var enemy = enemies[id]
- enemies[id].hp -= 1
- fx_damage(name)
+ if enemy.hp > 0:
+ enemy.hp -= amt
+ _resources.add({ enemy.ops[0]: amt })
+ fx_damage(name)
func fx_damage(name):
var id = int(name)
@@ -114,4 +141,4 @@ func fx_damage(name):
var instance_model = _shapes[enemy["ops"]].instance()
instance.add_child(instance_model)
- instance.refresh_shader(_dissolve_mat.duplicate())
+ instance.refresh_shader(_dissolve_mat.duplicate(), colors[enemy.hp-1])
diff --git a/scripts/fx/fx_enemy_damage.gd b/scripts/fx/fx_enemy_damage.gd
index 48f4629..2ec1d96 100644
--- a/scripts/fx/fx_enemy_damage.gd
+++ b/scripts/fx/fx_enemy_damage.gd
@@ -1,7 +1,7 @@
extends Spatial
var timer = 0
-var timer_life = 0.5
+var timer_life = 1
var anim_size = 1
@@ -9,9 +9,10 @@ var _mesh : MeshInstance
var base
-func refresh_shader(mat):
+func refresh_shader(mat, color : Color):
_mesh = get_child(0).get_child(0)
_mesh.set_surface_material(0, mat)
+ _mesh.get_active_material(0).set_shader_param("albedo", color)
func refresh_basis():
base = transform.basis
diff --git a/scripts/gui.gd b/scripts/gui.gd
index bae4ffc..03a2e04 100644
--- a/scripts/gui.gd
+++ b/scripts/gui.gd
@@ -1,12 +1,23 @@
-extends Panel
+extends Control
-var _player
-var _label
+var player : Node
+var _in_editor : bool
-func _ready():
- _player = self.get_parent().get_parent().find_node("player")
- _label = self.find_node("Label")
+var bottom_bar : Control
+var top_bar : Control
+
+func _fetch ():
+ var root = get_tree().root.get_child(0)
+ player = root.get_node("player")
+
+ if bottom_bar == null: bottom_bar = get_node("bottom_bar")
+ if top_bar == null: top_bar = get_node("top_bar")
-func _process(delta):
- _label.text = str(_player.sel_map[_player.sel])
+func _ready():
+ _fetch()
+ bottom_bar.build()
+func refresh (in_editor : bool):
+ _fetch()
+ bottom_bar.refresh(in_editor)
+ top_bar.refresh(in_editor)
diff --git a/scripts/movement.gd b/scripts/movement.gd
index 0b7726d..587b338 100644
--- a/scripts/movement.gd
+++ b/scripts/movement.gd
@@ -1,209 +1,132 @@
extends KinematicBody
+var in_editor : bool = false
+
var vel = Vector3()
-var _mouse = Vector2()
-var sensitivity_mouse = 0.1
+var camera = Camera
-var _camera : Camera
+var _mouse = Vector2()
+var sensitivity_mouse = 10
-var _normal = Vector3.ZERO
-var _colliding = false
-var _colliding_group = []
-var _colliding_node
-var _collision_point
+var placer : Spatial
var _pivot
var _pivot_dist
-var _pivot_rot
-var _pivot_look
+var _orbit_timer
-var _world
+var _world : VoxelMesh
-var _turret : PackedScene
-var _turret_holder
-var _turret_blues = []
+var _gui : Control
-var _attach_point
-var _attach_point_holder
+var _turret_holder : Node
+var _attach_point_holder : Node
+var path_holder : Node
+var load_turrets : Node
+var ptr : Node
-var _path_start
-var _path
-var _path_end
-var _path_holder
+var _enemies : Node
-var sel = 0;
-var sel_map = [
- "turrets", "path start", "path", "path end", "attach point"
-]
+var sel = {
+ "type": "",
+ "name": ""
+}
func _ready():
- _camera = $Camera
+ camera = $camera
+ placer = $placer
- _world = self.get_parent().find_node("world")
- _turret_holder = self.get_parent().find_node("turrets")
- _path_holder = self.get_parent().find_node("path")
- _attach_point_holder = self.get_parent().find_node("attach")
+ var root = get_tree().root.get_child(0)
- _turret = load("res://scenes/turret.tscn")
- _path_start = load("res://scenes/path_start.tscn")
- _path = load("res://scenes/path.tscn")
- _path_end = load("res://scenes/path_end.tscn")
- _attach_point = load("res://scenes/attach_point.tscn")
+ path_holder = root.get_node("path")
+ _gui = root.get_node("gui")
+ _enemies = root.get_node("enemies")
+ ptr = root.find_node("pointer");
- load_turrets()
+ var saveload = root.get_node("saveload")
+ load_turrets = saveload.get_node("load_turrets")
- #_save()
- _load()
-
-func load_turrets():
- _turret_blues = []
- var dir = Directory.new()
- dir.open("res://models/turrets")
- dir.list_dir_begin(true)
- var turr = dir.get_next()
- while turr != "":
- if (turr.ends_with(".glb")):
- _turret_blues.append(load("res://models/turrets/" + turr))
- turr = dir.get_next()
-
-func get_map_state ():
- var state = {}
+ _gui.refresh(in_editor)
- state["voxels"] = []
- for pos in _world.get_voxels():
- var vox = { "pos": [pos.x, pos.y, pos.z], "id":_world.get_voxel_id(pos) }
- state["voxels"] += [vox]
+ refresh_path()
- state["path"] = []
- for node in _path_holder.get_children():
- var pos = node.transform.origin;
- var rot = node.transform.basis.get_rotation_quat();
- var pobj = {
- "pos": [pos.x, pos.y, pos.z],
- "rot": [rot.x, rot.y, rot.z, rot.w],
- "id": node.name
- }
- state["path"] += [pobj]
+func refresh_gui():
+ _gui.refresh(in_editor)
- state["attach"] = []
- for node in _attach_point_holder.get_children():
- var pos = node.transform.origin;
- var rot = node.transform.basis.get_rotation_quat();
- var pobj = {
- "pos": [pos.x, pos.y, pos.z],
- "rot": [rot.x, rot.y, rot.z, rot.w],
- "id": node.name
- }
- state["attach"] += [pobj]
-
- return state
-
-func set_map_state (state):
- _world.erase_voxels()
- for vox in state["voxels"]:
- var vecpos = Vector3(vox.pos[0], vox.pos[1], vox.pos[2]);
- _world.set_voxel(vecpos, vox.id)
- _world.update_mesh()
+func gui_editor_toggle_event ():
+ in_editor = !in_editor
+ _gui.refresh(in_editor)
+ refresh_path()
- clear_children(_path_holder)
- for pobj in state["path"]:
- var blue = _path
- if "start" in pobj.id:
- blue = _path_start
- if "end" in pobj.id:
- blue = _path_end
- var instance = blue.instance()
- _path_holder.add_child(instance)
- var vecpos = Vector3(pobj.pos[0], pobj.pos[1], pobj.pos[2]);
- instance.transform.origin = vecpos;
- var quat = Quat(pobj.rot[0], pobj.rot[1], pobj.rot[2], pobj.rot[3]);
- instance.transform.basis = Basis(quat);
+func gui_start_wave_event ():
+ refresh_path()
+ _enemies.spawn()
+ _gui.refresh(in_editor)
- clear_children(_attach_point_holder)
- for pobj in state["attach"]:
- var blue = _attach_point
- var instance = blue.instance()
- _attach_point_holder.add_child(instance)
- var vecpos = Vector3(pobj.pos[0], pobj.pos[1], pobj.pos[2]);
- instance.transform.origin = vecpos;
- var quat = Quat(pobj.rot[0], pobj.rot[1], pobj.rot[2], pobj.rot[3]);
- instance.transform.basis = Basis(quat);
-
-
-func _save():
- var save_game = File.new()
- save_game.open("user://map0.json", File.WRITE)
- save_game.store_string(to_json(get_map_state()))
- save_game.close()
- print("saved")
-
-func _load():
- var save_game = File.new()
- save_game.open("user://map0.json", File.READ)
- var raw = save_game.get_as_text()
- save_game.close()
-
- var state = parse_json(raw)
- set_map_state(state)
- print("loaded")
-
-func _process(delta):
- if Input.is_action_just_released("save"):
- _save()
- if Input.is_action_just_released("load"):
- _load()
-
-func clear_children (node):
- for n in node.get_children():
- node.remove_child(n)
- n.queue_free()
-
-func look_free (delta, m):
+func refresh_path():
+ if in_editor:
+ path_holder.show()
+ else:
+ var _res = path_holder.load_nodes()
+ path_holder.hide()
+
+func selected_event (sel_name, sel_type):
+ sel.name = sel_name
+ sel.type = sel_type
+ _gui.refresh(in_editor)
+
+ if sel_type == "turrets":
+ var info = load_turrets.info[sel.name]
+ var model = load_turrets.models[info.model_name]
+ var instance_model = model.instance()
+ instance_model.name = "preview"
+ ptr.add_child(instance_model)
+ elif sel_type != "":
+ ptr.get_node("base").visible = true
+
+func look_free (m):
self.transform.basis = self.transform.basis.rotated(Vector3.UP, m.x)
var rrrot = self.transform.basis.get_rotation_quat()
self.transform.basis = self.transform.basis.rotated(rrrot*Vector3.RIGHT, m.y)
-func look_orbit(delta, m):
+func look_orbit(m):
var diff : Vector3 = self.transform.origin - _pivot
+ _pivot_dist = diff.length()
var orbit : Basis = Transform.looking_at(diff, Vector3.UP).basis
orbit = orbit.rotated(Vector3.UP, m.x)
orbit = orbit.rotated(orbit.get_rotation_quat()*Vector3.RIGHT, -m.y)
- self.transform.basis = self.transform.basis.rotated(Vector3.UP, m.x)
- var rrrot = self.transform.basis.get_rotation_quat()
- self.transform.basis = self.transform.basis.rotated(rrrot*Vector3.RIGHT, m.y)
- var normdiff = diff.normalized()
self.transform.origin = _pivot - orbit.z * _pivot_dist
+
+ diff = self.transform.origin - _pivot
+ self.transform.basis = self.transform.basis.slerp( \
+ Transform.looking_at(-diff, Vector3.UP).basis, _orbit_timer)
+
func _move_input(delta):
- var dir = Vector3()
-
var m = _mouse
+ m *= delta
_mouse = Vector2()
-
- var orbiting = false
if Input.is_action_just_pressed("orbit"):
- if _colliding:
- _pivot = _collision_point
+ if placer.colliding:
+ _pivot = placer.collision_point
var diff : Vector3 = self.transform.origin - _pivot
- _pivot_rot = Transform.looking_at(diff, Vector3.UP).basis.get_rotation_quat()
_pivot_dist = diff.length()
- _pivot_look = Transform(Basis(), _collision_point)
+ _orbit_timer = 0
else: _pivot = null
+ Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
+
if Input.is_action_pressed("orbit"):
+ Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
if _pivot != null:
- orbiting = true
- look_orbit(delta, m)
+ _orbit_timer = min(1, _orbit_timer+delta * 2)
+ look_orbit(m)
else:
- look_free(delta, m)
-
- Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
-
- if Input.is_action_pressed("look"):
- look_free(delta, m)
+ look_free(m)
+ elif Input.is_action_pressed("look"):
+ look_free(m)
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
var input_movement_vector = Vector3()
@@ -221,7 +144,7 @@ func _move_input(delta):
input_movement_vector.y -= 1
input_movement_vector = input_movement_vector.normalized()
- dir = self.transform.basis.get_rotation_quat() * input_movement_vector
+ var dir : Vector3 = self.transform.basis.get_rotation_quat() * input_movement_vector
vel += dir * delta;
vel *= 0.8
@@ -230,164 +153,7 @@ func _move_input(delta):
if collision: vel = Vector3(0, 0, 0)
func _physics_process(delta):
- if Input.is_action_just_released("cycle_forward"):
- sel += 1
- if sel >= len(sel_map):
- sel = len(sel_map)-1
- if Input.is_action_just_released("cycle_backward"):
- sel -= 1
- if sel < 0:
- sel = 0
-
_move_input(delta)
- _pointer()
-
-func check_overlap_pointer():
- var ptr = self.get_parent().find_node("pointer");
-
- var overlap = false
- var space = get_world().direct_space_state
-
- var center = ptr.transform.origin + _normal*0.25
-
- var shape: = BoxShape.new()
- shape.extents = Vector3(0.24, 0.24, 0.24)
-
- var params: = PhysicsShapeQueryParameters.new()
- params.set_shape(shape)
- params.collision_mask = 3
- params.transform = Transform.IDENTITY
- params.transform.origin = center
-
- var result = space.intersect_shape(params)
- for body in result:
- if !body.collider.get_parent().is_in_group("attach"):
- overlap = true
- break
-
- for pos in _world.get_voxels():
- var wpos = pos * 0.5
- wpos += Vector3.ONE * (0.5 / 2)
- var dist = (wpos - center).length_squared()
- if dist < 0.1:
- overlap = true
- break
-
- for node in _path_holder.get_children():
- var pos = node.transform.origin
- var dist = (pos - center).length_squared()
- if dist < 0.1:
- overlap = true
- break
-
- return overlap
-
-func _inst_turret (pos, rot):
- var instance = _turret.instance()
- _turret_holder.add_child(instance)
- instance.transform.origin = pos;
- instance.transform.basis = Basis(rot);
- instance.refresh_normal()
- var instance_model = _turret_blues[0].instance()
- instance_model.name = "model"
- instance.add_child(instance_model)
- instance.refresh_model()
-
-func _inst_path_start (pos, rot):
- var instance = _path_start.instance()
- _path_holder.add_child(instance)
- instance.transform.origin = pos + _normal * 0.25;
- instance.transform.basis = Basis(rot);
-
-func _inst_path (pos, rot):
- var instance = _path.instance()
- _path_holder.add_child(instance)
- instance.transform.origin = pos + _normal * 0.25;
- instance.transform.basis = Basis(rot);
- instance.set_name("path")
- _colliding_node.transform.basis = Basis(rot);
-
-func _inst_path_end (pos, rot):
- var instance = _path_end.instance()
- _path_holder.add_child(instance)
- instance.transform.origin = pos + _normal * 0.25
- instance.transform.basis = Basis(rot);
-
-func _inst_attach (pos, rot):
- var instance = _attach_point.instance()
- _attach_point_holder.add_child(instance)
- instance.transform.origin = pos;
- instance.transform.basis = Basis(rot);
-
-func place (group, inst : FuncRef):
- var ptr = self.get_parent().find_node("pointer");
- if Input.is_action_just_pressed("use"):
- if _colliding && group in _colliding_group:
- if !check_overlap_pointer():
- inst.call_func(ptr.transform.origin, ptr.transform.basis.get_rotation_quat())
-
-func delete (group):
- if Input.is_action_just_pressed("cancel"):
- if _colliding && group in _colliding_group:
- _colliding_node.queue_free()
-
-func _pointer ():
- var ptr = self.get_parent().find_node("pointer");
-
- var space: PhysicsDirectSpaceState = get_world().direct_space_state as PhysicsDirectSpaceState
- var mouse2d = get_viewport().get_mouse_position()
- var from = _camera.project_ray_origin(mouse2d)
- var to = (from + _camera.project_ray_normal(mouse2d) * 5)
-
- ptr.transform.origin = to
-
- var mask = 1
- if sel in [1, 2, 3]: mask = 3
- var result = space.intersect_ray(from, to, [], mask)
- if result.size() > 0:
- ptr.get_child(0).visible = true
-
- _colliding = true
- _normal = result.normal;
- _collision_point = result.position
-
- var node = result.collider.get_parent()
- _colliding_node = node
- _colliding_group = node.get_groups()
-
- if ("voxels" in _colliding_group or "path" in _colliding_group):
- var cpos = result.position - _normal * (0.5 / 2)
- var _cursor_position = (cpos / 0.5).floor() * 0.5
- _cursor_position += Vector3.ONE * (0.5 / 2) + _normal * (0.5 / 2)
- _collision_point = _cursor_position
-
- if ("attach" in _colliding_group):
- _collision_point = node.global_transform.origin;
- _normal = (node.global_transform.basis.get_rotation_quat() * Vector3.UP).normalized();
-
- ptr.transform.basis = Basis(Utils.quat_look(_normal, Vector3.UP))
- ptr.transform.origin = _collision_point
- else:
- _colliding = false
- _colliding_group = []
- ptr.get_child(0).visible = false
-
- match sel:
- 0:
- place("attach", funcref(self, "_inst_turret"))
- delete("turret")
- 1:
- place("voxels", funcref(self, "_inst_path_start"))
- delete("path")
- 2:
- place("path", funcref(self, "_inst_path"))
- delete("path")
- 3:
- place("path", funcref(self, "_inst_path_end"))
- delete("path")
- 4:
- place("voxels", funcref(self, "_inst_attach"))
- delete("attach")
func _input(event):
if event is InputEventMouseMotion:
diff --git a/scripts/path.gd b/scripts/path.gd
index bd3b40f..f8c0fb7 100644
--- a/scripts/path.gd
+++ b/scripts/path.gd
@@ -8,9 +8,6 @@ const dirs = [
var nodes = []
-
-func _ready():
- pass # Replace with function body.
func next_node (node, dir):
var pos : Vector3 = node.transform.origin
@@ -59,13 +56,13 @@ func load_nodes ():
func hide ():
for child in get_children():
- var mesh = child.find_node("MeshInstance")
+ var mesh = child.get_node("MeshInstance")
mesh.visible = false
func show ():
for child in get_children():
- var mesh = child.find_node("MeshInstance")
- mesh.visible = false
+ var mesh = child.get_node("MeshInstance")
+ mesh.visible = true
# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta):
diff --git a/scripts/turret.gd b/scripts/turret.gd
index cc90dd4..9dce497 100644
--- a/scripts/turret.gd
+++ b/scripts/turret.gd
@@ -1,28 +1,30 @@
extends Spatial
-var _path
-var _enemies
-var _projectiles_holder
+var _path : Node
+var _enemies : Node
+var _projectiles_holder : Node
+var _enemies_holder : Node
-var _base
-var _gun
-var _shooting_point
-var _normal
+var _base : Spatial
+var _gun : Spatial
+var _shooting_point : Vector3
+var _normal : Vector3
var aim_mode = "first"
var _target = null
-var _range = 10
+var projectile : PackedScene
-var projectile
+var info : Dictionary
-var cooldown = 0.1
var cooldown_timer = 0
func _ready():
- _path = get_tree().root.get_child(0).find_node("path")
- _enemies = get_tree().root.get_child(0).find_node("enemies")
- _projectiles_holder = get_tree().root.get_child(0).find_node("projectiles")
+ var root = get_tree().root.get_child(0)
+ _path = root.get_node("path")
+ _enemies = root.get_node("enemies")
+ _projectiles_holder = root.get_node("projectiles")
+ _enemies_holder = root.find_node("enemies")
projectile = load("res://scenes/projectiles/bullet.tscn")
@@ -34,17 +36,20 @@ func refresh_model():
_base = get_node("model").find_node("pivot*").find_node("base*")
_gun = _base.find_node("gun*")
+func refresh_info(tinfo):
+ self.info = tinfo
+
func filter_in_range(set):
var filtered = []
for target in set:
var node = _enemies.node_from_id(target)
var dist = (node.transform.origin - _shooting_point).length_squared()
- if dist < _range*_range:
+ if dist < info.range*info.range:
filtered += [target]
return filtered
func filter_visible(set):
- var space: PhysicsDirectSpaceState = get_world().direct_space_state as PhysicsDirectSpaceState
+ var space: PhysicsDirectSpaceState = get_world().direct_space_state
var from = _shooting_point
var filtered = []
@@ -86,28 +91,76 @@ func _physics_process(delta):
var direction = (enemy.transform.origin - _shooting_point).normalized()
var proj_normal = direction - _normal.dot(direction) * _normal
- var base_rot = Transform().looking_at(proj_normal, _normal).basis.get_rotation_quat()
+ var base_rot : Quat = Transform().looking_at(proj_normal, _normal).basis.get_rotation_quat()
- var perp = proj_normal.cross(_normal).normalized()
+ var perp = -proj_normal.cross(_normal).normalized()
var proj_forward = direction - perp.dot(direction) * perp
- var gun_rot = Transform().looking_at(proj_forward, perp).basis.get_rotation_quat()
+ var gun_rot : Quat = Transform().looking_at(proj_forward, perp).basis.get_rotation_quat()
gun_rot = Quat(direction, PI/2) * gun_rot
+ gun_rot = gun_rot.normalized()
+ gun_rot = base_rot.inverse() * gun_rot
- _base.global_transform.basis = Basis(base_rot)
- _gun.global_transform.basis = Basis(gun_rot)
+ var base_basis = _base.global_transform.basis.get_rotation_quat()
+ var base_angle = base_basis.angle_to(base_rot)
+ if base_angle > 0.01:
+ var base_amt = (info.turn_speed * delta) / base_angle
+ base_amt = min(1, base_amt)
+ _base.global_transform.basis = Basis(base_basis.slerp(Basis(base_rot), base_amt))
+
+ var gun_basis = _gun.transform.basis.get_rotation_quat()
+ var gun_angle = gun_basis.angle_to(gun_rot)
+ if gun_angle > 0.01:
+ var gun_amt = (info.turn_speed * delta) / gun_angle
+ gun_amt = min(1, gun_amt)
+ _gun.transform.basis = Basis(gun_basis.slerp(Basis(gun_rot), gun_amt))
cooldown_timer += delta
- if cooldown_timer > cooldown:
- cooldown_timer -= cooldown
- shoot(direction)
+ if cooldown_timer > info.cooldown:
+ cooldown_timer -= info.cooldown
+ shoot()
+
+func spread (amt : int) -> Array:
+ var dirs = []
+ var width : int = ceil(sqrt(amt))
+ for i in amt:
+ var dir = _gun.global_transform.basis
+ var x = floor(i%width)-width/2+(width+1)%2*0.5
+ var y = floor(i/width)-floor(sqrt(amt)-1)/2
+ var spread = info.projectile.spread
+ dir = dir.rotated(_normal, deg2rad(x*spread))
+ dir = dir.rotated(_normal.cross(dir.z).normalized(), deg2rad(y*spread))
+ dirs.append(dir)
+ return dirs
-func shoot (dir):
- shoot_projectile(dir)
+func shoot ():
+ if info.projectile.amount > 1:
+ for dir in spread(info.projectile.amount):
+ match info.projectile.type:
+ "bullet": shoot_bullet(dir)
+ "ray": shoot_ray(dir)
+ else:
+ match info.projectile.type:
+ "bullet": shoot_bullet(_gun.global_transform.basis)
+ "ray": shoot_ray(_gun.global_transform.basis)
-func shoot_projectile (dir):
+func shoot_bullet (dir : Basis):
var instance = projectile.instance()
_projectiles_holder.add_child(instance)
- instance.transform = Transform().looking_at(dir, _normal)
- instance.transform.origin = _shooting_point + dir*0.3;
+ instance.transform.basis = dir
+ instance.transform.origin = _shooting_point - dir.z*0.3;
instance.shooter = self
+ instance.damage = info.damage
+ instance.speed = info.projectile.speed
+
+func shoot_ray (dir : Basis):
+ var space: PhysicsDirectSpaceState = get_world().direct_space_state
+ var from = _shooting_point
+ var to = _shooting_point - dir.z*info.range;
+
+ var result = space.intersect_ray(from, to, _path.nodes, 1)
+ if result.size() > 0:
+ var parent = result.collider.get_parent()
+ var groups = parent.get_groups()
+ if "enemies" in groups:
+ _enemies_holder.damage(parent.name, info.damage)
diff --git a/shaders/dissolve_mat.tres b/shaders/dissolve_mat.tres
index c8e2103..9ba21a7 100644
--- a/shaders/dissolve_mat.tres
+++ b/shaders/dissolve_mat.tres
@@ -4,7 +4,7 @@
code = "shader_type spatial;
render_mode cull_disabled;
-uniform sampler2D texture;
+uniform vec4 albedo: hint_color = vec4(1., 1., 1., 1.);
uniform sampler2D blendTexture;
uniform sampler2D noiseTexture;
@@ -36,7 +36,6 @@ void vertex(){
void fragment() {
vec3 position = world_pos;
- vec4 text = texture(texture, UV);
vec4 blend = texture(blendTexture, UV * blendUVScale);
vec2 st = UV;
@@ -57,11 +56,11 @@ void fragment() {
float borderPart = upperBorder - bottomBorder;
vec4 color = mix(blend, borderColor, upperBorder);
- color = mix(color, text, bottomBorder);
+ color = mix(color, albedo, bottomBorder);
ALBEDO = color.rgb;
- if (!FRONT_FACING) {
+ if (!FRONT_FACING && false) {
ALBEDO = borderColor.rgb;
NORMAL = VIEW;
}
@@ -88,6 +87,7 @@ noise = SubResource( 5 )
[resource]
resource_local_to_scene = true
shader = SubResource( 1 )
+shader_param/albedo = Color( 1, 1, 1, 1 )
shader_param/offset = 0.369
shader_param/up = true
shader_param/borderColor = Color( 1, 1, 1, 0 )
diff --git a/world.tscn b/world.tscn
index de0c7c6..bf0a8ec 100644
--- a/world.tscn
+++ b/world.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=14 format=2]
+[gd_scene load_steps=20 format=2]
[ext_resource path="res://scripts/movement.gd" type="Script" id=1]
[ext_resource path="res://scripts/enemies.gd" type="Script" id=2]
@@ -7,6 +7,12 @@
[ext_resource path="res://models/pointer.obj" type="ArrayMesh" id=5]
[ext_resource path="res://scenes/gui.tscn" type="PackedScene" id=6]
[ext_resource path="res://scripts/path.gd" type="Script" id=7]
+[ext_resource path="res://scripts/load_map.gd" type="Script" id=8]
+[ext_resource path="res://scripts/load_turrets.gd" type="Script" id=9]
+[ext_resource path="res://scripts/load_scenes.gd" type="Script" id=10]
+[ext_resource path="res://scripts/saveload.gd" type="Script" id=11]
+[ext_resource path="res://scripts/resources.gd" type="Script" id=12]
+[ext_resource path="res://scripts/placer.gd" type="Script" id=13]
[sub_resource type="SphereShape" id=1]
@@ -49,8 +55,25 @@ data = PoolVector3Array( 0, 0.5, 0.5, 0, 0.5, 0, 0.5, 0.5, 0.5, 0, 0.5, 0, 0.5,
[node name="sun" type="DirectionalLight" parent="."]
transform = Transform( 0.782977, -0.605334, 0.14324, 0, 0.230271, 0.973127, -0.62205, -0.761936, 0.180297, 0, 0, 0 )
+light_color = Color( 1, 0.984314, 0.94902, 1 )
light_energy = 2.533
+light_bake_mode = 0
shadow_enabled = true
+directional_shadow_blend_splits = true
+directional_shadow_normal_bias = 0.209
+directional_shadow_max_distance = 10.0
+
+[node name="saveload" type="Node" parent="."]
+script = ExtResource( 11 )
+
+[node name="load_turrets" type="Node" parent="saveload"]
+script = ExtResource( 9 )
+
+[node name="load_scenes" type="Node" parent="saveload"]
+script = ExtResource( 10 )
+
+[node name="saveload_map" type="Node" parent="saveload"]
+script = ExtResource( 8 )
[node name="player" type="KinematicBody" parent="."]
script = ExtResource( 1 )
@@ -59,14 +82,22 @@ script = ExtResource( 1 )
shape = SubResource( 1 )
disabled = true
-[node name="Camera" type="Camera" parent="player"]
+[node name="camera" type="Camera" parent="player"]
current = true
fov = 90.9
-far = 4482.9
+near = 0.01
+far = 2000.0
+
+[node name="resources" type="Node" parent="player"]
+script = ExtResource( 12 )
+
+[node name="placer" type="Spatial" parent="player"]
+script = ExtResource( 13 )
[node name="pointer" type="Spatial" parent="."]
-[node name="MeshInstance" type="MeshInstance" parent="pointer"]
+[node name="base" type="MeshInstance" parent="pointer"]
+visible = false
mesh = ExtResource( 5 )
material/0 = null