Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cc973b9f0d | |||
| 8a552f7993 | |||
| 93841bc85d | |||
| 9ba8847626 | |||
| 51b7328310 | |||
| fdc352596d | |||
| 89ba5cc985 | |||
| fdc79166a0 | |||
| b84487336b | |||
| e4ab103c4d | |||
| 3b6cf0252b | |||
| e908cd3085 | |||
| 6b23fdbd26 | |||
| ea6258ff19 | |||
| 5e54f0f83b | |||
| f00439a430 | |||
| 02ec230b3f |
@@ -10,44 +10,22 @@ on:
|
||||
- "**"
|
||||
|
||||
env:
|
||||
GODOT_VERSION: 4.6
|
||||
GAME_NAME: MovementTests
|
||||
ITCHIO_USERNAME: Minimata
|
||||
ITCHIO_GAMEID: MovementTests
|
||||
|
||||
jobs:
|
||||
Export:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
RUNNER_TOOL_CACHE: /toolcache # Runner Tool Cache
|
||||
runs-on: godot
|
||||
steps:
|
||||
- name: Install node, xvfb and curl
|
||||
run: |
|
||||
apt update && apt -y install curl nodejs xvfb
|
||||
- name: Checkout with LFS
|
||||
uses: https://git.game-dev.space/minimata/checkout-with-lfs.git@main
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
lfs: false
|
||||
|
||||
- name: Checkout LFS
|
||||
run: |
|
||||
UrlBase=$GITHUB_SERVER_URL; \
|
||||
UrlLfsBase=$UrlBase/${{ gitea.repository }}.git/info/lfs/objects; \
|
||||
Auth=`/usr/bin/git config --get --local http.$UrlBase/.extraheader`; \
|
||||
/usr/bin/git config --local http.${UrlLfsBase}/batch.extraheader "$Auth"; \
|
||||
/usr/bin/git config --local http.${UrlLfsBase}/.extraheader ''
|
||||
|
||||
git config --local lfs.transfer.maxretries 1
|
||||
|
||||
/usr/bin/git lfs fetch origin refs/remotes/origin/${{ gitea.ref_name }}
|
||||
/usr/bin/git lfs checkout
|
||||
/usr/bin/git add .
|
||||
/usr/bin/git reset --hard
|
||||
|
||||
- name: Run tests
|
||||
uses: godot-gdunit-labs/gdUnit4-action@v1
|
||||
with:
|
||||
godot-version: '4.6.0'
|
||||
godot-version: ${GODOT_VERSION}
|
||||
godot-net: true
|
||||
godot-force-mono: true
|
||||
dotnet-version: 'net9.0'
|
||||
@@ -56,7 +34,7 @@ jobs:
|
||||
timeout: 1
|
||||
publish-report: false
|
||||
upload-report: false
|
||||
|
||||
|
||||
- name: Upload test report
|
||||
uses: actions/upload-artifact@v3-node20
|
||||
with:
|
||||
|
||||
@@ -22,6 +22,7 @@ jobs:
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
token: ${{ secrets.TOKEN }}
|
||||
lfs: false
|
||||
- name: Remove buggy pre-push hook
|
||||
run: |
|
||||
@@ -39,27 +40,11 @@ jobs:
|
||||
|
||||
Test:
|
||||
runs-on: godot
|
||||
env:
|
||||
RUNNER_TOOL_CACHE: /toolcache # Runner Tool Cache
|
||||
# env:
|
||||
# RUNNER_TOOL_CACHE: /toolcache # Runner Tool Cache
|
||||
steps:
|
||||
# - name: Install node, xvfb and curl
|
||||
# run: |
|
||||
# apt update && apt -y install curl nodejs xvfb
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
lfs: false
|
||||
persist-credentials: true
|
||||
|
||||
- name: Checkout LFS
|
||||
run: |
|
||||
git lfs install --local
|
||||
AUTH=$(git config http.${{ gitea.server_url }}/.extraheader)
|
||||
AUTH_FILE=$(git config includeif.gitdir:/workspace/${{ gitea.repository }}/.git.path)
|
||||
git config -f $AUTH_FILE --unset http.${{ gitea.server_url }}/.extraheader
|
||||
git config -f $AUTH_FILE http.${{ gitea.server_url }}/${{ gitea.repository }}.git/info/lfs/objects/batch.extraheader "$AUTH"
|
||||
git lfs pull
|
||||
- name: Checkout with LFS
|
||||
uses: https://git.game-dev.space/minimata/checkout-with-lfs.git@main
|
||||
|
||||
- name: Run tests
|
||||
uses: godot-gdunit-labs/gdUnit4-action@v1
|
||||
@@ -82,78 +67,50 @@ jobs:
|
||||
|
||||
Export:
|
||||
runs-on: godot
|
||||
env:
|
||||
RUNNER_TOOL_CACHE: /toolcache # Runner Tool Cache
|
||||
# needs:
|
||||
# - BumpTag
|
||||
# - Test # Wait for tests to finish
|
||||
container:
|
||||
image: barichello/godot-ci:mono-4.6
|
||||
needs:
|
||||
- BumpTag
|
||||
|
||||
steps:
|
||||
- name: Install node, curl and zip
|
||||
run: |
|
||||
apt update && apt -y install curl zip nodejs
|
||||
- name: Checkout with LFS
|
||||
uses: https://git.game-dev.space/minimata/checkout-with-lfs.git@main
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Setup Godot
|
||||
id: setup-godot
|
||||
uses: https://git.game-dev.space/minimata/setup-godot.git@main
|
||||
with:
|
||||
lfs: false
|
||||
persist-credentials: true
|
||||
|
||||
# - name: Checkout LFS
|
||||
# run: |
|
||||
# UrlBase=$GITHUB_SERVER_URL; \
|
||||
# UrlLfsBase=$UrlBase/${{ gitea.repository }}.git/info/lfs/objects; \
|
||||
# Auth=`/usr/bin/git config --get --local http.$UrlBase/.extraheader`; \
|
||||
# /usr/bin/git config --local http.${UrlLfsBase}/batch.extraheader "$Auth"; \
|
||||
# /usr/bin/git config --local http.${UrlLfsBase}/.extraheader ''
|
||||
#
|
||||
# git config --local lfs.transfer.maxretries 1
|
||||
#
|
||||
# /usr/bin/git lfs fetch origin refs/remotes/origin/${{ gitea.ref_name }}
|
||||
# /usr/bin/git lfs checkout
|
||||
# /usr/bin/git add .
|
||||
# /usr/bin/git reset --hard
|
||||
|
||||
# - name: Checkout
|
||||
# uses: actions/checkout@v6
|
||||
# with:
|
||||
# lfs: false
|
||||
# persist-credentials: true
|
||||
godot-version: '4.6'
|
||||
dotnet-version: 'net9.0'
|
||||
|
||||
- name: Checkout LFS
|
||||
- name: Remove GDUnit addon
|
||||
run: |
|
||||
git lfs install --local
|
||||
AUTH=$(git config http.${{ gitea.server_url }}/.extraheader)
|
||||
AUTH_FILE=$(git config includeif.gitdir:/workspace/${{ gitea.repository }}/.git.path)
|
||||
git config -f $AUTH_FILE --unset http.${{ gitea.server_url }}/.extraheader
|
||||
git config -f $AUTH_FILE http.${{ gitea.server_url }}/${{ gitea.repository }}.git/info/lfs/objects/batch.extraheader "$AUTH"
|
||||
git lfs pull
|
||||
|
||||
# - name: Remove GDUnit addon folder because it breaks the build
|
||||
# run: |
|
||||
# rm -rf ${{ gitea.workspace }}/addons/gdunit4
|
||||
|
||||
- uses: actions/setup-dotnet@v5
|
||||
with:
|
||||
dotnet-version: '9.x'
|
||||
|
||||
- name: Import resources and build solution
|
||||
run: |
|
||||
godot --headless --editor --build-solutions --quit --import --path $PWD
|
||||
|
||||
rm -rf ${{ gitea.workspace }}/addons/gdUnit4
|
||||
|
||||
- name: Build Windows
|
||||
run: |
|
||||
mkdir -v -p build/windows
|
||||
godot --headless --verbose --export-release "Windows Desktop" build/windows/${{ env.GAME_NAME }}.exe
|
||||
${{ steps.setup-godot.outputs.godot_bin }} --headless --verbose --export-release "Windows Desktop" build/windows/${{ env.GAME_NAME }}.exe
|
||||
zip -r Windows.zip build/windows
|
||||
- name: Upload to Itch
|
||||
uses: KikimoraGames/itch-publish@v0.0.3
|
||||
with:
|
||||
butlerApiKey: ${{ secrets.BUTLER_TOKEN }}
|
||||
itchUsername: ${{ env.ITCHIO_USERNAME }}
|
||||
itchGameId: ${{ env.ITCHIO_GAMEID }}
|
||||
buildNumber: 0.1.0 # ${{ needs.BumpTag.outputs.tag_name }}
|
||||
gameData: Windows.zip
|
||||
buildChannel: windows
|
||||
|
||||
- name: Setup Butler
|
||||
shell: bash
|
||||
env:
|
||||
BUTLER_API_KEY: ${{ secrets.BUTLER_TOKEN }}
|
||||
run: |
|
||||
mkdir ./tools 2>/dev/null || true
|
||||
pushd tools
|
||||
curl -sSLfo ./butler.zip "https://broth.itch.zone/butler/linux-amd64/LATEST/archive/default"
|
||||
unzip butler.zip
|
||||
chmod +x ./butler
|
||||
popd
|
||||
./tools/butler -V
|
||||
|
||||
- name: Upload to itch.io
|
||||
shell: bash
|
||||
env:
|
||||
BUTLER_API_KEY: ${{ secrets.BUTLER_TOKEN }}
|
||||
run: |
|
||||
versionArgument="--userversion ${{ needs.BumpTag.outputs.tag_name }}"
|
||||
./tools/butler push \
|
||||
"Windows.zip" \
|
||||
${{ env.ITCHIO_USERNAME }}/${{ env.ITCHIO_GAMEID }}:windows ${versionArgument}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ on:
|
||||
- "**"
|
||||
|
||||
env:
|
||||
GODOT_VERSION: 4.6
|
||||
GAME_NAME: MovementTests
|
||||
ITCHIO_USERNAME: Minimata
|
||||
ITCHIO_GAMEID: MovementTests
|
||||
@@ -26,99 +27,90 @@ jobs:
|
||||
separator: '/'
|
||||
|
||||
Release:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: godot
|
||||
if: ${{ contains(gitea.ref_name, 'release/') }}
|
||||
needs: ReleaseName
|
||||
env:
|
||||
RUNNER_TOOL_CACHE: /toolcache # Runner Tool Cache
|
||||
container:
|
||||
image: barichello/godot-ci:mono-4.6
|
||||
|
||||
steps:
|
||||
- name: Install node, curl and zip
|
||||
run: |
|
||||
apt update && apt -y install curl zip nodejs
|
||||
- name: Checkout with LFS
|
||||
uses: https://git.game-dev.space/minimata/checkout-with-lfs.git@main
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Setup Godot
|
||||
id: setup-godot
|
||||
uses: https://git.game-dev.space/minimata/setup-godot.git@main
|
||||
with:
|
||||
lfs: false
|
||||
|
||||
- name: Checkout LFS
|
||||
godot-version: '4.6'
|
||||
dotnet-version: 'net9.0'
|
||||
|
||||
- name: Setup Butler
|
||||
shell: bash
|
||||
env:
|
||||
BUTLER_API_KEY: ${{ secrets.BUTLER_TOKEN }}
|
||||
run: |
|
||||
UrlBase=$GITHUB_SERVER_URL; \
|
||||
UrlLfsBase=$UrlBase/${{ gitea.repository }}.git/info/lfs/objects; \
|
||||
Auth=`/usr/bin/git config --get --local http.$UrlBase/.extraheader`; \
|
||||
/usr/bin/git config --local http.${UrlLfsBase}/batch.extraheader "$Auth"; \
|
||||
/usr/bin/git config --local http.${UrlLfsBase}/.extraheader ''
|
||||
|
||||
git config --local lfs.transfer.maxretries 1
|
||||
|
||||
/usr/bin/git lfs fetch origin refs/remotes/origin/${{ gitea.ref_name }}
|
||||
/usr/bin/git lfs checkout
|
||||
/usr/bin/git add .
|
||||
/usr/bin/git reset --hard
|
||||
|
||||
- name: Import resources and build solution
|
||||
run: |
|
||||
godot --headless --editor --build-solutions --quit --import --path $PWD
|
||||
mkdir ./tools 2>/dev/null || true
|
||||
pushd tools
|
||||
curl -sSLfo ./butler.zip "https://broth.itch.zone/butler/linux-amd64/LATEST/archive/default"
|
||||
unzip butler.zip
|
||||
chmod +x ./butler
|
||||
popd
|
||||
./tools/butler -V
|
||||
|
||||
- name: Build Windows
|
||||
run: |
|
||||
mkdir -v -p build/windows
|
||||
godot --headless --verbose --build-solutions --export-release "Windows Desktop" build/windows/${{ env.GAME_NAME }}.exe
|
||||
zip -r Windows.zip build/windows
|
||||
- name: Upload to Itch
|
||||
uses: KikimoraGames/itch-publish@v0.0.3
|
||||
with:
|
||||
butlerApiKey: ${{ secrets.BUTLER_TOKEN }}
|
||||
itchUsername: ${{ env.ITCHIO_USERNAME }}
|
||||
itchGameId: ${{ env.ITCHIO_GAMEID }}
|
||||
buildNumber: ${{ needs.ReleaseName.outputs.release_name }}
|
||||
gameData: Windows.zip
|
||||
buildChannel: windows
|
||||
- name: Upload Windows to itch.io
|
||||
shell: bash
|
||||
env:
|
||||
BUTLER_API_KEY: ${{ secrets.BUTLER_TOKEN }}
|
||||
run: |
|
||||
versionArgument="--userversion ${{ needs.ReleaseName.outputs.release_name }}"
|
||||
./tools/butler push \
|
||||
"Windows.zip" \
|
||||
${{ env.ITCHIO_USERNAME }}/${{ env.ITCHIO_GAMEID }}:windows ${versionArgument}
|
||||
|
||||
- name: Build Windows ARM
|
||||
run: |
|
||||
mkdir -v -p build/windowsArm
|
||||
godot --headless --verbose --build-solutions --export-release "Windows ARM" build/windowsArm/${{ env.GAME_NAME }}.exe
|
||||
zip -r WindowsArm.zip build/windowsArm
|
||||
- name: Upload to Itch
|
||||
uses: KikimoraGames/itch-publish@v0.0.3
|
||||
with:
|
||||
butlerApiKey: ${{ secrets.BUTLER_TOKEN }}
|
||||
itchUsername: ${{ env.ITCHIO_USERNAME }}
|
||||
itchGameId: ${{ env.ITCHIO_GAMEID }}
|
||||
buildNumber: ${{ needs.ReleaseName.outputs.release_name }}
|
||||
gameData: WindowsArm.zip
|
||||
buildChannel: windows-arm
|
||||
- name: Upload Windows to itch.io
|
||||
shell: bash
|
||||
env:
|
||||
BUTLER_API_KEY: ${{ secrets.BUTLER_TOKEN }}
|
||||
run: |
|
||||
versionArgument="--userversion ${{ needs.ReleaseName.outputs.release_name }}"
|
||||
./tools/butler push \
|
||||
"WindowsArm.zip" \
|
||||
${{ env.ITCHIO_USERNAME }}/${{ env.ITCHIO_GAMEID }}:windows-arm ${versionArgument}
|
||||
|
||||
- name: Linux Build
|
||||
run: |
|
||||
mkdir -v -p build/linux
|
||||
godot --headless --verbose --export-release "Linux/X11" build/linux/${{ env.GAME_NAME }}.x86_64
|
||||
zip -r Linux.zip build/linux
|
||||
- name: Upload to Itch
|
||||
uses: KikimoraGames/itch-publish@v0.0.3
|
||||
with:
|
||||
butlerApiKey: ${{ secrets.BUTLER_TOKEN }}
|
||||
itchUsername: ${{ env.ITCHIO_USERNAME }}
|
||||
itchGameId: ${{ env.ITCHIO_GAMEID }}
|
||||
buildNumber: ${{ needs.ReleaseName.outputs.release_name }}
|
||||
gameData: Linux.zip
|
||||
buildChannel: linux
|
||||
- name: Upload Windows to itch.io
|
||||
shell: bash
|
||||
env:
|
||||
BUTLER_API_KEY: ${{ secrets.BUTLER_TOKEN }}
|
||||
run: |
|
||||
versionArgument="--userversion ${{ needs.ReleaseName.outputs.release_name }}"
|
||||
./tools/butler push \
|
||||
"Linux.zip" \
|
||||
${{ env.ITCHIO_USERNAME }}/${{ env.ITCHIO_GAMEID }}:linux ${versionArgument}
|
||||
|
||||
- name: Mac Build
|
||||
run: |
|
||||
mkdir -v -p build/mac
|
||||
godot --headless --verbose --export-release "macOS" build/mac/${{ env.GAME_NAME }}.zip
|
||||
zip -r Mac.zip build/mac
|
||||
- name: Upload to Itch
|
||||
uses: KikimoraGames/itch-publish@v0.0.3
|
||||
with:
|
||||
butlerApiKey: ${{ secrets.BUTLER_TOKEN }}
|
||||
itchUsername: ${{ env.ITCHIO_USERNAME }}
|
||||
itchGameId: ${{ env.ITCHIO_GAMEID }}
|
||||
buildNumber: ${{ needs.ReleaseName.outputs.release_name }}
|
||||
gameData: Mac.zip
|
||||
buildChannel: mac
|
||||
- name: Upload Windows to itch.io
|
||||
shell: bash
|
||||
env:
|
||||
BUTLER_API_KEY: ${{ secrets.BUTLER_TOKEN }}
|
||||
run: |
|
||||
versionArgument="--userversion ${{ needs.ReleaseName.outputs.release_name }}"
|
||||
./tools/butler push \
|
||||
"Mac.zip" \
|
||||
${{ env.ITCHIO_USERNAME }}/${{ env.ITCHIO_GAMEID }}:mac ${versionArgument}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using Godot;
|
||||
using System;
|
||||
|
||||
[GlobalClass, Icon("res://assets/ui/IconGodotNode/control/icon_heart.png")]
|
||||
[GlobalClass, Icon("res://assets/ui/IconGodotNode/node_3D/icon_heart.png")]
|
||||
public partial class CHealthbar : Sprite3D
|
||||
{
|
||||
private Healthbar _healthbar;
|
||||
|
||||
@@ -26,10 +26,10 @@ metadata/_custom_type_script = "uid://baiapod3csndf"
|
||||
|
||||
[node name="Main" unique_id=1551129541 instance=ExtResource("1_w4y6q")]
|
||||
|
||||
[node name="BackgroundMusicPlayer" parent="." index="0"]
|
||||
[node name="BackgroundMusicPlayer" parent="." index="0" unique_id=879496303]
|
||||
autoplay = false
|
||||
|
||||
[node name="Player" parent="." index="5"]
|
||||
[node name="Player" parent="." index="5" unique_id=1309399929]
|
||||
transform = Transform3D(0.99999994, 0, 0, 0, 1, 0, 0, 0, 0.99999994, 2, 1.5, 9.5)
|
||||
|
||||
[node name="Greybox" type="CSGCombiner3D" parent="." index="7" unique_id=646927976]
|
||||
@@ -125,18 +125,19 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 7, -16)
|
||||
Target = NodePath("../Player")
|
||||
RMovement = SubResource("Resource_xixm3")
|
||||
|
||||
[node name="GroundedSpawner" parent="." index="14" unique_id=557145011 instance=ExtResource("7_ba7rw")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 2.5, -15)
|
||||
[node name="GroundedSpawner" parent="." index="14" unique_id=557145011 node_paths=PackedStringArray("Target") instance=ExtResource("7_ba7rw")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 2.5, -15)
|
||||
EnemyToSpawn = ExtResource("4_5mjy0")
|
||||
MovementInputs = ExtResource("8_cdhvi")
|
||||
HealthInputs = SubResource("Resource_epn1o")
|
||||
DamageInputs = ExtResource("10_xyaoo")
|
||||
Target = NodePath("../Player")
|
||||
IsActiveOnStart = false
|
||||
|
||||
[node name="FlyingSpawner" parent="." index="15" unique_id=974076606 instance=ExtResource("7_ba7rw")]
|
||||
[node name="FlyingSpawner" parent="." index="15" unique_id=974076606 node_paths=PackedStringArray("Target") instance=ExtResource("7_ba7rw")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 11, -14)
|
||||
EnemyToSpawn = ExtResource("6_xuqf0")
|
||||
MovementInputs = ExtResource("11_yug0s")
|
||||
HealthInputs = ExtResource("12_qgrw7")
|
||||
DamageInputs = ExtResource("13_qulje")
|
||||
IsActiveOnStart = false
|
||||
Target = NodePath("../Player")
|
||||
|
||||
@@ -22,21 +22,14 @@ public partial class Spawner : Node3D
|
||||
[Export]
|
||||
public bool IsActiveOnStart { get; set; } = true;
|
||||
|
||||
private float _spawnTimer;
|
||||
private bool _isActive;
|
||||
private Timer _timer;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
_isActive = IsActiveOnStart;
|
||||
_spawnTimer = SpawnInterval;
|
||||
}
|
||||
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
if (!_isActive) return;
|
||||
|
||||
_spawnTimer -= (float) delta;
|
||||
if (_spawnTimer <= 0) Spawn();
|
||||
_timer = GetNode<Timer>("Timer");
|
||||
_timer.WaitTime = SpawnInterval;
|
||||
_timer.Timeout += Spawn;
|
||||
if (IsActiveOnStart) StartSpawning();
|
||||
}
|
||||
|
||||
public void Spawn()
|
||||
@@ -44,27 +37,24 @@ public partial class Spawner : Node3D
|
||||
if (EnemyToSpawn == null || !EnemyToSpawn.CanInstantiate()) return;
|
||||
|
||||
if (EnemyToSpawn.Instantiate() is not Enemy spawnedInstance) return;
|
||||
|
||||
|
||||
GetTree().GetCurrentScene().AddChild(spawnedInstance);
|
||||
spawnedInstance.GlobalPosition = GlobalPosition;
|
||||
|
||||
spawnedInstance.Target = Target;
|
||||
spawnedInstance.RMovement = MovementInputs;
|
||||
spawnedInstance.RDamage = DamageInputs;
|
||||
spawnedInstance.RHealth = HealthInputs;
|
||||
spawnedInstance.Initialize();
|
||||
|
||||
GetTree().GetCurrentScene().AddChild(spawnedInstance);
|
||||
spawnedInstance.GlobalPosition = GlobalPosition;
|
||||
|
||||
_spawnTimer = SpawnInterval;
|
||||
}
|
||||
|
||||
public void StartSpawning()
|
||||
{
|
||||
_isActive = true;
|
||||
_spawnTimer = SpawnInterval;
|
||||
_timer.Start();
|
||||
}
|
||||
|
||||
public void StopSpawning()
|
||||
{
|
||||
_isActive = false;
|
||||
_timer.Stop();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,3 +6,5 @@
|
||||
script = ExtResource("1_2otbo")
|
||||
|
||||
[node name="Marker3D" type="Marker3D" parent="." unique_id=610854505]
|
||||
|
||||
[node name="Timer" type="Timer" parent="." unique_id=1842357493]
|
||||
|
||||
Reference in New Issue
Block a user