Compare commits
No commits in common. "2ff77e8f2a754bed1ae7b2f93b399e6fda9ae8ca" and "fad0d8614e520885ccf15ee79986d38c46c0ba04" have entirely different histories.
2ff77e8f2a
...
fad0d8614e
|
@ -24,12 +24,11 @@
|
||||||
inkscape:pagecheckerboard="0"
|
inkscape:pagecheckerboard="0"
|
||||||
inkscape:deskcolor="#d1d1d1"
|
inkscape:deskcolor="#d1d1d1"
|
||||||
inkscape:document-units="mm"
|
inkscape:document-units="mm"
|
||||||
inkscape:zoom="0.93240622"
|
inkscape:zoom="0.92747768"
|
||||||
inkscape:cx="1521.8689"
|
inkscape:cx="1998.9699"
|
||||||
inkscape:cy="440.25875"
|
inkscape:cy="923.47236"
|
||||||
inkscape:current-layer="layer1"
|
inkscape:current-layer="layer1"
|
||||||
showgrid="false"
|
showgrid="false"><inkscape:page
|
||||||
inkscape:export-bgcolor="#ffffffff"><inkscape:page
|
|
||||||
x="0"
|
x="0"
|
||||||
y="0"
|
y="0"
|
||||||
width="297"
|
width="297"
|
||||||
|
@ -250,396 +249,403 @@
|
||||||
style="font-size:16px;line-height:1;font-family:'IBM Plex Sans';-inkscape-font-specification:'IBM Plex Sans';text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect1);shape-padding:31.8441;display:inline;fill:#1b1b1b;stroke-width:3.00094;stroke-linejoin:round"><tspan
|
style="font-size:16px;line-height:1;font-family:'IBM Plex Sans';-inkscape-font-specification:'IBM Plex Sans';text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect1);shape-padding:31.8441;display:inline;fill:#1b1b1b;stroke-width:3.00094;stroke-linejoin:round"><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="44.32375"
|
y="44.32375"
|
||||||
id="tspan10"><tspan
|
id="tspan4"><tspan
|
||||||
style="font-weight:bold"
|
style="font-weight:bold"
|
||||||
id="tspan2">Concept</tspan><tspan
|
id="tspan1">Concept</tspan><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan9">
|
id="tspan3">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="60.32375"
|
y="60.32375"
|
||||||
id="tspan12"><tspan
|
id="tspan6"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan11">3D fixed camera dungeon crawler where the player is placed in a randomly selected sequence of rooms
|
id="tspan5">3D fixed camera dungeon crawler where the player is placed in a randomly selected sequence of rooms
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="76.32375"
|
y="76.32375"
|
||||||
id="tspan15"><tspan
|
id="tspan88"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan13">and asked to clear as many rooms as possible within a 5min timeframe.
|
id="tspan7">and asked to clear as many rooms as possible within a 5min timeframe.
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="92.32375"
|
y="92.32375"
|
||||||
id="tspan17"><tspan
|
id="tspan129"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan16">
|
id="tspan122">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="108.32375"
|
y="108.32375"
|
||||||
id="tspan19"><tspan
|
id="tspan141"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan18">The environments are an overgrown forest ruin made using a combination of the Nature pack and Prototype assets.
|
id="tspan131">The environments are an overgrown forest ruin made using a combination of the Nature pack and Prototype assets.
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="124.32375"
|
y="124.32375"
|
||||||
id="tspan21"><tspan
|
id="tspan143"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan20">
|
id="tspan142">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="140.32375"
|
y="140.32375"
|
||||||
id="tspan25"><tspan
|
id="tspan155"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan22">The </tspan><tspan
|
id="tspan150">The </tspan><tspan
|
||||||
style="font-weight:bold"
|
style="font-weight:bold"
|
||||||
id="tspan23">player</tspan><tspan
|
id="tspan153">player</tspan><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan24"> can move horizontally with the Joystick or WASD. The player has two weapons which
|
id="tspan154"> can move horizontally with the Joystick or WASD. The player has two weapons which
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="156.32375"
|
y="156.32375"
|
||||||
id="tspan27"><tspan
|
id="tspan157"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan26">bound to two buttons (left/right mousebutton or X/Y).
|
id="tspan156">bound to two buttons (left/right mousebutton or X/Y).
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="172.32375"
|
y="172.32375"
|
||||||
id="tspan29"><tspan
|
id="tspan159"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan28">
|
id="tspan158">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="188.32375"
|
y="188.32375"
|
||||||
id="tspan31"><tspan
|
id="tspan161"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan30">
|
id="tspan160">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="204.32375"
|
y="204.32375"
|
||||||
id="tspan33"><tspan
|
id="tspan163"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan32">
|
id="tspan162">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="220.32375"
|
y="220.32375"
|
||||||
id="tspan35"><tspan
|
id="tspan165"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan34">
|
id="tspan164">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="236.32375"
|
y="236.32375"
|
||||||
id="tspan37"><tspan
|
id="tspan167"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan36">
|
id="tspan166">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="252.32375"
|
y="252.32375"
|
||||||
id="tspan39"><tspan
|
id="tspan169"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan38">
|
id="tspan168">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="268.32375"
|
y="268.32375"
|
||||||
id="tspan41"><tspan
|
id="tspan171"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan40">There are three kinds of enemies.
|
id="tspan170">There are three kinds of enemies.
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="284.32375"
|
y="284.32375"
|
||||||
id="tspan44"><tspan
|
id="tspan174"><tspan
|
||||||
style="font-weight:bold"
|
style="font-weight:bold"
|
||||||
id="tspan42">"Fodder"</tspan><tspan
|
id="tspan172">"Fodder"</tspan><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan43"> that are slow and die easilly, but if they do end up hitting you they hurt a lot.
|
id="tspan173"> that are slow and die easilly, but if they do end up hitting you they hurt a lot.
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="300.32375"
|
y="300.32375"
|
||||||
id="tspan46"><tspan
|
id="tspan176"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan45">
|
id="tspan175">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="316.32375"
|
y="316.32375"
|
||||||
id="tspan48"><tspan
|
id="tspan178"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan47">
|
id="tspan177">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="332.32375"
|
y="332.32375"
|
||||||
id="tspan50"><tspan
|
id="tspan180"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan49">
|
id="tspan179">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="348.32375"
|
y="348.32375"
|
||||||
id="tspan52"><tspan
|
id="tspan182"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan51">
|
id="tspan181">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="364.32375"
|
y="364.32375"
|
||||||
id="tspan55"><tspan
|
id="tspan185"><tspan
|
||||||
style="font-weight:bold"
|
style="font-weight:bold"
|
||||||
id="tspan53">"Tanks"</tspan><tspan
|
id="tspan183">"Tanks"</tspan><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan54"> which don't hit very hard but survive for longer.
|
id="tspan184"> which don't hit very hard but survive for longer.
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="380.32375"
|
y="380.32375"
|
||||||
id="tspan57"><tspan
|
id="tspan187"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan56">
|
id="tspan186">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="396.32375"
|
y="396.32375"
|
||||||
id="tspan59"><tspan
|
id="tspan189"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan58">
|
id="tspan188">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="412.32375"
|
y="412.32375"
|
||||||
id="tspan61"><tspan
|
id="tspan191"><tspan
|
||||||
style="font-weight:bold"
|
style="font-weight:bold"
|
||||||
id="tspan60">
|
id="tspan190">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="428.32375"
|
y="428.32375"
|
||||||
id="tspan64"><tspan
|
id="tspan194"><tspan
|
||||||
style="font-weight:bold"
|
style="font-weight:bold"
|
||||||
id="tspan62">"Ranged"</tspan><tspan
|
id="tspan192">"Ranged"</tspan><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan63"> which, like fodder have low health, low speed, and like the tank low damage, but can hit from a range.
|
id="tspan193"> which, like fodder have low health, low speed, and like the tank low damage, but can hit from a range.
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="444.32375"
|
y="444.32375"
|
||||||
id="tspan66"><tspan
|
id="tspan196"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan65">
|
id="tspan195">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="460.32375"
|
y="460.32375"
|
||||||
id="tspan68"><tspan
|
id="tspan198"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan67">
|
id="tspan197">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="476.32375"
|
y="476.32375"
|
||||||
id="tspan70"><tspan
|
id="tspan200"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan69">
|
id="tspan199">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="492.32375"
|
y="492.32375"
|
||||||
id="tspan72"><tspan
|
id="tspan202"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan71">There is a "Berserk" powerup which will give the player the power to defeat enemies in one hit for a few seconds, but when it ends it </tspan></tspan><tspan
|
id="tspan201">There is a "Berserk" powerup which will give the player the power to defeat enemies in one hit for a few seconds, but when it ends it </tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="508.32375"
|
y="508.32375"
|
||||||
id="tspan74"><tspan
|
id="tspan204"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan73">leaves the player unable to act for a second.
|
id="tspan203">leaves the player unable to act for a second.
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="524.32375"
|
y="524.32375"
|
||||||
id="tspan76"><tspan
|
id="tspan206"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan75">Meaning that if the player fails to clear the room in the "berserk" time, they'll take a lot of hits.
|
id="tspan205">Meaning that if the player fails to clear the room in the "berserk" time, they'll take a lot of hits.
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="540.32375"
|
y="540.32375"
|
||||||
id="tspan78"><tspan
|
id="tspan208"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan77">
|
id="tspan207">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="556.32375"
|
y="556.32375"
|
||||||
id="tspan80"><tspan
|
id="tspan210"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan79">There is a "speedup" powerup, which will increase the animation/movement speed for the player but drains health while active (always </tspan></tspan><tspan
|
id="tspan209">There is a "speedup" powerup, which will increase the animation/movement speed for the player but drains health while active (always </tspan></tspan><tspan
|
||||||
x="31.84375"
|
x="31.84375"
|
||||||
y="572.32375"
|
y="572.32375"
|
||||||
id="tspan84"><tspan
|
id="tspan212"><tspan
|
||||||
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
style="-inkscape-font-specification:'IBM Plex Sans, Normal'"
|
||||||
id="tspan81">leaving a small amount to avoid frustrating deaths).</tspan></tspan></text><text
|
id="tspan211">leaving a small amount to avoid frustrating deaths).</tspan></tspan></text><text
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
transform="matrix(0.26458333,0,0,0.26458333,-5.8858161,-9.7341241)"
|
transform="matrix(0.26458333,0,0,0.26458333,-5.8858161,-9.7341241)"
|
||||||
id="text3"
|
id="text3"
|
||||||
style="font-size:16px;line-height:1;font-family:'IBM Plex Sans';-inkscape-font-specification:'IBM Plex Sans, Normal';text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect3);shape-padding:23.7099;display:inline;fill:#1b1b1b;stroke-width:3.00094;stroke-linejoin:round"><tspan
|
style="font-size:16px;line-height:1;font-family:'IBM Plex Sans';-inkscape-font-specification:'IBM Plex Sans, Normal';text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect3);shape-padding:23.7099;display:inline;fill:#1b1b1b;stroke-width:3.00094;stroke-linejoin:round"><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="71.800313"
|
y="71.800313"
|
||||||
id="tspan87"><tspan
|
id="tspan214"><tspan
|
||||||
style="font-weight:bold"
|
style="font-weight:bold"
|
||||||
id="tspan85">Player:
|
id="tspan213">Player:
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="87.800313"
|
y="87.800313"
|
||||||
id="tspan88">- A warrior with an axe and a sword.
|
id="tspan215">- A warrior with an axe and a sword.
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="103.80031"
|
y="103.80031"
|
||||||
id="tspan89">
|
id="tspan216">
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="119.80031"
|
y="119.80031"
|
||||||
id="tspan91"><tspan
|
id="tspan218"><tspan
|
||||||
style="font-weight:bold"
|
style="font-weight:bold"
|
||||||
id="tspan90">Objectives:
|
id="tspan217">Objectives:
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="135.80031"
|
y="135.80031"
|
||||||
id="tspan94">- Defeat all enemies.<tspan
|
id="tspan220">- Defeat all enemies.<tspan
|
||||||
style="font-weight:bold"
|
style="font-weight:bold"
|
||||||
id="tspan93">
|
id="tspan219">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="151.80031"
|
y="151.80031"
|
||||||
id="tspan95">- Move to the next room.
|
id="tspan221">- Move to the next room.
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="167.80031"
|
y="167.80031"
|
||||||
id="tspan96">
|
id="tspan222">
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="183.80031"
|
y="183.80031"
|
||||||
id="tspan99"><tspan
|
id="tspan224"><tspan
|
||||||
style="font-weight:bold"
|
style="font-weight:bold"
|
||||||
id="tspan98">Resources:
|
id="tspan223">Resources:
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="199.80031"
|
y="199.80031"
|
||||||
id="tspan100">- Health, depending on what they get hit by, the player can take 4-7 hits
|
id="tspan225">- Health, depending on what they get hit by, the player can take 4-7 hits
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="215.80031"
|
y="215.80031"
|
||||||
id="tspan101">- Time, 5 minutes
|
id="tspan226">- Time, 5 minutes
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="231.80031"
|
y="231.80031"
|
||||||
id="tspan102">
|
id="tspan227">
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="247.80031"
|
y="247.80031"
|
||||||
id="tspan104"><tspan
|
id="tspan229"><tspan
|
||||||
style="font-weight:bold"
|
style="font-weight:bold"
|
||||||
id="tspan103">Mechanics:
|
id="tspan228">Mechanics:
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="263.80031"
|
y="263.80031"
|
||||||
id="tspan105">- Short/light/weak attack with the axe
|
id="tspan230">- Short/light/weak attack with the axe
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="279.80031"
|
y="279.80031"
|
||||||
id="tspan106">- Long/heavy/strong attack with the sword
|
id="tspan231">- Long/heavy/strong attack with the sword
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="295.80031"
|
y="295.80031"
|
||||||
id="tspan108">- Berserk powerup that has a long vulnerablility period at the end
|
id="tspan232">- Berserk powerup that has a long vulnerablility period at the end
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="311.80031"
|
y="311.80031"
|
||||||
id="tspan109">- Speed powerup that saps in the ballpark of 30% of the player's max health
|
id="tspan233">- Speed powerup that saps in the ballpark of 30% of the player's max health
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="327.80031"
|
y="327.80031"
|
||||||
id="tspan110">- The game timer ticks down to game over
|
id="tspan234">- The game timer ticks down to game over
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="343.80031"
|
y="343.80031"
|
||||||
id="tspan111">- Rooms will spawn enemies in randomly selected waves.
|
id="tspan235">- Rooms will spawn enemies in randomly selected waves.
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="359.80031"
|
y="359.80031"
|
||||||
id="tspan112">- Progress requires killing all waves of enemies
|
id="tspan236">- Progress requires killing all waves of enemies
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="375.80031"
|
y="375.80031"
|
||||||
id="tspan113">
|
id="tspan237">
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="391.80031"
|
y="391.80031"
|
||||||
id="tspan116"><tspan
|
id="tspan239"><tspan
|
||||||
style="font-weight:bold"
|
style="font-weight:bold"
|
||||||
id="tspan114">Dynamics:
|
id="tspan238">Dynamics:
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="407.80031"
|
y="407.80031"
|
||||||
id="tspan117">- The player has to decide whether to short or long attack based on their windup/recovery durations.
|
id="tspan240">- The player has to decide whether to short or long attack based on their windup/recovery durations.
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="423.80031"
|
y="423.80031"
|
||||||
id="tspan118"> - deciding to use a long when you shouldn't would lead to getting hit during windup (canceling the action) or during winddown.
|
id="tspan241"> - deciding to use a long when you shouldn't would lead to getting hit during windup (canceling the action) or during winddown.
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="439.80031"
|
y="439.80031"
|
||||||
id="tspan119"> - But a light attack could fail to eliminate a threat in time.
|
id="tspan242"> - But a light attack could fail to eliminate a threat in time.
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="455.80031"
|
y="455.80031"
|
||||||
id="tspan120">- The player can make heavy attacks more useful by finding a speedup, but that goes at the cost of health.
|
id="tspan243">- The player can make heavy attacks more useful by finding a speedup, but that goes at the cost of health.
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="471.80031"
|
y="471.80031"
|
||||||
id="tspan121">- The player can make light attacks more useful by finding a berserk powerup, but at the risk of leaving themselves exposed after it fails.
|
id="tspan244">- The player can make light attacks more useful by finding a berserk powerup, but at the risk of leaving themselves exposed after it fails.
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="487.80031"
|
y="487.80031"
|
||||||
id="tspan122">
|
id="tspan245">
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="503.80031"
|
y="503.80031"
|
||||||
id="tspan124"><tspan
|
id="tspan247"><tspan
|
||||||
style="font-weight:bold"
|
style="font-weight:bold"
|
||||||
id="tspan123">Conflict:</tspan>
|
id="tspan246">Conflict:</tspan>
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="519.80031"
|
y="519.80031"
|
||||||
id="tspan125">- The player cannot progress without defeating enemies.
|
id="tspan248">- The player cannot progress without defeating enemies.
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="535.80031"
|
y="535.80031"
|
||||||
id="tspan126">- The enemies will attack the player.
|
id="tspan249">- The enemies will attack the player.
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="551.80031"
|
y="551.80031"
|
||||||
id="tspan127">
|
id="tspan250">
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="567.80031"
|
y="567.80031"
|
||||||
id="tspan129"><tspan
|
id="tspan252"><tspan
|
||||||
style="font-weight:bold"
|
style="font-weight:bold"
|
||||||
id="tspan128">Boundaries:
|
id="tspan251">Boundaries:
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="583.80031"
|
y="583.80031"
|
||||||
id="tspan130">- The player cannot leave the room they're in until all enemies are defeated.
|
id="tspan253">- The player cannot leave the room they're in until all enemies are defeated.
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="599.80031"
|
y="599.80031"
|
||||||
id="tspan131">- The player cannot stop an attack until it's animation is finished.
|
id="tspan254">- The player cannot stop an attack until it's animation is finished.
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="615.80031"
|
y="615.80031"
|
||||||
id="tspan132">
|
id="tspan255">
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="631.80031"
|
y="631.80031"
|
||||||
id="tspan134"><tspan
|
id="tspan257"><tspan
|
||||||
style="font-weight:bold"
|
style="font-weight:bold"
|
||||||
id="tspan133">Outcome:
|
id="tspan256">Outcome:
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="647.80031"
|
y="647.80031"
|
||||||
id="tspan136">- The game ends when the player runs out of time or health<tspan
|
id="tspan259">- The game ends when the player runs out of time or health<tspan
|
||||||
style="font-weight:bold"
|
style="font-weight:bold"
|
||||||
id="tspan135">
|
id="tspan258">
|
||||||
</tspan></tspan><tspan
|
</tspan></tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="663.80031"
|
y="663.80031"
|
||||||
id="tspan137">- The player is scored based on the number of enemies defeated
|
id="tspan260">- The player is scored based on the number of enemies defeated
|
||||||
</tspan><tspan
|
</tspan><tspan
|
||||||
x="1205.7305"
|
x="1205.7305"
|
||||||
y="679.80031"
|
y="679.80031"
|
||||||
id="tspan138">- After the game end screen, the game is reset for the next person. </tspan></text><image
|
id="tspan261">- After the game end screen, the game is reset for the next person. </tspan></text><image
|
||||||
|
width="13.731021"
|
||||||
|
height="31.629169"
|
||||||
|
preserveAspectRatio="none"
|
||||||
|
xlink:href="../../../../Pictures/Screenshots/2024-02-01_10-02-1706780218.png"
|
||||||
|
id="image1"
|
||||||
|
x="10.043767"
|
||||||
|
y="33.049828" /><image
|
||||||
width="13.64728"
|
width="13.64728"
|
||||||
height="27.455114"
|
height="27.455114"
|
||||||
preserveAspectRatio="none"
|
preserveAspectRatio="none"
|
||||||
|
@ -956,116 +962,113 @@
|
||||||
style="fill:none;stroke:#000000;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker126)"
|
style="fill:none;stroke:#000000;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker126)"
|
||||||
d="m 571.78836,168.37684 c 0,0 -1.4157,-1.41572 -1.4157,-3.87 0,-2.45428 1.51037,-3.96442 3.87,-4.05883 2.35961,-0.0944 4.43622,1.88779 4.43622,3.87 0,1.98221 -1.41571,3.77558 -1.41571,3.77558"
|
d="m 571.78836,168.37684 c 0,0 -1.4157,-1.41572 -1.4157,-3.87 0,-2.45428 1.51037,-3.96442 3.87,-4.05883 2.35961,-0.0944 4.43622,1.88779 4.43622,3.87 0,1.98221 -1.41571,3.77558 -1.41571,3.77558"
|
||||||
id="path125" /><g
|
id="path125" /><g
|
||||||
id="g5"
|
id="g151"
|
||||||
transform="translate(21.068403,-44.544624)"><g
|
transform="translate(30.606929,3.6243846)"><g
|
||||||
id="g151"
|
id="g150"
|
||||||
transform="translate(30.606929,3.6243846)"><g
|
transform="translate(0,-5.792012)"><rect
|
||||||
id="g150"
|
style="fill:none;stroke:#000000;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||||
transform="translate(0,-5.792012)"><rect
|
id="rect127"
|
||||||
style="fill:none;stroke:#000000;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
width="34.141422"
|
||||||
id="rect127"
|
height="2.9799728"
|
||||||
width="34.141422"
|
x="497.61777"
|
||||||
height="2.9799728"
|
y="135.63121"
|
||||||
x="497.61777"
|
ry="1.3179407" /><path
|
||||||
y="135.63121"
|
style="fill:none;stroke:#000000;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||||
ry="1.3179407" /><path
|
d="m 502.06309,135.12888 v 4.6782"
|
||||||
style="fill:none;stroke:#000000;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
id="path127" /><path
|
||||||
d="m 502.06309,135.12888 v 4.6782"
|
style="fill:none;stroke:#000000;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||||
id="path127" /><path
|
d="m 527.75395,135.12888 v 4.6782"
|
||||||
style="fill:none;stroke:#000000;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
id="path128" /><rect
|
||||||
d="m 527.75395,135.12888 v 4.6782"
|
style="fill:#800000;stroke:none;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||||
id="path128" /><rect
|
id="rect147"
|
||||||
style="fill:#800000;stroke:none;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
width="24.226936"
|
||||||
id="rect147"
|
height="0.73432767"
|
||||||
width="24.226936"
|
x="502.75674"
|
||||||
height="0.73432767"
|
y="136.82713"
|
||||||
x="502.75674"
|
ry="0.36716384" /></g><g
|
||||||
y="136.82713"
|
id="g149"><rect
|
||||||
ry="0.36716384" /></g><g
|
style="fill:none;stroke:#000000;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||||
id="g149"><rect
|
id="rect126"
|
||||||
style="fill:none;stroke:#000000;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
width="54.677017"
|
||||||
id="rect126"
|
height="2.9799652"
|
||||||
width="54.677017"
|
x="492.75107"
|
||||||
height="2.9799652"
|
y="125.63486"
|
||||||
x="492.75107"
|
ry="1.2873087" /><path
|
||||||
y="125.63486"
|
style="fill:none;stroke:#000000;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||||
ry="1.2873087" /><path
|
d="m 502.06125,124.76529 v 4.6782"
|
||||||
style="fill:none;stroke:#000000;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
id="path129" /><path
|
||||||
d="m 502.06125,124.76529 v 4.6782"
|
style="fill:none;stroke:#000000;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||||
id="path129" /><path
|
d="m 527.75211,124.76529 v 4.6782"
|
||||||
style="fill:none;stroke:#000000;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
id="path130" /><text
|
||||||
d="m 527.75211,124.76529 v 4.6782"
|
|
||||||
id="path130" /><text
|
|
||||||
xml:space="preserve"
|
|
||||||
style="font-size:2.82223px;line-height:1;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-decoration-color:#000000;white-space:pre;fill:#000000;stroke:none;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
x="493.09634"
|
|
||||||
y="120.33974"
|
|
||||||
id="text144"><tspan
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan144"
|
|
||||||
style="stroke-width:0.5"
|
|
||||||
x="493.09634"
|
|
||||||
y="120.33974">End</tspan><tspan
|
|
||||||
sodipodi:role="line"
|
|
||||||
style="stroke-width:0.5"
|
|
||||||
x="493.09634"
|
|
||||||
y="123.16196"
|
|
||||||
id="tspan145">Windup</tspan></text><text
|
|
||||||
xml:space="preserve"
|
|
||||||
style="font-size:2.82223px;line-height:1;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-decoration-color:#000000;white-space:pre;fill:#000000;stroke:none;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
x="526.84979"
|
|
||||||
y="120.71445"
|
|
||||||
id="text146"><tspan
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan146"
|
|
||||||
style="stroke-width:0.5"
|
|
||||||
x="526.84979"
|
|
||||||
y="120.71445">Start</tspan><tspan
|
|
||||||
sodipodi:role="line"
|
|
||||||
style="stroke-width:0.5"
|
|
||||||
x="526.84979"
|
|
||||||
y="123.53667"
|
|
||||||
id="tspan147">Winddown</tspan></text><rect
|
|
||||||
style="fill:#800000;stroke:none;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
id="rect148"
|
|
||||||
width="24.226936"
|
|
||||||
height="0.73432767"
|
|
||||||
x="502.87592"
|
|
||||||
y="126.56254"
|
|
||||||
ry="0.36716384" /></g><text
|
|
||||||
xml:space="preserve"
|
|
||||||
style="font-size:2.82223px;line-height:1;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-decoration-color:#000000;white-space:pre;fill:#800000;stroke:none;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
x="510.13458"
|
|
||||||
y="123.89542"
|
|
||||||
id="text148"><tspan
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan148"
|
|
||||||
style="stroke-width:0.5"
|
|
||||||
x="510.13458"
|
|
||||||
y="123.89542">Hit time</tspan></text></g><g
|
|
||||||
id="g4"><text
|
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
style="font-size:2.82223px;line-height:1;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-decoration-color:#000000;white-space:pre;fill:#000000;stroke:none;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
style="font-size:2.82223px;line-height:1;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-decoration-color:#000000;white-space:pre;fill:#000000;stroke:none;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||||
x="477.50571"
|
x="493.09634"
|
||||||
y="131.29865"
|
y="120.33974"
|
||||||
id="text149"><tspan
|
id="text144"><tspan
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan149"
|
id="tspan144"
|
||||||
style="fill:#000000;stroke-width:0.5"
|
style="stroke-width:0.5"
|
||||||
x="477.50571"
|
x="493.09634"
|
||||||
y="131.29865">Animation timing example <tspan
|
y="120.33974">End</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
style="stroke-width:0.5"
|
||||||
|
x="493.09634"
|
||||||
|
y="123.16196"
|
||||||
|
id="tspan145">Windup</tspan></text><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:2.82223px;line-height:1;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-decoration-color:#000000;white-space:pre;fill:#000000;stroke:none;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
x="526.84979"
|
||||||
|
y="120.71445"
|
||||||
|
id="text146"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan146"
|
||||||
|
style="stroke-width:0.5"
|
||||||
|
x="526.84979"
|
||||||
|
y="120.71445">Start</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
style="stroke-width:0.5"
|
||||||
|
x="526.84979"
|
||||||
|
y="123.53667"
|
||||||
|
id="tspan147">Winddown</tspan></text><rect
|
||||||
|
style="fill:#800000;stroke:none;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect148"
|
||||||
|
width="24.226936"
|
||||||
|
height="0.73432767"
|
||||||
|
x="502.87592"
|
||||||
|
y="126.56254"
|
||||||
|
ry="0.36716384" /></g><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:2.82223px;line-height:1;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-decoration-color:#000000;white-space:pre;fill:#800000;stroke:none;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
x="510.13458"
|
||||||
|
y="123.89542"
|
||||||
|
id="text148"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan148"
|
||||||
|
style="stroke-width:0.5"
|
||||||
|
x="510.13458"
|
||||||
|
y="123.89542">Hit time</tspan></text></g><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:2.82223px;line-height:1;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-decoration-color:#000000;white-space:pre;fill:#000000;stroke:none;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
x="477.50571"
|
||||||
|
y="131.29865"
|
||||||
|
id="text149"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan149"
|
||||||
|
style="fill:#000000;stroke-width:0.5"
|
||||||
|
x="477.50571"
|
||||||
|
y="131.29865">Animation timing example <tspan
|
||||||
style="font-weight:bold"
|
style="font-weight:bold"
|
||||||
id="tspan151">heavy</tspan></tspan></text><text
|
id="tspan151">heavy</tspan></tspan></text><text
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
style="font-size:2.82223px;line-height:1;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-decoration-color:#000000;white-space:pre;fill:#000000;stroke:none;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
style="font-size:2.82223px;line-height:1;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-decoration-color:#000000;white-space:pre;fill:#000000;stroke:none;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||||
x="515.86322"
|
x="515.86322"
|
||||||
y="136.34253"
|
y="136.34253"
|
||||||
id="text149-8"><tspan
|
id="text149-8"><tspan
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan149-4"
|
id="tspan149-4"
|
||||||
style="font-weight:bold;fill:#000000;stroke-width:0.5"
|
style="font-weight:bold;fill:#000000;stroke-width:0.5"
|
||||||
x="515.86322"
|
x="515.86322"
|
||||||
y="136.34253">light</tspan></text></g></g><text
|
y="136.34253">light</tspan></text><text
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
style="font-size:2.82223px;line-height:1;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-decoration-color:#000000;white-space:pre;fill:#000000;stroke:none;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
style="font-size:2.82223px;line-height:1;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-decoration-color:#000000;white-space:pre;fill:#000000;stroke:none;stroke-width:0.499999;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||||
x="500.92786"
|
x="500.92786"
|
||||||
|
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 45 KiB |
Binary file not shown.
|
@ -1,26 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="2d_array_texture"
|
|
||||||
type="CompressedTexture2DArray"
|
|
||||||
uid="uid://dm2lhgblxb8ss"
|
|
||||||
path="res://.godot/imported/room001.exr-53d6be4a213eef0bcecf8bf0ea4f5cd9.ctexarray"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Levels/Light/room001.exr"
|
|
||||||
dest_files=["res://.godot/imported/room001.exr-53d6be4a213eef0bcecf8bf0ea4f5cd9.ctexarray"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=3
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/hdr_compression=1
|
|
||||||
compress/channel_pack=1
|
|
||||||
mipmaps/generate=false
|
|
||||||
mipmaps/limit=-1
|
|
||||||
slices/horizontal=1
|
|
||||||
slices/vertical=8
|
|
Binary file not shown.
|
@ -1,126 +1,26 @@
|
||||||
[gd_scene load_steps=13 format=3 uid="uid://3qb27d8vkjku"]
|
[gd_scene load_steps=2 format=3 uid="uid://3qb27d8vkjku"]
|
||||||
|
|
||||||
[ext_resource type="LightmapGIData" uid="uid://cfli7rodl51qd" path="res://Levels/Light/room001.lmbake" id="1_vp3o5"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://blod06auxvonj" path="res://Models/Environments/SM_Buildings_Floor_5x5_01.fbx" id="1_yoy7t"]
|
[ext_resource type="PackedScene" uid="uid://blod06auxvonj" path="res://Models/Environments/SM_Buildings_Floor_5x5_01.fbx" id="1_yoy7t"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dex5ugontg3g1" path="res://Models/Props/SM_Plant_Fern_01.fbx" id="2_w1kt7"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://7f1i4no3h2h5" path="res://Models/Props/SM_Plant_Fern_02.fbx" id="3_tpbl0"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://dsym0ndxgp01" path="res://Models/Props/SM_Tree_Dead_02.fbx" id="4_y48ls"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://sf2ippantsrx" path="res://Models/Props/SM_Prop_Pillar_Broken_Moss_01.fbx" id="5_qvwse"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://55s1at5inmv3" path="res://Models/Props/SM_Rock_Wall_01.fbx" id="6_m0jjr"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://up6utdya5pxh" path="res://Models/Props/SM_Prop_StoneWall_01.fbx" id="7_t3wqq"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://vgxi3xp3ces5" path="res://Models/Sky/MountainSkybox.fbx" id="9_ypm82"]
|
|
||||||
|
|
||||||
[sub_resource type="PhysicalSkyMaterial" id="PhysicalSkyMaterial_2kikw"]
|
|
||||||
|
|
||||||
[sub_resource type="Sky" id="Sky_g8k5h"]
|
|
||||||
sky_material = SubResource("PhysicalSkyMaterial_2kikw")
|
|
||||||
|
|
||||||
[sub_resource type="Environment" id="Environment_po184"]
|
|
||||||
background_mode = 2
|
|
||||||
sky = SubResource("Sky_g8k5h")
|
|
||||||
|
|
||||||
[node name="Level" type="Level"]
|
[node name="Level" type="Level"]
|
||||||
|
|
||||||
[node name="Camera3D" type="Camera3D" parent="."]
|
|
||||||
transform = Transform3D(0.972427, 0.121156, -0.199266, 7.15111e-09, 0.854459, 0.519519, 0.233208, -0.505194, 0.830899, -1.07345, 5.03391, 6.47806)
|
|
||||||
|
|
||||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
|
||||||
transform = Transform3D(0.479871, -0.451561, 0.752208, 3.58187e-08, 0.857374, 0.514694, -0.877339, -0.246987, 0.411429, 0, 1.75292, 0)
|
|
||||||
light_energy = 1.831
|
|
||||||
shadow_enabled = true
|
|
||||||
|
|
||||||
[node name="Entrance" type="Entrance" parent="."]
|
[node name="Entrance" type="Entrance" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.02647, -0.00710487, -0.181055)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.08729, -0.00710487, -4.41459)
|
||||||
|
|
||||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
[node name="Root Scene" parent="." instance=ExtResource("1_yoy7t")]
|
||||||
environment = SubResource("Environment_po184")
|
|
||||||
|
|
||||||
[node name="LightmapGI" type="LightmapGI" parent="WorldEnvironment"]
|
|
||||||
light_data = ExtResource("1_vp3o5")
|
|
||||||
|
|
||||||
[node name="Root Scene" parent="WorldEnvironment/LightmapGI" instance=ExtResource("1_yoy7t")]
|
|
||||||
transform = Transform3D(0.932476, 0, 0.361234, 0, 1, 0, -0.361234, 0, 0.932476, 2.86726, -0.000884401, -6.46443)
|
transform = Transform3D(0.932476, 0, 0.361234, 0, 1, 0, -0.361234, 0, 0.932476, 2.86726, -0.000884401, -6.46443)
|
||||||
|
|
||||||
[node name="Root Scene2" parent="WorldEnvironment/LightmapGI" instance=ExtResource("1_yoy7t")]
|
[node name="Root Scene2" parent="." instance=ExtResource("1_yoy7t")]
|
||||||
transform = Transform3D(0.932476, 0, 0.361234, 0, 1, 0, -0.361234, 0, 0.932476, 4.67343, -0.000884401, -1.80205)
|
transform = Transform3D(0.932476, 0, 0.361234, 0, 1, 0, -0.361234, 0, 0.932476, 4.67343, -0.000884401, -1.80205)
|
||||||
|
|
||||||
[node name="Root Scene3" parent="WorldEnvironment/LightmapGI" instance=ExtResource("1_yoy7t")]
|
[node name="Root Scene3" parent="." instance=ExtResource("1_yoy7t")]
|
||||||
transform = Transform3D(0.932476, 0, 0.361234, 0, 1, 0, -0.361234, 0, 0.932476, -1.79511, -0.000884401, -4.65826)
|
transform = Transform3D(0.932476, 0, 0.361234, 0, 1, 0, -0.361234, 0, 0.932476, -1.79511, -0.000884401, -4.65826)
|
||||||
|
|
||||||
[node name="Root Scene4" parent="WorldEnvironment/LightmapGI" instance=ExtResource("1_yoy7t")]
|
[node name="Root Scene4" parent="." instance=ExtResource("1_yoy7t")]
|
||||||
transform = Transform3D(0.932476, 0, 0.361234, 0, 1, 0, -0.361234, 0, 0.932476, 0.0110639, -0.000884401, 0.00411797)
|
transform = Transform3D(0.932476, 0, 0.361234, 0, 1, 0, -0.361234, 0, 0.932476, 0.0110639, -0.000884401, 0.00411797)
|
||||||
|
|
||||||
[node name="Root Scene5" parent="WorldEnvironment/LightmapGI" instance=ExtResource("2_w1kt7")]
|
[node name="Camera3D" type="Camera3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.96603, 0, 2.62085)
|
transform = Transform3D(1, 0, 0, 0, 0.854549, 0.51937, 0, -0.51937, 0.854549, -3.57628e-07, 4.60657, 5.90589)
|
||||||
|
|
||||||
[node name="Root Scene6" parent="WorldEnvironment/LightmapGI" instance=ExtResource("3_tpbl0")]
|
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.43048, 2.38419e-07, 2.1495)
|
transform = Transform3D(0.747775, -0.341732, 0.569255, 0, 0.857374, 0.514694, -0.663952, -0.384875, 0.641123, 0, 1.75292, 0)
|
||||||
|
|
||||||
[node name="Root Scene7" parent="WorldEnvironment/LightmapGI" instance=ExtResource("2_w1kt7")]
|
|
||||||
transform = Transform3D(-0.281437, 0, -0.95958, 0, 1, 0, 0.95958, 0, -0.281437, 5.04233, 2.38419e-07, 1.64983)
|
|
||||||
|
|
||||||
[node name="Root Scene8" parent="WorldEnvironment/LightmapGI" instance=ExtResource("4_y48ls")]
|
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.30777, 0, 2.30291)
|
|
||||||
|
|
||||||
[node name="Root Scene9" parent="WorldEnvironment/LightmapGI" instance=ExtResource("5_qvwse")]
|
|
||||||
transform = Transform3D(-0.0372541, 0, 0.999306, 0, 1, 0, -0.999306, 0, -0.0372541, 4.17166, 0, 2.08067)
|
|
||||||
|
|
||||||
[node name="Root Scene11" parent="WorldEnvironment/LightmapGI" instance=ExtResource("6_m0jjr")]
|
|
||||||
transform = Transform3D(0.945029, 0, 0.326987, 0, 1, 0, -0.326987, 0, 0.945029, 5.6945, 4.76837e-07, 0.76205)
|
|
||||||
|
|
||||||
[node name="Root Scene12" parent="WorldEnvironment/LightmapGI" instance=ExtResource("6_m0jjr")]
|
|
||||||
transform = Transform3D(-0.997458, 0, -0.0712536, 0, 1, 0, 0.0712536, 0, -0.997458, 5.04292, 0, -2.4426)
|
|
||||||
|
|
||||||
[node name="Root Scene13" parent="WorldEnvironment/LightmapGI" instance=ExtResource("6_m0jjr")]
|
|
||||||
transform = Transform3D(-0.518714, 0, -0.854948, 0, 1, 0, 0.854948, 0, -0.518714, 3.71733, 4.76837e-07, -4.95217)
|
|
||||||
|
|
||||||
[node name="Root Scene14" parent="WorldEnvironment/LightmapGI" instance=ExtResource("6_m0jjr")]
|
|
||||||
transform = Transform3D(-0.894373, -0.0747678, -0.441029, 0.0303719, 0.973507, -0.226631, 0.44629, -0.216087, -0.868408, 3.9715, -0.68129, -3.51969)
|
|
||||||
|
|
||||||
[node name="Root Scene25" parent="WorldEnvironment/LightmapGI" instance=ExtResource("6_m0jjr")]
|
|
||||||
transform = Transform3D(-0.0393825, -0.103263, 0.445281, 0.436472, 0.124245, 0.0674161, -0.13576, 0.429406, 0.0875742, 1.43969, -0.218692, 3.0008)
|
|
||||||
|
|
||||||
[node name="Root Scene26" parent="WorldEnvironment/LightmapGI" instance=ExtResource("6_m0jjr")]
|
|
||||||
transform = Transform3D(-0.12461, 0.541718, -0.831273, 0.965849, -0.125595, -0.226631, -0.227174, -0.831125, -0.507567, 0.256589, 0.226632, 2.59454)
|
|
||||||
|
|
||||||
[node name="Root Scene15" parent="WorldEnvironment/LightmapGI" instance=ExtResource("6_m0jjr")]
|
|
||||||
transform = Transform3D(-0.881662, -0.398897, -0.252097, 0.290335, -0.0374126, -0.956194, 0.371991, -0.916232, 0.148799, 4.91621, 1.20005, -3.90934)
|
|
||||||
|
|
||||||
[node name="Root Scene16" parent="WorldEnvironment/LightmapGI" instance=ExtResource("6_m0jjr")]
|
|
||||||
transform = Transform3D(-1.27246, -0.717393, -0.422044, 0.791529, -0.804545, -1.01888, 0.257403, -1.07237, 1.04675, 6.55017, 2.03872, -2.07892)
|
|
||||||
|
|
||||||
[node name="Root Scene10" parent="WorldEnvironment/LightmapGI" instance=ExtResource("7_t3wqq")]
|
|
||||||
transform = Transform3D(0.985559, 0, 0.169332, 0, 1, 0, -0.169332, 0, 0.985559, 2.2975, 0, -4.98931)
|
|
||||||
|
|
||||||
[node name="Root Scene17" parent="WorldEnvironment/LightmapGI" instance=ExtResource("7_t3wqq")]
|
|
||||||
transform = Transform3D(0.86674, 0, 0.49876, 0, 1, 0, -0.49876, 0, 0.86674, -1.89462, 0, -4.39425)
|
|
||||||
|
|
||||||
[node name="Root Scene18" parent="WorldEnvironment/LightmapGI" instance=ExtResource("7_t3wqq")]
|
|
||||||
transform = Transform3D(0.985559, 0, 0.169332, 0, 1, 0, -0.169332, 0, 0.985559, 2.2975, 1, -4.98931)
|
|
||||||
|
|
||||||
[node name="Root Scene19" parent="WorldEnvironment/LightmapGI" instance=ExtResource("7_t3wqq")]
|
|
||||||
transform = Transform3D(0.86674, 0, 0.49876, 0, 1, 0, -0.49876, 0, 0.86674, -1.89462, 1, -4.39425)
|
|
||||||
|
|
||||||
[node name="Root Scene20" parent="WorldEnvironment/LightmapGI" instance=ExtResource("7_t3wqq")]
|
|
||||||
transform = Transform3D(0.985559, 0, 0.169332, 0, 1, 0, -0.169332, 0, 0.985559, 2.2975, 2, -4.98931)
|
|
||||||
|
|
||||||
[node name="Root Scene22" parent="WorldEnvironment/LightmapGI" instance=ExtResource("7_t3wqq")]
|
|
||||||
transform = Transform3D(0.985559, 0, 0.169332, 0, 1, 0, -0.169332, 0, 0.985559, 7.14722, 0, -5.80763)
|
|
||||||
|
|
||||||
[node name="Root Scene23" parent="WorldEnvironment/LightmapGI" instance=ExtResource("7_t3wqq")]
|
|
||||||
transform = Transform3D(0.985559, 0, 0.169332, 0, 1, 0, -0.169332, 0, 0.985559, 7.14722, 1, -5.80763)
|
|
||||||
|
|
||||||
[node name="Root Scene24" parent="WorldEnvironment/LightmapGI" instance=ExtResource("7_t3wqq")]
|
|
||||||
transform = Transform3D(0.985559, 0, 0.169332, 0, 1, 0, -0.169332, 0, 0.985559, 7.14722, 2, -5.80763)
|
|
||||||
|
|
||||||
[node name="Root Scene21" parent="WorldEnvironment/LightmapGI" instance=ExtResource("7_t3wqq")]
|
|
||||||
transform = Transform3D(0.86674, 0, 0.49876, 0, 1, 0, -0.49876, 0, 0.86674, -1.89462, 2, -4.39425)
|
|
||||||
|
|
||||||
[node name="Root Scene27" parent="WorldEnvironment/LightmapGI" instance=ExtResource("2_w1kt7")]
|
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.124688, 0, 3.40266)
|
|
||||||
|
|
||||||
[node name="Root Scene28" parent="WorldEnvironment/LightmapGI" instance=ExtResource("3_tpbl0")]
|
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.629966, 0, 4.02042)
|
|
||||||
|
|
||||||
[node name="Root Scene" parent="WorldEnvironment" instance=ExtResource("9_ypm82")]
|
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.568564, -0.711053, -0.05379)
|
|
||||||
|
|
BIN
godot/Models/Characters/Animations/BasicMotions@Idle01 - Idle02.fbx (Stored with Git LFS)
BIN
godot/Models/Characters/Animations/BasicMotions@Idle01 - Idle02.fbx (Stored with Git LFS)
Binary file not shown.
File diff suppressed because it is too large
Load Diff
BIN
godot/Models/Characters/Animations/BasicMotions@Idle01.fbx (Stored with Git LFS)
BIN
godot/Models/Characters/Animations/BasicMotions@Idle01.fbx (Stored with Git LFS)
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -38,13 +38,6 @@ _subresources={
|
||||||
"lambert3": {
|
"lambert3": {
|
||||||
"use_external/enabled": true,
|
"use_external/enabled": true,
|
||||||
"use_external/path": "res://Models/Characters/Materials/lambert3.tres"
|
"use_external/path": "res://Models/Characters/Materials/lambert3.tres"
|
||||||
}
|
|
||||||
},
|
|
||||||
"nodes": {
|
|
||||||
"PATH:RootNode/Skeleton3D": {
|
|
||||||
"retarget/bone_map": Object(BoneMap,"resource_local_to_scene":false,"resource_name":"","profile":Object(SkeletonProfileHumanoid,"resource_local_to_scene":false,"resource_name":"","root_bone":&"Root","scale_base_bone":&"Hips","group_size":4,"bone_size":56,"script":null)
|
|
||||||
,"bonemap":null,"bone_map/Root":&"Root","bone_map/Hips":&"Hips","bone_map/Spine":&"Spine_01","bone_map/Chest":&"Spine_02","bone_map/UpperChest":&"Spine_03","bone_map/Neck":&"Neck","bone_map/Head":&"Head","bone_map/LeftEye":&"","bone_map/RightEye":&"","bone_map/Jaw":&"","bone_map/LeftShoulder":&"Clavicle_L","bone_map/LeftUpperArm":&"Shoulder_L","bone_map/LeftLowerArm":&"Elbow_L","bone_map/LeftHand":&"Hand_L","bone_map/LeftThumbMetacarpal":&"Thumb_01","bone_map/LeftThumbProximal":&"Thumb_02","bone_map/LeftThumbDistal":&"Thumb_03","bone_map/LeftIndexProximal":&"IndexFinger_01","bone_map/LeftIndexIntermediate":&"IndexFinger_02","bone_map/LeftIndexDistal":&"IndexFinger_03","bone_map/LeftMiddleProximal":&"","bone_map/LeftMiddleIntermediate":&"","bone_map/LeftMiddleDistal":&"","bone_map/LeftRingProximal":&"Finger_01","bone_map/LeftRingIntermediate":&"Finger_02","bone_map/LeftRingDistal":&"Finger_03","bone_map/LeftLittleProximal":&"","bone_map/LeftLittleIntermediate":&"","bone_map/LeftLittleDistal":&"","bone_map/RightShoulder":&"Clavicle_R","bone_map/RightUpperArm":&"Shoulder_R","bone_map/RightLowerArm":&"Elbow_R","bone_map/RightHand":&"Hand_R","bone_map/RightThumbMetacarpal":&"Thumb_01_2","bone_map/RightThumbProximal":&"Thumb_02_2","bone_map/RightThumbDistal":&"Thumb_03_2","bone_map/RightIndexProximal":&"IndexFinger_01_2","bone_map/RightIndexIntermediate":&"IndexFinger_02_2","bone_map/RightIndexDistal":&"IndexFinger_03_2","bone_map/RightMiddleProximal":&"","bone_map/RightMiddleIntermediate":&"","bone_map/RightMiddleDistal":&"","bone_map/RightRingProximal":&"Finger_01_2","bone_map/RightRingIntermediate":&"Finger_02_2","bone_map/RightRingDistal":&"Finger_03_2","bone_map/RightLittleProximal":&"","bone_map/RightLittleIntermediate":&"","bone_map/RightLittleDistal":&"","bone_map/LeftUpperLeg":&"UpperLeg_L","bone_map/LeftLowerLeg":&"LowerLeg_L","bone_map/LeftFoot":&"Ankle_L","bone_map/LeftToes":&"Toes_L","bone_map/RightUpperLeg":&"UpperLeg_R","bone_map/RightLowerLeg":&"LowerLeg_R","bone_map/RightFoot":&"Ankle_R","bone_map/RightToes":&"Toes_R","script":null)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,63 +0,0 @@
|
||||||
[gd_resource type="BoneMap" load_steps=2 format=3 uid="uid://dqydbxj1rggyb"]
|
|
||||||
|
|
||||||
[sub_resource type="SkeletonProfileHumanoid" id="SkeletonProfileHumanoid_7s4cy"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
profile = SubResource("SkeletonProfileHumanoid_7s4cy")
|
|
||||||
bonemap = null
|
|
||||||
bone_map/Root = &"root"
|
|
||||||
bone_map/Hips = &"B-hips"
|
|
||||||
bone_map/Spine = &"B-spine"
|
|
||||||
bone_map/Chest = &"B-chest"
|
|
||||||
bone_map/UpperChest = &"B-upperChest"
|
|
||||||
bone_map/Neck = &"B-neck"
|
|
||||||
bone_map/Head = &"B-head"
|
|
||||||
bone_map/LeftEye = &""
|
|
||||||
bone_map/RightEye = &""
|
|
||||||
bone_map/Jaw = &""
|
|
||||||
bone_map/LeftShoulder = &"B-shoulder_L"
|
|
||||||
bone_map/LeftUpperArm = &"B-upper_arm_L"
|
|
||||||
bone_map/LeftLowerArm = &"B-forearm_L"
|
|
||||||
bone_map/LeftHand = &"B-hand_L"
|
|
||||||
bone_map/LeftThumbMetacarpal = &"B-thumb_01_L"
|
|
||||||
bone_map/LeftThumbProximal = &"B-thumb_02_L"
|
|
||||||
bone_map/LeftThumbDistal = &"B-thumb_03_L"
|
|
||||||
bone_map/LeftIndexProximal = &"B-f_index_01_L"
|
|
||||||
bone_map/LeftIndexIntermediate = &"B-f_index_02_L"
|
|
||||||
bone_map/LeftIndexDistal = &"B-f_index_03_L"
|
|
||||||
bone_map/LeftMiddleProximal = &"B-f_middle_01_L"
|
|
||||||
bone_map/LeftMiddleIntermediate = &"B-f_middle_02_L"
|
|
||||||
bone_map/LeftMiddleDistal = &"B-f_middle_03_L"
|
|
||||||
bone_map/LeftRingProximal = &"B-f_ring_01_L"
|
|
||||||
bone_map/LeftRingIntermediate = &"B-f_ring_02_L"
|
|
||||||
bone_map/LeftRingDistal = &"B-f_ring_03_L"
|
|
||||||
bone_map/LeftLittleProximal = &"B-f_pinky_01_L"
|
|
||||||
bone_map/LeftLittleIntermediate = &"B-f_pinky_02_L"
|
|
||||||
bone_map/LeftLittleDistal = &"B-f_pinky_03_L"
|
|
||||||
bone_map/RightShoulder = &"B-shoulder_R"
|
|
||||||
bone_map/RightUpperArm = &"B-upper_arm_R"
|
|
||||||
bone_map/RightLowerArm = &"B-forearm_R"
|
|
||||||
bone_map/RightHand = &"B-hand_R"
|
|
||||||
bone_map/RightThumbMetacarpal = &"B-thumb_01_R"
|
|
||||||
bone_map/RightThumbProximal = &"B-thumb_02_R"
|
|
||||||
bone_map/RightThumbDistal = &"B-thumb_03_R"
|
|
||||||
bone_map/RightIndexProximal = &"B-f_index_01_R"
|
|
||||||
bone_map/RightIndexIntermediate = &"B-f_index_02_R"
|
|
||||||
bone_map/RightIndexDistal = &"B-f_index_03_R"
|
|
||||||
bone_map/RightMiddleProximal = &"B-f_middle_01_R"
|
|
||||||
bone_map/RightMiddleIntermediate = &"B-f_middle_02_R"
|
|
||||||
bone_map/RightMiddleDistal = &"B-f_middle_03_R"
|
|
||||||
bone_map/RightRingProximal = &"B-f_ring_01_R"
|
|
||||||
bone_map/RightRingIntermediate = &"B-f_ring_02_R"
|
|
||||||
bone_map/RightRingDistal = &"B-f_ring_03_R"
|
|
||||||
bone_map/RightLittleProximal = &"B-f_pinky_01_R"
|
|
||||||
bone_map/RightLittleIntermediate = &"B-f_pinky_02_R"
|
|
||||||
bone_map/RightLittleDistal = &"B-f_pinky_03_R"
|
|
||||||
bone_map/LeftUpperLeg = &"B-thigh_L"
|
|
||||||
bone_map/LeftLowerLeg = &"B-shin_L"
|
|
||||||
bone_map/LeftFoot = &"B-foot_L"
|
|
||||||
bone_map/LeftToes = &"B-toe_L"
|
|
||||||
bone_map/RightUpperLeg = &"B-thigh_R"
|
|
||||||
bone_map/RightLowerLeg = &"B-shin_R"
|
|
||||||
bone_map/RightFoot = &"B-foot_R"
|
|
||||||
bone_map/RightToes = &"B-toe_R"
|
|
|
@ -35,14 +35,6 @@ _subresources={
|
||||||
"use_external/enabled": true,
|
"use_external/enabled": true,
|
||||||
"use_external/path": "res://Models/Environments/Materials/Texture_01.tres"
|
"use_external/path": "res://Models/Environments/Materials/Texture_01.tres"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"nodes": {
|
|
||||||
"PATH:RootNode/SM_Buildings_Floor_5x5_01": {
|
|
||||||
"generate/physics": true,
|
|
||||||
"physics/shape_type": 3,
|
|
||||||
"primitive/position": Vector3(-2.5, -0.05, 2.5),
|
|
||||||
"primitive/size": Vector3(5, 0.1, 5)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
gltf/naming_version=1
|
gltf/naming_version=1
|
||||||
|
|
|
@ -3,26 +3,25 @@
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://dg1l3p37suwt3"
|
uid="uid://dg1l3p37suwt3"
|
||||||
path.s3tc="res://.godot/imported/PolygonPrototype_Texture_04.png-93559159eb3466e54b1779968421b2c3.s3tc.ctex"
|
path="res://.godot/imported/PolygonPrototype_Texture_04.png-93559159eb3466e54b1779968421b2c3.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"imported_formats": ["s3tc_bptc"],
|
"vram_texture": false
|
||||||
"vram_texture": true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://Models/Environments/Textures/PolygonPrototype_Texture_04.png"
|
source_file="res://Models/Environments/Textures/PolygonPrototype_Texture_04.png"
|
||||||
dest_files=["res://.godot/imported/PolygonPrototype_Texture_04.png-93559159eb3466e54b1779968421b2c3.s3tc.ctex"]
|
dest_files=["res://.godot/imported/PolygonPrototype_Texture_04.png-93559159eb3466e54b1779968421b2c3.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
compress/mode=2
|
compress/mode=0
|
||||||
compress/high_quality=false
|
compress/high_quality=false
|
||||||
compress/lossy_quality=0.7
|
compress/lossy_quality=0.7
|
||||||
compress/hdr_compression=1
|
compress/hdr_compression=1
|
||||||
compress/normal_map=0
|
compress/normal_map=0
|
||||||
compress/channel_pack=0
|
compress/channel_pack=0
|
||||||
mipmaps/generate=true
|
mipmaps/generate=false
|
||||||
mipmaps/limit=-1
|
mipmaps/limit=-1
|
||||||
roughness/mode=0
|
roughness/mode=0
|
||||||
roughness/src_normal=""
|
roughness/src_normal=""
|
||||||
|
@ -32,4 +31,4 @@ process/normal_map_invert_y=false
|
||||||
process/hdr_as_srgb=false
|
process/hdr_as_srgb=false
|
||||||
process/hdr_clamp_exposure=false
|
process/hdr_clamp_exposure=false
|
||||||
process/size_limit=0
|
process/size_limit=0
|
||||||
detect_3d/compress_to=0
|
detect_3d/compress_to=1
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://eqoubuetw1vv"]
|
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://bd3tuw71coag3" path="res://Models/Props/Textures/Tree_Dead_Branch.png" id="1_kputc"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
transparency = 1
|
|
||||||
cull_mode = 2
|
|
||||||
albedo_texture = ExtResource("1_kputc")
|
|
|
@ -1,8 +0,0 @@
|
||||||
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://b16k8isx1jl3g"]
|
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://b20jr1o15h27s" path="res://Models/Props/Textures/Fern_Texture.png" id="1_6x5t1"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
transparency = 1
|
|
||||||
cull_mode = 2
|
|
||||||
albedo_texture = ExtResource("1_6x5t1")
|
|
|
@ -1,8 +0,0 @@
|
||||||
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://dsb2h5v311x85"]
|
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://by5ltkdaer7j6" path="res://Models/Props/Textures/Leaves_Generic_Texture.png" id="1_s6ykt"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
transparency = 1
|
|
||||||
cull_mode = 2
|
|
||||||
albedo_texture = ExtResource("1_s6ykt")
|
|
|
@ -1,6 +0,0 @@
|
||||||
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://bimluh3mjp0ix"]
|
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://dhwwd6tpuq1ml" path="res://Models/Props/Textures/PolygonNature_01.png" id="1_y41cn"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
albedo_texture = ExtResource("1_y41cn")
|
|
BIN
godot/Models/Props/SM_Plant_Fern_01.fbx (Stored with Git LFS)
BIN
godot/Models/Props/SM_Plant_Fern_01.fbx (Stored with Git LFS)
Binary file not shown.
|
@ -1,41 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://dex5ugontg3g1"
|
|
||||||
path="res://.godot/imported/SM_Plant_Fern_01.fbx-bc96e9be201ecd00699e36fb2c1e43d3.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Props/SM_Plant_Fern_01.fbx"
|
|
||||||
dest_files=["res://.godot/imported/SM_Plant_Fern_01.fbx-bc96e9be201ecd00699e36fb2c1e43d3.scn"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
nodes/root_type=""
|
|
||||||
nodes/root_name=""
|
|
||||||
nodes/apply_root_scale=true
|
|
||||||
nodes/root_scale=1.0
|
|
||||||
meshes/ensure_tangents=true
|
|
||||||
meshes/generate_lods=true
|
|
||||||
meshes/create_shadow_meshes=true
|
|
||||||
meshes/light_baking=1
|
|
||||||
meshes/lightmap_texel_size=0.2
|
|
||||||
meshes/force_disable_compression=false
|
|
||||||
skins/use_named_skins=true
|
|
||||||
animation/import=true
|
|
||||||
animation/fps=30
|
|
||||||
animation/trimming=false
|
|
||||||
animation/remove_immutable_tracks=true
|
|
||||||
import_script/path=""
|
|
||||||
_subresources={
|
|
||||||
"materials": {
|
|
||||||
"Tree": {
|
|
||||||
"use_external/enabled": true,
|
|
||||||
"use_external/path": "res://Models/Props/Materials/tree.tres"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
gltf/naming_version=1
|
|
||||||
gltf/embedded_image_handling=1
|
|
BIN
godot/Models/Props/SM_Plant_Fern_02.fbx (Stored with Git LFS)
BIN
godot/Models/Props/SM_Plant_Fern_02.fbx (Stored with Git LFS)
Binary file not shown.
|
@ -1,41 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://7f1i4no3h2h5"
|
|
||||||
path="res://.godot/imported/SM_Plant_Fern_02.fbx-50caa4474dbb10d940e46905eb2514cb.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Props/SM_Plant_Fern_02.fbx"
|
|
||||||
dest_files=["res://.godot/imported/SM_Plant_Fern_02.fbx-50caa4474dbb10d940e46905eb2514cb.scn"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
nodes/root_type=""
|
|
||||||
nodes/root_name=""
|
|
||||||
nodes/apply_root_scale=true
|
|
||||||
nodes/root_scale=1.0
|
|
||||||
meshes/ensure_tangents=true
|
|
||||||
meshes/generate_lods=true
|
|
||||||
meshes/create_shadow_meshes=true
|
|
||||||
meshes/light_baking=1
|
|
||||||
meshes/lightmap_texel_size=0.2
|
|
||||||
meshes/force_disable_compression=false
|
|
||||||
skins/use_named_skins=true
|
|
||||||
animation/import=true
|
|
||||||
animation/fps=30
|
|
||||||
animation/trimming=false
|
|
||||||
animation/remove_immutable_tracks=true
|
|
||||||
import_script/path=""
|
|
||||||
_subresources={
|
|
||||||
"materials": {
|
|
||||||
"Tree": {
|
|
||||||
"use_external/enabled": true,
|
|
||||||
"use_external/path": "res://Models/Props/Materials/tree.tres"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
gltf/naming_version=1
|
|
||||||
gltf/embedded_image_handling=1
|
|
BIN
godot/Models/Props/SM_Plant_Fern_03.fbx (Stored with Git LFS)
BIN
godot/Models/Props/SM_Plant_Fern_03.fbx (Stored with Git LFS)
Binary file not shown.
|
@ -1,34 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://bwp2qess2q1ys"
|
|
||||||
path="res://.godot/imported/SM_Plant_Fern_03.fbx-a6264c07f92255d538d1fb4ceb8e56f7.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Props/SM_Plant_Fern_03.fbx"
|
|
||||||
dest_files=["res://.godot/imported/SM_Plant_Fern_03.fbx-a6264c07f92255d538d1fb4ceb8e56f7.scn"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
nodes/root_type=""
|
|
||||||
nodes/root_name=""
|
|
||||||
nodes/apply_root_scale=true
|
|
||||||
nodes/root_scale=1.0
|
|
||||||
meshes/ensure_tangents=true
|
|
||||||
meshes/generate_lods=true
|
|
||||||
meshes/create_shadow_meshes=true
|
|
||||||
meshes/light_baking=1
|
|
||||||
meshes/lightmap_texel_size=0.2
|
|
||||||
meshes/force_disable_compression=false
|
|
||||||
skins/use_named_skins=true
|
|
||||||
animation/import=true
|
|
||||||
animation/fps=30
|
|
||||||
animation/trimming=false
|
|
||||||
animation/remove_immutable_tracks=true
|
|
||||||
import_script/path=""
|
|
||||||
_subresources={}
|
|
||||||
gltf/naming_version=1
|
|
||||||
gltf/embedded_image_handling=1
|
|
BIN
godot/Models/Props/SM_Prop_Pillar_Arch_01.fbx (Stored with Git LFS)
BIN
godot/Models/Props/SM_Prop_Pillar_Arch_01.fbx (Stored with Git LFS)
Binary file not shown.
|
@ -1,34 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://bxeul7tdysdkk"
|
|
||||||
path="res://.godot/imported/SM_Prop_Pillar_Arch_01.fbx-4413a582e1cfae5afa8a779e5620b853.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Props/SM_Prop_Pillar_Arch_01.fbx"
|
|
||||||
dest_files=["res://.godot/imported/SM_Prop_Pillar_Arch_01.fbx-4413a582e1cfae5afa8a779e5620b853.scn"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
nodes/root_type=""
|
|
||||||
nodes/root_name=""
|
|
||||||
nodes/apply_root_scale=true
|
|
||||||
nodes/root_scale=1.0
|
|
||||||
meshes/ensure_tangents=true
|
|
||||||
meshes/generate_lods=true
|
|
||||||
meshes/create_shadow_meshes=true
|
|
||||||
meshes/light_baking=2
|
|
||||||
meshes/lightmap_texel_size=0.2
|
|
||||||
meshes/force_disable_compression=false
|
|
||||||
skins/use_named_skins=true
|
|
||||||
animation/import=true
|
|
||||||
animation/fps=30
|
|
||||||
animation/trimming=false
|
|
||||||
animation/remove_immutable_tracks=true
|
|
||||||
import_script/path=""
|
|
||||||
_subresources={}
|
|
||||||
gltf/naming_version=1
|
|
||||||
gltf/embedded_image_handling=1
|
|
Binary file not shown.
BIN
godot/Models/Props/SM_Prop_Pillar_Broken_01.fbx (Stored with Git LFS)
BIN
godot/Models/Props/SM_Prop_Pillar_Broken_01.fbx (Stored with Git LFS)
Binary file not shown.
|
@ -1,34 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://c8rbg84qs7dpe"
|
|
||||||
path="res://.godot/imported/SM_Prop_Pillar_Broken_01.fbx-6ad9a9ba4b311baa0e56a49b80cba490.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Props/SM_Prop_Pillar_Broken_01.fbx"
|
|
||||||
dest_files=["res://.godot/imported/SM_Prop_Pillar_Broken_01.fbx-6ad9a9ba4b311baa0e56a49b80cba490.scn"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
nodes/root_type=""
|
|
||||||
nodes/root_name=""
|
|
||||||
nodes/apply_root_scale=true
|
|
||||||
nodes/root_scale=1.0
|
|
||||||
meshes/ensure_tangents=true
|
|
||||||
meshes/generate_lods=true
|
|
||||||
meshes/create_shadow_meshes=true
|
|
||||||
meshes/light_baking=1
|
|
||||||
meshes/lightmap_texel_size=0.2
|
|
||||||
meshes/force_disable_compression=false
|
|
||||||
skins/use_named_skins=true
|
|
||||||
animation/import=true
|
|
||||||
animation/fps=30
|
|
||||||
animation/trimming=false
|
|
||||||
animation/remove_immutable_tracks=true
|
|
||||||
import_script/path=""
|
|
||||||
_subresources={}
|
|
||||||
gltf/naming_version=1
|
|
||||||
gltf/embedded_image_handling=1
|
|
BIN
godot/Models/Props/SM_Prop_Pillar_Broken_02.fbx (Stored with Git LFS)
BIN
godot/Models/Props/SM_Prop_Pillar_Broken_02.fbx (Stored with Git LFS)
Binary file not shown.
|
@ -1,34 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://we6jqboy2bwa"
|
|
||||||
path="res://.godot/imported/SM_Prop_Pillar_Broken_02.fbx-6e0d22869934d41a42cd4baacb5ee61d.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Props/SM_Prop_Pillar_Broken_02.fbx"
|
|
||||||
dest_files=["res://.godot/imported/SM_Prop_Pillar_Broken_02.fbx-6e0d22869934d41a42cd4baacb5ee61d.scn"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
nodes/root_type=""
|
|
||||||
nodes/root_name=""
|
|
||||||
nodes/apply_root_scale=true
|
|
||||||
nodes/root_scale=1.0
|
|
||||||
meshes/ensure_tangents=true
|
|
||||||
meshes/generate_lods=true
|
|
||||||
meshes/create_shadow_meshes=true
|
|
||||||
meshes/light_baking=2
|
|
||||||
meshes/lightmap_texel_size=0.2
|
|
||||||
meshes/force_disable_compression=false
|
|
||||||
skins/use_named_skins=true
|
|
||||||
animation/import=true
|
|
||||||
animation/fps=30
|
|
||||||
animation/trimming=false
|
|
||||||
animation/remove_immutable_tracks=true
|
|
||||||
import_script/path=""
|
|
||||||
_subresources={}
|
|
||||||
gltf/naming_version=1
|
|
||||||
gltf/embedded_image_handling=1
|
|
Binary file not shown.
BIN
godot/Models/Props/SM_Prop_Pillar_Broken_Moss_01.fbx (Stored with Git LFS)
BIN
godot/Models/Props/SM_Prop_Pillar_Broken_Moss_01.fbx (Stored with Git LFS)
Binary file not shown.
|
@ -1,49 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://sf2ippantsrx"
|
|
||||||
path="res://.godot/imported/SM_Prop_Pillar_Broken_Moss_01.fbx-8045d5a0178180db7d046a00e2fe0e73.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Props/SM_Prop_Pillar_Broken_Moss_01.fbx"
|
|
||||||
dest_files=["res://.godot/imported/SM_Prop_Pillar_Broken_Moss_01.fbx-8045d5a0178180db7d046a00e2fe0e73.scn"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
nodes/root_type=""
|
|
||||||
nodes/root_name=""
|
|
||||||
nodes/apply_root_scale=true
|
|
||||||
nodes/root_scale=1.0
|
|
||||||
meshes/ensure_tangents=true
|
|
||||||
meshes/generate_lods=true
|
|
||||||
meshes/create_shadow_meshes=true
|
|
||||||
meshes/light_baking=2
|
|
||||||
meshes/lightmap_texel_size=0.2
|
|
||||||
meshes/force_disable_compression=false
|
|
||||||
skins/use_named_skins=true
|
|
||||||
animation/import=true
|
|
||||||
animation/fps=30
|
|
||||||
animation/trimming=false
|
|
||||||
animation/remove_immutable_tracks=true
|
|
||||||
import_script/path=""
|
|
||||||
_subresources={
|
|
||||||
"materials": {
|
|
||||||
"lambert1": {
|
|
||||||
"use_external/enabled": true,
|
|
||||||
"use_external/path": "res://Models/Props/Materials/tree.tres"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nodes": {
|
|
||||||
"PATH:RootNode/SM_Prop_Pillar_Broken_Moss_01": {
|
|
||||||
"generate/physics": true,
|
|
||||||
"physics/shape_type": 3,
|
|
||||||
"primitive/position": Vector3(0, 0.23, 0),
|
|
||||||
"primitive/size": Vector3(1.5, 0.5, 0.5)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
gltf/naming_version=1
|
|
||||||
gltf/embedded_image_handling=1
|
|
Binary file not shown.
BIN
godot/Models/Props/SM_Prop_StoneWall_01.fbx (Stored with Git LFS)
BIN
godot/Models/Props/SM_Prop_StoneWall_01.fbx (Stored with Git LFS)
Binary file not shown.
|
@ -1,50 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://up6utdya5pxh"
|
|
||||||
path="res://.godot/imported/SM_Prop_StoneWall_01.fbx-ec14bc38e13460abbdadf2e82e615315.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Props/SM_Prop_StoneWall_01.fbx"
|
|
||||||
dest_files=["res://.godot/imported/SM_Prop_StoneWall_01.fbx-ec14bc38e13460abbdadf2e82e615315.scn"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
nodes/root_type=""
|
|
||||||
nodes/root_name=""
|
|
||||||
nodes/apply_root_scale=true
|
|
||||||
nodes/root_scale=1.0
|
|
||||||
meshes/ensure_tangents=true
|
|
||||||
meshes/generate_lods=true
|
|
||||||
meshes/create_shadow_meshes=true
|
|
||||||
meshes/light_baking=2
|
|
||||||
meshes/lightmap_texel_size=0.2
|
|
||||||
meshes/force_disable_compression=false
|
|
||||||
skins/use_named_skins=true
|
|
||||||
animation/import=true
|
|
||||||
animation/fps=30
|
|
||||||
animation/trimming=false
|
|
||||||
animation/remove_immutable_tracks=true
|
|
||||||
import_script/path=""
|
|
||||||
_subresources={
|
|
||||||
"materials": {
|
|
||||||
"lambert1": {
|
|
||||||
"use_external/enabled": true,
|
|
||||||
"use_external/path": "res://Models/Props/Materials/tree.tres"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nodes": {
|
|
||||||
"PATH:RootNode/SM_Prop_StoneWall_01": {
|
|
||||||
"generate/occluder": 1,
|
|
||||||
"generate/physics": true,
|
|
||||||
"physics/shape_type": 3,
|
|
||||||
"primitive/position": Vector3(-2.45, 0.5, 0),
|
|
||||||
"primitive/size": Vector3(5, 1, 0.5)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
gltf/naming_version=1
|
|
||||||
gltf/embedded_image_handling=1
|
|
Binary file not shown.
BIN
godot/Models/Props/SM_Rock_Wall_01.fbx (Stored with Git LFS)
BIN
godot/Models/Props/SM_Rock_Wall_01.fbx (Stored with Git LFS)
Binary file not shown.
|
@ -1,46 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://55s1at5inmv3"
|
|
||||||
path="res://.godot/imported/SM_Rock_Wall_01.fbx-b26d79bc3a10badfba16c63704ddf5ad.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Props/SM_Rock_Wall_01.fbx"
|
|
||||||
dest_files=["res://.godot/imported/SM_Rock_Wall_01.fbx-b26d79bc3a10badfba16c63704ddf5ad.scn"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
nodes/root_type=""
|
|
||||||
nodes/root_name=""
|
|
||||||
nodes/apply_root_scale=true
|
|
||||||
nodes/root_scale=1.0
|
|
||||||
meshes/ensure_tangents=true
|
|
||||||
meshes/generate_lods=true
|
|
||||||
meshes/create_shadow_meshes=true
|
|
||||||
meshes/light_baking=2
|
|
||||||
meshes/lightmap_texel_size=0.2
|
|
||||||
meshes/force_disable_compression=false
|
|
||||||
skins/use_named_skins=true
|
|
||||||
animation/import=true
|
|
||||||
animation/fps=30
|
|
||||||
animation/trimming=false
|
|
||||||
animation/remove_immutable_tracks=true
|
|
||||||
import_script/path=""
|
|
||||||
_subresources={
|
|
||||||
"materials": {
|
|
||||||
"lambert1": {
|
|
||||||
"use_external/enabled": true,
|
|
||||||
"use_external/path": "res://Models/Props/Materials/tree.tres"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nodes": {
|
|
||||||
"PATH:RootNode/SM_Rock_Wall_01": {
|
|
||||||
"generate/physics": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
gltf/naming_version=1
|
|
||||||
gltf/embedded_image_handling=1
|
|
Binary file not shown.
BIN
godot/Models/Props/SM_Tree_Dead_02.fbx (Stored with Git LFS)
BIN
godot/Models/Props/SM_Tree_Dead_02.fbx (Stored with Git LFS)
Binary file not shown.
|
@ -1,54 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://dsym0ndxgp01"
|
|
||||||
path="res://.godot/imported/SM_Tree_Dead_02.fbx-231c3227f3383a53253500523c24c67f.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Props/SM_Tree_Dead_02.fbx"
|
|
||||||
dest_files=["res://.godot/imported/SM_Tree_Dead_02.fbx-231c3227f3383a53253500523c24c67f.scn"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
nodes/root_type=""
|
|
||||||
nodes/root_name=""
|
|
||||||
nodes/apply_root_scale=true
|
|
||||||
nodes/root_scale=1.0
|
|
||||||
meshes/ensure_tangents=true
|
|
||||||
meshes/generate_lods=true
|
|
||||||
meshes/create_shadow_meshes=true
|
|
||||||
meshes/light_baking=2
|
|
||||||
meshes/lightmap_texel_size=0.2
|
|
||||||
meshes/force_disable_compression=false
|
|
||||||
skins/use_named_skins=true
|
|
||||||
animation/import=true
|
|
||||||
animation/fps=30
|
|
||||||
animation/trimming=false
|
|
||||||
animation/remove_immutable_tracks=true
|
|
||||||
import_script/path=""
|
|
||||||
_subresources={
|
|
||||||
"materials": {
|
|
||||||
"Leaves_Dead": {
|
|
||||||
"use_external/enabled": true,
|
|
||||||
"use_external/path": "res://Models/Props/Materials/dead_branch.tres"
|
|
||||||
},
|
|
||||||
"Trunk": {
|
|
||||||
"use_external/enabled": true,
|
|
||||||
"use_external/path": "res://Models/Props/Materials/tree.tres"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nodes": {
|
|
||||||
"PATH:RootNode/SM_Tree_Dead_02": {
|
|
||||||
"generate/physics": true,
|
|
||||||
"physics/shape_type": 5,
|
|
||||||
"primitive/height": 2.5,
|
|
||||||
"primitive/position": Vector3(0, 1, 0),
|
|
||||||
"primitive/radius": 0.1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
gltf/naming_version=1
|
|
||||||
gltf/embedded_image_handling=1
|
|
Binary file not shown.
BIN
godot/Models/Props/Textures/Fern_Texture.png (Stored with Git LFS)
BIN
godot/Models/Props/Textures/Fern_Texture.png (Stored with Git LFS)
Binary file not shown.
|
@ -1,35 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://b20jr1o15h27s"
|
|
||||||
path.s3tc="res://.godot/imported/Fern_Texture.png-86b4cb03c2c27f7527d581a46603d050.s3tc.ctex"
|
|
||||||
metadata={
|
|
||||||
"imported_formats": ["s3tc_bptc"],
|
|
||||||
"vram_texture": true
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Props/Textures/Fern_Texture.png"
|
|
||||||
dest_files=["res://.godot/imported/Fern_Texture.png-86b4cb03c2c27f7527d581a46603d050.s3tc.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=2
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/hdr_compression=1
|
|
||||||
compress/normal_map=0
|
|
||||||
compress/channel_pack=0
|
|
||||||
mipmaps/generate=true
|
|
||||||
mipmaps/limit=-1
|
|
||||||
roughness/mode=0
|
|
||||||
roughness/src_normal=""
|
|
||||||
process/fix_alpha_border=true
|
|
||||||
process/premult_alpha=false
|
|
||||||
process/normal_map_invert_y=false
|
|
||||||
process/hdr_as_srgb=false
|
|
||||||
process/hdr_clamp_exposure=false
|
|
||||||
process/size_limit=0
|
|
||||||
detect_3d/compress_to=0
|
|
BIN
godot/Models/Props/Textures/Leaves_Generic_Texture.png (Stored with Git LFS)
BIN
godot/Models/Props/Textures/Leaves_Generic_Texture.png (Stored with Git LFS)
Binary file not shown.
|
@ -1,35 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://by5ltkdaer7j6"
|
|
||||||
path.s3tc="res://.godot/imported/Leaves_Generic_Texture.png-311e783912e6bbc47ac787ecf9214db4.s3tc.ctex"
|
|
||||||
metadata={
|
|
||||||
"imported_formats": ["s3tc_bptc"],
|
|
||||||
"vram_texture": true
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Props/Textures/Leaves_Generic_Texture.png"
|
|
||||||
dest_files=["res://.godot/imported/Leaves_Generic_Texture.png-311e783912e6bbc47ac787ecf9214db4.s3tc.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=2
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/hdr_compression=1
|
|
||||||
compress/normal_map=0
|
|
||||||
compress/channel_pack=0
|
|
||||||
mipmaps/generate=true
|
|
||||||
mipmaps/limit=-1
|
|
||||||
roughness/mode=0
|
|
||||||
roughness/src_normal=""
|
|
||||||
process/fix_alpha_border=true
|
|
||||||
process/premult_alpha=false
|
|
||||||
process/normal_map_invert_y=false
|
|
||||||
process/hdr_as_srgb=false
|
|
||||||
process/hdr_clamp_exposure=false
|
|
||||||
process/size_limit=0
|
|
||||||
detect_3d/compress_to=0
|
|
BIN
godot/Models/Props/Textures/PolygonNature_01.png (Stored with Git LFS)
BIN
godot/Models/Props/Textures/PolygonNature_01.png (Stored with Git LFS)
Binary file not shown.
|
@ -1,35 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://dhwwd6tpuq1ml"
|
|
||||||
path.s3tc="res://.godot/imported/PolygonNature_01.png-8d601fd201fc6b24886820c962502976.s3tc.ctex"
|
|
||||||
metadata={
|
|
||||||
"imported_formats": ["s3tc_bptc"],
|
|
||||||
"vram_texture": true
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Props/Textures/PolygonNature_01.png"
|
|
||||||
dest_files=["res://.godot/imported/PolygonNature_01.png-8d601fd201fc6b24886820c962502976.s3tc.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=2
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/hdr_compression=1
|
|
||||||
compress/normal_map=0
|
|
||||||
compress/channel_pack=0
|
|
||||||
mipmaps/generate=true
|
|
||||||
mipmaps/limit=-1
|
|
||||||
roughness/mode=0
|
|
||||||
roughness/src_normal=""
|
|
||||||
process/fix_alpha_border=true
|
|
||||||
process/premult_alpha=false
|
|
||||||
process/normal_map_invert_y=false
|
|
||||||
process/hdr_as_srgb=false
|
|
||||||
process/hdr_clamp_exposure=false
|
|
||||||
process/size_limit=0
|
|
||||||
detect_3d/compress_to=0
|
|
BIN
godot/Models/Props/Textures/PolygonNature_02.png (Stored with Git LFS)
BIN
godot/Models/Props/Textures/PolygonNature_02.png (Stored with Git LFS)
Binary file not shown.
|
@ -1,34 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://bv802p28ssvqo"
|
|
||||||
path="res://.godot/imported/PolygonNature_02.png-e9db27c2393a982a3232b81c9cc741c9.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Props/Textures/PolygonNature_02.png"
|
|
||||||
dest_files=["res://.godot/imported/PolygonNature_02.png-e9db27c2393a982a3232b81c9cc741c9.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=0
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/hdr_compression=1
|
|
||||||
compress/normal_map=0
|
|
||||||
compress/channel_pack=0
|
|
||||||
mipmaps/generate=false
|
|
||||||
mipmaps/limit=-1
|
|
||||||
roughness/mode=0
|
|
||||||
roughness/src_normal=""
|
|
||||||
process/fix_alpha_border=true
|
|
||||||
process/premult_alpha=false
|
|
||||||
process/normal_map_invert_y=false
|
|
||||||
process/hdr_as_srgb=false
|
|
||||||
process/hdr_clamp_exposure=false
|
|
||||||
process/size_limit=0
|
|
||||||
detect_3d/compress_to=1
|
|
BIN
godot/Models/Props/Textures/PolygonNature_03.png (Stored with Git LFS)
BIN
godot/Models/Props/Textures/PolygonNature_03.png (Stored with Git LFS)
Binary file not shown.
|
@ -1,34 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://b5ol3toskc3dh"
|
|
||||||
path="res://.godot/imported/PolygonNature_03.png-9715575ff52cabf3507c5bbef82a3294.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Props/Textures/PolygonNature_03.png"
|
|
||||||
dest_files=["res://.godot/imported/PolygonNature_03.png-9715575ff52cabf3507c5bbef82a3294.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=0
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/hdr_compression=1
|
|
||||||
compress/normal_map=0
|
|
||||||
compress/channel_pack=0
|
|
||||||
mipmaps/generate=false
|
|
||||||
mipmaps/limit=-1
|
|
||||||
roughness/mode=0
|
|
||||||
roughness/src_normal=""
|
|
||||||
process/fix_alpha_border=true
|
|
||||||
process/premult_alpha=false
|
|
||||||
process/normal_map_invert_y=false
|
|
||||||
process/hdr_as_srgb=false
|
|
||||||
process/hdr_clamp_exposure=false
|
|
||||||
process/size_limit=0
|
|
||||||
detect_3d/compress_to=1
|
|
BIN
godot/Models/Props/Textures/PolygonNature_04.png (Stored with Git LFS)
BIN
godot/Models/Props/Textures/PolygonNature_04.png (Stored with Git LFS)
Binary file not shown.
|
@ -1,34 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://hy8b8j1no6lt"
|
|
||||||
path="res://.godot/imported/PolygonNature_04.png-613b4239645126b79551b017646b9c90.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Props/Textures/PolygonNature_04.png"
|
|
||||||
dest_files=["res://.godot/imported/PolygonNature_04.png-613b4239645126b79551b017646b9c90.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=0
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/hdr_compression=1
|
|
||||||
compress/normal_map=0
|
|
||||||
compress/channel_pack=0
|
|
||||||
mipmaps/generate=false
|
|
||||||
mipmaps/limit=-1
|
|
||||||
roughness/mode=0
|
|
||||||
roughness/src_normal=""
|
|
||||||
process/fix_alpha_border=true
|
|
||||||
process/premult_alpha=false
|
|
||||||
process/normal_map_invert_y=false
|
|
||||||
process/hdr_as_srgb=false
|
|
||||||
process/hdr_clamp_exposure=false
|
|
||||||
process/size_limit=0
|
|
||||||
detect_3d/compress_to=1
|
|
BIN
godot/Models/Props/Textures/Tree_Dead_Branch.png (Stored with Git LFS)
BIN
godot/Models/Props/Textures/Tree_Dead_Branch.png (Stored with Git LFS)
Binary file not shown.
|
@ -1,35 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://bd3tuw71coag3"
|
|
||||||
path.s3tc="res://.godot/imported/Tree_Dead_Branch.png-177f89f0172411ce5694549c7775e467.s3tc.ctex"
|
|
||||||
metadata={
|
|
||||||
"imported_formats": ["s3tc_bptc"],
|
|
||||||
"vram_texture": true
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Props/Textures/Tree_Dead_Branch.png"
|
|
||||||
dest_files=["res://.godot/imported/Tree_Dead_Branch.png-177f89f0172411ce5694549c7775e467.s3tc.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=2
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/hdr_compression=1
|
|
||||||
compress/normal_map=0
|
|
||||||
compress/channel_pack=0
|
|
||||||
mipmaps/generate=true
|
|
||||||
mipmaps/limit=-1
|
|
||||||
roughness/mode=0
|
|
||||||
roughness/src_normal=""
|
|
||||||
process/fix_alpha_border=true
|
|
||||||
process/premult_alpha=false
|
|
||||||
process/normal_map_invert_y=false
|
|
||||||
process/hdr_as_srgb=false
|
|
||||||
process/hdr_clamp_exposure=false
|
|
||||||
process/size_limit=0
|
|
||||||
detect_3d/compress_to=0
|
|
BIN
godot/Models/Sky/MountainSkybox.fbx (Stored with Git LFS)
BIN
godot/Models/Sky/MountainSkybox.fbx (Stored with Git LFS)
Binary file not shown.
|
@ -1,41 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://vgxi3xp3ces5"
|
|
||||||
path="res://.godot/imported/MountainSkybox.fbx-b3fa7236421d2ee9a0de566dab23ed3f.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Sky/MountainSkybox.fbx"
|
|
||||||
dest_files=["res://.godot/imported/MountainSkybox.fbx-b3fa7236421d2ee9a0de566dab23ed3f.scn"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
nodes/root_type=""
|
|
||||||
nodes/root_name=""
|
|
||||||
nodes/apply_root_scale=true
|
|
||||||
nodes/root_scale=1.0
|
|
||||||
meshes/ensure_tangents=true
|
|
||||||
meshes/generate_lods=true
|
|
||||||
meshes/create_shadow_meshes=true
|
|
||||||
meshes/light_baking=1
|
|
||||||
meshes/lightmap_texel_size=0.2
|
|
||||||
meshes/force_disable_compression=false
|
|
||||||
skins/use_named_skins=true
|
|
||||||
animation/import=true
|
|
||||||
animation/fps=30
|
|
||||||
animation/trimming=false
|
|
||||||
animation/remove_immutable_tracks=true
|
|
||||||
import_script/path=""
|
|
||||||
_subresources={
|
|
||||||
"materials": {
|
|
||||||
"lambert1": {
|
|
||||||
"use_external/enabled": true,
|
|
||||||
"use_external/path": "res://Models/Sky/sky.tres"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
gltf/naming_version=1
|
|
||||||
gltf/embedded_image_handling=1
|
|
BIN
godot/Models/Sky/Skybox_Diff.png (Stored with Git LFS)
BIN
godot/Models/Sky/Skybox_Diff.png (Stored with Git LFS)
Binary file not shown.
|
@ -1,35 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://fd8740pp6c65"
|
|
||||||
path.s3tc="res://.godot/imported/Skybox_Diff.png-7540f2719dd0664056e8a8c9082d3027.s3tc.ctex"
|
|
||||||
metadata={
|
|
||||||
"imported_formats": ["s3tc_bptc"],
|
|
||||||
"vram_texture": true
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Sky/Skybox_Diff.png"
|
|
||||||
dest_files=["res://.godot/imported/Skybox_Diff.png-7540f2719dd0664056e8a8c9082d3027.s3tc.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=2
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/hdr_compression=1
|
|
||||||
compress/normal_map=0
|
|
||||||
compress/channel_pack=0
|
|
||||||
mipmaps/generate=true
|
|
||||||
mipmaps/limit=-1
|
|
||||||
roughness/mode=0
|
|
||||||
roughness/src_normal=""
|
|
||||||
process/fix_alpha_border=true
|
|
||||||
process/premult_alpha=false
|
|
||||||
process/normal_map_invert_y=false
|
|
||||||
process/hdr_as_srgb=false
|
|
||||||
process/hdr_clamp_exposure=false
|
|
||||||
process/size_limit=0
|
|
||||||
detect_3d/compress_to=0
|
|
BIN
godot/Models/Sky/Skybox_No_Snow_Diff.png (Stored with Git LFS)
BIN
godot/Models/Sky/Skybox_No_Snow_Diff.png (Stored with Git LFS)
Binary file not shown.
|
@ -1,34 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://daxuhceq1xp8e"
|
|
||||||
path="res://.godot/imported/Skybox_No_Snow_Diff.png-4aac1df060d706f7f84d7e011badea7b.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Sky/Skybox_No_Snow_Diff.png"
|
|
||||||
dest_files=["res://.godot/imported/Skybox_No_Snow_Diff.png-4aac1df060d706f7f84d7e011badea7b.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=0
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/hdr_compression=1
|
|
||||||
compress/normal_map=0
|
|
||||||
compress/channel_pack=0
|
|
||||||
mipmaps/generate=false
|
|
||||||
mipmaps/limit=-1
|
|
||||||
roughness/mode=0
|
|
||||||
roughness/src_normal=""
|
|
||||||
process/fix_alpha_border=true
|
|
||||||
process/premult_alpha=false
|
|
||||||
process/normal_map_invert_y=false
|
|
||||||
process/hdr_as_srgb=false
|
|
||||||
process/hdr_clamp_exposure=false
|
|
||||||
process/size_limit=0
|
|
||||||
detect_3d/compress_to=1
|
|
BIN
godot/Models/Sky/Skybox_Normal.png (Stored with Git LFS)
BIN
godot/Models/Sky/Skybox_Normal.png (Stored with Git LFS)
Binary file not shown.
|
@ -1,34 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://cbgfiq60qi04y"
|
|
||||||
path="res://.godot/imported/Skybox_Normal.png-0298afdd81d923bbadde428f4cf9fcc0.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Sky/Skybox_Normal.png"
|
|
||||||
dest_files=["res://.godot/imported/Skybox_Normal.png-0298afdd81d923bbadde428f4cf9fcc0.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=0
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/hdr_compression=1
|
|
||||||
compress/normal_map=0
|
|
||||||
compress/channel_pack=0
|
|
||||||
mipmaps/generate=false
|
|
||||||
mipmaps/limit=-1
|
|
||||||
roughness/mode=0
|
|
||||||
roughness/src_normal=""
|
|
||||||
process/fix_alpha_border=true
|
|
||||||
process/premult_alpha=false
|
|
||||||
process/normal_map_invert_y=false
|
|
||||||
process/hdr_as_srgb=false
|
|
||||||
process/hdr_clamp_exposure=false
|
|
||||||
process/size_limit=0
|
|
||||||
detect_3d/compress_to=1
|
|
|
@ -1,7 +0,0 @@
|
||||||
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://bmmdcphiyb35f"]
|
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://fd8740pp6c65" path="res://Models/Sky/Skybox_Diff.png" id="1_mcq4h"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
transparency = 1
|
|
||||||
albedo_texture = ExtResource("1_mcq4h")
|
|
BIN
godot/Models/Weapons/SM_Prop_Sword_01.fbx (Stored with Git LFS)
BIN
godot/Models/Weapons/SM_Prop_Sword_01.fbx (Stored with Git LFS)
Binary file not shown.
|
@ -1,41 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="scene"
|
|
||||||
importer_version=1
|
|
||||||
type="PackedScene"
|
|
||||||
uid="uid://b0xxc2h5fgtpm"
|
|
||||||
path="res://.godot/imported/SM_Prop_Sword_01.fbx-bcf24ec78f44a339d13c7f93d8b8c416.scn"
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://Models/Weapons/SM_Prop_Sword_01.fbx"
|
|
||||||
dest_files=["res://.godot/imported/SM_Prop_Sword_01.fbx-bcf24ec78f44a339d13c7f93d8b8c416.scn"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
nodes/root_type=""
|
|
||||||
nodes/root_name=""
|
|
||||||
nodes/apply_root_scale=true
|
|
||||||
nodes/root_scale=1.0
|
|
||||||
meshes/ensure_tangents=true
|
|
||||||
meshes/generate_lods=true
|
|
||||||
meshes/create_shadow_meshes=true
|
|
||||||
meshes/light_baking=1
|
|
||||||
meshes/lightmap_texel_size=0.2
|
|
||||||
meshes/force_disable_compression=false
|
|
||||||
skins/use_named_skins=true
|
|
||||||
animation/import=true
|
|
||||||
animation/fps=30
|
|
||||||
animation/trimming=false
|
|
||||||
animation/remove_immutable_tracks=true
|
|
||||||
import_script/path=""
|
|
||||||
_subresources={
|
|
||||||
"materials": {
|
|
||||||
"lambert4SG2": {
|
|
||||||
"use_external/enabled": true,
|
|
||||||
"use_external/path": "res://Models/Weapons/sword.tres"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
gltf/naming_version=1
|
|
||||||
gltf/embedded_image_handling=1
|
|
|
@ -1,6 +0,0 @@
|
||||||
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://ctst7ps33k0aj"]
|
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://dg1l3p37suwt3" path="res://Models/Environments/Textures/PolygonPrototype_Texture_04.png" id="1_yk1ky"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
albedo_texture = ExtResource("1_yk1ky")
|
|
1702
godot/player.tscn
1702
godot/player.tscn
File diff suppressed because it is too large
Load Diff
|
@ -1,16 +1,12 @@
|
||||||
#include "game_mode.hpp"
|
#include "game_mode.hpp"
|
||||||
#include <optional>
|
#include <optional>
|
||||||
#include "godot_cpp/variant/utility_functions.hpp"
|
#include "godot_cpp/variant/utility_functions.hpp"
|
||||||
#include "godot_cpp/classes/viewport.hpp"
|
|
||||||
#include "godot_macros.h"
|
#include "godot_macros.h"
|
||||||
#include "level.hpp"
|
#include "level.hpp"
|
||||||
#include "player.hpp"
|
#include "player.hpp"
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
GameMode *GameMode::static_instance{nullptr};
|
GameMode* GameMode::static_instance{nullptr};
|
||||||
|
|
||||||
GameMode *GameMode::get_singleton() { return GameMode::static_instance; }
|
|
||||||
bool GameMode::has_singleton() { return GameMode::static_instance != nullptr; }
|
|
||||||
|
|
||||||
void GameMode::_bind_methods() {
|
void GameMode::_bind_methods() {
|
||||||
#define CLASSNAME GameMode
|
#define CLASSNAME GameMode
|
||||||
|
|
|
@ -31,9 +31,6 @@ public:
|
||||||
void load_level(Ref<PackedScene>& levelScene,
|
void load_level(Ref<PackedScene>& levelScene,
|
||||||
std::optional<String> entrance);
|
std::optional<String> entrance);
|
||||||
|
|
||||||
static GameMode *get_singleton();
|
|
||||||
static bool has_singleton();
|
|
||||||
|
|
||||||
Player* get_player_instance() const;
|
Player* get_player_instance() const;
|
||||||
|
|
||||||
void set_first_level(Ref<PackedScene> level);
|
void set_first_level(Ref<PackedScene> level);
|
||||||
|
|
116
src/player.cpp
116
src/player.cpp
|
@ -1,10 +1,8 @@
|
||||||
#include "player.hpp"
|
#include "player.hpp"
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include "game_mode.hpp"
|
|
||||||
#include "godot_cpp/classes/animation_tree.hpp"
|
#include "godot_cpp/classes/animation_tree.hpp"
|
||||||
#include "godot_cpp/classes/node3d.hpp"
|
#include "godot_cpp/classes/node3d.hpp"
|
||||||
#include "godot_cpp/classes/skeleton3d.hpp"
|
#include "godot_cpp/classes/skeleton3d.hpp"
|
||||||
#include "godot_cpp/variant/utility_functions.hpp"
|
|
||||||
#include "godot_macros.h"
|
#include "godot_macros.h"
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
|
@ -13,131 +11,109 @@ void Player::_bind_methods() {
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
GDPROPERTY(active_customization, Variant::DICTIONARY);
|
GDPROPERTY(active_customization, Variant::DICTIONARY);
|
||||||
#endif
|
#endif
|
||||||
GDFUNCTION_ARGS(on_horizontal, "event", "value");
|
|
||||||
GDFUNCTION_ARGS(on_vertical, "event", "value");
|
|
||||||
}
|
}
|
||||||
void Player::_enter_tree() {
|
void Player::_enter_tree() {
|
||||||
this->model = this->get_node<Node3D>("Model");
|
this->model = this->get_node<Node3D>("Model");
|
||||||
this->animTree = this->get_node<AnimationTree>("AnimationTree");
|
this->animTree = this->get_node<AnimationTree>("AnimationTree");
|
||||||
GDGAMEONLY();
|
this->customization_init();
|
||||||
this->input = this->get_node<PlayerInput>("PlayerInput");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::_ready() {
|
void Player::_exit_tree() {
|
||||||
this->customization_init();
|
// free the customization options that were removed from the tree
|
||||||
GDGAMEONLY();
|
for(std::pair<const String, CustomizationState>& pair: this->customization) {
|
||||||
this->input->listen_to(PlayerInput::Listener("move_left", "move_right", this, "on_horizontal"));
|
for(Node3D *option: pair.second.options) {
|
||||||
this->input->listen_to(PlayerInput::Listener("move_forward", "move_back", this, "on_vertical"));
|
if(!option->is_inside_tree()) {
|
||||||
|
option->queue_free();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::_process(double deltaTime) {}
|
void Player::_process(double deltaTime) {}
|
||||||
void Player::_physics_process(double deltaTime) {}
|
void Player::_physics_process(double deltaTime) {}
|
||||||
|
|
||||||
void Player::set_customization_active(Node3D *node, bool active) {
|
void Player::select_customization(String category, std::optional<size_t> index) {
|
||||||
node->set_visible(active);
|
if(this->customization.find(category) == this->customization.end())
|
||||||
node->set_process(active);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Player::on_horizontal(Ref<InputEvent> event, float value) {
|
|
||||||
this->moveInput.x = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Player::on_vertical(Ref<InputEvent> event, float value) {
|
|
||||||
this->moveInput.y = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Player::select_customization(String category,
|
|
||||||
std::optional<size_t> index) {
|
|
||||||
if (this->customization.find(category) == this->customization.end())
|
|
||||||
return;
|
return;
|
||||||
CustomizationState& pair = this->customization.at(category);
|
CustomizationState &pair = this->customization.at(category);
|
||||||
// invalid keys are stored as the size of the array
|
// invalid keys are stored as the size of the array
|
||||||
if (index.has_value() && index.value() > pair.options.size())
|
if(index.has_value() && index.value() > pair.options.size())
|
||||||
index = std::nullopt;
|
index = std::nullopt;
|
||||||
// nothing changes
|
// nothing changes
|
||||||
if (index == pair.currentSelected)
|
if(index == pair.currentSelected)
|
||||||
return;
|
return;
|
||||||
// disable previous chosen option, if any
|
// disable previous chosen option, if any
|
||||||
if (pair.currentSelected.has_value())
|
if(pair.currentSelected.has_value())
|
||||||
Player::set_customization_active(pair.options.at(pair.currentSelected.value()), false);
|
customizationParent->remove_child(pair.options.at(pair.currentSelected.value()));
|
||||||
// enable chosen option, if any
|
// enable chosen option, if any
|
||||||
if (index.has_value())
|
if(index.has_value())
|
||||||
Player::set_customization_active(pair.options.at(index.value()), false);
|
customizationParent->add_child(pair.options.at(index.value()));
|
||||||
pair.currentSelected = index;
|
pair.currentSelected = index;
|
||||||
}
|
}
|
||||||
|
|
||||||
Dictionary Player::get_active_customization() const {
|
Dictionary Player::get_active_customization() const {
|
||||||
Dictionary result{};
|
Dictionary result{};
|
||||||
// translate the map to a dictionary of keys and indexes
|
// translate the map to a dictionary of keys and indexes
|
||||||
for (std::pair<String, CustomizationState> const& pair :
|
for(std::pair<String, CustomizationState> const &pair: this->customization)
|
||||||
this->customization)
|
|
||||||
result[pair.first] = pair.second.currentSelected.has_value()
|
result[pair.first] = pair.second.currentSelected.has_value()
|
||||||
? pair.second.currentSelected.value()
|
? pair.second.currentSelected.value()
|
||||||
: -1; // an invalid key will always be -1
|
: -1; // an invalid key will always be -1
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::set_active_customization(Dictionary value) {
|
void Player::set_active_customization(Dictionary value) {
|
||||||
for (size_t i = 0; i < value.size(); ++i) {
|
for(size_t i = 0; i < value.size(); ++i) {
|
||||||
String key = value.keys()[i];
|
String key = value.keys()[i];
|
||||||
size_t selection = value[key];
|
size_t selection = value[key];
|
||||||
// wether or not the a given key exists in the customization map
|
bool exists = this->customization.find(key) != this->customization.end(); // wether or not the a given key exists in the customization map
|
||||||
bool exists = this->customization.find(key) != this->customization.end();
|
// if not, it can be added, as long as the customization map has not yet been initialized by _enter_tree
|
||||||
// if not, it can be added, as long as the customization map has not yet
|
if(!exists && !this->is_inside_tree())
|
||||||
// been initialized by _ready
|
|
||||||
if (!exists && !this->is_inside_tree())
|
|
||||||
this->customization.insert({key, {std::optional{selection}, {}}});
|
this->customization.insert({key, {std::optional{selection}, {}}});
|
||||||
// if the key does not exist in customization and _ready is already
|
// if the key does not exist in customization and _enter_tree is already called, the key is not valid and discarted
|
||||||
// called, the key is not valid and discarted
|
else if(!exists)
|
||||||
else if (!exists)
|
|
||||||
return;
|
return;
|
||||||
else
|
else
|
||||||
this->select_customization(
|
this->select_customization(key, selection >= 0 ? std::optional{selection} : std::nullopt);
|
||||||
key, selection >= 0 ? std::optional{selection} : std::nullopt);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::customization_init() {
|
void Player::customization_init() {
|
||||||
this->customizationParent =
|
this->customizationParent = this->get_node<Skeleton3D>("Model/RootNode/Skeleton3D");
|
||||||
this->get_node<Skeleton3D>("Model/RootNode/GeneralSkeleton");
|
if(!this->customizationParent)
|
||||||
if (this->customizationParent == nullptr)
|
|
||||||
return;
|
return;
|
||||||
for (int i = 0; i < customizationParent->get_child_count(); ++i) {
|
for(int i = 0; i < customizationParent->get_child_count(); ++i) {
|
||||||
// get the next valid child
|
// get the next valid child
|
||||||
Node3D* child = Object::cast_to<Node3D>(this->customizationParent->get_child(i));
|
Node3D *child = Object::cast_to<Node3D>(this->customizationParent->get_child(i));
|
||||||
if (child == nullptr)
|
if(!child) continue;
|
||||||
continue;
|
|
||||||
// split it's name into parts based on _
|
// split it's name into parts based on _
|
||||||
// the format for the names will be Chr_<CATEGORY NAME>_<ADDITIONAL IDENTIFIERS>_<NUMBER> numbering IS NOT guaranteed to start at 0 OR 1
|
// the format for the names will be Chr_<CATEGORY NAME>_<ADDITIONAL IDENTIFIERS>_<NUMBER>
|
||||||
|
// numbering IS NOT guaranteed to start at 0 OR 1
|
||||||
// the category name will serve as the key to the customization map
|
// the category name will serve as the key to the customization map
|
||||||
// additional identifiers are ignored
|
// additional identifiers are ignored
|
||||||
PackedStringArray slices = child->get_name().split("_", false);
|
PackedStringArray slices = child->get_name().split("_", false);
|
||||||
// create a new customization state if one does not exist for this category
|
// create a new customization state if one does not exist for this category
|
||||||
if (this->customization.find(slices[1]) == this->customization.end())
|
if(this->customization.find(slices[1]) == this->customization.end())
|
||||||
this->customization.insert({slices[1], {std::optional{0}, {}}});
|
this->customization.insert({slices[1], {std::optional{0}, {}}});
|
||||||
// add the new child to the customization options for this category
|
// add the new child to the customization options for this category
|
||||||
CustomizationState& state = this->customization.at(slices[1]);
|
CustomizationState &state = this->customization.at(slices[1]);
|
||||||
state.options.push_back(child);
|
state.options.push_back(child);
|
||||||
// set invisible if this child is not the current selection
|
// only allow this child to exist in the scene tree if it was saved as the current selection
|
||||||
if (state.currentSelected != state.options.size() - 1) {
|
if(state.currentSelected != state.options.size()-1) {
|
||||||
Player::set_customization_active(child, false);
|
this->customizationParent->remove_child(child);
|
||||||
|
--i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// collect customization categories that do not contain any options
|
// collect customization categories that do not contain any options
|
||||||
std::vector<String> empty{};
|
std::vector<String> empty{};
|
||||||
for (std::pair<const String, CustomizationState>& pair :
|
for(std::pair<const String, CustomizationState>& pair: this->customization) {
|
||||||
this->customization) {
|
if(pair.second.options.size() == 0)
|
||||||
if (pair.second.options.size() == 0)
|
|
||||||
empty.push_back(pair.first);
|
empty.push_back(pair.first);
|
||||||
if (pair.second.currentSelected.has_value() &&
|
if(pair.second.currentSelected.has_value() && pair.second.currentSelected.value() > pair.second.options.size())
|
||||||
pair.second.currentSelected.value() > pair.second.options.size())
|
|
||||||
pair.second.currentSelected = std::nullopt;
|
pair.second.currentSelected = std::nullopt;
|
||||||
UtilityFunctions::print("- ", pair.first);
|
|
||||||
}
|
}
|
||||||
// remove collected empty categories
|
// remove collected empty categories
|
||||||
for (String const& key : empty) {
|
for(String const& key: empty) {
|
||||||
this->customization.erase(key);
|
this->customization.erase(key);
|
||||||
UtilityFunctions::print("removing ", key);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // namespace godot
|
} // namespace godot
|
||||||
|
|
|
@ -4,9 +4,7 @@
|
||||||
#include <map>
|
#include <map>
|
||||||
#include "godot_cpp/classes/animation_tree.hpp"
|
#include "godot_cpp/classes/animation_tree.hpp"
|
||||||
#include "godot_cpp/classes/character_body3d.hpp"
|
#include "godot_cpp/classes/character_body3d.hpp"
|
||||||
#include "godot_cpp/classes/input_event.hpp"
|
|
||||||
#include "godot_cpp/classes/skeleton3d.hpp"
|
#include "godot_cpp/classes/skeleton3d.hpp"
|
||||||
#include "player_input.hpp"
|
|
||||||
#include <optional>
|
#include <optional>
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
|
@ -28,23 +26,13 @@ protected:
|
||||||
AnimationTree* animTree{nullptr};
|
AnimationTree* animTree{nullptr};
|
||||||
// the skeleton of the customizable character model
|
// the skeleton of the customizable character model
|
||||||
Skeleton3D *customizationParent{nullptr};
|
Skeleton3D *customizationParent{nullptr};
|
||||||
PlayerInput *input{nullptr};
|
|
||||||
|
|
||||||
float walkSpeed{10.f};
|
|
||||||
|
|
||||||
Vector2 moveInput{0.f, 0.f};
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual void _enter_tree() override;
|
virtual void _enter_tree() override;
|
||||||
virtual void _ready() override;
|
virtual void _exit_tree() override;
|
||||||
virtual void _process(double deltaTime) override;
|
virtual void _process(double deltaTime) override;
|
||||||
virtual void _physics_process(double deltaTime) override;
|
virtual void _physics_process(double deltaTime) override;
|
||||||
|
|
||||||
static void set_customization_active(Node3D *node, bool active);
|
|
||||||
|
|
||||||
void on_horizontal(Ref<InputEvent> event, float value);
|
|
||||||
void on_vertical(Ref<InputEvent> event, float value);
|
|
||||||
|
|
||||||
// Swap out the currently active customization for this category
|
// Swap out the currently active customization for this category
|
||||||
void select_customization(String category, std::optional<size_t> value);
|
void select_customization(String category, std::optional<size_t> value);
|
||||||
// Construct a dictionary of [String, int] where the key is a category
|
// Construct a dictionary of [String, int] where the key is a category
|
||||||
|
|
|
@ -1,63 +0,0 @@
|
||||||
#include "player_input.hpp"
|
|
||||||
#include "godot_macros.h"
|
|
||||||
#include "godot_cpp/classes/input.hpp"
|
|
||||||
#include "godot_cpp/classes/input_event.hpp"
|
|
||||||
#include <algorithm>
|
|
||||||
|
|
||||||
namespace godot {
|
|
||||||
void PlayerInput::_bind_methods() {}
|
|
||||||
|
|
||||||
PlayerInput::Listener::Listener(String positive, String negative, Node *object, String method)
|
|
||||||
: actionNegative{negative}
|
|
||||||
, actionPositive{positive}
|
|
||||||
, methodName{method}
|
|
||||||
, object{object} {}
|
|
||||||
|
|
||||||
bool PlayerInput::Listener::has_changed(Ref<InputEvent> const &event) {
|
|
||||||
return event->is_action(this->actionNegative) || event->is_action(this->actionPositive);
|
|
||||||
}
|
|
||||||
float PlayerInput::Listener::evaluate(Ref<InputEvent> const &event) {
|
|
||||||
float newest = static_cast<float>(event->is_action_pressed(this->actionPositive))
|
|
||||||
- static_cast<float>(event->is_action_pressed(this->actionNegative));
|
|
||||||
if(lastCached != newest)
|
|
||||||
this->object->call(this->methodName, event, newest);
|
|
||||||
return (lastCached = newest);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool PlayerInput::Listener::operator==(godot::PlayerInput::Listener const& b) {
|
|
||||||
return this->methodName == b.methodName
|
|
||||||
&& this->object == b.object
|
|
||||||
&& this->actionNegative == b.actionNegative
|
|
||||||
&& this->actionPositive == b.actionPositive;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlayerInput::_unhandled_input(Ref<InputEvent> const &event) {
|
|
||||||
GDGAMEONLY();
|
|
||||||
for(Listener& listener: this->listeners) {
|
|
||||||
if(listener.has_changed(event)) {
|
|
||||||
listener.evaluate(event);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlayerInput::listen_to(Listener const& listener) {
|
|
||||||
this->listeners.push_back(listener);
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlayerInput::stop_listening(Node *node) {
|
|
||||||
for(size_t i = 0; i < this->listeners.size(); ++i) {
|
|
||||||
Listener& l = this->listeners.at(i);
|
|
||||||
if(l.object == node) {
|
|
||||||
this->listeners.erase(this->listeners.begin() + i);
|
|
||||||
i--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlayerInput::stop_listening(Listener const& listener) {
|
|
||||||
std::vector<Listener>::iterator itr = std::find(this->listeners.begin(), this->listeners.end(), listener);
|
|
||||||
if(itr != this->listeners.end())
|
|
||||||
this->listeners.erase(itr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,37 +0,0 @@
|
||||||
#ifndef PLAYER_INPUT_HPP
|
|
||||||
#define PLAYER_INPUT_HPP
|
|
||||||
|
|
||||||
#include <vector>
|
|
||||||
#include "godot_cpp/classes/input_event.hpp"
|
|
||||||
#include "godot_cpp/classes/node.hpp"
|
|
||||||
|
|
||||||
namespace godot {
|
|
||||||
class PlayerInput : public Node {
|
|
||||||
GDCLASS(PlayerInput, Node)
|
|
||||||
static void _bind_methods();
|
|
||||||
public:
|
|
||||||
struct Listener {
|
|
||||||
String actionNegative{""};
|
|
||||||
String actionPositive{""};
|
|
||||||
float lastCached{0.f};
|
|
||||||
String methodName{""};
|
|
||||||
Node *object;
|
|
||||||
|
|
||||||
Listener(String positive, String negative, Node *object, String method);
|
|
||||||
bool has_changed(Ref<InputEvent> const &event);
|
|
||||||
float evaluate(Ref<InputEvent> const &event);
|
|
||||||
bool operator==(godot::PlayerInput::Listener const& b);
|
|
||||||
};
|
|
||||||
private:
|
|
||||||
std::vector<Listener> listeners;
|
|
||||||
public:
|
|
||||||
virtual void _unhandled_input(Ref<InputEvent> const &event) override;
|
|
||||||
|
|
||||||
void listen_to(Listener const& listener);
|
|
||||||
void stop_listening(Node *node);
|
|
||||||
void stop_listening(Listener const& listener);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif // !PLAYER_INPUT_HPP
|
|
|
@ -8,7 +8,6 @@
|
||||||
#include "game_mode.hpp"
|
#include "game_mode.hpp"
|
||||||
#include "level.hpp"
|
#include "level.hpp"
|
||||||
#include "player.hpp"
|
#include "player.hpp"
|
||||||
#include "player_input.hpp"
|
|
||||||
|
|
||||||
using namespace godot;
|
using namespace godot;
|
||||||
|
|
||||||
|
@ -20,7 +19,6 @@ void initialize_gdextension_types(ModuleInitializationLevel p_level) {
|
||||||
ClassDB::register_class<Level>();
|
ClassDB::register_class<Level>();
|
||||||
ClassDB::register_class<Entrance>();
|
ClassDB::register_class<Entrance>();
|
||||||
ClassDB::register_class<GameMode>();
|
ClassDB::register_class<GameMode>();
|
||||||
ClassDB::register_class<PlayerInput>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
Loading…
Reference in New Issue