From 5165a2cd4f7e99d911f143857978fb64bc5ee081 Mon Sep 17 00:00:00 2001 From: videogame hacker Date: Sun, 27 Mar 2022 13:20:34 +0100 Subject: [PATCH] Initial commit --- .gitattributes | 2 ++ .gitignore | 2 ++ Domino.tscn | 20 ++++++++++++ DominoPlacer.gd | 58 +++++++++++++++++++++++++++++++++ GhostDomino.tscn | 18 ++++++++++ OrbitingCamera.gd | 63 +++++++++++++++++++++++++++++++++++ dev_192_gr_064x.jpg | Bin 0 -> 5235 bytes dev_192_gr_064x.jpg.import | 35 ++++++++++++++++++++ icon.png | Bin 0 -> 3523 bytes icon.png.import | 33 +++++++++++++++++++ main.tscn | 65 +++++++++++++++++++++++++++++++++++++ project.godot | 59 +++++++++++++++++++++++++++++++++ 12 files changed, 355 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 Domino.tscn create mode 100644 DominoPlacer.gd create mode 100644 GhostDomino.tscn create mode 100644 OrbitingCamera.gd create mode 100644 dev_192_gr_064x.jpg create mode 100644 dev_192_gr_064x.jpg.import create mode 100644 icon.png create mode 100644 icon.png.import create mode 100644 main.tscn create mode 100644 project.godot diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4709183 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# Godot 4+ specific ignores +.godot/ diff --git a/Domino.tscn b/Domino.tscn new file mode 100644 index 0000000..f7e739a --- /dev/null +++ b/Domino.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=4 format=3 uid="uid://dtmrjfwcpic02"] + +[sub_resource type="BoxShape3D" id="BoxShape3D_yhejd"] +size = Vector3(0.1, 1, 0.5) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hfwv0"] +albedo_color = Color(0.995333, 0.86, 1, 1) + +[sub_resource type="BoxMesh" id="BoxMesh_phfbb"] +material = SubResource( "StandardMaterial3D_hfwv0" ) +size = Vector3(0.1, 1, 0.5) + +[node name="Domino" type="RigidDynamicBody3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +shape = SubResource( "BoxShape3D_yhejd" ) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +mesh = SubResource( "BoxMesh_phfbb" ) diff --git a/DominoPlacer.gd b/DominoPlacer.gd new file mode 100644 index 0000000..c87818b --- /dev/null +++ b/DominoPlacer.gd @@ -0,0 +1,58 @@ +extends Node3D + +@export_node_path(Camera3D) var camera_path + +var domino: PackedScene +var ghost_domino: Node3D +var camera: Camera3D + +var tool_active: bool = true + +func _ready(): + domino = preload("res://Domino.tscn") + ghost_domino = preload("res://GhostDomino.tscn").instantiate() + camera = get_node(camera_path) + +func _is_active(): + return tool_active and !Input.is_action_pressed("cam_adjust") + +func _physics_process(delta): + if ghost_domino.get_parent(): + remove_child(ghost_domino) + + if not _is_active(): + return + + var space_state = get_world_3d().direct_space_state + if space_state == null: + return + + var mouse_position = get_viewport().get_mouse_position() + var mouse_3d_origin = camera.project_ray_origin(mouse_position) + var mouse_3d_normal = camera.project_ray_normal(mouse_position) + + var query = PhysicsRayQueryParameters3D.new() + query.from = camera.position + query.to = mouse_3d_origin + mouse_3d_normal * 64 + + var raytrace_results = space_state.intersect_ray(query) + if raytrace_results.has("position"): + ghost_domino.position = raytrace_results.position + Vector3.UP * 0.5 + if not ghost_domino.get_parent(): + add_child(ghost_domino) + +func _input(event): + if not _is_active(): + return + + if event.is_action_pressed("use_tool") and ghost_domino.get_parent(): + var new_domino: RigidDynamicBody3D = domino.instantiate() + new_domino.transform = ghost_domino.transform + add_child(new_domino) + + if event.is_action_pressed("domino_rotate_clockwise"): + ghost_domino.rotate_y(-PI / 12) + + if event.is_action_pressed("domino_rotate_anticlockwise"): + ghost_domino.rotate_y(PI / 12) + diff --git a/GhostDomino.tscn b/GhostDomino.tscn new file mode 100644 index 0000000..4c577a6 --- /dev/null +++ b/GhostDomino.tscn @@ -0,0 +1,18 @@ +[gd_scene load_steps=3 format=3 uid="uid://7hnd63s62flm"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lep5x"] +transparency = 1 +diffuse_mode = 3 +albedo_color = Color(1, 0.690196, 0.956863, 0.133333) +emission_enabled = true +emission = Color(0.486275, 0.0823529, 0.478431, 1) +emission_energy = 3.0 +rim = 0.23 +backlight = Color(0.282353, 0.282353, 0.282353, 1) + +[sub_resource type="BoxMesh" id="BoxMesh_n8mck"] +material = SubResource( "StandardMaterial3D_lep5x" ) +size = Vector3(0.1, 1, 0.5) + +[node name="GhostDomino" type="MeshInstance3D"] +mesh = SubResource( "BoxMesh_n8mck" ) diff --git a/OrbitingCamera.gd b/OrbitingCamera.gd new file mode 100644 index 0000000..129c9a9 --- /dev/null +++ b/OrbitingCamera.gd @@ -0,0 +1,63 @@ +extends Node3D + +var camera: Camera3D +var focal_point: Node3D + +var is_dragging_position = false +var is_dragging_rotation = false + +var camera_distance: float = 5 + +func _ready(): + camera = self.get_node("Camera") + focal_point = self.get_node("FocalPoint") + Input.set_use_accumulated_input(false) + +func _process(delta): + var adjusting = Input.is_action_pressed("cam_adjust") + if Input.is_action_pressed("cam_pan_mod"): + is_dragging_position = adjusting + is_dragging_rotation = false + else: + is_dragging_position = false + is_dragging_rotation = adjusting + + if is_dragging_position or is_dragging_rotation: + Input.set_mouse_mode(Input.MOUSE_MODE_CONFINED) + else: + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + + camera.transform = focal_point.transform.translated(Vector3(0, 0, camera_distance)) + +func _input(event): + if event is InputEventMouseMotion: + self.mouse_move(event) + + if event is InputEventMouseButton: + self.mouse_button(event) + +func mouse_button(event: InputEventMouseButton): + if Input.is_action_pressed("cam_adjust"): + if event.pressed: + if event.button_index == MOUSE_BUTTON_WHEEL_DOWN: + camera_distance += 1 + if event.button_index == MOUSE_BUTTON_WHEEL_UP: + camera_distance -= 1 + + if camera_distance < 1: + camera_distance = 1 + +func mouse_move(event: InputEventMouseMotion): + var mouse_delta: Vector2 = event.relative + + if is_dragging_position: + var relative_movement = camera.quaternion * Vector3(-mouse_delta.x, mouse_delta.y, 0) * 0.005 + focal_point.position += relative_movement + + if is_dragging_rotation: + focal_point.rotation.x += deg2rad(-mouse_delta.y * 0.022 * 6) + focal_point.rotation.y += deg2rad(-mouse_delta.x * 0.022 * 6) + if focal_point.rotation.x > PI / 2: + focal_point.rotation.x = PI / 2 + if focal_point.rotation.x < -PI/ 2: + focal_point.rotation.x = -PI / 2 diff --git a/dev_192_gr_064x.jpg b/dev_192_gr_064x.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c357604c74ed082b96427fcf77e219b93d137b7c GIT binary patch literal 5235 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 literal 0 HcmV?d00001 diff --git a/icon.png.import b/icon.png.import new file mode 100644 index 0000000..11974e4 --- /dev/null +++ b/icon.png.import @@ -0,0 +1,33 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://2pr3v3m3huh" +path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.png" +dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/bptc_ldr=0 +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/size_limit=0 +detect_3d/compress_to=1 diff --git a/main.tscn b/main.tscn new file mode 100644 index 0000000..c41979d --- /dev/null +++ b/main.tscn @@ -0,0 +1,65 @@ +[gd_scene load_steps=11 format=3 uid="uid://i2gm7xhh3074"] + +[ext_resource type="Script" path="res://OrbitingCamera.gd" id="1_1qrpa"] +[ext_resource type="Texture2D" uid="uid://flcpuu588jgj" path="res://dev_192_gr_064x.jpg" id="2_kx7d0"] +[ext_resource type="Script" path="res://DominoPlacer.gd" id="3_c1o8g"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_4hp7m"] +sky_top_color = Color(0.64, 0.79, 1, 1) +sky_horizon_color = Color(0.6804, 0.77544, 0.81, 1) +ground_bottom_color = Color(0.27, 0.2565, 0.27, 1) + +[sub_resource type="Sky" id="Sky_wsgs3"] +sky_material = SubResource( "ProceduralSkyMaterial_4hp7m" ) + +[sub_resource type="Environment" id="Environment_2wash"] +background_mode = 2 +sky = SubResource( "Sky_wsgs3" ) + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_glyqs"] + +[sub_resource type="ORMMaterial3D" id="ORMMaterial3D_3wfud"] +albedo_texture = ExtResource( "2_kx7d0" ) +uv1_scale = Vector3(400, 400, 1) +texture_filter = 5 + +[sub_resource type="PlaneMesh" id="PlaneMesh_3xg8w"] +material = SubResource( "ORMMaterial3D_3wfud" ) + +[sub_resource type="BoxShape3D" id="BoxShape3D_curec"] + +[node name="Main" type="Node3D"] + +[node name="OrbitingCamera" type="Node3D" parent="."] +script = ExtResource( "1_1qrpa" ) + +[node name="Camera" type="Camera3D" parent="OrbitingCamera"] + +[node name="FocalPoint" type="Node3D" parent="OrbitingCamera"] +transform = Transform3D(1, 0, 0, 0, 0.985488, -0.169745, 0, 0.169745, 0.985488, 0, 1, 0) + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource( "Environment_2wash" ) + +[node name="Sun" type="DirectionalLight3D" parent="WorldEnvironment"] +transform = Transform3D(0.341298, 0.867189, -0.362628, 0, 0.385793, 0.922585, 0.939955, -0.314877, 0.131671, 0, 9.76009, 0) +light_color = Color(1, 0.901, 0.78, 1) +shadow_enabled = true + +[node name="Floor" type="Node3D" parent="."] + +[node name="StaticBody3D" type="StaticBody3D" parent="Floor"] +physics_material_override = SubResource( "PhysicsMaterial_glyqs" ) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Floor/StaticBody3D"] +transform = Transform3D(200, 0, 0, 0, 1, 0, 0, 0, 200, -0.00279409, 0, 0.000888824) +mesh = SubResource( "PlaneMesh_3xg8w" ) +skeleton = NodePath("../..") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Floor/StaticBody3D"] +transform = Transform3D(200, 0, 0, 0, 1, 0, 0, 0, 200, 0, -0.5, 0) +shape = SubResource( "BoxShape3D_curec" ) + +[node name="DominoPlacer" type="Node3D" parent="."] +script = ExtResource( "3_c1o8g" ) +camera_path = NodePath("../OrbitingCamera/Camera") diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..1daeafe --- /dev/null +++ b/project.godot @@ -0,0 +1,59 @@ +; 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="cute domino game :3" +run/main_scene="res://main.tscn" +boot_splash/show_image=false +config/icon="res://icon.png" +config/features=PackedStringArray("4.0", "Vulkan Clustered") + +[editor] + +node_naming/name_num_separator=2 + +[input] + +cam_adjust={ +"deadzone": 0.5, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":2,"pressed":false,"double_click":false,"script":null) +] +} +cam_pan_mod={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777237,"physical_keycode":0,"unicode":0,"echo":false,"script":null) +] +} +use_tool={ +"deadzone": 0.5, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"pressed":false,"double_click":false,"script":null) +] +} +domino_rotate_clockwise={ +"deadzone": 0.5, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":4,"pressed":false,"double_click":false,"script":null) +] +} +domino_rotate_anticlockwise={ +"deadzone": 0.5, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":5,"pressed":false,"double_click":false,"script":null) +] +} + +[physics] + +3d/run_on_separate_thread=true +common/physics_ticks_per_second=120 +common/physics_jitter_fix=1.0 + +[rendering] + +textures/default_filters/anisotropic_filtering_level=4