Compare commits
59 Commits
e898b27269
...
0.0.1
| Author | SHA1 | Date | |
|---|---|---|---|
| 6370bb5b09 | |||
| 751a3b1a17 | |||
| 3aa520203e | |||
| 4a27ae75d3 | |||
| 756281ab0b | |||
| 651abb6fef | |||
| 6b91985c84 | |||
| b58012bb90 | |||
| b983f41f75 | |||
| d788285d18 | |||
| 4a6703f79a | |||
| 560b04bba2 | |||
| 7522d45bbd | |||
| 80c905bcef | |||
| ba84004adc | |||
| 966951654a | |||
| 905c2d7666 | |||
| de51310f94 | |||
| 82e3ca5182 | |||
| d8f6478b18 | |||
| 8ae9b00b5a | |||
| aa4a8e9fb3 | |||
| ef88e5e91d | |||
| 075521b991 | |||
| 99b2a8bbe3 | |||
| 11dd732cd0 | |||
| 3bbefa9647 | |||
| e7e628992a | |||
| de01511619 | |||
| aae15b0b50 | |||
| 80f2860ba1 | |||
| 9c806e5a3e | |||
| f2fb6bb2e6 | |||
| 0e5093bb30 | |||
| 01a8d44a29 | |||
| f25aec14c8 | |||
| 8b56427870 | |||
| b94d92034d | |||
| fc17fe781f | |||
| 8cc5b66281 | |||
| aef1db2e9a | |||
| 789c4cf2c9 | |||
| 755d228902 | |||
| 66ddd5723c | |||
| d8b69d6008 | |||
| c4d96929eb | |||
| 0822f46397 | |||
| 780c57575c | |||
| 8ddb818c27 | |||
| c654bcb769 | |||
| 9e634d704d | |||
| 6f0604b1fe | |||
| 31eca0b1ca | |||
| f6f37db335 | |||
| 38102f57ef | |||
| 45ccd0bedb | |||
| f41b760208 | |||
| ba142a3fac | |||
| 4e6968ddb1 |
@@ -1,19 +0,0 @@
|
||||
name: Gitea Actions Demo
|
||||
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
Explore-Gitea-Actions:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- run: echo "🎉 The job was automatically triggered by a ${{ gitea.event_name }} event."
|
||||
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
|
||||
- run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v4
|
||||
- run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."
|
||||
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
|
||||
- name: List files in the repository
|
||||
run: |
|
||||
ls ${{ gitea.workspace }}
|
||||
- run: echo "🍏 This job's status is ${{ job.status }}."
|
||||
84
.gitea/workflows/release.yml
Normal file
84
.gitea/workflows/release.yml
Normal file
@@ -0,0 +1,84 @@
|
||||
name: Build Release
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [release]
|
||||
pull_request:
|
||||
branches: [release]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
preset: ["Windows", "Linux/X11", "Web"]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Extract version and body from CHANGELOG
|
||||
id: changelog
|
||||
run: |
|
||||
# Extract the latest released version (skip Unreleased)
|
||||
LATEST=$(grep -E '^## \[[0-9]+\.[0-9]+\.[0-9]+\]' CHANGELOG.md | head -n1 | sed -E 's/^## \[([0-9]+\.[0-9]+\.[0-9]+)\].*/\1/')
|
||||
|
||||
if [ -z "$LATEST" ]; then
|
||||
echo "No released version found in CHANGELOG.md"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Released version found: $LATEST"
|
||||
echo "version=$LATEST" >> $GITHUB_OUTPUT
|
||||
|
||||
# Extract the body: lines until the next ## header
|
||||
BODY=$(awk -v ver="$LATEST" '
|
||||
$0 ~ "^## \\[" ver "\\]" {found=1; next}
|
||||
found && $0 ~ "^## \\[" {exit}
|
||||
found {print}
|
||||
' CHANGELOG.md)
|
||||
|
||||
# Trim leading/trailing empty lines
|
||||
BODY=$(echo "$BODY" | sed '/^\s*$/d')
|
||||
|
||||
# Output body safely for GitHub Actions
|
||||
echo "body<<EOF" >> $GITHUB_OUTPUT
|
||||
echo "$BODY" >> $GITHUB_OUTPUT
|
||||
echo "EOF" >> $GITHUB_OUTPUT
|
||||
|
||||
# Create Release also creates an Tag
|
||||
# - name: Create git tag
|
||||
# uses: alazhar/gitea-action-autotag@v1
|
||||
# with:
|
||||
# tag: ${{ steps.changelog.outputs.version }}
|
||||
|
||||
- name: Build
|
||||
id: build
|
||||
uses: mlm-games/godot-build-action@v1.3.1
|
||||
with:
|
||||
EXPORT_PRESET_NAME: ${{ matrix.preset }}
|
||||
INSTALL_BLENDER: "true"
|
||||
BLENDER_VERSION: "5.0.0"
|
||||
VERBOSE_IMPORT: "false"
|
||||
|
||||
- name: Normalize build path
|
||||
id: normalize
|
||||
run: echo "path=$(realpath ${{ steps.build.outputs.build }})" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Upload builds
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: godot-${{ matrix.preset }}-v${{ steps.changelog.outputs.version }}
|
||||
path: ${{ steps.normalize.outputs.path }}
|
||||
|
||||
- name: Create Release
|
||||
uses: akkuman/gitea-release-action@v1
|
||||
with:
|
||||
server_url: ${{ vars.SERVER_URL }}
|
||||
tag_name: "${{ steps.changelog.outputs.version }}"
|
||||
name: Release ${{ steps.changelog.outputs.version }}
|
||||
body: ${{ steps.changelog.outputs.description }}
|
||||
files: |
|
||||
godot-${{ matrix.preset }}-v${{ steps.changelog.outputs.version }}
|
||||
draft: false
|
||||
token: ${{ secrets.GITEA_TOKEN }}
|
||||
30
.gitea/workflows/sonar.yml
Normal file
30
.gitea/workflows/sonar.yml
Normal file
@@ -0,0 +1,30 @@
|
||||
name: Coding Quality
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
|
||||
jobs:
|
||||
coding_quality:
|
||||
name: Build and analyze
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
|
||||
- uses: SonarSource/sonarqube-scan-action@v6
|
||||
env:
|
||||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
||||
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
|
||||
with:
|
||||
args: >
|
||||
-Dsonar.projectKey=${{ secrets.SONAR_PROJECT_KEY }}
|
||||
# If you wish to fail your job when the Quality Gate is red, uncomment the
|
||||
# following lines. This would typically be used to fail a deployment.
|
||||
# - uses: SonarSource/sonarqube-quality-gate-action@v1
|
||||
# timeout-minutes: 5
|
||||
# env:
|
||||
# SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,3 +1,6 @@
|
||||
# Godot 4+ specific ignores
|
||||
.idea/
|
||||
.godot/
|
||||
/android/
|
||||
/dist/
|
||||
.sonarlint
|
||||
BIN
Assets/PID_Spinning_Stuff.glb
Normal file
BIN
Assets/PID_Spinning_Stuff.glb
Normal file
Binary file not shown.
42
Assets/PID_Spinning_Stuff.glb.import
Normal file
42
Assets/PID_Spinning_Stuff.glb.import
Normal file
@@ -0,0 +1,42 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://b8yyluxikhlr0"
|
||||
path="res://.godot/imported/PID_Spinning_Stuff.glb-977aece4b561e834c064e6c1c7e53471.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/PID_Spinning_Stuff.glb"
|
||||
dest_files=["res://.godot/imported/PID_Spinning_Stuff.glb-977aece4b561e834c064e6c1c7e53471.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/root_script=null
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_name_suffixes=true
|
||||
nodes/use_node_type_suffixes=true
|
||||
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
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
materials/extract=0
|
||||
materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={}
|
||||
gltf/naming_version=2
|
||||
gltf/embedded_image_handling=1
|
||||
BIN
Assets/PID_Spinning_Target.glb
Normal file
BIN
Assets/PID_Spinning_Target.glb
Normal file
Binary file not shown.
42
Assets/PID_Spinning_Target.glb.import
Normal file
42
Assets/PID_Spinning_Target.glb.import
Normal file
@@ -0,0 +1,42 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://cin3pgpeydkpe"
|
||||
path="res://.godot/imported/PID_Spinning_Target.glb-739e3becae2412e2332407d1fc9f1fc7.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/PID_Spinning_Target.glb"
|
||||
dest_files=["res://.godot/imported/PID_Spinning_Target.glb-739e3becae2412e2332407d1fc9f1fc7.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/root_script=null
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_name_suffixes=true
|
||||
nodes/use_node_type_suffixes=true
|
||||
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
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
materials/extract=0
|
||||
materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={}
|
||||
gltf/naming_version=2
|
||||
gltf/embedded_image_handling=1
|
||||
BIN
Assets/PID_Test_Obj.blend
Normal file
BIN
Assets/PID_Test_Obj.blend
Normal file
Binary file not shown.
60
Assets/PID_Test_Obj.blend.import
Normal file
60
Assets/PID_Test_Obj.blend.import
Normal file
@@ -0,0 +1,60 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://c8ywajojvb7pw"
|
||||
path="res://.godot/imported/PID_Test_Obj.blend-06d5e64216d0d8667c2f9c3cb6d12c34.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/PID_Test_Obj.blend"
|
||||
dest_files=["res://.godot/imported/PID_Test_Obj.blend-06d5e64216d0d8667c2f9c3cb6d12c34.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/root_script=null
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_name_suffixes=true
|
||||
nodes/use_node_type_suffixes=true
|
||||
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
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
materials/extract=0
|
||||
materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={}
|
||||
blender/nodes/visible=0
|
||||
blender/nodes/active_collection_only=false
|
||||
blender/nodes/punctual_lights=true
|
||||
blender/nodes/cameras=true
|
||||
blender/nodes/custom_properties=true
|
||||
blender/nodes/modifiers=1
|
||||
blender/meshes/colors=false
|
||||
blender/meshes/uvs=true
|
||||
blender/meshes/normals=true
|
||||
blender/meshes/export_geometry_nodes_instances=false
|
||||
blender/meshes/gpu_instances=false
|
||||
blender/meshes/tangents=true
|
||||
blender/meshes/skins=2
|
||||
blender/meshes/export_bones_deforming_mesh_only=false
|
||||
blender/materials/unpack_enabled=true
|
||||
blender/materials/export_materials=1
|
||||
blender/animation/limit_playback=true
|
||||
blender/animation/always_sample=true
|
||||
blender/animation/group_tracks=true
|
||||
gltf/naming_version=2
|
||||
BIN
Assets/PixelPlanets/a-moon.png
Normal file
BIN
Assets/PixelPlanets/a-moon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 533 B |
40
Assets/PixelPlanets/a-moon.png.import
Normal file
40
Assets/PixelPlanets/a-moon.png.import
Normal file
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dng410xo7qqfv"
|
||||
path="res://.godot/imported/a-moon.png-bce2eccded710c90add850f3ca7cb2e1.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/PixelPlanets/a-moon.png"
|
||||
dest_files=["res://.godot/imported/a-moon.png-bce2eccded710c90add850f3ca7cb2e1.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
31
CHANGELOG.md
Normal file
31
CHANGELOG.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Added
|
||||
|
||||
### Changed
|
||||
|
||||
### Removed
|
||||
|
||||
## [0.0.1] - 2026-03-15
|
||||
|
||||
### Added
|
||||
|
||||
- First inital release of the Expremerts
|
||||
- Created Changelog
|
||||
- Added pipline for sonar
|
||||
- Added pipline for releases
|
||||
- Created UI Elements to exit the game
|
||||
- added four minigames to test
|
||||
|
||||
### Fixed
|
||||
|
||||
### Changed
|
||||
|
||||
### Removed
|
||||
40
Games/SpaceResources/Planing/.$Movement 2D.svg.bkp
Normal file
40
Games/SpaceResources/Planing/.$Movement 2D.svg.bkp
Normal file
@@ -0,0 +1,40 @@
|
||||
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/28.0.6 Chrome/138.0.7204.100 Electron/37.2.3 Safari/537.36" version="28.0.6">
|
||||
<diagram name="Seite-1" id="8VUDw9VsU7XZE8zAJI22">
|
||||
<mxGraphModel dx="575" dy="518" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="U4xH48hkQDtbZK23ePJW-3" value="2D Movement Drag Conept" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;" vertex="1" parent="1">
|
||||
<mxGeometry x="10" y="10" width="120" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="U4xH48hkQDtbZK23ePJW-4" value="When<br>Left Click + Hold" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
|
||||
<mxGeometry x="40" y="120" width="80" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="U4xH48hkQDtbZK23ePJW-5" value="Save Mouse Pos" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="160" y="130" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="U4xH48hkQDtbZK23ePJW-6" value="Movement of mouse" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
|
||||
<mxGeometry x="40" y="250" width="80" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="U4xH48hkQDtbZK23ePJW-7" value="New Mouse pos - old pos = move postions" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="160" y="260" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="U4xH48hkQDtbZK23ePJW-8" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="440" y="210" as="sourcePoint" />
|
||||
<mxPoint x="600" y="330" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="U4xH48hkQDtbZK23ePJW-10" value="Click<br>PosA" style="shape=callout;whiteSpace=wrap;html=1;perimeter=calloutPerimeter;" vertex="1" parent="1">
|
||||
<mxGeometry x="380" y="130" width="120" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="U4xH48hkQDtbZK23ePJW-11" value="Click Move<br>PosB" style="shape=callout;whiteSpace=wrap;html=1;perimeter=calloutPerimeter;" vertex="1" parent="1">
|
||||
<mxGeometry x="540" y="250" width="120" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="U4xH48hkQDtbZK23ePJW-12" value="Vector: 10x, -5y" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="540" y="130" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
4
Games/SpaceResources/Planing/Movement 2D.svg
Normal file
4
Games/SpaceResources/Planing/Movement 2D.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 15 KiB |
39
Games/SpaceResources/Planing/Movement 2D.svg.import
Normal file
39
Games/SpaceResources/Planing/Movement 2D.svg.import
Normal file
@@ -0,0 +1,39 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://pyvdyr3pes5o"
|
||||
valid=false
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Games/SpaceResources/Planing/Movement 2D.svg"
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
52
Games/SpaceResources/Scripts/RecurionCamera.gd
Normal file
52
Games/SpaceResources/Scripts/RecurionCamera.gd
Normal file
@@ -0,0 +1,52 @@
|
||||
extends Camera2D
|
||||
|
||||
class_name RecurionCamera
|
||||
|
||||
@export var movement_speed: float = 1
|
||||
|
||||
var mouse_pos_a: Vector2 = Vector2.ZERO
|
||||
var mouse_pos_b: Vector2 = Vector2.ZERO
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
process_keyboard_input(delta)
|
||||
process_mouse_input()
|
||||
|
||||
|
||||
func process_keyboard_input(delta: float):
|
||||
var direction: Vector2 = Vector2.ZERO
|
||||
|
||||
if (Input.is_action_pressed("w")):
|
||||
direction += Vector2.UP
|
||||
if (Input.is_action_pressed("s")):
|
||||
direction += Vector2.DOWN
|
||||
if (Input.is_action_pressed("a")):
|
||||
direction += Vector2.LEFT
|
||||
if (Input.is_action_pressed("d")):
|
||||
direction += Vector2.RIGHT
|
||||
direction = direction.normalized() * movement_speed
|
||||
position += direction * delta * 100
|
||||
|
||||
|
||||
func process_mouse_input():
|
||||
if (Input.is_action_just_pressed("mouse_down")):
|
||||
mouse_pos_a = get_global_mouse_position()
|
||||
mouse_pos_b = mouse_pos_a
|
||||
|
||||
elif (Input.is_action_pressed("mouse_down")):
|
||||
mouse_pos_b = get_global_mouse_position()
|
||||
|
||||
position = mouse_pos_a - mouse_pos_b + position
|
||||
|
||||
elif (Input.is_action_just_released("mouse_down")):
|
||||
mouse_pos_a = Vector2.ZERO
|
||||
mouse_pos_b = Vector2.ZERO
|
||||
|
||||
mouse_pos_b = mouse_pos_a
|
||||
|
||||
|
||||
func _input(event: InputEvent) -> void:
|
||||
if (event is InputEventMouseButton):
|
||||
var zoom_value = Input.get_axis("scroll_down", "scroll_up")
|
||||
if (zoom.y + zoom_value > 0.0):
|
||||
zoom += Vector2.ONE * zoom_value
|
||||
1
Games/SpaceResources/Scripts/RecurionCamera.gd.uid
Normal file
1
Games/SpaceResources/Scripts/RecurionCamera.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bqslv86lm78ci
|
||||
1
Games/SpaceResources/Scripts/ResourceComponent.gd
Normal file
1
Games/SpaceResources/Scripts/ResourceComponent.gd
Normal file
@@ -0,0 +1 @@
|
||||
extends Node
|
||||
1
Games/SpaceResources/Scripts/ResourceComponent.gd.uid
Normal file
1
Games/SpaceResources/Scripts/ResourceComponent.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bqlwhd5slcp0h
|
||||
16
Levels/Recuration.tscn
Normal file
16
Levels/Recuration.tscn
Normal file
@@ -0,0 +1,16 @@
|
||||
[gd_scene format=3 uid="uid://cycayd4l7k7s4"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bqslv86lm78ci" path="res://Games/SpaceResources/Scripts/RecurionCamera.gd" id="1_002bs"]
|
||||
[ext_resource type="Texture2D" uid="uid://dng410xo7qqfv" path="res://Assets/PixelPlanets/a-moon.png" id="2_qgdyp"]
|
||||
|
||||
[node name="Recuration" type="Node2D" unique_id=1741828961]
|
||||
|
||||
[node name="RecurionCamera" type="Camera2D" parent="." unique_id=997983592]
|
||||
script = ExtResource("1_002bs")
|
||||
movement_speed = 10.0
|
||||
metadata/_custom_type_script = "uid://bqslv86lm78ci"
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=45756830]
|
||||
texture_filter = 1
|
||||
texture_repeat = 1
|
||||
texture = ExtResource("2_qgdyp")
|
||||
108
Levels/pid_test.gd
Normal file
108
Levels/pid_test.gd
Normal file
@@ -0,0 +1,108 @@
|
||||
extends Node3D
|
||||
|
||||
var p:float = 0.4
|
||||
var i:float = 0.0
|
||||
var d:float = 1
|
||||
|
||||
var force:float = 200.0
|
||||
var error:float = 0.0
|
||||
var last_error = 0.0
|
||||
var error_derivative:float = 0.0
|
||||
var integral:float = 0.0
|
||||
var target:float = 0.0 #0.0 -> 359.99
|
||||
|
||||
var p_input:SpinBox
|
||||
var i_input:SpinBox
|
||||
var d_input:SpinBox
|
||||
var force_input:SpinBox
|
||||
var target_input:SpinBox
|
||||
|
||||
var spinner_node:Node3D
|
||||
var target_node:Node3D
|
||||
var error_lable:Label
|
||||
var speed_lable:Label
|
||||
var acceleration_label:Label
|
||||
var error_derivative_lable:Label
|
||||
var integral_lable:Label
|
||||
|
||||
var spinner_speed:float = 0.0
|
||||
var max_speed:float = 120 # deg/m -> 1/360/60s = 1rpm
|
||||
var acceleration:float
|
||||
|
||||
func _ready() -> void:
|
||||
spinner_node = get_node("Spinner")
|
||||
target_node = get_node("Target")
|
||||
|
||||
p_input = get_node("PID Menue/PanelContainer/VBoxContainer/Proportinal Term (P)/Input")
|
||||
p_input.value_changed.connect(_update_p_value)
|
||||
|
||||
i_input = get_node("PID Menue/PanelContainer/VBoxContainer/Integral (I)/Input")
|
||||
i_input.value_changed.connect(_update_i_value)
|
||||
|
||||
d_input = get_node("PID Menue/PanelContainer/VBoxContainer/Derivative (D)/Input")
|
||||
d_input.value_changed.connect(_update_d_value)
|
||||
|
||||
force_input = get_node("PID Menue/PanelContainer/VBoxContainer/Force/Input")
|
||||
force_input.value_changed.connect(_update_force_value)
|
||||
|
||||
target_input =get_node("PID Menue/PanelContainer/VBoxContainer/Target Rotation/Input")
|
||||
target_input.value_changed.connect(_update_target_rot)
|
||||
|
||||
error_lable = get_node("PID Menue/PanelContainer/VBoxContainer/Error/Output")
|
||||
speed_lable = get_node("PID Menue/PanelContainer/VBoxContainer/Speed/Output")
|
||||
error_derivative_lable = get_node("PID Menue/PanelContainer/VBoxContainer/Error Derivative/Output")
|
||||
acceleration_label = get_node("PID Menue/PanelContainer/VBoxContainer/Acceleration/Output")
|
||||
integral_lable = get_node("PID Menue/PanelContainer/VBoxContainer/Integral/Output")
|
||||
|
||||
# Set default values
|
||||
p_input.value = p
|
||||
i_input.value = i
|
||||
d_input.value = d
|
||||
force_input.value = force
|
||||
|
||||
func _update_target_rot(value:float) -> void:
|
||||
target_node.rotation.x = deg_to_rad(value)
|
||||
|
||||
func _update_p_value(value:float) -> void:
|
||||
p = value
|
||||
|
||||
func _update_i_value(value:float) -> void:
|
||||
i = value
|
||||
|
||||
func _update_d_value(value:float) -> void:
|
||||
d = value
|
||||
|
||||
func _update_force_value(value:float) -> void:
|
||||
force = value
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
# PID Stuff
|
||||
target = rad_to_deg(target_node.rotation.x)
|
||||
error = target - rad_to_deg(spinner_node.rotation.x)
|
||||
error_derivative = (error - last_error) /delta
|
||||
integral += error * delta
|
||||
|
||||
|
||||
# Clamp acceleration between min and max force
|
||||
var pid_output := (p * error) + (i * integral) + (d * error_derivative)
|
||||
acceleration = clampf(pid_output, -force, force)
|
||||
# Set speed
|
||||
var next_speed = spinner_speed + acceleration * delta
|
||||
|
||||
# Block acceleration that would exceed max speed
|
||||
if abs(spinner_speed) >= max_speed and sign(acceleration) == sign(spinner_speed):
|
||||
acceleration = 0.0
|
||||
next_speed = spinner_speed
|
||||
|
||||
spinner_speed = clamp(next_speed, -max_speed, max_speed)
|
||||
spinner_node.rotation_degrees.x += spinner_speed * delta
|
||||
|
||||
last_error = error
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
#UI Updats
|
||||
error_lable.text = str(error).pad_decimals(2).pad_zeros(3) + " deg"
|
||||
error_derivative_lable.text = str(error_derivative).pad_decimals(2).pad_zeros(3)
|
||||
integral_lable.text = str(integral).pad_decimals(2).pad_zeros(3)
|
||||
speed_lable.text = str(spinner_speed).pad_decimals(2).pad_zeros(3) + " deg/m"
|
||||
acceleration_label.text = str(acceleration/force*100).pad_decimals(2).pad_zeros(3) + " %"
|
||||
1
Levels/pid_test.gd.uid
Normal file
1
Levels/pid_test.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://b63aqs33qyp0g
|
||||
@@ -1,3 +1,221 @@
|
||||
[gd_scene format=3 uid="uid://caj5t8q1fii5m"]
|
||||
[gd_scene load_steps=8 format=3 uid="uid://caj5t8q1fii5m"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://cin3pgpeydkpe" path="res://Assets/PID_Spinning_Target.glb" id="1_0c8sw"]
|
||||
[ext_resource type="Script" uid="uid://b63aqs33qyp0g" path="res://Levels/pid_test.gd" id="1_sxbsa"]
|
||||
[ext_resource type="PackedScene" uid="uid://b8yyluxikhlr0" path="res://Assets/PID_Spinning_Stuff.glb" id="2_sxbsa"]
|
||||
|
||||
[sub_resource type="Environment" id="Environment_d03hh"]
|
||||
background_mode = 2
|
||||
background_color = Color(0.14478481, 0.14478481, 0.14478481, 1)
|
||||
ambient_light_source = 2
|
||||
|
||||
[sub_resource type="Theme" id="Theme_sxbsa"]
|
||||
|
||||
[sub_resource type="Theme" id="Theme_d03hh"]
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_sxbsa"]
|
||||
font_size = 24
|
||||
|
||||
[node name="PidTest" type="Node3D"]
|
||||
script = ExtResource("1_sxbsa")
|
||||
|
||||
[node name="Target" type="Node3D" parent="."]
|
||||
|
||||
[node name="PID_Spinning_Target" parent="Target" instance=ExtResource("1_0c8sw")]
|
||||
|
||||
[node name="Spinner" type="Node3D" parent="."]
|
||||
|
||||
[node name="PID_Spinning_Stuff" parent="Spinner" instance=ExtResource("2_sxbsa")]
|
||||
|
||||
[node name="OmniLight3D" type="OmniLight3D" parent="Spinner/PID_Spinning_Stuff"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.40560818, 0.6382216, 0)
|
||||
light_color = Color(0.99999994, 0.20727095, 0.32746297, 1)
|
||||
light_energy = 0.2
|
||||
shadow_enabled = true
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="."]
|
||||
transform = Transform3D(-4.3597606e-08, -0.072106734, 0.99739695, -3.1518854e-09, 0.99739695, 0.072106734, -1, 0, -4.371139e-08, 4.3431935, 0.43207824, 0)
|
||||
environment = SubResource("Environment_d03hh")
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||
transform = Transform3D(0.25000006, 0.9659258, 0.06698735, -0.2588191, -1.9081726e-08, 0.9659258, 0.93301266, -0.25881913, 0.25000003, 0, 3.3288543, 0)
|
||||
|
||||
[node name="PID Menue" type="Control" parent="."]
|
||||
layout_mode = 3
|
||||
anchors_preset = 0
|
||||
offset_left = 20.0
|
||||
offset_top = 20.0
|
||||
offset_right = 20.0
|
||||
offset_bottom = 20.0
|
||||
theme = SubResource("Theme_sxbsa")
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="PID Menue"]
|
||||
layout_mode = 0
|
||||
offset_right = 40.0
|
||||
offset_bottom = 40.0
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="PID Menue/PanelContainer"]
|
||||
layout_mode = 2
|
||||
theme = SubResource("Theme_d03hh")
|
||||
|
||||
[node name="Spinner Header" type="Label" parent="PID Menue/PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Spinner Controll"
|
||||
label_settings = SubResource("LabelSettings_sxbsa")
|
||||
|
||||
[node name="Proportinal Term (P)" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Proportinal Term (P)"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Proportinal Term (P)"
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="PID Menue/PanelContainer/VBoxContainer/Proportinal Term (P)"]
|
||||
custom_minimum_size = Vector2(20, 0)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Input" type="SpinBox" parent="PID Menue/PanelContainer/VBoxContainer/Proportinal Term (P)"]
|
||||
layout_mode = 2
|
||||
max_value = 1.0
|
||||
step = 0.01
|
||||
value = 0.5
|
||||
|
||||
[node name="Integral (I)" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Integral (I)"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Integral (I)"
|
||||
|
||||
[node name="Input" type="SpinBox" parent="PID Menue/PanelContainer/VBoxContainer/Integral (I)"]
|
||||
layout_mode = 2
|
||||
max_value = 1.0
|
||||
step = 0.01
|
||||
|
||||
[node name="Derivative (D)" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Derivative (D)"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Derivative (D)"
|
||||
|
||||
[node name="Input" type="SpinBox" parent="PID Menue/PanelContainer/VBoxContainer/Derivative (D)"]
|
||||
layout_mode = 2
|
||||
max_value = 1.0
|
||||
step = 0.01
|
||||
|
||||
[node name="Force" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Force"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Force"
|
||||
|
||||
[node name="Input" type="SpinBox" parent="PID Menue/PanelContainer/VBoxContainer/Force"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
|
||||
custom_minimum_size = Vector2(0, 20)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Target Header" type="Label" parent="PID Menue/PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Target"
|
||||
label_settings = SubResource("LabelSettings_sxbsa")
|
||||
|
||||
[node name="Target Rotation" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Target Rotation"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Target Rotation"
|
||||
|
||||
[node name="Input" type="SpinBox" parent="PID Menue/PanelContainer/VBoxContainer/Target Rotation"]
|
||||
layout_mode = 2
|
||||
max_value = 1439.96
|
||||
step = 0.01
|
||||
custom_arrow_step = 10.0
|
||||
|
||||
[node name="MarginContainer2" type="MarginContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
|
||||
custom_minimum_size = Vector2(0, 20)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Solution" type="Label" parent="PID Menue/PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Solution"
|
||||
label_settings = SubResource("LabelSettings_sxbsa")
|
||||
|
||||
[node name="Error" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Error"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Error"
|
||||
|
||||
[node name="Output" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Error"]
|
||||
layout_mode = 2
|
||||
text = "000.00"
|
||||
horizontal_alignment = 1
|
||||
uppercase = true
|
||||
|
||||
[node name="Error Derivative" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Error Derivative"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Error Derivative"
|
||||
|
||||
[node name="Output" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Error Derivative"]
|
||||
layout_mode = 2
|
||||
text = "000.00"
|
||||
horizontal_alignment = 1
|
||||
uppercase = true
|
||||
|
||||
[node name="Integral" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Integral"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Integral"
|
||||
|
||||
[node name="Output" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Integral"]
|
||||
layout_mode = 2
|
||||
text = "000.00"
|
||||
horizontal_alignment = 1
|
||||
uppercase = true
|
||||
|
||||
[node name="Speed" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Speed"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Speed"
|
||||
|
||||
[node name="Output" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Speed"]
|
||||
layout_mode = 2
|
||||
text = "000.00"
|
||||
horizontal_alignment = 1
|
||||
uppercase = true
|
||||
|
||||
[node name="Acceleration" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Acceleration"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Acceleration"
|
||||
|
||||
[node name="Output" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Acceleration"]
|
||||
layout_mode = 2
|
||||
text = "000.00"
|
||||
horizontal_alignment = 1
|
||||
uppercase = true
|
||||
|
||||
6
back_to_main.gd
Normal file
6
back_to_main.gd
Normal file
@@ -0,0 +1,6 @@
|
||||
extends Node
|
||||
var main_menue: PackedScene = preload("res://main.tscn")
|
||||
|
||||
func _input(event: InputEvent) -> void:
|
||||
if event.is_action_pressed("main_menue"):
|
||||
get_tree().change_scene_to_packed(main_menue)
|
||||
1
back_to_main.gd.uid
Normal file
1
back_to_main.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://c6n4axv3eoguq
|
||||
168
export_presets.cfg
Normal file
168
export_presets.cfg
Normal file
@@ -0,0 +1,168 @@
|
||||
[preset.0]
|
||||
|
||||
name="Web"
|
||||
platform="Web"
|
||||
runnable=false
|
||||
dedicated_server=false
|
||||
custom_features=""
|
||||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter="*.blend"
|
||||
export_path=""
|
||||
patches=PackedStringArray()
|
||||
patch_delta_encoding=false
|
||||
patch_delta_compression_level_zstd=19
|
||||
patch_delta_min_reduction=0.1
|
||||
patch_delta_include_filters="*"
|
||||
patch_delta_exclude_filters=""
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
seed=0
|
||||
encrypt_pck=true
|
||||
encrypt_directory=false
|
||||
script_export_mode=2
|
||||
|
||||
[preset.0.options]
|
||||
|
||||
custom_template/debug=""
|
||||
custom_template/release=""
|
||||
variant/extensions_support=false
|
||||
variant/thread_support=false
|
||||
vram_texture_compression/for_desktop=true
|
||||
vram_texture_compression/for_mobile=false
|
||||
html/export_icon=true
|
||||
html/custom_html_shell=""
|
||||
html/head_include=""
|
||||
html/canvas_resize_policy=2
|
||||
html/focus_canvas_on_start=true
|
||||
html/experimental_virtual_keyboard=false
|
||||
progressive_web_app/enabled=false
|
||||
progressive_web_app/ensure_cross_origin_isolation_headers=true
|
||||
progressive_web_app/offline_page=""
|
||||
progressive_web_app/display=1
|
||||
progressive_web_app/orientation=0
|
||||
progressive_web_app/icon_144x144=""
|
||||
progressive_web_app/icon_180x180=""
|
||||
progressive_web_app/icon_512x512=""
|
||||
progressive_web_app/background_color=Color(0, 0, 0, 1)
|
||||
threads/emscripten_pool_size=8
|
||||
threads/godot_pool_size=4
|
||||
|
||||
[preset.1]
|
||||
|
||||
name="Linux/X11"
|
||||
platform="Linux"
|
||||
runnable=true
|
||||
dedicated_server=false
|
||||
custom_features=""
|
||||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter="*.blend"
|
||||
export_path="<null>"
|
||||
patches=PackedStringArray()
|
||||
patch_delta_encoding=false
|
||||
patch_delta_compression_level_zstd=19
|
||||
patch_delta_min_reduction=0.1
|
||||
patch_delta_include_filters="*"
|
||||
patch_delta_exclude_filters=""
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
seed=0
|
||||
encrypt_pck=false
|
||||
encrypt_directory=false
|
||||
script_export_mode=2
|
||||
|
||||
[preset.1.options]
|
||||
|
||||
custom_template/debug=""
|
||||
custom_template/release=""
|
||||
debug/export_console_wrapper=1
|
||||
binary_format/embed_pck=false
|
||||
texture_format/s3tc_bptc=true
|
||||
texture_format/etc2_astc=false
|
||||
shader_baker/enabled=false
|
||||
binary_format/architecture="x86_64"
|
||||
ssh_remote_deploy/enabled=false
|
||||
ssh_remote_deploy/host="user@host_ip"
|
||||
ssh_remote_deploy/port="22"
|
||||
ssh_remote_deploy/extra_args_ssh=""
|
||||
ssh_remote_deploy/extra_args_scp=""
|
||||
ssh_remote_deploy/run_script="#!/usr/bin/env bash
|
||||
export DISPLAY=:0
|
||||
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
|
||||
\"{temp_dir}/{exe_name}\" {cmd_args}"
|
||||
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
|
||||
pkill -x -f \"{temp_dir}/{exe_name} {cmd_args}\"
|
||||
rm -rf \"{temp_dir}\""
|
||||
|
||||
[preset.2]
|
||||
|
||||
name="Windows"
|
||||
platform="Windows Desktop"
|
||||
runnable=true
|
||||
dedicated_server=false
|
||||
custom_features=""
|
||||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter="*.blend"
|
||||
export_path=""
|
||||
patches=PackedStringArray()
|
||||
patch_delta_encoding=false
|
||||
patch_delta_compression_level_zstd=19
|
||||
patch_delta_min_reduction=0.1
|
||||
patch_delta_include_filters="*"
|
||||
patch_delta_exclude_filters=""
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
seed=0
|
||||
encrypt_pck=false
|
||||
encrypt_directory=false
|
||||
script_export_mode=2
|
||||
|
||||
[preset.2.options]
|
||||
|
||||
custom_template/debug=""
|
||||
custom_template/release=""
|
||||
debug/export_console_wrapper=1
|
||||
binary_format/embed_pck=false
|
||||
texture_format/s3tc_bptc=true
|
||||
texture_format/etc2_astc=false
|
||||
shader_baker/enabled=false
|
||||
binary_format/architecture="x86_64"
|
||||
codesign/enable=false
|
||||
codesign/timestamp=true
|
||||
codesign/timestamp_server_url=""
|
||||
codesign/digest_algorithm=1
|
||||
codesign/description=""
|
||||
codesign/custom_options=PackedStringArray()
|
||||
application/modify_resources=true
|
||||
application/icon=""
|
||||
application/console_wrapper_icon=""
|
||||
application/icon_interpolation=4
|
||||
application/file_version=""
|
||||
application/product_version=""
|
||||
application/company_name=""
|
||||
application/product_name=""
|
||||
application/file_description=""
|
||||
application/copyright=""
|
||||
application/trademarks=""
|
||||
application/export_angle=0
|
||||
application/export_d3d12=0
|
||||
application/d3d12_agility_sdk_multiarch=true
|
||||
ssh_remote_deploy/enabled=false
|
||||
ssh_remote_deploy/host="user@host_ip"
|
||||
ssh_remote_deploy/port="22"
|
||||
ssh_remote_deploy/extra_args_ssh=""
|
||||
ssh_remote_deploy/extra_args_scp=""
|
||||
ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}'
|
||||
$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}'
|
||||
$trigger = New-ScheduledTaskTrigger -Once -At 00:00
|
||||
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
|
||||
$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
|
||||
Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true
|
||||
Start-ScheduledTask -TaskName godot_remote_debug
|
||||
while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 }
|
||||
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue"
|
||||
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
|
||||
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
|
||||
Remove-Item -Recurse -Force '{temp_dir}'"
|
||||
37
main.tscn
37
main.tscn
@@ -1,11 +1,13 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://djelupqdj4wgd"]
|
||||
[gd_scene format=3 uid="uid://djelupqdj4wgd"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bel5yfuiqithe" path="res://open_level_component.gd" id="1_ig7tw"]
|
||||
[ext_resource type="PackedScene" uid="uid://dgst4apmowe53" path="res://Levels/space_test.tscn" id="2_1bvp3"]
|
||||
[ext_resource type="PackedScene" uid="uid://jynlgkm41y8d" path="res://Levels/space_move.tscn" id="3_lquwl"]
|
||||
[ext_resource type="PackedScene" uid="uid://caj5t8q1fii5m" path="res://Levels/pid_test.tscn" id="4_7mycd"]
|
||||
[ext_resource type="PackedScene" uid="uid://cycayd4l7k7s4" path="res://Levels/Recuration.tscn" id="5_lquwl"]
|
||||
[ext_resource type="Script" uid="uid://lh1hhx4q8nlu" path="res://quit_game_component.gd" id="6_7mycd"]
|
||||
|
||||
[node name="Main" type="Control"]
|
||||
[node name="Main" type="Control" unique_id=834120395]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@@ -13,7 +15,7 @@ anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=1674123930]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@@ -25,30 +27,47 @@ offset_bottom = -55.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="Button" type="Button" parent="VBoxContainer"]
|
||||
[node name="Button" type="Button" parent="VBoxContainer" unique_id=1520219681]
|
||||
layout_mode = 2
|
||||
text = "space_test"
|
||||
|
||||
[node name="OpenLevelComponent" type="Node" parent="VBoxContainer/Button"]
|
||||
[node name="OpenLevelComponent" type="Node" parent="VBoxContainer/Button" unique_id=1834050455]
|
||||
script = ExtResource("1_ig7tw")
|
||||
level = ExtResource("2_1bvp3")
|
||||
metadata/_custom_type_script = "uid://bel5yfuiqithe"
|
||||
|
||||
[node name="Button2" type="Button" parent="VBoxContainer"]
|
||||
[node name="Button2" type="Button" parent="VBoxContainer" unique_id=93954602]
|
||||
layout_mode = 2
|
||||
text = "space_move
|
||||
"
|
||||
|
||||
[node name="OpenLevelComponent" type="Node" parent="VBoxContainer/Button2"]
|
||||
[node name="OpenLevelComponent" type="Node" parent="VBoxContainer/Button2" unique_id=1732413263]
|
||||
script = ExtResource("1_ig7tw")
|
||||
level = ExtResource("3_lquwl")
|
||||
metadata/_custom_type_script = "uid://bel5yfuiqithe"
|
||||
|
||||
[node name="Button3" type="Button" parent="VBoxContainer"]
|
||||
[node name="Button3" type="Button" parent="VBoxContainer" unique_id=1480596145]
|
||||
layout_mode = 2
|
||||
text = "pid_test"
|
||||
|
||||
[node name="OpenLevelComponent" type="Node" parent="VBoxContainer/Button3"]
|
||||
[node name="OpenLevelComponent" type="Node" parent="VBoxContainer/Button3" unique_id=1820153918]
|
||||
script = ExtResource("1_ig7tw")
|
||||
level = ExtResource("4_7mycd")
|
||||
metadata/_custom_type_script = "uid://bel5yfuiqithe"
|
||||
|
||||
[node name="Button4" type="Button" parent="VBoxContainer" unique_id=955421861]
|
||||
layout_mode = 2
|
||||
text = "Recuration"
|
||||
|
||||
[node name="OpenLevelComponent" type="Node" parent="VBoxContainer/Button4" unique_id=292657034]
|
||||
script = ExtResource("1_ig7tw")
|
||||
level = ExtResource("5_lquwl")
|
||||
metadata/_custom_type_script = "uid://bel5yfuiqithe"
|
||||
|
||||
[node name="Button5" type="Button" parent="VBoxContainer" unique_id=630288499]
|
||||
layout_mode = 2
|
||||
text = "Exit Experements"
|
||||
|
||||
[node name="QuitGame" type="Node" parent="VBoxContainer/Button5" unique_id=1111277542]
|
||||
script = ExtResource("6_7mycd")
|
||||
metadata/_custom_type_script = "uid://lh1hhx4q8nlu"
|
||||
|
||||
@@ -8,14 +8,27 @@
|
||||
|
||||
config_version=5
|
||||
|
||||
[animation]
|
||||
|
||||
compatibility/default_parent_skeleton_in_mesh_instance_3d=true
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Experements"
|
||||
run/main_scene="uid://djelupqdj4wgd"
|
||||
config/features=PackedStringArray("4.5", "Forward Plus")
|
||||
config/features=PackedStringArray("4.6", "Forward Plus")
|
||||
boot_splash/bg_color=Color(0, 0, 0, 1)
|
||||
config/icon="res://icon.svg"
|
||||
|
||||
[autoload]
|
||||
|
||||
BackToMain="*res://back_to_main.gd"
|
||||
|
||||
[filesystem]
|
||||
|
||||
import/blender/enabled.android=true
|
||||
import/blender/enabled.web=true
|
||||
|
||||
[input]
|
||||
|
||||
w={
|
||||
@@ -48,6 +61,26 @@ e={
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
main_menue={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
scroll_up={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":8,"position":Vector2(275, 26),"global_position":Vector2(287, 86),"factor":1.0,"button_index":4,"canceled":false,"pressed":true,"double_click":false,"script":null)
|
||||
]
|
||||
}
|
||||
scroll_down={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":16,"position":Vector2(339, 31),"global_position":Vector2(351, 91),"factor":1.0,"button_index":5,"canceled":false,"pressed":true,"double_click":false,"script":null)
|
||||
]
|
||||
}
|
||||
mouse_down={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(253, 29),"global_position":Vector2(265, 89),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null)
|
||||
]
|
||||
}
|
||||
|
||||
[physics]
|
||||
|
||||
@@ -57,3 +90,7 @@ e={
|
||||
3d/default_angular_damp=0.0
|
||||
3d/sleep_threshold_linear=0.01
|
||||
3d/sleep_threshold_angular=0.00872665
|
||||
|
||||
[rendering]
|
||||
|
||||
environment/defaults/default_clear_color=Color(0, 0, 0, 1)
|
||||
|
||||
14
quit_game_component.gd
Normal file
14
quit_game_component.gd
Normal file
@@ -0,0 +1,14 @@
|
||||
extends Node
|
||||
|
||||
class_name QuitGame
|
||||
|
||||
@onready var button: Button = get_parent() as Button
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
button.pressed.connect(_on_button_pressed)
|
||||
button.name = button.text
|
||||
|
||||
|
||||
func _on_button_pressed() -> void:
|
||||
get_tree().quit(0)
|
||||
1
quit_game_component.gd.uid
Normal file
1
quit_game_component.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://lh1hhx4q8nlu
|
||||
Reference in New Issue
Block a user