From d6a35b4c04f98bb9b9071ba0824fdc9fbf336f82 Mon Sep 17 00:00:00 2001 From: Joshua Higgins Date: Sun, 23 Jun 2024 16:35:13 -0400 Subject: [PATCH] godot-rust starter for client --- .gitattributes | 4 +- Client/godot/.gitignore | 2 + Client/godot/HelloWorld.gdextension | 14 ++++ Client/godot/icon.svg | 1 + Client/godot/icon.svg.import | 37 ++++++++++ Client/godot/main.gd | 11 +++ Client/godot/main.tscn | 108 ++++++++++++++++++++++++++++ Client/godot/project.godot | 24 +++++++ Client/realmchat_client/Cargo.toml | 10 +++ Client/realmchat_client/src/lib.rs | 10 +++ 10 files changed, 219 insertions(+), 2 deletions(-) create mode 100644 Client/godot/.gitignore create mode 100644 Client/godot/HelloWorld.gdextension create mode 100644 Client/godot/icon.svg create mode 100644 Client/godot/icon.svg.import create mode 100644 Client/godot/main.gd create mode 100644 Client/godot/main.tscn create mode 100644 Client/godot/project.godot create mode 100644 Client/realmchat_client/Cargo.toml create mode 100644 Client/realmchat_client/src/lib.rs diff --git a/.gitattributes b/.gitattributes index dfe0770..c7c7e0e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,2 @@ -# Auto detect text files and perform LF normalization -* text=auto +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf \ No newline at end of file diff --git a/Client/godot/.gitignore b/Client/godot/.gitignore new file mode 100644 index 0000000..4709183 --- /dev/null +++ b/Client/godot/.gitignore @@ -0,0 +1,2 @@ +# Godot 4+ specific ignores +.godot/ diff --git a/Client/godot/HelloWorld.gdextension b/Client/godot/HelloWorld.gdextension new file mode 100644 index 0000000..eae8e9e --- /dev/null +++ b/Client/godot/HelloWorld.gdextension @@ -0,0 +1,14 @@ +[configuration] +entry_symbol = "gdext_rust_init" +compatibility_minimum = 4.1 +reloadable = true + +[libraries] +linux.debug.x86_64 = "res://../realmchat_client/target/debug/librealmchat_client.so" +linux.release.x86_64 = "res://../realmchat_client/target/release/librealmchat_client.so" +windows.debug.x86_64 = "res://../realmchat_client/target/debug/realmchat_client.dll" +windows.release.x86_64 = "res://../realmchat_client/target/release/realmchat_client.dll" +macos.debug = "res://../realmchat_client/target/debug/librealmchat_client.dylib" +macos.release = "res://../realmchat_client/target/release/librealmchat_client.dylib" +macos.debug.arm64 = "res://../realmchat_client/target/debug/librealmchat_client.dylib" +macos.release.arm64 = "res://../realmchat_client/target/release/librealmchat_client.dylib" \ No newline at end of file diff --git a/Client/godot/icon.svg b/Client/godot/icon.svg new file mode 100644 index 0000000..3fe4f4a --- /dev/null +++ b/Client/godot/icon.svg @@ -0,0 +1 @@ + diff --git a/Client/godot/icon.svg.import b/Client/godot/icon.svg.import new file mode 100644 index 0000000..267a25a --- /dev/null +++ b/Client/godot/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cfyo2ucchmj72" +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/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/Client/godot/main.gd b/Client/godot/main.gd new file mode 100644 index 0000000..dc0ffa7 --- /dev/null +++ b/Client/godot/main.gd @@ -0,0 +1,11 @@ +extends Control + + +# Called when the node enters the scene tree for the first time. +func _ready(): + OS.set_low_processor_usage_mode(true) + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + pass diff --git a/Client/godot/main.tscn b/Client/godot/main.tscn new file mode 100644 index 0000000..e872b6a --- /dev/null +++ b/Client/godot/main.tscn @@ -0,0 +1,108 @@ +[gd_scene load_steps=2 format=3 uid="uid://csdvvecgjhecv"] + +[ext_resource type="Script" path="res://main.gd" id="1_vv44s"] + +[node name="Control" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_vv44s") + +[node name="Panel" type="Panel" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="Panel"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Servers" type="Panel" parent="Panel/HBoxContainer"] +clip_contents = true +custom_minimum_size = Vector2(200, 0) +layout_mode = 2 + +[node name="Rooms" type="Panel" parent="Panel/HBoxContainer"] +clip_contents = true +custom_minimum_size = Vector2(200, 0) +layout_mode = 2 + +[node name="Room View" type="Panel" parent="Panel/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="Panel/HBoxContainer/Room View"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="ScrollContainer" type="ScrollContainer" parent="Panel/HBoxContainer/Room View/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +horizontal_scroll_mode = 0 + +[node name="Messages" type="VBoxContainer" parent="Panel/HBoxContainer/Room View/VBoxContainer/ScrollContainer"] +clip_contents = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="RichTextLabel" type="RichTextLabel" parent="Panel/HBoxContainer/Room View/VBoxContainer/ScrollContainer/Messages"] +layout_mode = 2 +size_flags_vertical = 3 +focus_mode = 2 +text = "asdfasdfasdfqweqwerqwerqw +erq +we +rqw +er +qwer +qw +er +qwer +qw +r +qw +er +qwer +qw +errqwerqwer +qwer +qw +er +qwer +qw +erq +wer +qw +er +qw +erq +wer +qwerqwerqwer +qwer +qw +erq +wer +qwe +r" +scroll_following = true +selection_enabled = true + +[node name="TextEdit" type="TextEdit" parent="Panel/HBoxContainer/Room View/VBoxContainer"] +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 +placeholder_text = "Write a Message" diff --git a/Client/godot/project.godot b/Client/godot/project.godot new file mode 100644 index 0000000..60c9d70 --- /dev/null +++ b/Client/godot/project.godot @@ -0,0 +1,24 @@ +; 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 + +[application] + +config/name="RealmChat" +run/main_scene="res://main.tscn" +config/features=PackedStringArray("4.2", "GL Compatibility") +boot_splash/show_image=false +boot_splash/fullsize=false +boot_splash/use_filter=false +config/icon="res://icon.svg" + +[rendering] + +renderer/rendering_method="gl_compatibility" +renderer/rendering_method.mobile="gl_compatibility" diff --git a/Client/realmchat_client/Cargo.toml b/Client/realmchat_client/Cargo.toml new file mode 100644 index 0000000..9fcfbf0 --- /dev/null +++ b/Client/realmchat_client/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "realmchat_client" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib"] # Compile this crate to a dynamic C library. + +[dependencies] +godot = { git = "https://github.com/godot-rust/gdext", branch = "master" } \ No newline at end of file diff --git a/Client/realmchat_client/src/lib.rs b/Client/realmchat_client/src/lib.rs new file mode 100644 index 0000000..d39b4f1 --- /dev/null +++ b/Client/realmchat_client/src/lib.rs @@ -0,0 +1,10 @@ +use godot::prelude::*; + +struct MyExtension; + +#[gdextension] +unsafe impl ExtensionLibrary for MyExtension {} + +pub fn add(left: usize, right: usize) -> usize { + left + right +}