diff --git a/Meshes/arrow.res b/Meshes/arrow.res new file mode 100644 index 0000000..7a0b3bc Binary files /dev/null and b/Meshes/arrow.res differ diff --git a/Meshes/laser_beam.res b/Meshes/laser_beam.res index be516ee..f9020f0 100644 Binary files a/Meshes/laser_beam.res and b/Meshes/laser_beam.res differ diff --git a/Scenes/bug_marker.tscn b/Scenes/bug_marker.tscn new file mode 100644 index 0000000..e39d460 --- /dev/null +++ b/Scenes/bug_marker.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=4 format=3 uid="uid://crr6cjploetps"] + +[ext_resource type="ArrayMesh" uid="uid://dtvea38mlpfla" path="res://addons/Bugbot/Meshes/arrow.res" id="1_65xos"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_v6jy1"] +shading_mode = 0 +billboard_mode = 1 +billboard_keep_scale = true + +[sub_resource type="QuadMesh" id="QuadMesh_dd1nc"] +material = SubResource("StandardMaterial3D_v6jy1") +custom_aabb = AABB(-0.25, -0.25, -0.25, 0.5, 0.5, 0.5) +size = Vector2(0.25, 0.25) + +[node name="BugMarker" type="Node3D"] + +[node name="Arrow" type="MeshInstance3D" parent="."] +mesh = ExtResource("1_65xos") + +[node name="Billboard" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0) +mesh = SubResource("QuadMesh_dd1nc") diff --git a/Scenes/bugbot_player.gd b/Scenes/bugbot_player.gd index 85f948c..dc2e612 100644 --- a/Scenes/bugbot_player.gd +++ b/Scenes/bugbot_player.gd @@ -48,6 +48,7 @@ extends CharacterBody3D @export var joypad_exit_placement : InputEventJoypadButton @onready var laser_beam : Node3D = $LaserBeamRoot as Node3D +@onready var bug_marker : Node3D = $BugMarker as Node3D @onready var movement_speed_change_timer : Timer = $MovementSpeedChangeTimer as Timer @onready var exit_placement_timer : Timer = $ExitPlacementTimer as Timer @onready var camera : Camera3D = $CollisionShape3D/Camera3D @@ -59,6 +60,8 @@ var stored_mouse_mode : int = Input.MOUSE_MODE_CAPTURED var stored_pause_status : bool = false var raycast_collision : Dictionary +var _previous_bug_marker_position : Vector3 + static func instantiate(tree:SceneTree) -> void: tree.root.add_child(load("res://addons/Bugbot/Scenes/bugbot_player.tscn").instantiate() as CharacterBody3D) @@ -210,6 +213,7 @@ func _process(_delta:float) -> void: _calculate_movement_speed() _calculate_rotation(_delta) _calculate_movement() + _place_dummy_marker() func _physics_process(_delta:float) -> void: _raycast_to_world() @@ -271,3 +275,16 @@ func _raycast_to_world(): laser_beam.visible = true else: laser_beam.visible = false + +func _place_dummy_marker(): + if raycast_collision: + var collision_point : Vector3 = raycast_collision["position"] + var collision_normal : Vector3 = raycast_collision["normal"] + bug_marker.global_position = collision_point + _previous_bug_marker_position = bug_marker.global_position + bug_marker.global_transform.basis.y = collision_normal + bug_marker.global_transform.basis.x = bug_marker.global_transform.basis.z.cross(collision_normal) + bug_marker.global_transform.basis = bug_marker.global_transform.basis.orthonormalized() + bug_marker.visible = true + else: + bug_marker.visible = false diff --git a/Scenes/bugbot_player.tscn b/Scenes/bugbot_player.tscn index 5809c51..ea447a3 100644 --- a/Scenes/bugbot_player.tscn +++ b/Scenes/bugbot_player.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=39 format=3 uid="uid://dvgain3s4xa4r"] +[gd_scene load_steps=40 format=3 uid="uid://dvgain3s4xa4r"] [ext_resource type="Script" path="res://addons/Bugbot/Scenes/bugbot_player.gd" id="1_kdrpa"] [ext_resource type="InputEventKey" uid="uid://di5q6d4wt12et" path="res://addons/Bugbot/Inputs/Keyboard/move_forward.res" id="2_jfhdw"] @@ -34,6 +34,7 @@ [ext_resource type="InputEventJoypadButton" uid="uid://bc2q8kry856bq" path="res://addons/Bugbot/Inputs/Joystick/place_marker.res" id="32_q7vmk"] [ext_resource type="InputEventJoypadButton" uid="uid://8tu5a8nlxgsj" path="res://addons/Bugbot/Inputs/Joystick/exit_placement.res" id="33_lwr38"] [ext_resource type="Material" uid="uid://c8b630nfapp8l" path="res://addons/Bugbot/Textures/laser_glow.material" id="34_18wde"] +[ext_resource type="PackedScene" uid="uid://crr6cjploetps" path="res://addons/Bugbot/Scenes/bug_marker.tscn" id="34_jyjbc"] [ext_resource type="Material" uid="uid://dewbda2gd8bgv" path="res://addons/Bugbot/Textures/laser_glare.material" id="35_f65w0"] [sub_resource type="CylinderMesh" id="CylinderMesh_ts4fq"] @@ -90,6 +91,8 @@ joypad_movement_speed_down = ExtResource("31_t01c7") joypad_place_marker = ExtResource("32_q7vmk") joypad_exit_placement = ExtResource("33_lwr38") +[node name="BugMarker" parent="." instance=ExtResource("34_jyjbc")] + [node name="LaserBeamRoot" type="Node3D" parent="."] transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.5, -0.5, 0)