From c2afe78d7f60ab16ee83c3070b724c6066b420c6 Mon Sep 17 00:00:00 2001 From: Holly Date: Tue, 11 Feb 2025 08:06:09 +0000 Subject: [PATCH] stuffs --- scenes/world/DynamicMap.tscn | 8 +++++++- scenes/world/Player.tscn | 25 ++++++++++--------------- src/DynamicMap.gd | 23 ++++++++++------------- src/Global.gd | 1 + src/Player.gd | 13 ++++++++----- src/file_parsers/B3D.gd | 9 +++++++-- src/file_parsers/RMesh.gd | 24 ++++++++++++------------ 7 files changed, 55 insertions(+), 48 deletions(-) diff --git a/scenes/world/DynamicMap.tscn b/scenes/world/DynamicMap.tscn index 7f1b2ea..9fc0268 100644 --- a/scenes/world/DynamicMap.tscn +++ b/scenes/world/DynamicMap.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=6 format=3 uid="uid://bw0tk6ml7gayq"] +[gd_scene load_steps=7 format=3 uid="uid://bw0tk6ml7gayq"] [ext_resource type="Script" path="res://src/DynamicMap.gd" id="1_mytgt"] [ext_resource type="Script" path="res://src/TempDebugCamera.gd" id="2_co6fy"] +[ext_resource type="PackedScene" uid="uid://dm33ofcbh8sht" path="res://scenes/world/Player.tscn" id="3_58gow"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_tvhkv"] sky_top_color = Color(0.483795, 0.593484, 0.746094, 1) @@ -22,8 +23,10 @@ script = ExtResource("1_mytgt") environment = SubResource("Environment_d5g72") [node name="CameraPivot" type="Node3D" parent="."] +visible = false [node name="Camera3D" type="Camera3D" parent="CameraPivot"] +fov = 74.0 script = ExtResource("2_co6fy") [node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] @@ -35,3 +38,6 @@ use_collision = true size = Vector3(15.4238, 0.866943, 15.2599) [node name="Label3D" type="Label3D" parent="."] + +[node name="Player" parent="." instance=ExtResource("3_58gow")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.74637, 0) diff --git a/scenes/world/Player.tscn b/scenes/world/Player.tscn index df7f0d5..33d374d 100644 --- a/scenes/world/Player.tscn +++ b/scenes/world/Player.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=3 uid="uid://dm33ofcbh8sht"] +[gd_scene load_steps=9 format=3 uid="uid://dm33ofcbh8sht"] [ext_resource type="Script" path="res://src/Player.gd" id="1_n772d"] [ext_resource type="Texture2D" uid="uid://rfpsi4xnxdu" path="res://GFX/BlinkIcon.png" id="2_kjp08"] @@ -7,10 +7,9 @@ [ext_resource type="Texture2D" uid="uid://c5p7utpptgtww" path="res://GFX/BlinkMeter.jpg" id="5_iwhsa"] [ext_resource type="Texture2D" uid="uid://den5phi138pyh" path="res://GFX/StaminaMeter.jpg" id="6_g44nt"] -[sub_resource type="CylinderShape3D" id="CylinderShape3D_bsew3"] - -[sub_resource type="BoxMesh" id="BoxMesh_vju81"] -size = Vector3(1, 2, 1) +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_w1ang"] +radius = 0.15 +height = 0.3 [sub_resource type="SeparationRayShape3D" id="SeparationRayShape3D_u64q7"] length = 0.5 @@ -19,20 +18,16 @@ length = 0.5 script = ExtResource("1_n772d") [node name="Head" type="Node3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.75, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.65, 0) [node name="Camera" type="Camera3D" parent="Head"] [node name="Collision" type="CollisionShape3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) -shape = SubResource("CylinderShape3D_bsew3") - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Collision"] -visible = false -mesh = SubResource("BoxMesh_vju81") +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.15, 0) +shape = SubResource("CapsuleShape3D_w1ang") [node name="SepRay1" type="CollisionShape3D" parent="."] -transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0.5, -0.55) +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0.5, -0.155) shape = SubResource("SeparationRayShape3D_u64q7") [node name="RayCast3D" type="RayCast3D" parent="SepRay1"] @@ -41,7 +36,7 @@ enabled = false target_position = Vector3(0, -0.55, 0) [node name="SepRay2" type="CollisionShape3D" parent="."] -transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0.5, -0.55) +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0.5, -0.155) shape = SubResource("SeparationRayShape3D_u64q7") [node name="RayCast3D" type="RayCast3D" parent="SepRay2"] @@ -50,7 +45,7 @@ enabled = false target_position = Vector3(0, -0.55, 0) [node name="SepRay3" type="CollisionShape3D" parent="."] -transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0.5, -0.55) +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0.5, -0.155) shape = SubResource("SeparationRayShape3D_u64q7") [node name="RayCast3D" type="RayCast3D" parent="SepRay3"] diff --git a/src/DynamicMap.gd b/src/DynamicMap.gd index 7a3fecb..e1452fc 100644 --- a/src/DynamicMap.gd +++ b/src/DynamicMap.gd @@ -3,14 +3,14 @@ extends Node3D func _ready() -> void: #add_child(RMesh.LoadRMesh("GFX\\map\\gatea_opt.rmesh", RoomTemplate.new())) #B3D.Load("GFX\\npcs\\106_2.b3d") - #add_child(B3D.Load("GFX\\apache.b3d")) + add_child(B3D.Load("GFX\\apache.b3d")) #RMesh.LoadRMesh(self, roomInfo["mesh path"]) #CreateMap() IntroEnabled = true - LoadRoomTemplates("Data\\rooms.ini") - CreateMap() + #LoadRoomTemplates("Data\\rooms.ini") + #CreateMap() var IntroEnabled: bool var I_Zone: MapZones = MapZones.new() @@ -830,19 +830,16 @@ func CreateMap(): #Text x * 32 +2, (y) * 32 + 2,MapTemp(x, y) +" "+ MapName(x,y) #End If #Next - #Next + #Next # #Flip - #Until KeyHit(28) + #Until KeyHit(28) #EndIf - # - # - #For y = 0 To MapHeight - #For x = 0 To MapWidth - #MapTemp(x, y) = Min(MapTemp(x, y),1) - #Next - #Next - # + + for y1 in range(MapHeight): + for x1 in range(MapWidth): + MapTemp[x1][y1] = min(MapTemp[x1][y1], 1) + #Local d.Doors #Local shouldSpawnDoor% #For y = MapHeight To 0 Step -1 diff --git a/src/Global.gd b/src/Global.gd index c4b04e4..45b0867 100644 --- a/src/Global.gd +++ b/src/Global.gd @@ -9,6 +9,7 @@ var audioCache: Dictionary var videoToPlay: String var clickSound: AudioStreamPlayer var music: AudioStreamPlayer +var player: Player var FPSfactor: float diff --git a/src/Player.gd b/src/Player.gd index 3e30927..d9d3bb0 100644 --- a/src/Player.gd +++ b/src/Player.gd @@ -1,4 +1,5 @@ extends CharacterBody3D +class_name Player var head: Node3D var camera: Camera3D @@ -11,6 +12,7 @@ var sprintBar: Control var Hud: Control func _ready() -> void: + Global.player = self head = $Head camera = $Head/Camera floorRay = $FloorRay @@ -317,8 +319,8 @@ func _process(delta: float) -> void: #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 * 500) * Global.FPSfactor - var movementZ = (direction.z * CurrSpeed * 500) * 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 @@ -327,9 +329,10 @@ func _process(delta: float) -> void: var cameraBob = (Global.Sin(Shake) / (20.0 + CrouchState * 20.0)) * 0.6 camera.rotation.x = deg_to_rad(Rotation.x) - camera.rotation.z = deg_to_rad(cameraRoll) + camera.rotation.z = deg_to_rad(cameraRoll * 0.5) camera.position.y = cameraBob - head.position.y = 1.15 + 0.6 * (1 - CrouchState) + #head.position.y = 1.15 + 0.6 * (1 - CrouchState) + head.position.y = cameraBob + 0.9 + CrouchState * -0.3 head.rotation.y = deg_to_rad(Rotation.y) var CollidedFloor = false @@ -407,7 +410,7 @@ func rotateStepSepRay(): $SepRay1/RayCast3D.force_raycast_update() $SepRay2/RayCast3D.force_raycast_update() $SepRay3/RayCast3D.force_raycast_update() - var maxSlopeAngleDot = RAY_MOVE_VEC.rotated(RAY_MAX_SLOPE_ROT, floor_max_angle / 4).dot(RAY_MOVE_VEC) + var maxSlopeAngleDot = RAY_MOVE_VEC.rotated(RAY_MAX_SLOPE_ROT, floor_max_angle / 1.25).dot(RAY_MOVE_VEC) var isTooSteep = false if $SepRay1/RayCast3D.is_colliding() and $SepRay1/RayCast3D.get_collision_normal().dot(RAY_MOVE_VEC) < maxSlopeAngleDot: isTooSteep = true diff --git a/src/file_parsers/B3D.gd b/src/file_parsers/B3D.gd index 7340be6..aa473cf 100644 --- a/src/file_parsers/B3D.gd +++ b/src/file_parsers/B3D.gd @@ -83,6 +83,8 @@ static func ReadMesh(reader:BufferStuffReader): meshChunk.verts = ReadVRTS(reader) elif chunk.name == "TRIS": meshChunk.surfaces = ReadTRIS(reader) + + return meshChunk static func ReadNode(reader:BufferStuffReader): var node = B3DNode.new() @@ -104,6 +106,9 @@ static func ReadNode(reader:BufferStuffReader): return node +static func ReadBrush(reader:BufferStuffReader): + pass + static func Load(filePath: String): var correctedPath = filePath.replace("\\", "/") @@ -126,11 +131,11 @@ static func Load(filePath: String): if chunk.name == "TEXS": ReadTextures(chunkReader, parsedResult) elif chunk.name == "BRUS": - continue + ReadBrush(chunkReader) elif chunk.name == "NODE": resultScene.add_child(ReadNode(chunkReader)) - print(parsedResult.textures[0].name) + print(resultScene) return resultScene else: print(str("Unknown b3d version. ", version)) diff --git a/src/file_parsers/RMesh.gd b/src/file_parsers/RMesh.gd index 253fe6e..b28a6cb 100644 --- a/src/file_parsers/RMesh.gd +++ b/src/file_parsers/RMesh.gd @@ -445,10 +445,10 @@ static func LoadRMesh(file: String, rt: RoomTemplate): var range = reader.readFloat() / 2000.0 var lcolor = ReadString(reader).split(" ") var intensity = min(reader.readFloat() * 0.8, 1.0) - #r%=Int(Piece(lcolor,1," "))*intensity - #g%=Int(Piece(lcolor,2," "))*intensity - #b%=Int(Piece(lcolor,3," "))*intensity - # + var r = int(lcolor[0]) / 255 * intensity + var g = int(lcolor[1]) / 255 * intensity + var b = int(lcolor[2]) / 255 * intensity + #Local lt.LightTemplates = AddTempLight(rt, temp1,temp2,temp3, 2, range, r,g,b) var angles = ReadString(reader) #pitch#=Piece(angles,1," ") @@ -496,14 +496,14 @@ static func LoadRMesh(file: String, rt: RoomTemplate): temp1 = -reader.readFloat() temp2 = reader.readFloat() temp3 = reader.readFloat() - var angles = ReadString(reader) - #pitch = Piece(angles,1," ") - #yaw#=Piece(angles,2," ") - #roll#=Piece(angles,3," ") - #If cam Then - #PositionEntity cam,temp1,temp2,temp3 - #RotateEntity cam,pitch,yaw,roll - #EndIf + var angles = ReadString(reader).split(" ") + if Global.player and is_instance_valid(Global.player): + Global.player.position.x = temp1 + Global.player.position.y = temp2 + Global.player.position.z = temp3 + Global.player.camera.rotation.x = deg_to_rad(angles[0].to_float()) + Global.player.head.rotation.y = deg_to_rad(angles[1].to_float()) + Global.player.camera.rotation.z = deg_to_rad(angles[2].to_float()) elif temp1s == "model": var modelPath = ReadString(reader) if modelPath != "":