From 81ef11964c8ee75b67faf28b3237c393a288471c Mon Sep 17 00:00:00 2001 From: Holly Date: Wed, 12 Feb 2025 04:00:34 +0000 Subject: [PATCH] fixes --- project.godot | 8 ++++++ scenes/world/DynamicMap.tscn | 1 + src/BufferStuffReader.gd | 4 +-- src/Global.gd | 4 +-- src/Player.gd | 13 +++------ src/file_parsers/B3D.gd | 52 +++++++++++++++++++++++++++++++----- 6 files changed, 63 insertions(+), 19 deletions(-) diff --git a/project.godot b/project.godot index ff4482e..9cdb179 100644 --- a/project.godot +++ b/project.godot @@ -37,41 +37,49 @@ enabled=PackedStringArray("res://addons/debug_menu/plugin.cfg") player_forwards={ "deadzone": 0.5, "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":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":-1.0,"script":null) ] } player_backwards={ "deadzone": 0.5, "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":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":1.0,"script":null) ] } player_left={ "deadzone": 0.5, "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":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null) ] } player_right={ "deadzone": 0.5, "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":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"script":null) ] } pause={ "deadzone": 0.5, "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":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":6,"pressure":0.0,"pressed":true,"script":null) ] } player_sprint={ "deadzone": 0.5, "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":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":9,"pressure":0.0,"pressed":true,"script":null) ] } player_crouch={ "deadzone": 0.5, "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":4194326,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":1,"pressure":0.0,"pressed":true,"script":null) ] } player_blink={ "deadzone": 0.5, "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":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null) ] } diff --git a/scenes/world/DynamicMap.tscn b/scenes/world/DynamicMap.tscn index 9fc0268..96eff60 100644 --- a/scenes/world/DynamicMap.tscn +++ b/scenes/world/DynamicMap.tscn @@ -34,6 +34,7 @@ transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, [node name="CSGBox3D" type="CSGBox3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.97521, -1.86909, -3.06) +visible = false use_collision = true size = Vector3(15.4238, 0.866943, 15.2599) diff --git a/src/BufferStuffReader.gd b/src/BufferStuffReader.gd index 1e2d294..d0a777a 100644 --- a/src/BufferStuffReader.gd +++ b/src/BufferStuffReader.gd @@ -75,8 +75,8 @@ func readCString() -> String: func readVector2() -> Vector2: return Vector2(readFloat(), readFloat()) -func readVector3() -> Vector3: - return Vector3(readFloat(), readFloat(), readFloat()) +func readVector3(flipX: bool = false) -> Vector3: + return Vector3(-readFloat() if flipX else readFloat(), readFloat(), readFloat()) func readQuaternion() -> Quaternion: var w = readFloat() diff --git a/src/Global.gd b/src/Global.gd index 45b0867..cef6743 100644 --- a/src/Global.gd +++ b/src/Global.gd @@ -81,8 +81,8 @@ func _process(delta): #FPSfactor = max(min(delta * 70, 5.0), 0.2) #print(max(min(delta * 70, 5.0), 0.2)) - CurTime = getMsec() - ElapsedTime = (CurTime - PrevTime) / 1000.0 + CurTime = Time.get_ticks_usec() + ElapsedTime = (CurTime - PrevTime) / 1000000.0 PrevTime = CurTime FPSfactor = max(min(ElapsedTime * 70, 5.0), 0.2) diff --git a/src/Player.gd b/src/Player.gd index d9d3bb0..fecbe89 100644 --- a/src/Player.gd +++ b/src/Player.gd @@ -315,15 +315,10 @@ func _process(delta: float) -> void: #print(str("movementSpeed:", movementSpeed, " angle:", angle, " CurrSpeed:", CurrSpeed)) if not UnableToMove: - #TranslateEntity Collider, Cos(angle)*CurrSpeed * FPSfactor, 0, Sin(angle)*CurrSpeed * FPSfactor, True - #print(str(cos(angle) * CurrSpeed * 100000 * Global.FPSfactor), " ", str(sin(angle) * CurrSpeed * 100000 * Global.FPSfactor)) - #position.x += cos(angle) * CurrSpeed * 100000 * Global.FPSfactor - #position.z += sin(angle) * CurrSpeed * 100000 * Global.FPSfactor - var movementX = (direction.x * CurrSpeed * 200) * Global.FPSfactor - var movementZ = (direction.z * CurrSpeed * 200) * Global.FPSfactor - #print(CurrSpeed, " ", direction.x, " ", direction.z, " ", str(movementX), " ", str(movementZ)) - velocity.x = movementX - velocity.z = movementZ + var movementX = direction.x * CurrSpeed * Global.FPSfactor + var movementZ = direction.z * CurrSpeed * Global.FPSfactor + position.x += movementX + position.z += movementZ var cameraRoll = max(min(Global.Sin(Shake / 2) * 2.5 * min(Injuries + 0.25, 3.0), 8.0), -8.0) var cameraBob = (Global.Sin(Shake) / (20.0 + CrouchState * 20.0)) * 0.6 diff --git a/src/file_parsers/B3D.gd b/src/file_parsers/B3D.gd index aa473cf..9c737fe 100644 --- a/src/file_parsers/B3D.gd +++ b/src/file_parsers/B3D.gd @@ -47,21 +47,27 @@ static func ReadVRTS(reader:BufferStuffReader): vrtsChunk.tex_coord_set_size = reader.readInt() while reader.offset < reader.buffer.size(): - var vertex = reader.readVector3() + var vertex = reader.readVector3(true) vrtsChunk.vertices.push_back(vertex) if vrtsChunk.containsNormals: - var normal = reader.readVector3() + var normal = reader.readVector3(true) vrtsChunk.normals.push_back(normal) if vrtsChunk.containsColors: var color = reader.readColor() vrtsChunk.colors.push_back(color) - + + for i in range(vrtsChunk.tex_coord_set_size): + vrtsChunk.uv.push_back(reader.readVector2()) for i in range(vrtsChunk.tex_coord_sets): for i1 in range(vrtsChunk.tex_coord_set_size): - vrtsChunk.uv.push_back(reader.readVector2()) + if i == 0: + vrtsChunk.uv[i1].x = reader.readFloat() + else: + vrtsChunk.uv[i1].y = reader.readFloat() + print(vrtsChunk.uv) return vrtsChunk static func ReadTRIS(reader:BufferStuffReader): @@ -79,13 +85,44 @@ static func ReadMesh(reader:BufferStuffReader): var chunks = ReadChunks(reader) for chunk in chunks: + var chunkReader = BufferStuffReader.create(chunk.bytes) if chunk.name == "VRTS": - meshChunk.verts = ReadVRTS(reader) + meshChunk.verts = ReadVRTS(chunkReader) elif chunk.name == "TRIS": - meshChunk.surfaces = ReadTRIS(reader) + meshChunk.surfaces = ReadTRIS(chunkReader) return meshChunk +static func CreateMesh(meshData: B3DMesh): + var arr_mesh = ArrayMesh.new() + var arr = [] + arr.resize(Mesh.ARRAY_MAX) + + #var parentShart = Node3D.new() + #for i in range(meshData.verts.vertices.size()): + #var point = meshData.verts.vertices[i] + #var shit = Label3D.new() + #shit.position = point + #shit.text = "HELECOPTER" + #parentShart.add_child(shit) + #return parentShart + + arr[Mesh.ARRAY_VERTEX]=meshData.verts.vertices + arr[Mesh.ARRAY_TEX_UV]=meshData.verts.uv + arr[Mesh.ARRAY_INDEX]=meshData.surfaces.triangles + + var meshInstance = MeshInstance3D.new() + arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arr) + meshInstance.mesh = arr_mesh + var mat = StandardMaterial3D.new() + mat.albedo_color = Color(randi() % 255 / 255.0, randi() % 255 / 255.0, randi() % 255 / 255.0) + #mat.albedo_texture = activeAlbedo + #mat.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA_DEPTH_PRE_PASS if activeAlbedoHasAlpha else BaseMaterial3D.TRANSPARENCY_DISABLED + meshInstance.set_surface_override_material(0, mat) + meshInstance.create_trimesh_collision() + + return meshInstance + static func ReadNode(reader:BufferStuffReader): var node = B3DNode.new() node.name = reader.readCString() @@ -95,6 +132,7 @@ static func ReadNode(reader:BufferStuffReader): node.rotation = reader.readQuaternion().get_euler() var chunks = ReadChunks(reader) + print(chunks) for chunk in chunks: var chunkReader = BufferStuffReader.create(chunk.bytes) if chunk.name == "NODE": @@ -103,6 +141,8 @@ static func ReadNode(reader:BufferStuffReader): node.bone = ReadBone(chunkReader) elif chunk.name == "MESH": node.mesh = ReadMesh(chunkReader) + node.add_child(CreateMesh(node.mesh)) + return node