diff --git a/Main.tscn b/Main.tscn index 22618d6..86ee43e 100644 --- a/Main.tscn +++ b/Main.tscn @@ -1,13 +1,15 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=6 format=2] [ext_resource path="res://Scripts/Main.gd" type="Script" id=1] [ext_resource path="res://Scripts/Camera.gd" type="Script" id=2] -[sub_resource type="SpatialMaterial" id=4] +[sub_resource type="CubeMesh" id=3] + +[sub_resource type="SpatialMaterial" id=1] albedo_color = Color( 0.592157, 0.905882, 0.0862745, 1 ) -[sub_resource type="CubeMesh" id=5] -material = SubResource( 4 ) +[sub_resource type="CubeMesh" id=2] +material = SubResource( 1 ) [node name="Main" type="Spatial"] transform = Transform( 1, 0, 0, 0, 0.99977, 0.021431, 0, -0.021431, 0.99977, 0, 0, 0 ) @@ -19,11 +21,14 @@ show_face_normals = false [node name="Meshes" type="Node" parent="."] [node name="Cube" type="MeshInstance" parent="Meshes"] +transform = Transform( -1.62921e-07, 0, 1, 0, 1, 0, -1, 0, -1.62921e-07, 0, 10, 0 ) +mesh = SubResource( 3 ) +material/0 = null [node name="Floor" type="MeshInstance" parent="Meshes"] transform = Transform( 6.88346, 0, 0, 0, 0.0447118, 0, 0, 0, 7.16078, 0, 0, 0 ) visible = false -mesh = SubResource( 5 ) +mesh = SubResource( 2 ) material/0 = null [node name="Lights" type="Node" parent="."] @@ -35,11 +40,10 @@ transform = Transform( 1, 0, 0, 0, 0.778528, 0.62761, 0, -0.62761, 0.778528, 0, transform = Transform( 1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, -6, 0 ) [node name="CameraGimbal" type="Spatial" parent="."] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) [node name="InnerGimbal" type="Spatial" parent="CameraGimbal"] transform = Transform( 1, -4.65661e-10, 0, 9.31323e-10, 1, 9.31323e-10, 0, 9.31323e-10, 1, 0, 0, 0 ) [node name="Camera" type="Camera" parent="CameraGimbal/InnerGimbal"] -transform = Transform( 0.999999, -2.3283e-09, 2.98023e-08, 1.86264e-09, 1, -7.45058e-09, -2.98023e-08, 5.58794e-09, 1, -0.855393, 0.263348, 5.88796 ) +transform = Transform( 1, -2.3283e-09, 2.98023e-08, 1.86264e-09, 1, -5.58794e-09, -2.98023e-08, 5.58794e-09, 1, -0.855393, 9.95794, 6.09577 ) script = ExtResource( 2 ) diff --git a/Scripts/Main.gd b/Scripts/Main.gd index 6f31276..4c491da 100644 --- a/Scripts/Main.gd +++ b/Scripts/Main.gd @@ -181,7 +181,7 @@ func drawSelectedOutline(selectedFace): var cubeMeshInstance = get_node("Meshes/Cube") var cubeMesh = cubeMeshInstance.get_mesh() - var ig = get_node("Meshes/Cube/DrawSelectedOutline_ImmediateGeometry") if get_node("Meshes/Cube/DrawSelectedOutline_ImmediateGeometry") else ImmediateGeometry.new() + var ig = get_node("Meshes/Cube/DrawSelectedOutline_ImmediateGeometry") if get_node_or_null("Meshes/Cube/DrawSelectedOutline_ImmediateGeometry") != null else ImmediateGeometry.new() var sm = SpatialMaterial.new() sm.flags_unshaded = true sm.vertex_color_use_as_albedo = true @@ -238,12 +238,6 @@ func drawWireframe(): ig.set_scale(Vector3(sf, sf, sf)) cubeMeshInstance.add_child(ig) -static func rotate_vector3_around(var v3_pos,var v3_pivot,var y_angle): - var dir = v3_pos - v3_pivot - dir = Quat(Vector3(0,1,0),y_angle) * dir - var point = dir - v3_pivot - return point - func _on_StaticBody_mouse_entered(): print("In cube") @@ -269,18 +263,19 @@ func get_hit_mesh_triangle_face_index(hitVector): var meshDataTool = MeshDataTool.new() meshDataTool.create_from_surface(arrayMesh, 0) var camera_origin = camera.get_global_transform().origin - var purple_arrow = hitVector - camera_origin + var test_vector = hitVector - camera_origin var i = 0 while i < vertices.size(): var face_index = i / 3 var a = cubeMeshInstance.to_global(vertices[i]) var b = cubeMeshInstance.to_global(vertices[i + 1]) var c = cubeMeshInstance.to_global(vertices[i + 2]) + print("Triangle coords: ", a, b, c) - var intersects_triangle = Geometry.ray_intersects_triangle(camera_origin, purple_arrow, a, b, c) + var intersects_triangle = Geometry.ray_intersects_triangle(camera_origin, test_vector, a, b, c) if intersects_triangle != null: - var angle = rad2deg(purple_arrow.angle_to(meshDataTool.get_face_normal(face_index))) + var angle = rad2deg(test_vector.angle_to(cubeMeshInstance.to_global(meshDataTool.get_face_normal(face_index)))) if angle > 90 and angle < 180: return face_index