Whatever lol

This commit is contained in:
2026-01-07 21:08:05 -06:00
parent 5805ac2260
commit fff088a0a7
72 changed files with 526 additions and 167 deletions

View File

@@ -0,0 +1,18 @@
class_name Entity extends CharacterBody3D
enum MovementType {
NONE,
DISABLED,
PLAYER
}
enum InteractType {
NONE,
};
# Movement settings
@export var movementType:MovementType = MovementType.NONE
# Interaction settings
@export var interactType:InteractType = InteractType.NONE

View File

@@ -0,0 +1 @@
uid://c8146flooxeue

View File

@@ -0,0 +1,70 @@
[gd_scene load_steps=12 format=3 uid="uid://by4a0r2hp0w6s"]
[ext_resource type="Script" uid="uid://c8146flooxeue" path="res://overworld/entity/Entity.gd" id="1_8e8ef"]
[ext_resource type="Script" uid="uid://cj122th32iabx" path="res://overworld/entity/EntityMovement.gd" id="2_sfgsm"]
[ext_resource type="Script" uid="uid://8is1soq6i282" path="res://overworld/entity/EntityInteractingArea.gd" id="3_bhm0o"]
[ext_resource type="Script" uid="uid://cr03t63s321wp" path="res://overworld/entity/EntityInteractableArea.gd" id="4_e1jqj"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_8e8ef"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_sfgsm"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8e8ef"]
shading_mode = 0
albedo_color = Color(0.521569, 1, 1, 1)
[sub_resource type="BoxMesh" id="BoxMesh_8e8ef"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_sfgsm"]
shading_mode = 0
albedo_color = Color(1, 0.518134, 0.620745, 1)
[sub_resource type="BoxShape3D" id="BoxShape3D_sfgsm"]
size = Vector3(0.689728, 0.52002, 0.796997)
[sub_resource type="BoxShape3D" id="BoxShape3D_bhm0o"]
size = Vector3(1.3, 1.3, 1.3)
[node name="Entity" type="CharacterBody3D"]
script = ExtResource("1_8e8ef")
metadata/_custom_type_script = "uid://c8146flooxeue"
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("CapsuleShape3D_8e8ef")
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
mesh = SubResource("CapsuleMesh_sfgsm")
surface_material_override/0 = SubResource("StandardMaterial3D_8e8ef")
[node name="Nose" type="Node3D" parent="."]
transform = Transform3D(0.393905, 0, 0, 0, 0.393905, 0, 0, 0, 0.393905, 0.571181, 0.340915, 0)
[node name="MeshInstance3D" type="MeshInstance3D" parent="Nose"]
mesh = SubResource("BoxMesh_8e8ef")
surface_material_override/0 = SubResource("StandardMaterial3D_sfgsm")
[node name="Components" type="Node" parent="."]
[node name="Movement" type="Node" parent="Components" node_paths=PackedStringArray("entity", "interactingArea")]
script = ExtResource("2_sfgsm")
entity = NodePath("../..")
interactingArea = NodePath("../../EntityInteractingArea")
[node name="EntityInteractingArea" type="Area3D" parent="." node_paths=PackedStringArray("entity")]
collision_layer = 0
collision_mask = 2
script = ExtResource("3_bhm0o")
entity = NodePath("..")
[node name="CollisionShape3D" type="CollisionShape3D" parent="EntityInteractingArea"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.604726, 0, 0)
shape = SubResource("BoxShape3D_sfgsm")
[node name="EntityInteractableArea" type="Area3D" parent="." node_paths=PackedStringArray("entity")]
collision_layer = 2
collision_mask = 0
script = ExtResource("4_e1jqj")
entity = NodePath("..")
[node name="CollisionShape3D" type="CollisionShape3D" parent="EntityInteractableArea"]
shape = SubResource("BoxShape3D_bhm0o")

View File

@@ -0,0 +1,16 @@
class_name EntityInteractableArea extends Area3D
const Entity = preload("res://overworld/entity/Entity.gd")
@export var entity:Entity
func isInteractable() -> bool:
return entity && entity.interactType != Entity.InteractType.NONE
func onInteract() -> void:
if !isInteractable():
return
if entity.interactType == Entity.InteractType.NONE:
return
print("Entity Interacted")

View File

@@ -0,0 +1 @@
uid://cr03t63s321wp

View File

@@ -0,0 +1,33 @@
class_name EntityInteractingArea extends Area3D
const Entity = preload("res://overworld/entity/Entity.gd")
var interactableAreas:Array[EntityInteractableArea] = []
@export var entity:Entity
func hasInteraction() -> bool:
return true
func interact() -> void:
for area in interactableAreas:
area.onInteract()
func _enter_tree() -> void:
self.area_entered.connect(_onAreaEntered)
self.area_exited.connect(_onAreaExited)
func _exit_tree() -> void:
self.area_entered.disconnect(_onAreaEntered)
self.area_exited.disconnect(_onAreaExited)
func _onAreaEntered(area:Area3D) -> void:
if area is EntityInteractableArea:
if area.entity == entity:
return
if !area.isInteractable():
return
print("EntityInteractingArea: Area Entered")
interactableAreas.append(area)
func _onAreaExited(area:Area3D) -> void:
print("EntityInteractingArea: Area Exited")
interactableAreas.erase(area)

View File

@@ -0,0 +1 @@
uid://8is1soq6i282

View File

@@ -0,0 +1,80 @@
class_name EntityMovement extends Node
const FRICTION = 0.01
const WALK_SPEED_DEFAULT = 8
const RUN_SPEED_DEFAULT = 12
# var _inputDir:Vector2 = Vector2.ZERO
# var _running:bool = false
@export var entity:Entity
@export var interactingArea:EntityInteractingArea
# @export var rotate:Node3D
@export var walkSpeed:float = WALK_SPEED_DEFAULT
# @export var runSpeed:float = RUN_SPEED_DEFAULT
#
# Private Methods
#
func _applyGravity() -> void:
if !entity.is_on_floor():
entity.velocity += PHYSICS.GRAVITY * get_process_delta_time()
func _applyPlayerMovement(_delta:float):
if Input.is_action_just_pressed("interact") && interactingArea && interactingArea.hasInteraction():
interactingArea.interact()
return
var inputDir:Vector2 = Input.get_vector("move_left", "move_right", "move_back", "move_forward").normalized()
var cameraCurrent = get_viewport().get_camera_3d()
if !cameraCurrent:
return
# Use camera orientation for movement direction
var camBasis = cameraCurrent.global_transform.basis
# Forward and right vectors, ignore vertical component
var forward = -camBasis.z
forward.y = 0
forward = forward.normalized()
var right = camBasis.x
right.y = 0
right = right.normalized()
var directionAdjusted = (forward * inputDir.y + right * inputDir.x).normalized()
if directionAdjusted.length() <= 0.01:
return
var speed = walkSpeed
entity.velocity.x = directionAdjusted.x * speed
entity.velocity.z = directionAdjusted.z * speed
func _applyMovement(delta:float) -> void:
if !_canMove():
return
if entity.movementType == Entity.MovementType.PLAYER:
_applyPlayerMovement(delta)
func _applyFriction(delta:float) -> void:
entity.velocity.x *= delta * FRICTION
entity.velocity.z *= delta * FRICTION
func _canMove() -> bool:
return true
#
# Callbacks
#
func _enter_tree() -> void:
pass
func _physics_process(delta:float) -> void:
# Entity required to move
if !entity || entity.movementType == Entity.MovementType.DISABLED || !entity.visible:
return
_applyGravity()
_applyFriction(delta)
_applyMovement(delta)
entity.move_and_slide()

View File

@@ -0,0 +1 @@
uid://cj122th32iabx

1
overworld/map/TestMap.gd Normal file
View File

@@ -0,0 +1 @@
extends Node3D

View File

@@ -0,0 +1 @@
uid://xe6pcuq741xi

View File

@@ -0,0 +1,20 @@
[gd_scene load_steps=4 format=3 uid="uid://d0ywgijpuqy0r"]
[ext_resource type="Script" uid="uid://xe6pcuq741xi" path="res://overworld/map/TestMap.gd" id="1_6ms5s"]
[ext_resource type="PackedScene" uid="uid://cluuhtfjeodwb" path="res://overworld/map/TestMapBase.tscn" id="1_ox0si"]
[ext_resource type="PackedScene" uid="uid://by4a0r2hp0w6s" path="res://overworld/entity/Entity.tscn" id="2_jmygs"]
[node name="TestMap" type="Node3D"]
script = ExtResource("1_6ms5s")
[node name="NotPlayer" parent="." instance=ExtResource("2_jmygs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00883961, 1.11219, 0.0142021)
[node name="TestMapBase" parent="." instance=ExtResource("1_ox0si")]
[node name="Player" parent="." instance=ExtResource("2_jmygs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.1915, 1.05, 0.125589)
movementType = 2
[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(-0.0384888, -0.605488, 0.794923, -0.0292824, 0.795854, 0.60478, -0.99883, 0, -0.0483617, 5.96324, 4.42257, 0)

View File

@@ -0,0 +1,25 @@
[gd_scene load_steps=5 format=3 uid="uid://cluuhtfjeodwb"]
[ext_resource type="Texture2D" uid="uid://cu1hvpqmqn31n" path="res://icon.svg" id="1_x4ibw"]
[sub_resource type="PlaneMesh" id="PlaneMesh_owt5q"]
size = Vector2(200, 200)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_52cv7"]
shading_mode = 0
albedo_texture = ExtResource("1_x4ibw")
[sub_resource type="BoxShape3D" id="BoxShape3D_x4ibw"]
size = Vector3(200, 0.1, 200)
[node name="TestMapBase" type="Node3D"]
[node name="Ground" type="StaticBody3D" parent="."]
[node name="MeshInstance3D" type="MeshInstance3D" parent="Ground"]
mesh = SubResource("PlaneMesh_owt5q")
skeleton = NodePath("../..")
surface_material_override/0 = SubResource("StandardMaterial3D_52cv7")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Ground"]
shape = SubResource("BoxShape3D_x4ibw")