tutorial but rust
19
.gitignore
vendored
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# common
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
# godot
|
||||||
|
.godot/
|
||||||
|
.nomedia
|
||||||
|
.import/
|
||||||
|
export.cfg
|
||||||
|
export_credentials.cfg
|
||||||
|
*.tmp
|
||||||
|
*.translation
|
||||||
|
.mono/
|
||||||
|
data_*/
|
||||||
|
mono_crash.*.json
|
||||||
|
addons/
|
||||||
|
|
||||||
|
# rust
|
||||||
|
/target
|
||||||
|
/rust/target
|
||||||
3
.vscode/extensions.json
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"recommendations": ["dsobotta.godot-rust-vscode", "geequlim.godot-tools"]
|
||||||
|
}
|
||||||
41
.vscode/launch.json
vendored
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Debug Game",
|
||||||
|
"preLaunchTask": "godot-rust: Build Debug",
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"program": "${config:godot-rust.environment.godotEditorPath}",
|
||||||
|
"cwd": "${config:godot-rust.environment.godotProjectPath}",
|
||||||
|
"presentation": {
|
||||||
|
"group": "Debug",
|
||||||
|
"order": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Release Game",
|
||||||
|
"preLaunchTask": "godot-rust: Build Release",
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"program": "${config:godot-rust.environment.godotEditorPath}",
|
||||||
|
"cwd": "${config:godot-rust.environment.godotProjectPath}",
|
||||||
|
"presentation": {
|
||||||
|
"group": "Debug",
|
||||||
|
"order": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Attach to Game",
|
||||||
|
"pid": "${command:pickMyProcess}",
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "attach",
|
||||||
|
"program": "${config:godot-rust.environment.godotEditorPath}",
|
||||||
|
"port": 6007,
|
||||||
|
"presentation": {
|
||||||
|
"group": "Debug",
|
||||||
|
"order": 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
4
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"godot-rust.environment.godotEditorPath": "/Applications/Godot.app",
|
||||||
|
"godot-rust.environment.godotProjectPath": "${workspaceFolder}/godot/"
|
||||||
|
}
|
||||||
51
.vscode/tasks.json
vendored
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"version": "2.0.0",
|
||||||
|
"tasks": [
|
||||||
|
//Godot Editor Operations
|
||||||
|
{
|
||||||
|
"label": "godot-rust: Launch Debug Editor",
|
||||||
|
"detail": "Builds debug rust game library, then opens the project with Godot Editor",
|
||||||
|
"dependsOn": "godot-rust: Build Debug",
|
||||||
|
"type": "shell",
|
||||||
|
"options": {
|
||||||
|
"cwd": "${config:godot-rust.environment.godotProjectPath}"
|
||||||
|
},
|
||||||
|
"command": "${config:godot-rust.environment.godotEditorPath} --editor",
|
||||||
|
"group": "build"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "godot-rust: Launch Release Editor",
|
||||||
|
"detail": "Builds release rust game library, then opens the project with Godot Editor",
|
||||||
|
"dependsOn": "godot-rust: Build Release",
|
||||||
|
"type": "shell",
|
||||||
|
"options": {
|
||||||
|
"cwd": "${config:godot-rust.environment.godotProjectPath}"
|
||||||
|
},
|
||||||
|
"command": "${config:godot-rust.environment.godotEditorPath} --editor",
|
||||||
|
"group": "build"
|
||||||
|
},
|
||||||
|
|
||||||
|
//Build Operations
|
||||||
|
{
|
||||||
|
"label": "godot-rust: Build Debug",
|
||||||
|
"detail": "Builds debug rust game library",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "cargo build",
|
||||||
|
"group": "build"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "godot-rust: Build Release",
|
||||||
|
"detail": "Builds release rust game library",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "cargo build --release",
|
||||||
|
"group": "build"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "godot-rust: Clean",
|
||||||
|
"detail": "Removes all artifacts of rust game library and its dependencies",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "cargo clean",
|
||||||
|
"group": "build"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
4
godot/.editorconfig
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
14
godot/Rust.gdextension
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
[configuration]
|
||||||
|
entry_symbol = "gdext_rust_init"
|
||||||
|
compatibility_minimum = 4.5
|
||||||
|
reloadable = true
|
||||||
|
|
||||||
|
[libraries]
|
||||||
|
linux.debug.x86_64 = "res://../rust/target/debug/libgodottest_rs.so"
|
||||||
|
linux.release.x86_64 = "res://../rust/target/release/libgodottest_rs.so"
|
||||||
|
windows.debug.x86_64 = "res://../rust/target/debug/godottest_rs.dll"
|
||||||
|
windows.release.x86_64 = "res://../rust/target/release/godottest_rs.dll"
|
||||||
|
macos.debug = "res://../rust/target/debug/libgodottest_rs.dylib"
|
||||||
|
macos.release = "res://../rust/target/release/libgodottest_rs.dylib"
|
||||||
|
macos.debug.arm64 = "res://../rust/target/debug/libgodottest_rs.dylib"
|
||||||
|
macos.release.arm64 = "res://../rust/target/release/libgodottest_rs.dylib"
|
||||||
1
godot/Rust.gdextension.uid
Normal file
@ -0,0 +1 @@
|
|||||||
|
uid://dx7md3kauujl
|
||||||
BIN
godot/art/House In a Forest Loop.ogg
Normal file
19
godot/art/House In a Forest Loop.ogg.import
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="oggvorbisstr"
|
||||||
|
type="AudioStreamOggVorbis"
|
||||||
|
uid="uid://blr2x4w6oj25g"
|
||||||
|
path="res://.godot/imported/House In a Forest Loop.ogg-1a6a72ae843ad792b7039931227e8d50.oggvorbisstr"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://art/House In a Forest Loop.ogg"
|
||||||
|
dest_files=["res://.godot/imported/House In a Forest Loop.ogg-1a6a72ae843ad792b7039931227e8d50.oggvorbisstr"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
loop=false
|
||||||
|
loop_offset=0
|
||||||
|
bpm=0
|
||||||
|
beat_count=0
|
||||||
|
bar_beats=4
|
||||||
BIN
godot/art/enemyFlyingAlt_1.png
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
40
godot/art/enemyFlyingAlt_1.png.import
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://4s7lh46ylxx8"
|
||||||
|
path="res://.godot/imported/enemyFlyingAlt_1.png-559f599b16c69b112c1b53f6332e9489.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://art/enemyFlyingAlt_1.png"
|
||||||
|
dest_files=["res://.godot/imported/enemyFlyingAlt_1.png-559f599b16c69b112c1b53f6332e9489.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
|
||||||
BIN
godot/art/enemyFlyingAlt_2.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
40
godot/art/enemyFlyingAlt_2.png.import
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cco4veogb0frk"
|
||||||
|
path="res://.godot/imported/enemyFlyingAlt_2.png-31dc7310eda6e1b721224f3cd932c076.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://art/enemyFlyingAlt_2.png"
|
||||||
|
dest_files=["res://.godot/imported/enemyFlyingAlt_2.png-31dc7310eda6e1b721224f3cd932c076.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
|
||||||
BIN
godot/art/enemySwimming_1.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
40
godot/art/enemySwimming_1.png.import
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cjcxwln2jke6f"
|
||||||
|
path="res://.godot/imported/enemySwimming_1.png-dd0e11759dc3d624c8a704f6e98a3d80.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://art/enemySwimming_1.png"
|
||||||
|
dest_files=["res://.godot/imported/enemySwimming_1.png-dd0e11759dc3d624c8a704f6e98a3d80.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
|
||||||
BIN
godot/art/enemySwimming_2.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
40
godot/art/enemySwimming_2.png.import
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cgtr6ouepyo2u"
|
||||||
|
path="res://.godot/imported/enemySwimming_2.png-4c0cbc0732264c4ea3290340bd4a0a62.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://art/enemySwimming_2.png"
|
||||||
|
dest_files=["res://.godot/imported/enemySwimming_2.png-4c0cbc0732264c4ea3290340bd4a0a62.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
|
||||||
BIN
godot/art/enemyWalking_1.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
40
godot/art/enemyWalking_1.png.import
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bs171ydu8mvir"
|
||||||
|
path="res://.godot/imported/enemyWalking_1.png-5af6eedbe61b701677d490ffdc1e6471.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://art/enemyWalking_1.png"
|
||||||
|
dest_files=["res://.godot/imported/enemyWalking_1.png-5af6eedbe61b701677d490ffdc1e6471.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
|
||||||
BIN
godot/art/enemyWalking_2.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
40
godot/art/enemyWalking_2.png.import
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://ogi16vdypeh3"
|
||||||
|
path="res://.godot/imported/enemyWalking_2.png-67c480ed60c35e95f5acb0436246b935.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://art/enemyWalking_2.png"
|
||||||
|
dest_files=["res://.godot/imported/enemyWalking_2.png-67c480ed60c35e95f5acb0436246b935.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
|
||||||
BIN
godot/art/gameover.wav
Normal file
24
godot/art/gameover.wav.import
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://cbe313ksb0bye"
|
||||||
|
path="res://.godot/imported/gameover.wav-98c95c744b35280048c2bd093cf8a356.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://art/gameover.wav"
|
||||||
|
dest_files=["res://.godot/imported/gameover.wav-98c95c744b35280048c2bd093cf8a356.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=2
|
||||||
BIN
godot/art/playerGrey_up1.png
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
40
godot/art/playerGrey_up1.png.import
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://doyl1pfn8cean"
|
||||||
|
path="res://.godot/imported/playerGrey_up1.png-6bd114d0a6beac91f48e3a7314d44564.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://art/playerGrey_up1.png"
|
||||||
|
dest_files=["res://.godot/imported/playerGrey_up1.png-6bd114d0a6beac91f48e3a7314d44564.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
|
||||||
BIN
godot/art/playerGrey_up2.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
40
godot/art/playerGrey_up2.png.import
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cxx2twmx2cov0"
|
||||||
|
path="res://.godot/imported/playerGrey_up2.png-d6aba85f5f2675ebc7045efa7552ee79.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://art/playerGrey_up2.png"
|
||||||
|
dest_files=["res://.godot/imported/playerGrey_up2.png-d6aba85f5f2675ebc7045efa7552ee79.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
|
||||||
BIN
godot/art/playerGrey_walk1.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
40
godot/art/playerGrey_walk1.png.import
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://y5fhjtmhqhdu"
|
||||||
|
path="res://.godot/imported/playerGrey_walk1.png-c4773fe7a7bf85d7ab732eb4458c2742.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://art/playerGrey_walk1.png"
|
||||||
|
dest_files=["res://.godot/imported/playerGrey_walk1.png-c4773fe7a7bf85d7ab732eb4458c2742.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
|
||||||
BIN
godot/art/playerGrey_walk2.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
40
godot/art/playerGrey_walk2.png.import
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cihvooq6h05er"
|
||||||
|
path="res://.godot/imported/playerGrey_walk2.png-34d2d916366100182d08037c51884043.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://art/playerGrey_walk2.png"
|
||||||
|
dest_files=["res://.godot/imported/playerGrey_walk2.png-34d2d916366100182d08037c51884043.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
|
||||||
253
godot/fonts/FONTLOG.txt
Normal file
@ -0,0 +1,253 @@
|
|||||||
|
Please distribute this file along with the Xolonium fonts when possible.
|
||||||
|
|
||||||
|
|
||||||
|
Source
|
||||||
|
|
||||||
|
Find the sourcefiles of Xolonium at
|
||||||
|
<gitlab.com/sev/xolonium>
|
||||||
|
|
||||||
|
|
||||||
|
Credits
|
||||||
|
|
||||||
|
Xolonium is created with FontForge <fontforge.org>,
|
||||||
|
Inkscape <inkscape.org>, Python <python.org>, and
|
||||||
|
FontTools <github.com/fonttools>.
|
||||||
|
|
||||||
|
It originated as a custom font for the open-source
|
||||||
|
game Xonotic <xonotic.org>. With many thanks to the
|
||||||
|
Xonotic community for your support.
|
||||||
|
|
||||||
|
|
||||||
|
Supported OpenType features
|
||||||
|
|
||||||
|
case Provides case sensitive placement of punctuation,
|
||||||
|
brackets, and math symbols for uppercase text.
|
||||||
|
frac Replaces number/number sequences with diagonal fractions.
|
||||||
|
Numbers that touch a slash should not exceed 10 digits.
|
||||||
|
kern Provides kerning for Latin, Greek, and Cyrillic scripts.
|
||||||
|
locl Dutch: Replaces j with a stressed version if it follows í.
|
||||||
|
Sami: Replaces n-form Eng with the preferred N-form version.
|
||||||
|
Romanian and Moldovan: Replaces ŞşŢţ with the preferred ȘșȚț.
|
||||||
|
pnum Replaces monospaced digits with proportional versions.
|
||||||
|
sinf Replaces digits with scientific inferiors below the baseline.
|
||||||
|
subs Replaces digits with subscript versions on the baseline.
|
||||||
|
sups Replaces digits with superscript versions.
|
||||||
|
zero Replaces zero with a slashed version.
|
||||||
|
|
||||||
|
|
||||||
|
Supported glyph sets
|
||||||
|
|
||||||
|
Adobe Latin 3
|
||||||
|
OpenType W1G
|
||||||
|
ISO 8859-1 Western European
|
||||||
|
ISO 8859-2 Central European
|
||||||
|
ISO 8859-3 South European
|
||||||
|
ISO 8859-4 North European
|
||||||
|
ISO 8859-5 Cyrillic
|
||||||
|
ISO 8859-7 Greek
|
||||||
|
ISO 8859-9 Turkish
|
||||||
|
ISO 8859-10 Nordic
|
||||||
|
ISO 8859-13 Baltic Rim
|
||||||
|
ISO 8859-14 Celtic
|
||||||
|
ISO 8859-15 Western European
|
||||||
|
ISO 8859-16 South-Eastern European
|
||||||
|
|
||||||
|
|
||||||
|
Available glyphs
|
||||||
|
|
||||||
|
!"#$%&'()*+,-./0123456789:;<=>?
|
||||||
|
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
|
||||||
|
`abcdefghijklmnopqrstuvwxyz{|}~
|
||||||
|
|
||||||
|
¡¢£¤¥¦§¨©ª«¬ ®¯°±²³´µ¶·¸¹º»¼½¾¿
|
||||||
|
ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞß
|
||||||
|
àáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
|
||||||
|
ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğ
|
||||||
|
ĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľ
|
||||||
|
ĿŀŁłŃńŅņŇňŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞş
|
||||||
|
ŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽž
|
||||||
|
ƒǺǻǼǽǾǿȘșȚțȷ
|
||||||
|
|
||||||
|
ˆˇˉ˘˙˚˛˜˝
|
||||||
|
|
||||||
|
ͺ;΄΅Ά·ΈΉΊΌΎΏΐ
|
||||||
|
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫάέήίΰ
|
||||||
|
αβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ
|
||||||
|
|
||||||
|
ЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОП
|
||||||
|
РСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп
|
||||||
|
рстуфхцчшщъыьэюяѐёђѓєѕіїјљњћќѝўџ
|
||||||
|
ѢѣѲѳѴѵҐґҒғҔҕҖҗҘҙҚқҜҝҞҟҠҡҢңҤҥҦҧҨҩ
|
||||||
|
ҪҫҬҭҮүҰұҲҳҴҵҶҷҸҹҺһҼҽӀӁӂӇӈӋӌӏӐӑӒӓ
|
||||||
|
ӔӕӖӗӘәӜӝӞӟӠӡӢӣӤӥӦӧӨөӮӯӰӱӲӳӴӵӶӷӸӹ
|
||||||
|
Ԥԥ
|
||||||
|
|
||||||
|
ḂḃḊḋḞḟṀṁṖṗṠṡṪṫẀẁẂẃẄẅẞỲỳ
|
||||||
|
|
||||||
|
‒–—―‘’‚‛“”„‟†‡•…‰′″‹›‽‾⁄
|
||||||
|
⁰⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎
|
||||||
|
₤₦₩₫€₯₱₹₺₽₿
|
||||||
|
℅ℓ№℗™Ω℮
|
||||||
|
⅛⅜⅝⅞
|
||||||
|
←↑→↓
|
||||||
|
∂∆∏∑−∕∙√∞∟∫≈≠≤≥
|
||||||
|
⌖
|
||||||
|
■▬▮▰▲▶▼◀◆◊●◢◣◤◥
|
||||||
|
☄★☠☢☣⚙⚛⚠⚡⛔
|
||||||
|
❇❈❌❤❰❱❲❳
|
||||||
|
fffiflffiffl
|
||||||
|
🌌🌍🌎🌏👽💣🔥🔫
|
||||||
|
😁😃😄😆😇😈😉😊😎😐😒😕😘
|
||||||
|
😛😝😞😟😠😣😭😮😲😴😵
|
||||||
|
🚀
|
||||||
|
|
||||||
|
|
||||||
|
Debugging glyphs
|
||||||
|
|
||||||
|
U+EFFD Font version
|
||||||
|
U+F000 Font hinting indicator
|
||||||
|
|
||||||
|
|
||||||
|
Changelog
|
||||||
|
|
||||||
|
Xolonium 4.1 2016-11-22 Severin Meyer <sev.ch@web.de>
|
||||||
|
Reverted frac OpenType feature to a more stable implementation
|
||||||
|
|
||||||
|
Xolonium 4.0 2016-10-08 Severin Meyer <sev.ch@web.de>
|
||||||
|
Decreased width of most glyphs
|
||||||
|
Thinner vertical stems in Xolonium-Regular
|
||||||
|
Thicker horizontal stems in Xolonium-Bold
|
||||||
|
Revised diagonal stems
|
||||||
|
Lowered middle bars
|
||||||
|
Revised diacritical bars
|
||||||
|
Added glyphs:
|
||||||
|
ӏẞ₿
|
||||||
|
U+2007 U+2008 U+2009 U+200A U+202F
|
||||||
|
U+EFFD U+F000
|
||||||
|
Revised glyphs:
|
||||||
|
$&,JKQRXkwxy~¢¤ßǻ˜ζκλμξφЖУжћѴѵ∕₱₺₦₩€ℓ№≈ffffiffl
|
||||||
|
❤🌍🌎🌏😁😄😇😈😉😊😘😭😮😴🚀
|
||||||
|
Removed uncommon glyphs:
|
||||||
|
ʼnſʼҌҍҎҏҾҿӃӄӇӈӚӛӪӫӬӭ
|
||||||
|
U+0312 U+0313 U+0326
|
||||||
|
Simplified OpenType features pnum, zero, and case
|
||||||
|
Removed OpenType feature dlig
|
||||||
|
Revised vertical metrics
|
||||||
|
Merged outlines of composite glyphs in otf version
|
||||||
|
Added ttf version with custom outlines and instructions
|
||||||
|
Added woff and woff2 version
|
||||||
|
|
||||||
|
Xolonium 3.1 2015-06-10 Severin Meyer <sev.ch@web.de>
|
||||||
|
Added currency glyphs:
|
||||||
|
₦₩₫₱₹₺₽
|
||||||
|
Revised glyph:
|
||||||
|
₯
|
||||||
|
Relicensed public release under the SIL Open Font License 1.1
|
||||||
|
|
||||||
|
Xolonium 3.0 2015-05-04 Severin Meyer <sev.ch@web.de>
|
||||||
|
Decreased width of glyphs
|
||||||
|
Decreased descender height
|
||||||
|
Increased height of super/subscript glyphs
|
||||||
|
Revised width of dashes, underscore, and overscore
|
||||||
|
Sharper bends with more circular proportions
|
||||||
|
Decreased stroke thickness of mathematical glyphs
|
||||||
|
Revised diacritical marks
|
||||||
|
Revised diacritical bars
|
||||||
|
Revised Cyrillic hooks
|
||||||
|
Revised glyphs:
|
||||||
|
GQRYjmuwßŊŒſƒǻfffiffiffl
|
||||||
|
ΞΨΩδζιξπςστυφω
|
||||||
|
ЉЄДЛУЭЯбдлэяєљђєћѢѣҨҩҼҽӃӄӘә
|
||||||
|
#$&'()*,/69?@[]{}~¡£¤¥§©®¿
|
||||||
|
‹›₤€₯ℓ№℗℮←↑→↓∂∏∑∞≈▰☄❈❰❱❲❳😝
|
||||||
|
Raised vertical position of mathematical glyphs
|
||||||
|
Unified advance width of numeral and monetary glyphs
|
||||||
|
Unified advance width of mathematical glyphs
|
||||||
|
Revised bearings
|
||||||
|
Rewrote kern feature
|
||||||
|
Bolder Xolonium-Bold with improved proportions
|
||||||
|
Updated glyph names to conform to the AGLFN 1.7
|
||||||
|
Revised hints and PS Private Dictionary
|
||||||
|
Added glyphs:
|
||||||
|
ӶӷԤԥ
|
||||||
|
Added OpenType features:
|
||||||
|
case frac liga locl pnum sinf subs sups zero
|
||||||
|
|
||||||
|
Xolonium 2.4 2014-12-23 Severin Meyer <sev.ch@web.de>
|
||||||
|
Added dingbats:
|
||||||
|
⛔💣🔥
|
||||||
|
Revised size and design of emoticons
|
||||||
|
Revised dingbats:
|
||||||
|
⌖☄☠☣⚙⚛⚠⚡❇❈🌌🌍🌎🌏🔫
|
||||||
|
Removed dingbat:
|
||||||
|
💥
|
||||||
|
|
||||||
|
Xolonium 2.3 2014-08-14 Severin Meyer <sev.ch@web.de>
|
||||||
|
Bugfixed ε and έ, thanks to bowzee for the feedback
|
||||||
|
|
||||||
|
Xolonium 2.2 2014-03-01 Severin Meyer <sev.ch@web.de>
|
||||||
|
Added dingbats:
|
||||||
|
⌖◆●❌💥
|
||||||
|
Revised dingbats:
|
||||||
|
•←↑→↓◊☄★☠☣⚙⚛⚠⚡❇❈❤🌌🌍🌎🌏👽🔫🚀
|
||||||
|
Removed dingbats:
|
||||||
|
♻✪💡📡🔋🔧🔭
|
||||||
|
|
||||||
|
Xolonium 2.1 2013-10-20 Severin Meyer <sev.ch@web.de>
|
||||||
|
Added dingbats:
|
||||||
|
←↑→↓❰❱❲❳■▬▮▰▲▶▼◀◢◣◤◥
|
||||||
|
☄★☠☢☣♻⚙⚛⚠⚡✪❇❈❤
|
||||||
|
🌌🌍🌎🌏👽💡📡🔋🔧🔫🔭🚀
|
||||||
|
😁😃😄😆😇😈😉😊😎😐😒😕
|
||||||
|
😘😛😝😞😟😠😣😭😮😲😴😵
|
||||||
|
|
||||||
|
Xolonium 2.0.1 2013-07-12 Severin Meyer <sev.ch@web.de>
|
||||||
|
Reorganised and simplified files
|
||||||
|
|
||||||
|
Xolonium 2.0 2012-08-11 Severin Meyer <sev.ch@web.de>
|
||||||
|
Revised bends
|
||||||
|
Revised thickness of uppercase diagonal stems
|
||||||
|
Revised diacritical marks
|
||||||
|
Revised hints and PS Private Dictionary
|
||||||
|
Revised glyphs:
|
||||||
|
*1469@DPRly{}§©®¶ÐÞƒΘΞαεζνξνυЄЉЊ
|
||||||
|
ЏБЗЛУЧЪЫЬЭЯбзлчъыьэяєљњџ•€∂∙√∞∫≠
|
||||||
|
Completed glyph sets:
|
||||||
|
Adobe Latin 3
|
||||||
|
OpenType World Glyph Set 1 (W1G)
|
||||||
|
Ghostscript Standard (ghostscript-fonts-std-8.11)
|
||||||
|
Added OpenType kern feature
|
||||||
|
Added Xolonium-Bold
|
||||||
|
|
||||||
|
Xolonium 1.2 2011-02-12 Severin Meyer <sev.ch@web.de>
|
||||||
|
Revised glyphs:
|
||||||
|
D·Ðı
|
||||||
|
Completed glyph sets:
|
||||||
|
ISO 8859-7 (Greek)
|
||||||
|
Unicode Latin Extended-A block
|
||||||
|
Added glyphs:
|
||||||
|
†‡•…‰⁄™∂∑−√∞≠≤≥
|
||||||
|
|
||||||
|
Xolonium 1.1 2011-01-17 Severin Meyer <sev.ch@web.de>
|
||||||
|
Revised placement of cedilla and ogonek in accented glyphs
|
||||||
|
Revised glyphs:
|
||||||
|
,;DKTjkvwxy¥§Ð˛€
|
||||||
|
Completed glyph sets:
|
||||||
|
ISO 8859-2 (Central European)
|
||||||
|
ISO 8859-3 (South European, Esperanto)
|
||||||
|
ISO 8859-4 (North European)
|
||||||
|
ISO 8859-5 (Cyrillic)
|
||||||
|
ISO 8859-9 (Turkish)
|
||||||
|
ISO 8859-10 (Nordic)
|
||||||
|
ISO 8859-13 (Baltic Rim)
|
||||||
|
ISO 8859-14 (Celtic)
|
||||||
|
ISO 8859-16 (South-Eastern European)
|
||||||
|
Added glyphs:
|
||||||
|
ȷʼ̒ ЀЍѐѝ‒–—‘’‚‛“”„‟‹›
|
||||||
|
|
||||||
|
Xolonium 1.0 2011-01-04 Severin Meyer <sev.ch@web.de>
|
||||||
|
Completed glyph sets:
|
||||||
|
ISO 8859-1 (Western European)
|
||||||
|
ISO 8859-15 (Western European)
|
||||||
|
Added glyphs:
|
||||||
|
ĄĆĘŁŃŚŹŻąćęłńśźżıˆˇ˙˚˛˜
|
||||||
94
godot/fonts/LICENSE.txt
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
Copyright 2011-2016 Severin Meyer <sev.ch@web.de>,
|
||||||
|
with Reserved Font Name Xolonium.
|
||||||
|
|
||||||
|
This Font Software is licensed under the SIL Open Font License,
|
||||||
|
Version 1.1. This license is copied below, and is also available
|
||||||
|
with a FAQ at <http://scripts.sil.org/OFL>
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font creation
|
||||||
|
efforts of academic and linguistic communities, and to provide a free and
|
||||||
|
open framework in which fonts may be shared and improved in partnership
|
||||||
|
with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply
|
||||||
|
to any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software components as
|
||||||
|
distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||||
|
or substituting -- in part or in whole -- any of the components of the
|
||||||
|
Original Version, by changing formats or by porting the Font Software to a
|
||||||
|
new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION & CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||||
|
redistribute, and sell modified and unmodified copies of the Font
|
||||||
|
Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components,
|
||||||
|
in Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the corresponding
|
||||||
|
Copyright Holder. This restriction only applies to the primary font name as
|
||||||
|
presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created
|
||||||
|
using the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||||
BIN
godot/fonts/Xolonium-Regular.ttf
Normal file
36
godot/fonts/Xolonium-Regular.ttf.import
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="font_data_dynamic"
|
||||||
|
type="FontFile"
|
||||||
|
uid="uid://bi7eons0k46j8"
|
||||||
|
path="res://.godot/imported/Xolonium-Regular.ttf-bc2981e3069cff4c34dd7c8e2bb73fba.fontdata"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://fonts/Xolonium-Regular.ttf"
|
||||||
|
dest_files=["res://.godot/imported/Xolonium-Regular.ttf-bc2981e3069cff4c34dd7c8e2bb73fba.fontdata"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
Rendering=null
|
||||||
|
antialiasing=1
|
||||||
|
generate_mipmaps=false
|
||||||
|
disable_embedded_bitmaps=true
|
||||||
|
multichannel_signed_distance_field=false
|
||||||
|
msdf_pixel_range=8
|
||||||
|
msdf_size=48
|
||||||
|
allow_system_fallback=true
|
||||||
|
force_autohinter=false
|
||||||
|
modulate_color_glyphs=false
|
||||||
|
hinting=1
|
||||||
|
subpixel_positioning=4
|
||||||
|
keep_rounding_remainders=true
|
||||||
|
oversampling=0.0
|
||||||
|
Fallbacks=null
|
||||||
|
fallbacks=[]
|
||||||
|
Compress=null
|
||||||
|
compress=true
|
||||||
|
preload=[]
|
||||||
|
language_support={}
|
||||||
|
script_support={}
|
||||||
|
opentype_features={}
|
||||||
1
godot/icon.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128"><rect width="124" height="124" x="2" y="2" fill="#363d52" stroke="#212532" stroke-width="4" rx="14"/><g fill="#fff" transform="translate(12.322 12.322)scale(.101)"><path d="M105 673v33q407 354 814 0v-33z"/><path fill="#478cbf" d="m105 673 152 14q12 1 15 14l4 67 132 10 8-61q2-11 15-15h162q13 4 15 15l8 61 132-10 4-67q3-13 15-14l152-14V427q30-39 56-81-35-59-83-108-43 20-82 47-40-37-88-64 7-51 8-102-59-28-123-42-26 43-46 89-49-7-98 0-20-46-46-89-64 14-123 42 1 51 8 102-48 27-88 64-39-27-82-47-48 49-83 108 26 42 56 81zm0 33v39c0 276 813 276 814 0v-39l-134 12-5 69q-2 10-14 13l-162 11q-12 0-16-11l-10-65H446l-10 65q-4 11-16 11l-162-11q-12-3-14-13l-5-69z"/><path d="M483 600c0 34 58 34 58 0v-86c0-34-58-34-58 0z"/><circle cx="725" cy="526" r="90"/><circle cx="299" cy="526" r="90"/></g><g fill="#414042" transform="translate(12.322 12.322)scale(.101)"><circle cx="307" cy="532" r="60"/><circle cx="717" cy="532" r="60"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 995 B |
43
godot/icon.svg.import
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://c36lp4kok2te5"
|
||||||
|
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://icon.svg"
|
||||||
|
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.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
|
||||||
|
svg/scale=1.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=false
|
||||||
46
godot/player.tscn
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
[gd_scene load_steps=7 format=3 uid="uid://bx7xynpbusro6"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://doyl1pfn8cean" path="res://art/playerGrey_up1.png" id="1_hqtel"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cxx2twmx2cov0" path="res://art/playerGrey_up2.png" id="2_sweqy"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://y5fhjtmhqhdu" path="res://art/playerGrey_walk1.png" id="3_2hs0m"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cihvooq6h05er" path="res://art/playerGrey_walk2.png" id="4_1jxqw"]
|
||||||
|
|
||||||
|
[sub_resource type="SpriteFrames" id="SpriteFrames_dw050"]
|
||||||
|
animations = [{
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": ExtResource("1_hqtel")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": ExtResource("2_sweqy")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"up",
|
||||||
|
"speed": 5.0
|
||||||
|
}, {
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": ExtResource("3_2hs0m")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": ExtResource("4_1jxqw")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"walk",
|
||||||
|
"speed": 5.0
|
||||||
|
}]
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_b26j0"]
|
||||||
|
radius = 27.0
|
||||||
|
height = 68.0
|
||||||
|
|
||||||
|
[node name="Player" type="Player"]
|
||||||
|
metadata/_edit_group_ = true
|
||||||
|
|
||||||
|
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
|
||||||
|
scale = Vector2(0.5, 0.5)
|
||||||
|
sprite_frames = SubResource("SpriteFrames_dw050")
|
||||||
|
animation = &"walk"
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||||
|
shape = SubResource("CapsuleShape2D_b26j0")
|
||||||
75
godot/project.godot
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
; Engine configuration file.
|
||||||
|
; It's best edited using the editor UI and not directly,
|
||||||
|
; since the parameters that go here are not all obvious.
|
||||||
|
;
|
||||||
|
; Format:
|
||||||
|
; [section] ; section goes between []
|
||||||
|
; param=value ; assign values to parameters
|
||||||
|
|
||||||
|
config_version=5
|
||||||
|
|
||||||
|
[addons]
|
||||||
|
|
||||||
|
resources_spreadsheet_view/array_color_tint=100.0
|
||||||
|
resources_spreadsheet_view/color_rows=true
|
||||||
|
resources_spreadsheet_view/array_min_width=128.0
|
||||||
|
resources_spreadsheet_view/resource_preview_size=32.0
|
||||||
|
resources_spreadsheet_view/clip_headers=false
|
||||||
|
resources_spreadsheet_view/dupe_arrays=true
|
||||||
|
resources_spreadsheet_view/context_menu_on_leftclick=false
|
||||||
|
resources_spreadsheet_view/fold_docks=true
|
||||||
|
resources_spreadsheet_view/resource_cell_label_mode=1
|
||||||
|
resources_spreadsheet_view/freeze_first_column=true
|
||||||
|
|
||||||
|
[application]
|
||||||
|
|
||||||
|
config/name="GodotTest"
|
||||||
|
config/features=PackedStringArray("4.5", "Forward Plus")
|
||||||
|
config/icon="res://icon.svg"
|
||||||
|
|
||||||
|
[autoload]
|
||||||
|
|
||||||
|
BetterTerrain="*res://addons/better-terrain/BetterTerrain.gd"
|
||||||
|
GLogging="*res://addons/glogging/glogging.gd"
|
||||||
|
Panku="*res://addons/panku_console/console.tscn"
|
||||||
|
|
||||||
|
[display]
|
||||||
|
|
||||||
|
window/size/viewport_width=480
|
||||||
|
window/size/viewport_height=720
|
||||||
|
window/stretch/mode="canvas_items"
|
||||||
|
|
||||||
|
[editor_plugins]
|
||||||
|
|
||||||
|
enabled=PackedStringArray("res://addons/Gedis/plugin.cfg", "res://addons/GedisQueue/plugin.cfg", "res://addons/PaletteTools/plugin.cfg", "res://addons/glogging/plugin.cfg", "res://addons/godot_resource_groups/plugin.cfg", "res://addons/icon_explorer/plugin.cfg", "res://addons/panku_console/plugin.cfg", "res://addons/resources_spreadsheet_view/plugin.cfg", "res://addons/snappy/plugin.cfg", "res://addons/your_buil/plugin.cfg")
|
||||||
|
|
||||||
|
[godot_resource_groups]
|
||||||
|
|
||||||
|
auto_rebuild=true
|
||||||
|
|
||||||
|
[input]
|
||||||
|
|
||||||
|
move_right={
|
||||||
|
"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":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
|
, 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":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
move_left={
|
||||||
|
"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":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
|
, 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":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
move_up={
|
||||||
|
"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":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
|
, 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":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
move_down={
|
||||||
|
"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":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
|
, 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":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
3
rust/.rustfmt.toml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
max_width = 120
|
||||||
|
tab_spaces = 2
|
||||||
|
format_macro_matchers = true
|
||||||
522
rust/Cargo.lock
generated
Normal file
@ -0,0 +1,522 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "addr2line"
|
||||||
|
version = "0.25.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b"
|
||||||
|
dependencies = [
|
||||||
|
"gimli",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "adler2"
|
||||||
|
version = "2.0.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aho-corasick"
|
||||||
|
version = "1.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "autocfg"
|
||||||
|
version = "1.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "backtrace"
|
||||||
|
version = "0.3.76"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6"
|
||||||
|
dependencies = [
|
||||||
|
"addr2line",
|
||||||
|
"cfg-if",
|
||||||
|
"libc",
|
||||||
|
"miniz_oxide",
|
||||||
|
"object",
|
||||||
|
"rustc-demangle",
|
||||||
|
"windows-link",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bitflags"
|
||||||
|
version = "2.9.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bytes"
|
||||||
|
version = "1.10.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cfg-if"
|
||||||
|
version = "1.0.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "gdextension-api"
|
||||||
|
version = "0.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e25d88dabe9fdb2e064cb545312178ec4025eefb62d9a3bbce1769088e2c381d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "gimli"
|
||||||
|
version = "0.32.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "glam"
|
||||||
|
version = "0.30.8"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e12d847aeb25f41be4c0ec9587d624e9cd631bc007a8fd7ce3f5851e064c6460"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "godot"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "90b20e19a25e45460c4fd2b11b519beea3e9bcda929c1566f8d17a369b41dd82"
|
||||||
|
dependencies = [
|
||||||
|
"godot-core",
|
||||||
|
"godot-macros",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "godot-bindings"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "508d56d01018c16b67a906bda8bcd9ade7f265990e4be7c2dffecbfdebcc3992"
|
||||||
|
dependencies = [
|
||||||
|
"gdextension-api",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "godot-cell"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c1794fbec9934ef375d717d02ec142d9e0c7d7482b24d7da463264b92bc14eaf"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "godot-codegen"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "791e05ae1859028c3a910aaed83e4910ab7701ce32fa663d2dc7cd957287cdf5"
|
||||||
|
dependencies = [
|
||||||
|
"godot-bindings",
|
||||||
|
"heck",
|
||||||
|
"nanoserde",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"regex",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "godot-core"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9b1717ffba78bd2655c9ee1073752ac90d969b8a614800c469f00fc3ddc02439"
|
||||||
|
dependencies = [
|
||||||
|
"glam",
|
||||||
|
"godot-bindings",
|
||||||
|
"godot-cell",
|
||||||
|
"godot-codegen",
|
||||||
|
"godot-ffi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "godot-ffi"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "419e46ba92fba076da67f35ad96faaa830c1de4e8175db2bb4251aeb58b14b08"
|
||||||
|
dependencies = [
|
||||||
|
"godot-bindings",
|
||||||
|
"godot-codegen",
|
||||||
|
"godot-macros",
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "godot-macros"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a464e26854e63825d36655759c24556c970a8777535466ebf4ecc7f8e87a4638"
|
||||||
|
dependencies = [
|
||||||
|
"godot-bindings",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"venial",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "godottest_rs"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"godot",
|
||||||
|
"tokio",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "heck"
|
||||||
|
version = "0.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "io-uring"
|
||||||
|
version = "0.7.10"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags",
|
||||||
|
"cfg-if",
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libc"
|
||||||
|
version = "0.2.177"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "lock_api"
|
||||||
|
version = "0.4.13"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"scopeguard",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "memchr"
|
||||||
|
version = "2.7.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "miniz_oxide"
|
||||||
|
version = "0.8.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
|
||||||
|
dependencies = [
|
||||||
|
"adler2",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "mio"
|
||||||
|
version = "1.0.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"wasi",
|
||||||
|
"windows-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nanoserde"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a36fb3a748a4c9736ed7aeb5f2dfc99665247f1ce306abbddb2bf0ba2ac530a4"
|
||||||
|
dependencies = [
|
||||||
|
"nanoserde-derive",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nanoserde-derive"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a846cbc04412cf509efcd8f3694b114fc700a035fb5a37f21517f9fb019f1ebc"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "object"
|
||||||
|
version = "0.37.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "parking_lot"
|
||||||
|
version = "0.12.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13"
|
||||||
|
dependencies = [
|
||||||
|
"lock_api",
|
||||||
|
"parking_lot_core",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "parking_lot_core"
|
||||||
|
version = "0.9.11"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"libc",
|
||||||
|
"redox_syscall",
|
||||||
|
"smallvec",
|
||||||
|
"windows-targets",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pin-project-lite"
|
||||||
|
version = "0.2.16"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro2"
|
||||||
|
version = "1.0.101"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de"
|
||||||
|
dependencies = [
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "quote"
|
||||||
|
version = "1.0.41"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "redox_syscall"
|
||||||
|
version = "0.5.17"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex"
|
||||||
|
version = "1.11.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-automata",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-automata"
|
||||||
|
version = "0.4.11"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-syntax"
|
||||||
|
version = "0.8.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rustc-demangle"
|
||||||
|
version = "0.1.26"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "scopeguard"
|
||||||
|
version = "1.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "signal-hook-registry"
|
||||||
|
version = "1.4.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "slab"
|
||||||
|
version = "0.4.11"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "smallvec"
|
||||||
|
version = "1.15.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "socket2"
|
||||||
|
version = "0.6.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"windows-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "syn"
|
||||||
|
version = "2.0.104"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tokio"
|
||||||
|
version = "1.47.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038"
|
||||||
|
dependencies = [
|
||||||
|
"backtrace",
|
||||||
|
"bytes",
|
||||||
|
"io-uring",
|
||||||
|
"libc",
|
||||||
|
"mio",
|
||||||
|
"parking_lot",
|
||||||
|
"pin-project-lite",
|
||||||
|
"signal-hook-registry",
|
||||||
|
"slab",
|
||||||
|
"socket2",
|
||||||
|
"tokio-macros",
|
||||||
|
"windows-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tokio-macros"
|
||||||
|
version = "2.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-ident"
|
||||||
|
version = "1.0.19"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "venial"
|
||||||
|
version = "0.6.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9a42528baceab6c7784446df2a10f4185078c39bf73dc614f154353f1a6b1229"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasi"
|
||||||
|
version = "0.11.1+wasi-snapshot-preview1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows-link"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows-sys"
|
||||||
|
version = "0.59.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
|
||||||
|
dependencies = [
|
||||||
|
"windows-targets",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows-targets"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
|
||||||
|
dependencies = [
|
||||||
|
"windows_aarch64_gnullvm",
|
||||||
|
"windows_aarch64_msvc",
|
||||||
|
"windows_i686_gnu",
|
||||||
|
"windows_i686_gnullvm",
|
||||||
|
"windows_i686_msvc",
|
||||||
|
"windows_x86_64_gnu",
|
||||||
|
"windows_x86_64_gnullvm",
|
||||||
|
"windows_x86_64_msvc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_aarch64_gnullvm"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_aarch64_msvc"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_i686_gnu"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_i686_gnullvm"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_i686_msvc"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_x86_64_gnu"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_x86_64_gnullvm"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_x86_64_msvc"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
|
||||||
11
rust/Cargo.toml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[package]
|
||||||
|
name = "godottest_rs"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
crate-type = ["cdylib"]
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
godot = { version = "0.4.0", features = ["api-4-5"] }
|
||||||
|
tokio = { version = "1.47.1", features = ["full"] }
|
||||||
35
rust/src/lib.rs
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
use godot::{classes::Engine, prelude::*};
|
||||||
|
|
||||||
|
use crate::tokio::AsyncRuntime;
|
||||||
|
|
||||||
|
mod tokio;
|
||||||
|
|
||||||
|
mod player;
|
||||||
|
|
||||||
|
struct MyExtension;
|
||||||
|
|
||||||
|
#[gdextension]
|
||||||
|
unsafe impl ExtensionLibrary for MyExtension {
|
||||||
|
fn on_level_init(level: InitLevel) {
|
||||||
|
if level == InitLevel::Scene {
|
||||||
|
let mut engine = Engine::singleton();
|
||||||
|
|
||||||
|
// This is where we register our async runtime singleton.
|
||||||
|
engine.register_singleton(AsyncRuntime::SINGLETON, &AsyncRuntime::new_alloc());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_level_deinit(level: InitLevel) {
|
||||||
|
if level == InitLevel::Scene {
|
||||||
|
let mut engine = Engine::singleton();
|
||||||
|
|
||||||
|
// Here is where we free our async runtime singleton from memory.
|
||||||
|
if let Some(async_singleton) = engine.get_singleton(AsyncRuntime::SINGLETON) {
|
||||||
|
engine.unregister_singleton(AsyncRuntime::SINGLETON);
|
||||||
|
async_singleton.free();
|
||||||
|
} else {
|
||||||
|
godot_warn!("Failed to find & free singleton -> {}", AsyncRuntime::SINGLETON);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
61
rust/src/player.rs
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
use godot::classes::{AnimatedSprite2D, Area2D, IArea2D, Input};
|
||||||
|
use godot::prelude::*;
|
||||||
|
|
||||||
|
#[derive(GodotClass)]
|
||||||
|
#[class(base=Area2D)]
|
||||||
|
struct Player {
|
||||||
|
#[export]
|
||||||
|
speed: f32,
|
||||||
|
screen_size: Rect2,
|
||||||
|
|
||||||
|
// required
|
||||||
|
base: Base<Area2D>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[godot_api]
|
||||||
|
impl IArea2D for Player {
|
||||||
|
fn init(base: Base<Area2D>) -> Self {
|
||||||
|
Self {
|
||||||
|
speed: 400.0,
|
||||||
|
screen_size: Rect2::default(),
|
||||||
|
|
||||||
|
base,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn ready(&mut self) {
|
||||||
|
self.screen_size = self.base().get_viewport_rect();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn process(&mut self, delta: f32) {
|
||||||
|
let input = Input::singleton();
|
||||||
|
let mut animated_sprite_2d = self.base().get_node_as::<AnimatedSprite2D>("AnimatedSprite2D");
|
||||||
|
|
||||||
|
let mut velocity = Vector2::default();
|
||||||
|
|
||||||
|
if input.is_action_pressed("move_right") {
|
||||||
|
velocity.x += 1.0;
|
||||||
|
}
|
||||||
|
if input.is_action_pressed("move_left") {
|
||||||
|
velocity.x -= 1.0;
|
||||||
|
}
|
||||||
|
if input.is_action_pressed("move_down") {
|
||||||
|
velocity.y += 1.0;
|
||||||
|
}
|
||||||
|
if input.is_action_pressed("move_up") {
|
||||||
|
velocity.y -= 1.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if velocity.length() > 0.0 {
|
||||||
|
velocity = velocity.normalized() * self.speed;
|
||||||
|
animated_sprite_2d.play();
|
||||||
|
} else {
|
||||||
|
animated_sprite_2d.stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut position = self.base().get_position();
|
||||||
|
position = (position + (velocity * delta)).clamp(Vector2::ZERO, self.screen_size.size);
|
||||||
|
|
||||||
|
self.base_mut().set_position(position);
|
||||||
|
}
|
||||||
|
}
|
||||||
93
rust/src/tokio.rs
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
use std::{future::Future, rc::Rc};
|
||||||
|
|
||||||
|
use godot::{classes::Engine, prelude::*};
|
||||||
|
use tokio::{
|
||||||
|
runtime::{self, Runtime},
|
||||||
|
task::JoinHandle,
|
||||||
|
};
|
||||||
|
|
||||||
|
#[derive(GodotClass)]
|
||||||
|
#[class(base=Object)]
|
||||||
|
pub struct AsyncRuntime {
|
||||||
|
base: Base<Object>,
|
||||||
|
runtime: Rc<Runtime>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[godot_api]
|
||||||
|
impl IObject for AsyncRuntime {
|
||||||
|
fn init(base: Base<Object>) -> Self {
|
||||||
|
// #[cfg(feature = "single-thread")]
|
||||||
|
// let runtime = runtime::Builder::new_current_thread().enable_all().build().unwrap();
|
||||||
|
|
||||||
|
// #[cfg(feature = "multi-thread")]
|
||||||
|
let runtime = runtime::Builder::new_multi_thread().enable_all().build().unwrap();
|
||||||
|
|
||||||
|
Self {
|
||||||
|
base,
|
||||||
|
runtime: Rc::new(runtime),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[godot_api]
|
||||||
|
impl AsyncRuntime {
|
||||||
|
pub const SINGLETON: &'static str = "Tokio";
|
||||||
|
|
||||||
|
/// This function has no real use for the user, only to make it easier
|
||||||
|
/// for this crate to access the singleton object.
|
||||||
|
fn singleton() -> Option<Gd<AsyncRuntime>> {
|
||||||
|
match Engine::singleton().get_singleton(Self::SINGLETON) {
|
||||||
|
Some(singleton) => Some(singleton.cast::<Self>()),
|
||||||
|
None => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// **Can Panic**
|
||||||
|
///
|
||||||
|
/// Gets the active runtime under the [`AsyncRuntime`] singleton. This can panic if the singleton is unreachable,
|
||||||
|
/// or has no ability to be registered by the engine.
|
||||||
|
pub fn runtime() -> Rc<Runtime> {
|
||||||
|
match Self::singleton() {
|
||||||
|
Some(singleton) => {
|
||||||
|
let bind = singleton.bind();
|
||||||
|
Rc::clone(&bind.runtime)
|
||||||
|
}
|
||||||
|
None => {
|
||||||
|
// Assuming the user forgot to register the singleton, let's do it for them as a fail safe.
|
||||||
|
Engine::singleton().register_singleton(AsyncRuntime::SINGLETON, &AsyncRuntime::new_alloc());
|
||||||
|
|
||||||
|
// We can panic here because something fundamentally wrong has happend.
|
||||||
|
let singleton = Self::singleton().expect("Engine was not able to register, or get `AsyncRuntime` singleton!");
|
||||||
|
|
||||||
|
let bind = singleton.bind();
|
||||||
|
Rc::clone(&bind.runtime)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A wrapper function for the [`tokio::spawn`] function.
|
||||||
|
pub fn spawn<F>(future: F) -> tokio::task::JoinHandle<F::Output>
|
||||||
|
where
|
||||||
|
F: Future + Send + 'static,
|
||||||
|
F::Output: Send + 'static,
|
||||||
|
{
|
||||||
|
Self::runtime().spawn(future)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A wrapper function for the [`tokio::block_on`] function.
|
||||||
|
pub fn block_on<F>(future: F) -> F::Output
|
||||||
|
where
|
||||||
|
F: Future,
|
||||||
|
{
|
||||||
|
Self::runtime().block_on(future)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A wrapper function for the [`tokio::spawn_blocking`] function.
|
||||||
|
pub fn spawn_blocking<F, R>(&self, func: F) -> JoinHandle<R>
|
||||||
|
where
|
||||||
|
F: FnOnce() -> R + Send + 'static,
|
||||||
|
R: Send + 'static,
|
||||||
|
{
|
||||||
|
Self::runtime().spawn_blocking(func)
|
||||||
|
}
|
||||||
|
}
|
||||||