4 Commits

Author SHA1 Message Date
7f7f9d6ae3 add wagons 2026-05-29 18:16:16 +02:00
05b01f70cc create main_scene 2026-05-26 09:34:08 +02:00
b059a2ef1d put constant for generation as parameters 2026-05-25 23:12:57 +02:00
d823cf4554 fix asset errors 2026-05-24 17:19:37 +02:00
76 changed files with 852 additions and 32235 deletions

View File

@@ -2,7 +2,7 @@ extends CharacterBody3D
class_name AIBase
@export_group("Settings")
@export_group("Movement")
@export var speed: float = 4.0
var _enable_state_machine: bool = true
@export var enable_state_machine: bool:
@@ -11,7 +11,10 @@ var _enable_state_machine: bool = true
toggle_enable_state_machine()
get:
return _enable_state_machine
@export var anim_player: AnimationPlayer
@onready var patrol_radius_shape: CollisionShape3D = $%PatrolRadiusShape
@onready var nav_agent: NavigationAgent3D = $%NavigationAgent3D
@onready var state_machine: StateMachine = $%StateMachine
@export_group("Entities")
enum EntityType { HUMANOID, ANIMAL }
@@ -20,9 +23,6 @@ enum EntityType { HUMANOID, ANIMAL }
@export var allowed_biomes: Array[String] = []
@export_range(0.0, 100.0, 0.1) var spawn_uniqueness: float = 1.0
@onready var patrol_radius_shape: CollisionShape3D = $%PatrolRadiusShape
@onready var nav_agent: NavigationAgent3D = $%NavigationAgent3D
@onready var state_machine: StateMachine = $%StateMachine
func _ready() -> void:
randomize()
@@ -48,11 +48,6 @@ func _physics_process(delta: float) -> void:
velocity.x = direction.x * speed
velocity.z = direction.z * speed
if velocity.length_squared() > 0.1:
var look_dir = Vector3(velocity.x, 0, velocity.z)
var target_transform = global_transform.looking_at(global_position - look_dir, Vector3.UP)
global_transform = global_transform.interpolate_with(target_transform, delta * 10.0)
move_and_slide()
func navigate_to_random_point() -> void:

View File

@@ -2,6 +2,12 @@
[ext_resource type="Script" uid="uid://b30p1yqojbbbk" path="res://core/ai/agents/base/ai_base.gd" id="1_4d1nn"]
[ext_resource type="Script" uid="uid://ps3vlu2qvmop" path="res://core/ai/framework/state_machine.gd" id="2_q1hg3"]
[ext_resource type="Script" uid="uid://nga8qx56iwgu" path="res://core/ai/agents/base/idle_state.gd" id="3_26faq"]
[ext_resource type="Script" uid="uid://bngfthvt04ivv" path="res://core/ai/agents/base/patrol_state.gd" id="4_lim44"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_mh3lg"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_mh3lg"]
[sub_resource type="SphereShape3D" id="SphereShape3D_lim44"]
radius = 20.0
@@ -10,12 +16,27 @@ radius = 20.0
script = ExtResource("1_4d1nn")
entity_name = "Humanoid"
[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=214482161]
mesh = SubResource("CapsuleMesh_mh3lg")
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=92811823]
shape = SubResource("CapsuleShape3D_mh3lg")
[node name="NavigationAgent3D" type="NavigationAgent3D" parent="." unique_id=1370024449]
unique_name_in_owner = true
[node name="StateMachine" type="Node" parent="." unique_id=1286404264]
[node name="StateMachine" type="Node" parent="." unique_id=1286404264 node_paths=PackedStringArray("initial_state")]
unique_name_in_owner = true
script = ExtResource("2_q1hg3")
initial_state = NodePath("IdleState")
[node name="IdleState" type="Node" parent="StateMachine" unique_id=763668255]
script = ExtResource("3_26faq")
state_id = &"idle"
[node name="PatrolState" type="Node" parent="StateMachine" unique_id=2054606629]
script = ExtResource("4_lim44")
state_id = &"patrol"
[node name="PatrolRadiusShape" type="CollisionShape3D" parent="." unique_id=1379515938]
unique_name_in_owner = true

View File

@@ -0,0 +1,26 @@
extends State
const PATROL_STATE_ID: StringName = &"patrol"
@export var wait_time: float = 3.0
var runtime_timer: Timer
func enter() -> void:
runtime_timer = Timer.new()
runtime_timer.name = "IdleTimer"
add_child(runtime_timer)
runtime_timer.one_shot = true
runtime_timer.timeout.connect(_on_timer_timeout)
runtime_timer.start(wait_time)
func exit() -> void:
if runtime_timer:
if runtime_timer.is_connected("timeout", _on_timer_timeout):
runtime_timer.timeout.disconnect(_on_timer_timeout)
runtime_timer.queue_free()
runtime_timer = null
func _on_timer_timeout() -> void:
transitioned.emit(self, PATROL_STATE_ID)

View File

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

View File

@@ -1,10 +1,12 @@
extends State
const IDLE_STATE_ID: StringName = &"idle"
@onready var agent: AIBase = owner
func enter() -> void:
super.enter()
run_animation()
agent.navigate_to_random_point()
func physics_update(_delta) -> void:
if agent.nav_agent.is_navigation_finished():
transitioned.emit(self, next_state_id)
transitioned.emit(self, IDLE_STATE_ID)

View File

@@ -1,40 +0,0 @@
[gd_scene format=3 uid="uid://dd8wn62anbts8"]
[ext_resource type="PackedScene" uid="uid://clx701xdwelgx" path="res://core/ai/agents/base/ai_base.tscn" id="1_p2hpa"]
[ext_resource type="PackedScene" uid="uid://bjp8wbrtfl4v2" path="res://core/ai/agents/cow/cow_mannequin.tscn" id="2_6gadt"]
[ext_resource type="Script" uid="uid://d3hy70ec8vqo5" path="res://core/ai/framework/run_animation_state.gd" id="2_vlvvc"]
[ext_resource type="Script" uid="uid://bngfthvt04ivv" path="res://core/ai/framework/patrol_state.gd" id="3_su7en"]
[sub_resource type="BoxShape3D" id="BoxShape3D_6gadt"]
size = Vector3(1, 1.4033203, 2.201294)
[node name="AiCow" unique_id=1228675528 node_paths=PackedStringArray("anim_player") instance=ExtResource("1_p2hpa")]
anim_player = NodePath("CowMannequin/AnimationPlayer")
[node name="MeshInstance3D" parent="." index="0" unique_id=214482161]
visible = false
[node name="CollisionShape3D" parent="." index="1" unique_id=92811823]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.20166016, 0.24859619)
shape = SubResource("BoxShape3D_6gadt")
[node name="StateMachine" parent="." index="3" unique_id=1286404264 node_paths=PackedStringArray("initial_state")]
initial_state = NodePath("IdleState")
[node name="IdleState" type="Node" parent="StateMachine" index="0" unique_id=2033863310]
script = ExtResource("2_vlvvc")
state_id = &"idle"
next_state_id = &"patrol"
animation_name = "custom/idle"
[node name="PatrolState" type="Node" parent="StateMachine" index="1" unique_id=2076820654]
script = ExtResource("3_su7en")
state_id = &"patrol"
next_state_id = &"idle"
animation_name = "custom/walking"
exit_on_action_finished = true
[node name="CowMannequin" parent="." index="5" unique_id=1390675137 instance=ExtResource("2_6gadt")]
transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, -0.9, 0)
[editable path="CowMannequin"]

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,81 +0,0 @@
[gd_scene format=3 uid="uid://bjp8wbrtfl4v2"]
[ext_resource type="PackedScene" uid="uid://b7d57tyxi41r1" path="res://core/ai/agents/cow/cow.fbx" id="1_60f5q"]
[ext_resource type="Animation" uid="uid://bsuoywknbbnm0" path="res://core/ai/agents/cow/idle.res" id="2_5ukcj"]
[ext_resource type="Animation" uid="uid://ckmybsnuf4stp" path="res://core/ai/agents/cow/walking.res" id="3_0mu5m"]
[sub_resource type="AnimationLibrary" id="AnimationLibrary_lowte"]
_data = {
&"idle": ExtResource("2_5ukcj"),
&"walking": ExtResource("3_0mu5m")
}
[node name="CowMannequin" unique_id=786985233 instance=ExtResource("1_60f5q")]
[node name="Skeleton3D" parent="Armature" parent_id_path=PackedInt32Array(792301245) index="0" unique_id=1950086664]
bones/1/rotation = Quaternion(0.7071068, -6.209646e-07, -6.209645e-07, 0.7071067)
bones/1/scale = Vector3(1, 1, 1)
bones/4/rotation = Quaternion(0.0015316998, -0.0015319793, 0.70710516, 0.70710516)
bones/5/position = Vector3(1.3183898e-16, 0.006025583, -6.675722e-10)
bones/5/rotation = Quaternion(0.703962, -0.69745475, -0.08083715, 0.10705068)
bones/5/scale = Vector3(1, 0.99999976, 1)
bones/6/position = Vector3(-1.403955e-10, 0.009248152, 3.7406075e-11)
bones/6/rotation = Quaternion(0.18324056, -0.018661192, 0.0034790868, 0.98288476)
bones/6/scale = Vector3(1, 1, 1)
bones/8/scale = Vector3(0.99999994, 0.99999994, 1)
bones/9/position = Vector3(-3.8163916e-17, 0.0046958304, 1.907358e-10)
bones/9/rotation = Quaternion(0.6754388, -0.68119305, 0.18401879, -0.21423234)
bones/9/scale = Vector3(1, 0.99999994, 1.0000001)
bones/10/position = Vector3(7.2902e-10, 0.011755081, -3.0995417e-10)
bones/10/rotation = Quaternion(-0.35146433, 0.018116632, 0.0068026204, 0.9360013)
bones/10/scale = Vector3(0.9999999, 1, 1.0000001)
bones/12/rotation = Quaternion(0.707105, 0.70710486, 0.0016303749, -0.0016306548)
bones/12/scale = Vector3(1, 1, 1)
bones/13/position = Vector3(-1.5265567e-16, 0.0060255853, 6.6757205e-10)
bones/13/rotation = Quaternion(-0.057434652, -0.13032891, 0.70625645, 0.69348216)
bones/13/scale = Vector3(0.99999994, 1, 0.9999999)
bones/14/position = Vector3(-4.5945833e-10, 0.009248151, -5.7053273e-09)
bones/14/rotation = Quaternion(0.18302466, 0.051401887, -0.0095829815, 0.9817169)
bones/14/scale = Vector3(1, 1.0000001, 0.99999994)
bones/16/rotation = Quaternion(0.7071062, 0.7071063, 0.0008663558, -0.0008670737)
bones/16/scale = Vector3(1, 1, 1)
bones/17/position = Vector3(1.7347235e-17, 0.0046958304, -1.9073432e-10)
bones/17/rotation = Quaternion(0.1907959, 0.2076444, 0.67355627, 0.6832297)
bones/17/scale = Vector3(1, 1, 1.0000001)
bones/18/position = Vector3(1.834215e-10, 0.011755081, -1.7500804e-09)
bones/18/rotation = Quaternion(-0.35151497, -0.0088962475, -0.003340601, 0.93613404)
bones/18/scale = Vector3(1, 1.0000001, 0.99999994)
bones/20/rotation = Quaternion(0.60080343, -0.03016121, 0.03526711, 0.7980488)
bones/21/position = Vector3(0.00011168665, 0.0039693406, -0.013754063)
bones/21/rotation = Quaternion(0.98885596, 3.1474094e-08, 2.23642e-07, -0.14887528)
bones/21/scale = Vector3(1, 1.0000001, 1.0000001)
bones/22/position = Vector3(-2.5714557e-11, 0.00836347, -9.433328e-09)
bones/22/rotation = Quaternion(-0.6231534, 9.0575064e-08, -7.589477e-08, 0.78209966)
bones/22/scale = Vector3(1, 0.9999999, 0.99999994)
bones/23/position = Vector3(-2.1545942e-12, 0.0072733457, -2.594807e-09)
bones/23/rotation = Quaternion(-1.8223004e-08, 0.98608583, -0.16623694, 2.7314604e-07)
bones/23/scale = Vector3(1, 0.9999997, 0.9999997)
bones/24/position = Vector3(3.3663968e-13, 0.006993335, -2.8376712e-09)
bones/24/rotation = Quaternion(-0.048028953, 2.6759114e-08, 4.5447155e-08, 0.998846)
bones/24/scale = Vector3(1, 0.99999994, 1.0000001)
bones/26/rotation = Quaternion(0.0054439656, 0.86556005, 0.50029516, -0.021930087)
bones/26/scale = Vector3(1, 1.0000002, 1)
bones/27/position = Vector3(1.8971762e-10, 0.013189232, -5.7312505e-10)
bones/27/rotation = Quaternion(0.15129425, -0.018451845, -0.013046658, 0.9882304)
bones/27/scale = Vector3(0.99999994, 0.99999994, 1.0000001)
bones/28/position = Vector3(-2.1601461e-10, 0.013573305, 4.8459786e-10)
bones/28/rotation = Quaternion(-0.6245376, -0.19781438, 0.16660775, 0.7369289)
bones/28/scale = Vector3(1, 0.9999999, 1.0000001)
bones/30/rotation = Quaternion(3.5765906e-06, 0.67050743, 0.7419029, 3.2289404e-06)
bones/31/position = Vector3(-1.2499713e-14, 0.01925819, -1.2902629e-09)
bones/31/rotation = Quaternion(0.086390205, 0.0012038474, -0.013495129, 0.99616927)
bones/31/scale = Vector3(0.9999999, 0.99999994, 1)
bones/33/rotation = Quaternion(0.7071068, -6.209646e-07, -6.209645e-07, 0.7071067)
bones/33/scale = Vector3(1, 1, 1)
bones/35/rotation = Quaternion(0.7071068, -9.581396e-07, -9.581394e-07, 0.7071067)
bones/35/scale = Vector3(1, 1, 1)
bones/37/rotation = Quaternion(0.7071068, -9.581396e-07, -9.581394e-07, 0.7071067)
bones/37/scale = Vector3(1, 1, 1)
[node name="AnimationPlayer" parent="." index="1" unique_id=1401028430]
libraries/custom = SubResource("AnimationLibrary_lowte")

Binary file not shown.

Binary file not shown.

View File

@@ -1,79 +0,0 @@
[gd_scene format=3 uid="uid://cayakdk7gmlyg"]
[ext_resource type="PackedScene" uid="uid://clx701xdwelgx" path="res://core/ai/agents/base/ai_base.tscn" id="1_e5v3h"]
[ext_resource type="PackedScene" uid="uid://dqhueybnlrrqx" path="res://core/ai/agents/horse/horse_mannequin.tscn" id="2_4t6jw"]
[ext_resource type="Script" uid="uid://d3hy70ec8vqo5" path="res://core/ai/framework/run_animation_state.gd" id="2_or6xs"]
[ext_resource type="Script" uid="uid://bngfthvt04ivv" path="res://core/ai/framework/patrol_state.gd" id="3_n63jb"]
[ext_resource type="Animation" uid="uid://doyi6etqvy4n2" path="res://core/ai/agents/horse/idle.res" id="3_qe4rt"]
[ext_resource type="Animation" uid="uid://hotr7r3fd1sq" path="res://core/ai/agents/horse/walking.res" id="4_q8m0v"]
[sub_resource type="BoxShape3D" id="BoxShape3D_4t6jw"]
size = Vector3(1, 1.4991455, 1.7949219)
[sub_resource type="AnimationLibrary" id="AnimationLibrary_or6xs"]
_data = {
&"idle": ExtResource("3_qe4rt"),
&"walking": ExtResource("4_q8m0v")
}
[node name="AiHorse" unique_id=1228675528 node_paths=PackedStringArray("anim_player") instance=ExtResource("1_e5v3h")]
anim_player = NodePath("HorseMannequin/AnimationPlayer")
[node name="MeshInstance3D" parent="." index="0" unique_id=214482161]
visible = false
[node name="CollisionShape3D" parent="." index="1" unique_id=92811823]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.2074585, 0.14794922)
shape = SubResource("BoxShape3D_4t6jw")
[node name="StateMachine" parent="." index="3" unique_id=1286404264 node_paths=PackedStringArray("initial_state")]
initial_state = NodePath("IdleState")
[node name="IdleState" type="Node" parent="StateMachine" index="0" unique_id=734754793]
script = ExtResource("2_or6xs")
state_id = &"idle"
next_state_id = &"patrol"
animation_name = "custom/idle"
[node name="PatrolState" type="Node" parent="StateMachine" index="1" unique_id=1748382252]
script = ExtResource("3_n63jb")
state_id = &"patrol"
next_state_id = &"idle"
animation_name = "custom/walking"
exit_on_action_finished = true
[node name="HorseMannequin" parent="." index="5" unique_id=1289880358 instance=ExtResource("2_4t6jw")]
transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0, -0.9, 0)
[node name="Skeleton3D" parent="HorseMannequin/Armature" parent_id_path=PackedInt32Array(1289880358, 245823720) index="0" unique_id=494955820]
bones/1/rotation = Quaternion(0.7071068, -6.209646e-07, -6.209645e-07, 0.7071067)
bones/4/rotation = Quaternion(0.0012952884, -0.0012955684, 0.7071056, 0.7071057)
bones/5/rotation = Quaternion(0.70685357, -0.70227593, -0.04508998, 0.07164877)
bones/6/rotation = Quaternion(0.13314606, -0.018813655, 0.0025279524, 0.9909147)
bones/8/rotation = Quaternion(0.00078355736, -0.00078427553, 0.70710635, 0.70710635)
bones/9/rotation = Quaternion(0.6711558, -0.6744515, 0.20213859, -0.23195927)
bones/10/rotation = Quaternion(-0.3574636, 0.018072592, 0.006918765, 0.9337266)
bones/12/rotation = Quaternion(0.7071054, 0.7071055, 0.0013743625, -0.0013746425)
bones/13/rotation = Quaternion(-0.02159133, -0.09508795, 0.70796114, 0.69948786)
bones/14/rotation = Quaternion(0.13298893, 0.051821847, -0.0069631753, 0.9897374)
bones/16/rotation = Quaternion(0.7071064, 0.70710653, 0.00066260004, -0.00066331815)
bones/17/rotation = Quaternion(0.20885532, 0.22542001, 0.6690968, 0.6766645)
bones/18/rotation = Quaternion(-0.3575147, -0.008874607, -0.003397635, 0.9338592)
bones/20/rotation = Quaternion(0.6010642, -0.021428203, 0.02848876, 0.79840535)
bones/21/rotation = Quaternion(0.99267024, 2.482745e-08, 2.2239277e-07, -0.12085533)
bones/22/rotation = Quaternion(-0.6165577, 9.507701e-08, -7.2693986e-08, 0.7873097)
bones/23/rotation = Quaternion(-1.5614631e-08, 0.9891947, -0.14660779, 2.7153942e-07)
bones/24/rotation = Quaternion(0.03904001, 3.5621138e-08, 1.47960275e-08, 0.99923766)
bones/26/rotation = Quaternion(0.008421451, 0.95973384, 0.27944198, -0.027427308)
bones/27/rotation = Quaternion(-0.08868468, -0.022488868, -0.01781765, 0.9956465)
bones/28/rotation = Quaternion(-0.62453747, -0.1978144, 0.1666077, 0.736929)
bones/30/rotation = Quaternion(3.4527793e-06, 0.6944211, 0.71956885, 3.3297817e-06)
bones/31/rotation = Quaternion(0.053752482, 0.0007617086, -0.013526975, 0.9984624)
bones/33/rotation = Quaternion(0.7071068, -6.209646e-07, -6.209645e-07, 0.7071067)
bones/35/rotation = Quaternion(0.7071068, -9.581396e-07, -9.581394e-07, 0.7071067)
bones/37/rotation = Quaternion(0.7071068, -9.581396e-07, -9.581394e-07, 0.7071067)
[node name="AnimationPlayer" parent="HorseMannequin" index="1" unique_id=272680130]
libraries/custom = SubResource("AnimationLibrary_or6xs")
[editable path="HorseMannequin"]

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +0,0 @@
[gd_scene format=3 uid="uid://dqhueybnlrrqx"]
[ext_resource type="PackedScene" uid="uid://be1ql8okme4n7" path="res://core/ai/agents/horse/horse.fbx" id="1_fbqil"]
[node name="HorseMannequin" unique_id=1289880358 instance=ExtResource("1_fbqil")]

Binary file not shown.

Binary file not shown.

View File

@@ -1,10 +0,0 @@
[gd_scene format=3 uid="uid://bdqeshcwwnyc4"]
[ext_resource type="PackedScene" uid="uid://mvh2v6v72stt" path="res://core/ai/agents/human/ai_human.tscn" id="1_awhwq"]
[node name="AiCitizen" unique_id=1228675528 instance=ExtResource("1_awhwq")]
[node name="StateMachine" parent="." index="3" unique_id=1286404264 node_paths=PackedStringArray("initial_state")]
initial_state = NodePath("")
[editable path="HumanMannequin"]

View File

@@ -1,53 +0,0 @@
[gd_scene format=3 uid="uid://bbseno7clbepx"]
[ext_resource type="PackedScene" uid="uid://bdqeshcwwnyc4" path="res://core/ai/agents/human/ai_citizen.tscn" id="1_cduuu"]
[node name="AiCitizenSitter" unique_id=1228675528 instance=ExtResource("1_cduuu")]
[node name="SK_Mannequin" parent="HumanMannequin" parent_id_path=PackedInt32Array(333236377) index="0" unique_id=377304892]
transform = Transform3D(0.99906886, 0.025971904, -0.03444738, 0.038254507, -0.16420224, 0.98568463, 0.019943757, -0.98608464, -0.1650429, 0.034450583, -0.44864154, 0.18535595)
[node name="Skeleton3D" parent="HumanMannequin/SK_Mannequin" index="0" unique_id=427572412]
bones/2/rotation = Quaternion(-0.007029906, 0.032859802, -0.23654123, 0.97104025)
bones/3/rotation = Quaternion(-0.000884556, 0.0033522977, 0.10280211, 0.99469584)
bones/4/rotation = Quaternion(-0.00040807336, 0.0034836144, 0.0045103733, 0.9999837)
bones/5/rotation = Quaternion(0.13797933, 0.74176145, 0.017092831, 0.6560942)
bones/6/rotation = Quaternion(0.049281683, 0.43982458, -0.36467218, 0.81923133)
bones/7/rotation = Quaternion(-0.049351897, 0.03842162, -0.476375, 0.87701494)
bones/8/rotation = Quaternion(-0.41694272, -0.05554785, -0.18030654, 0.889136)
bones/9/rotation = Quaternion(0.094457716, 0.050416686, 0.50820345, 0.85455555)
bones/10/rotation = Quaternion(0.011606372, 0.08610083, 0.2719557, 0.95838)
bones/12/rotation = Quaternion(-0.00016985182, 0.0032503307, 0.42722064, 0.90414155)
bones/13/rotation = Quaternion(-0.018024907, 0.015150134, 0.27278355, 0.9617873)
bones/15/rotation = Quaternion(-0.13467012, -0.10029431, 0.2853874, 0.94358844)
bones/16/rotation = Quaternion(0.010311794, -0.034373257, 0.13259757, 0.9905202)
bones/18/rotation = Quaternion(-0.09865642, -0.08747626, 0.37470394, 0.917721)
bones/19/rotation = Quaternion(0.0042531197, -0.033760007, 0.1860149, 0.98195755)
bones/21/rotation = Quaternion(0.70078146, 0.36200625, -0.001720201, 0.61469823)
bones/22/rotation = Quaternion(-0.001820262, 0.12128391, 0.22490783, 0.9668006)
bones/26/rotation = Quaternion(0.76902086, -0.13267346, -0.62528044, -0.005393706)
bones/27/rotation = Quaternion(0.034201004, 0.38763282, -0.48749813, 0.7816117)
bones/28/rotation = Quaternion(-0.053170834, 0.025972798, -0.32202634, 0.9448796)
bones/29/rotation = Quaternion(-0.43919632, 0.049489442, -0.098192796, 0.89163643)
bones/30/rotation = Quaternion(0.103668794, 0.04579189, 0.46590617, 0.8775462)
bones/31/rotation = Quaternion(0.011519267, 0.09922818, 0.29214594, 0.95114243)
bones/33/rotation = Quaternion(9.437185e-05, 0.009016322, 0.44048977, 0.89771235)
bones/34/rotation = Quaternion(-0.018226523, 0.017689873, 0.23132406, 0.97254515)
bones/36/rotation = Quaternion(-0.13272016, -0.101737194, 0.26830983, 0.9487069)
bones/37/rotation = Quaternion(0.010193698, -0.046628788, 0.19672133, 0.97929704)
bones/39/rotation = Quaternion(-0.110196866, -0.05036995, 0.35450295, 0.9271716)
bones/40/rotation = Quaternion(0.0042593707, -0.028552007, 0.17841409, 0.983532)
bones/42/rotation = Quaternion(0.7297342, 0.26573184, -0.09265223, 0.6231294)
bones/43/rotation = Quaternion(0.06426929, 0.22943345, 0.1991351, 0.95056564)
bones/47/rotation = Quaternion(0.00421817, -0.00037953872, -0.21590644, 0.9764049)
bones/49/rotation = Quaternion(0.14012733, -0.038448263, 0.6819175, 0.7168505)
bones/50/rotation = Quaternion(-0.05631607, 0.020481886, -0.74316776, 0.6664162)
bones/52/rotation = Quaternion(-0.0004946971, -0.048858073, -0.0074254284, 0.998778)
bones/55/rotation = Quaternion(0.0132777635, 0.10731075, 0.71409845, -0.6916441)
bones/56/rotation = Quaternion(0.03920827, -0.09832406, -0.75485575, 0.64729285)
bones/58/rotation = Quaternion(0.01656407, -0.06386153, 0.030505493, 0.9973549)
[node name="AnimationPlayer" parent="HumanMannequin" parent_id_path=PackedInt32Array(333236377) index="1" unique_id=233699491]
autoplay = &"custom/sit"
[editable path="HumanMannequin"]

View File

@@ -1,25 +0,0 @@
[gd_scene format=3 uid="uid://bnnuke5e7e1yr"]
[ext_resource type="PackedScene" uid="uid://bdqeshcwwnyc4" path="res://core/ai/agents/human/ai_citizen.tscn" id="1_dms8s"]
[ext_resource type="Script" uid="uid://d3hy70ec8vqo5" path="res://core/ai/framework/run_animation_state.gd" id="2_awhwq"]
[ext_resource type="Script" uid="uid://bngfthvt04ivv" path="res://core/ai/framework/patrol_state.gd" id="3_8d0tj"]
[node name="AiCitizenWalker" unique_id=1228675528 instance=ExtResource("1_dms8s")]
[node name="StateMachine" parent="." index="3" unique_id=1286404264 node_paths=PackedStringArray("initial_state")]
initial_state = NodePath("IdleState")
[node name="IdleState" type="Node" parent="StateMachine" index="0" unique_id=42226979]
script = ExtResource("2_awhwq")
state_id = &"idle"
next_state_id = &"patrol"
animation_name = "custom/idle"
[node name="PatrolState" type="Node" parent="StateMachine" index="1" unique_id=1357892786]
script = ExtResource("3_8d0tj")
state_id = &"patrol"
next_state_id = &"idle"
animation_name = "custom/walking"
exit_on_action_finished = true
[editable path="HumanMannequin"]

View File

@@ -1,26 +0,0 @@
[gd_scene format=3 uid="uid://ceqxsqfiotm5j"]
[ext_resource type="PackedScene" uid="uid://mvh2v6v72stt" path="res://core/ai/agents/human/ai_human.tscn" id="1_l2y7m"]
[ext_resource type="Script" uid="uid://bngfthvt04ivv" path="res://core/ai/framework/patrol_state.gd" id="3_2oda6"]
[ext_resource type="Script" uid="uid://d3hy70ec8vqo5" path="res://core/ai/framework/run_animation_state.gd" id="4_2oda6"]
[node name="AiFarmer" unique_id=1228675528 instance=ExtResource("1_l2y7m")]
[node name="StateMachine" parent="." index="3" unique_id=1286404264 node_paths=PackedStringArray("initial_state")]
initial_state = NodePath("GatherState")
[node name="PatrolState" type="Node" parent="StateMachine" index="0" unique_id=930272128]
script = ExtResource("3_2oda6")
state_id = &"patrol"
next_state_id = &"gather"
animation_name = "custom/walking"
exit_on_action_finished = true
[node name="GatherState" type="Node" parent="StateMachine" index="1" unique_id=48091671]
script = ExtResource("4_2oda6")
state_id = &"gather"
next_state_id = &"patrol"
animation_name = "custom/gather"
exit_on_animation_finished = true
[editable path="HumanMannequin"]

View File

@@ -1,58 +0,0 @@
[gd_scene format=3 uid="uid://mvh2v6v72stt"]
[ext_resource type="PackedScene" uid="uid://clx701xdwelgx" path="res://core/ai/agents/base/ai_base.tscn" id="1_hko2w"]
[ext_resource type="PackedScene" uid="uid://legcajdd0jsy" path="res://core/ai/agents/human/human_mannequin.tscn" id="2_cnrgi"]
[node name="AiHuman" unique_id=1228675528 node_paths=PackedStringArray("anim_player") instance=ExtResource("1_hko2w")]
anim_player = NodePath("HumanMannequin/AnimationPlayer")
[node name="MeshInstance3D" parent="." index="0" unique_id=214482161]
visible = false
[node name="HumanMannequin" parent="." index="5" unique_id=333236377 instance=ExtResource("2_cnrgi")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.9, 0)
[node name="SK_Mannequin" parent="HumanMannequin" index="0" unique_id=377304892]
transform = Transform3D(0.99999994, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0, 0, 0)
[node name="Skeleton3D" parent="HumanMannequin/SK_Mannequin" index="0" unique_id=427572412]
bones/2/rotation = Quaternion(-2.1971985e-24, 0, -0.062388558, 0.99805194)
bones/3/rotation = Quaternion(4.135903e-25, 1.6543612e-24, 0.12241964, 0.99247843)
bones/4/rotation = Quaternion(2.2850868e-23, 0, 0.024252614, 0.9997059)
bones/5/rotation = Quaternion(0.20891805, 0.7294167, 0.12304399, 0.6396598)
bones/6/rotation = Quaternion(0.11299576, 0.33062968, -0.16141911, 0.92296255)
bones/7/rotation = Quaternion(-0.05401651, -0.079182714, -0.26340967, 0.9599103)
bones/8/rotation = Quaternion(-0.61789525, 0.019371983, 0.010653294, 0.7859496)
bones/9/rotation = Quaternion(0.1333045, -0.0031801206, 0.22317973, 0.96561414)
bones/10/rotation = Quaternion(0.012043531, -0.0029058352, 0.10444825, 0.9944532)
bones/12/rotation = Quaternion(0.028522171, -0.05687394, 0.19848494, 0.9780366)
bones/13/rotation = Quaternion(-0.018628873, 0.007972199, 0.10711657, 0.99404)
bones/15/rotation = Quaternion(-0.1295377, -0.18789689, 0.14421311, 0.9628693)
bones/16/rotation = Quaternion(0.010359715, -0.010519396, 0.09774818, 0.9951017)
bones/18/rotation = Quaternion(-0.095480494, -0.116765715, 0.18851167, 0.9704188)
bones/19/rotation = Quaternion(0.00430111, -0.0141675975, 0.11596311, 0.9931432)
bones/21/rotation = Quaternion(0.6303091, 0.37152508, -0.07729015, 0.6772783)
bones/22/rotation = Quaternion(0.0026046867, 0.086798474, 0.13014112, 0.98768544)
bones/26/rotation = Quaternion(0.7294168, -0.20891781, -0.6396598, 0.12304417)
bones/27/rotation = Quaternion(0.11299576, 0.33062968, -0.16141911, 0.92296255)
bones/28/rotation = Quaternion(-0.05401651, -0.079182714, -0.26340967, 0.9599103)
bones/29/rotation = Quaternion(-0.61789525, 0.019371983, 0.010653294, 0.7859496)
bones/30/rotation = Quaternion(0.1333045, -0.0031801206, 0.22317973, 0.96561414)
bones/31/rotation = Quaternion(0.012043531, -0.0029058352, 0.10444825, 0.9944532)
bones/33/rotation = Quaternion(0.028522171, -0.05687394, 0.19848494, 0.9780366)
bones/34/rotation = Quaternion(-0.018628873, 0.007972199, 0.10711657, 0.99404)
bones/36/rotation = Quaternion(-0.1295377, -0.18789689, 0.14421311, 0.9628693)
bones/37/rotation = Quaternion(0.010359715, -0.010519396, 0.09774818, 0.9951017)
bones/39/rotation = Quaternion(-0.095480494, -0.116765715, 0.18851167, 0.9704188)
bones/40/rotation = Quaternion(0.00430111, -0.0141675975, 0.11596311, 0.9931432)
bones/42/rotation = Quaternion(0.6303091, 0.37152508, -0.07729015, 0.6772783)
bones/43/rotation = Quaternion(0.0026047025, 0.08679848, 0.13014114, 0.98768544)
bones/47/rotation = Quaternion(-1.5923227e-23, 0, -0.20371072, 0.97903115)
bones/49/rotation = Quaternion(0.07370486, -0.062138822, -0.008584324, 0.9953053)
bones/50/rotation = Quaternion(-0.048884246, 0.018863896, -0.06552225, 0.99647444)
bones/52/rotation = Quaternion(-0.0058857696, 0.03199128, 0.07035475, 0.9969916)
bones/55/rotation = Quaternion(0.062138822, 0.07370486, 0.9953054, 0.008584333)
bones/56/rotation = Quaternion(-0.048884246, 0.018863896, -0.06552225, 0.99647444)
bones/58/rotation = Quaternion(-0.0058857696, 0.03199128, 0.07035475, 0.9969916)
[editable path="HumanMannequin"]

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,94 +0,0 @@
[gd_scene format=3 uid="uid://legcajdd0jsy"]
[ext_resource type="PackedScene" uid="uid://ys8pesrqeyv2" path="res://core/ai/agents/human/human_mannequin_mixamo.fbx" id="1_561x5"]
[ext_resource type="Animation" uid="uid://c3rjx3uo8mbt3" path="res://core/ai/agents/human/gather.res" id="2_3r4wv"]
[ext_resource type="Animation" uid="uid://b2wo1mpqihko6" path="res://core/ai/agents/human/idle.res" id="2_b4vfe"]
[ext_resource type="Animation" uid="uid://ckkmrph86jlsd" path="res://core/ai/agents/human/walking.res" id="3_jl3mr"]
[ext_resource type="Animation" uid="uid://biaxql3fr1787" path="res://core/ai/agents/human/sit.res" id="4_xaokg"]
[sub_resource type="AnimationLibrary" id="AnimationLibrary_3r4wv"]
_data = {
&"gather": ExtResource("2_3r4wv"),
&"idle": ExtResource("2_b4vfe"),
&"sit": ExtResource("4_xaokg"),
&"walking": ExtResource("3_jl3mr")
}
[node name="HumanMannequin" unique_id=1583776159 instance=ExtResource("1_561x5")]
[node name="SK_Mannequin" parent="." index="0" unique_id=377304892]
transform = Transform3D(0.9990688, 0.025971903, -0.034447376, 0.038254507, -0.16420223, 0.9856846, 0.019943757, -0.9860846, -0.16504289, 0.034450583, -0.44864154, 0.18535595)
[node name="Skeleton3D" parent="SK_Mannequin" index="0" unique_id=427572412]
bones/2/rotation = Quaternion(-0.007029906, 0.032859802, -0.23654123, 0.97104025)
bones/3/rotation = Quaternion(-0.000884556, 0.0033522977, 0.10280211, 0.99469584)
bones/4/position = Vector3(0.13407329, 0.004204774, -5.584202e-15)
bones/4/rotation = Quaternion(-0.00040807336, 0.0034836144, 0.0045103733, 0.9999837)
bones/5/rotation = Quaternion(0.13797933, 0.74176145, 0.017092831, 0.6560942)
bones/6/position = Vector3(0.15784872, 1.4317955e-11, 6.3591354e-11)
bones/6/rotation = Quaternion(0.049281683, 0.43982458, -0.36467218, 0.81923133)
bones/7/position = Vector3(0.3033993, 8.407472e-11, 3.197531e-11)
bones/7/rotation = Quaternion(-0.049351897, 0.03842162, -0.476375, 0.87701494)
bones/8/position = Vector3(0.26975143, 1.572964e-11, -9.6207486e-11)
bones/8/rotation = Quaternion(-0.41694272, -0.05554785, -0.18030654, 0.889136)
bones/9/rotation = Quaternion(0.094457716, 0.050416686, 0.50820345, 0.85455555)
bones/10/position = Vector3(0.04287498, -2.9850333e-10, 5.048406e-11)
bones/10/rotation = Quaternion(0.011606372, 0.08610083, 0.2719557, 0.95838)
bones/11/position = Vector3(0.0339379, 1.1695445e-10, -2.349232e-11)
bones/12/rotation = Quaternion(-0.00016985182, 0.0032503307, 0.42722064, 0.90414155)
bones/13/position = Vector3(0.046403743, -3.648193e-11, 1.830866e-11)
bones/13/rotation = Quaternion(-0.018024907, 0.015150134, 0.27278355, 0.9617873)
bones/14/position = Vector3(0.036488436, -1.9989443e-10, 1.6076356e-11)
bones/15/rotation = Quaternion(-0.13467012, -0.10029431, 0.2853874, 0.94358844)
bones/16/position = Vector3(0.03570981, 1.8669866e-10, 3.9181436e-12)
bones/16/rotation = Quaternion(0.010311794, -0.034373257, 0.13259757, 0.9905202)
bones/17/position = Vector3(0.029856307, -3.005879e-10, -4.0375425e-11)
bones/18/rotation = Quaternion(-0.09865642, -0.08747626, 0.37470394, 0.917721)
bones/19/position = Vector3(0.04430177, 4.6665116e-11, -9.4033115e-12)
bones/19/rotation = Quaternion(0.0042531197, -0.033760007, 0.1860149, 0.98195755)
bones/20/position = Vector3(0.034766525, -1.6786372e-10, 2.768652e-11)
bones/21/rotation = Quaternion(0.70078146, 0.36200625, -0.001720201, 0.61469823)
bones/22/position = Vector3(0.038696717, 5.0118687e-11, 9.9849684e-11)
bones/22/rotation = Quaternion(-0.001820262, 0.12128391, 0.22490783, 0.9668006)
bones/23/position = Vector3(0.040621713, 1.0721979e-11, -5.127232e-12)
bones/24/position = Vector3(0.14, 1.110223e-16, 2.220446e-16)
bones/24/rotation = Quaternion(-2.7755576e-17, -6.938894e-17, -6.938894e-18, 1)
bones/25/position = Vector3(0.005, -2.7755576e-17, 0)
bones/25/rotation = Quaternion(-9.540979e-18, -2.7755576e-17, 9.540979e-18, 1)
bones/26/rotation = Quaternion(0.76902086, -0.13267346, -0.62528044, -0.005393706)
bones/27/rotation = Quaternion(0.034201004, 0.38763282, -0.48749813, 0.7816117)
bones/28/rotation = Quaternion(-0.053170834, 0.025972798, -0.32202634, 0.9448796)
bones/29/position = Vector3(-0.26975244, 2.563412e-07, -1.1905385e-08)
bones/29/rotation = Quaternion(-0.43919632, 0.049489442, -0.098192796, 0.89163643)
bones/30/rotation = Quaternion(0.103668794, 0.04579189, 0.46590617, 0.8775462)
bones/31/rotation = Quaternion(0.011519267, 0.09922818, 0.29214594, 0.95114243)
bones/33/rotation = Quaternion(9.437185e-05, 0.009016322, 0.44048977, 0.89771235)
bones/34/rotation = Quaternion(-0.018226523, 0.017689873, 0.23132406, 0.97254515)
bones/36/rotation = Quaternion(-0.13272016, -0.101737194, 0.26830983, 0.9487069)
bones/37/rotation = Quaternion(0.010193698, -0.046628788, 0.19672133, 0.97929704)
bones/39/rotation = Quaternion(-0.110196866, -0.05036995, 0.35450295, 0.9271716)
bones/40/rotation = Quaternion(0.0042593707, -0.028552007, 0.17841409, 0.983532)
bones/42/rotation = Quaternion(0.7297342, 0.26573184, -0.09265223, 0.6231294)
bones/43/rotation = Quaternion(0.06426929, 0.22943345, 0.1991351, 0.95056564)
bones/45/rotation = Quaternion(-0.1176271, 1.3974802e-16, -6.288661e-17, 0.99305785)
bones/46/rotation = Quaternion(-0.17323487, -2.099698e-25, 1.9374898e-17, 0.9848805)
bones/47/rotation = Quaternion(0.00421817, -0.00037953872, -0.21590644, 0.9764049)
bones/48/position = Vector3(0.092836134, 0.0036415688, 2.7747754e-17)
bones/48/rotation = Quaternion(1.2661336e-17, 9.989056e-18, 0.13354194, 0.99104315)
bones/49/rotation = Quaternion(0.14012733, -0.038448263, 0.6819175, 0.7168505)
bones/50/position = Vector3(-0.42572036, 1.7074263e-12, -4.667877e-12)
bones/50/rotation = Quaternion(-0.05631607, 0.020481886, -0.74316776, 0.6664162)
bones/51/position = Vector3(-0.20476776, -1.3877788e-17, 0)
bones/52/position = Vector3(-0.4019669, -3.933849e-11, 1.899425e-12)
bones/52/rotation = Quaternion(-0.0004946971, -0.048858073, -0.0074254284, 0.998778)
bones/54/position = Vector3(-0.22094238, 4.7704896e-18, 0)
bones/55/rotation = Quaternion(0.0132777635, 0.10731075, 0.71409845, -0.6916441)
bones/56/rotation = Quaternion(0.03920827, -0.09832406, -0.75485575, 0.64729285)
bones/57/position = Vector3(0.20476907, 0, -5.551115e-17)
bones/58/rotation = Quaternion(0.01656407, -0.06386153, 0.030505493, 0.9973549)
bones/60/position = Vector3(0.22094241, 3.035766e-18, -2.7755576e-17)
bones/67/position = Vector3(-4.440892e-16, 0, 7.632783e-17)
bones/67/rotation = Quaternion(-2.8449465e-16, 8.326673e-17, 2.7755576e-17, 1)
[node name="AnimationPlayer" parent="." index="1" unique_id=233699491]
libraries/custom = SubResource("AnimationLibrary_3r4wv")

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@@ -1,86 +0,0 @@
[gd_scene format=3 uid="uid://c2hg6hu2y5srb"]
[ext_resource type="PackedScene" uid="uid://clx701xdwelgx" path="res://core/ai/agents/base/ai_base.tscn" id="1_j8spt"]
[ext_resource type="Script" uid="uid://d3hy70ec8vqo5" path="res://core/ai/framework/run_animation_state.gd" id="2_acc6o"]
[ext_resource type="PackedScene" uid="uid://b0xb7kl4rjd66" path="res://core/ai/agents/pig/pig_mannequin.tscn" id="2_qmc2e"]
[ext_resource type="Script" uid="uid://bngfthvt04ivv" path="res://core/ai/framework/patrol_state.gd" id="3_3n8ak"]
[ext_resource type="Animation" uid="uid://c4ingpw0co8v2" path="res://core/ai/agents/pig/idle.res" id="3_lvpc5"]
[ext_resource type="Animation" uid="uid://0563r715lmw1" path="res://core/ai/agents/pig/walking.res" id="4_3f3hl"]
[sub_resource type="BoxShape3D" id="BoxShape3D_lvpc5"]
size = Vector3(1, 1.4848633, 1.960083)
[sub_resource type="AnimationLibrary" id="AnimationLibrary_lvpc5"]
_data = {
&"idle": ExtResource("3_lvpc5"),
&"walking": ExtResource("4_3f3hl")
}
[node name="AiPig" unique_id=1228675528 node_paths=PackedStringArray("anim_player") instance=ExtResource("1_j8spt")]
anim_player = NodePath("PigMannequin/AnimationPlayer")
[node name="MeshInstance3D" parent="." index="0" unique_id=214482161]
visible = false
[node name="CollisionShape3D" parent="." index="1" unique_id=92811823]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.24243164, 0.10699463)
shape = SubResource("BoxShape3D_lvpc5")
[node name="StateMachine" parent="." index="3" unique_id=1286404264 node_paths=PackedStringArray("initial_state")]
initial_state = NodePath("IdleState")
[node name="IdleState" type="Node" parent="StateMachine" index="0" unique_id=403305255]
script = ExtResource("2_acc6o")
state_id = &"idle"
next_state_id = &"patrol"
animation_name = "custom/idle"
[node name="PatrolState" type="Node" parent="StateMachine" index="1" unique_id=1237150984]
script = ExtResource("3_3n8ak")
state_id = &"patrol"
next_state_id = &"idle"
animation_name = "custom/walking"
exit_on_action_finished = true
[node name="PigMannequin" parent="." index="5" unique_id=926755470 instance=ExtResource("2_qmc2e")]
transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0, -0.9, 0)
[node name="Skeleton3D" parent="PigMannequin/Armature" parent_id_path=PackedInt32Array(926755470, 695496535) index="0" unique_id=725647261]
bones/1/rotation = Quaternion(0.7071068, -7.052583e-07, -7.052583e-07, 0.7071067)
bones/3/position = Vector3(5.37765e-05, 0.017809996, -0.007695386)
bones/3/rotation = Quaternion(-0.027121998, 0, 0, 0.99963224)
bones/4/position = Vector3(-0.004269575, -0.0009057691, 0.018837402)
bones/4/rotation = Quaternion(-0.20850496, 0.20850474, 0.675667, 0.6756669)
bones/5/rotation = Quaternion(0.70767504, -0.7007484, -0.04928623, 0.07562217)
bones/6/rotation = Quaternion(0.5074964, -0.016355418, 0.009635334, 0.86144483)
bones/8/position = Vector3(-0.004269574, 0.0008725248, -0.02819033)
bones/8/rotation = Quaternion(-0.021000031, 0.020999499, 0.7067949, 0.7067949)
bones/9/rotation = Quaternion(0.6762797, -0.7030302, 0.13760945, -0.17163305)
bones/10/rotation = Quaternion(-0.76131815, 0.012544005, 0.014735432, 0.64808965)
bones/12/position = Vector3(0.0036532492, -0.0009057691, 0.018837402)
bones/12/rotation = Quaternion(0.67572093, 0.6757209, -0.20832984, 0.20832963)
bones/13/rotation = Quaternion(-0.025831472, -0.099082425, 0.70891863, 0.6978179)
bones/14/rotation = Quaternion(0.50689334, 0.045050938, -0.026540417, 0.8604216)
bones/16/position = Vector3(0.0036521717, 0.0008013838, -0.028183708)
bones/16/rotation = Quaternion(0.7068031, 0.7068031, -0.020723455, 0.020722982)
bones/17/rotation = Quaternion(0.1443776, 0.16487122, 0.6747477, 0.7047611)
bones/18/rotation = Quaternion(-0.7649948, -0.0061196624, -0.0072699804, 0.64396644)
bones/20/position = Vector3(-0.00042349403, 0.0063493187, -0.030968314)
bones/20/rotation = Quaternion(0.60138106, 0.012805484, 0.0019118772, 0.79885745)
bones/22/position = Vector3(-0.0002038494, 0.0041766805, 0.0044565103)
bones/22/rotation = Quaternion(0.0076635648, 0.7548352, 0.6556045, -0.018651871)
bones/23/rotation = Quaternion(0.065689825, -0.010677165, -0.019551655, 0.99759144)
bones/24/rotation = Quaternion(-0.24106143, -0.2388839, 0.03569213, 0.9399734)
bones/26/position = Vector3(-0.00032282702, 0.010153349, -0.021613695)
bones/26/rotation = Quaternion(3.6196245e-06, 0.6452338, 0.7639852, 3.2175833e-06)
bones/27/rotation = Quaternion(0.0455184, 0.00040800165, -0.025042463, 0.99864954)
bones/29/position = Vector3(-0.01117923, 0.0010000349, -0.03163386)
bones/29/rotation = Quaternion(0.7071068, -6.178108e-07, -6.178107e-07, 0.7071067)
bones/31/rotation = Quaternion(0.7071068, -1.0424332e-06, -1.0424329e-06, 0.7071067)
bones/33/position = Vector3(0.010670463, 0.0010000349, -0.03166372)
bones/33/rotation = Quaternion(0.70755845, -7.1388774e-07, -1.0355643e-06, 0.7066547)
[node name="AnimationPlayer" parent="PigMannequin" index="1" unique_id=904091745]
libraries/custom = SubResource("AnimationLibrary_lvpc5")
[editable path="PigMannequin"]

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +0,0 @@
[gd_scene format=3 uid="uid://b0xb7kl4rjd66"]
[ext_resource type="PackedScene" uid="uid://bi5f24frndw7j" path="res://core/ai/agents/pig/pig.fbx" id="1_ptg6h"]
[node name="PigMannequin" unique_id=926755470 instance=ExtResource("1_ptg6h")]

Binary file not shown.

View File

@@ -1,58 +0,0 @@
[gd_scene format=3 uid="uid://2md4l83fy8kr"]
[ext_resource type="PackedScene" uid="uid://clx701xdwelgx" path="res://core/ai/agents/base/ai_base.tscn" id="1_0bu1i"]
[ext_resource type="Script" uid="uid://d3hy70ec8vqo5" path="res://core/ai/framework/run_animation_state.gd" id="2_iapui"]
[ext_resource type="PackedScene" uid="uid://c16j3umhplew4" path="res://core/ai/agents/pug/pug_mannequin.tscn" id="2_n0mit"]
[ext_resource type="Animation" uid="uid://c8hy2tftqb7su" path="res://core/ai/agents/pug/idle.res" id="3_hv1px"]
[ext_resource type="Script" uid="uid://bngfthvt04ivv" path="res://core/ai/framework/patrol_state.gd" id="3_xc1yq"]
[ext_resource type="Animation" uid="uid://bqrhidcnublea" path="res://core/ai/agents/pug/walking.res" id="4_cjq2y"]
[sub_resource type="AnimationLibrary" id="AnimationLibrary_iapui"]
_data = {
&"idle": ExtResource("3_hv1px"),
&"walking": ExtResource("4_cjq2y")
}
[node name="AiPug" unique_id=1228675528 node_paths=PackedStringArray("anim_player") instance=ExtResource("1_0bu1i")]
anim_player = NodePath("PugMannequin/AnimationPlayer")
[node name="MeshInstance3D" parent="." index="0" unique_id=214482161]
visible = false
[node name="StateMachine" parent="." index="3" unique_id=1286404264 node_paths=PackedStringArray("initial_state")]
initial_state = NodePath("IdleState")
[node name="IdleState" type="Node" parent="StateMachine" index="0" unique_id=1079848975]
script = ExtResource("2_iapui")
state_id = &"idle"
next_state_id = &"patrol"
animation_name = "custom/idle"
[node name="PatrolState" type="Node" parent="StateMachine" index="1" unique_id=1573670396]
script = ExtResource("3_xc1yq")
state_id = &"patrol"
next_state_id = &"idle"
animation_name = "custom/walking"
exit_on_action_finished = true
[node name="PugMannequin" parent="." index="5" unique_id=1732134047 instance=ExtResource("2_n0mit")]
transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0, -0.9, 0)
[node name="Skeleton3D" parent="PugMannequin/Armature" parent_id_path=PackedInt32Array(1732134047, 199608791) index="0" unique_id=33809722]
bones/8/position = Vector3(-0.0054483665, 0.008346455, -0.020266803)
bones/8/rotation = Quaternion(-0.007561639, 0.007561228, 0.70706636, 0.70706636)
bones/9/rotation = Quaternion(0.6665347, -0.6790185, 0.20055033, -0.23333457)
bones/10/rotation = Quaternion(-0.37439552, 0.017943675, 0.007246467, 0.92706716)
bones/14/rotation = Quaternion(0.13296904, 0.051822018, -0.0069621373, 0.9897401)
bones/16/position = Vector3(0.0048320387, 0.008252437, -0.02027757)
bones/16/rotation = Quaternion(0.7070978, 0.7070978, -0.0035577225, 0.0035573125)
bones/17/rotation = Quaternion(0.20727697, 0.22687204, 0.66435784, 0.68131787)
bones/18/rotation = Quaternion(-0.38250104, -0.0087800585, -0.0036350952, 0.9239062)
bones/20/rotation = Quaternion(0.6013276, -0.007656022, 0.017799761, 0.79876757)
bones/24/rotation = Quaternion(-0.45064288, -0.22904137, 0.090387635, 0.858074)
bones/27/rotation = Quaternion(0.05229574, 5.703821e-05, -0.025155801, 0.99831474)
[node name="AnimationPlayer" parent="PugMannequin" index="1" unique_id=1653203922]
libraries/custom = SubResource("AnimationLibrary_iapui")
[editable path="PugMannequin"]

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,29 +0,0 @@
[gd_scene format=3 uid="uid://c16j3umhplew4"]
[ext_resource type="PackedScene" uid="uid://buqmw5lbfom07" path="res://core/ai/agents/pug/pug.fbx" id="1_3c2yk"]
[node name="PugMannequin" unique_id=1732134047 instance=ExtResource("1_3c2yk")]
[node name="Skeleton3D" parent="Armature" parent_id_path=PackedInt32Array(251322627) index="0" unique_id=1067550931]
bones/1/rotation = Quaternion(0.7071068, -8.7384586e-07, -8.7384575e-07, 0.7071067)
bones/3/position = Vector3(5.37765e-05, 0.023020823, -0.0001735416)
bones/4/rotation = Quaternion(0.0013124894, -0.0013127187, 0.7071056, 0.7071056)
bones/5/rotation = Quaternion(0.7071125, -0.70201516, -0.045116592, 0.07163183)
bones/6/rotation = Quaternion(0.13312602, -0.018813718, 0.0025276097, 0.9909174)
bones/8/rotation = Quaternion(0.0006567046, -0.0006571151, 0.7071065, 0.7071065)
bones/9/rotation = Quaternion(0.66675293, -0.67880416, 0.20062506, -0.23327015)
bones/10/rotation = Quaternion(-0.35678986, 0.01807761, 0.006905738, 0.9339843)
bones/12/rotation = Quaternion(0.70710534, 0.70710546, 0.0014091316, -0.0014093613)
bones/13/rotation = Quaternion(-0.021626502, -0.09508007, 0.7082199, 0.6992257)
bones/14/rotation = Quaternion(0.13296904, 0.051822014, -0.0069621364, 0.98974)
bones/16/rotation = Quaternion(0.7071066, 0.7071067, 0.00044525132, -0.00044566192)
bones/17/rotation = Quaternion(0.20738536, 0.2267729, 0.6646832, 0.6810004)
bones/18/rotation = Quaternion(-0.35684106, -0.008877046, -0.003391197, 0.93411684)
bones/20/rotation = Quaternion(0.6013276, -0.007656024, 0.017799761, 0.79876757)
bones/22/rotation = Quaternion(0.0076703057, 0.9327372, 0.3595561, -0.025732514)
bones/23/rotation = Quaternion(-0.089636706, -0.019697238, -0.01825219, 0.99561244)
bones/24/rotation = Quaternion(-0.44343108, -0.23039742, 0.11800072, 0.85811526)
bones/26/rotation = Quaternion(5.170388e-06, 0.6954638, 0.7185612, 5.0026606e-06)
bones/27/rotation = Quaternion(0.052304644, 0.00074447604, -0.01352817, 0.99853927)
bones/29/rotation = Quaternion(0.7071068, -9.581396e-07, -9.581394e-07, 0.7071067)
bones/31/rotation = Quaternion(0.7071068, -1.2110207e-06, -1.2110205e-06, 0.7071067)

Binary file not shown.

View File

@@ -1,54 +0,0 @@
[gd_scene format=3 uid="uid://bs1bdtm7jdtgb"]
[ext_resource type="PackedScene" uid="uid://clx701xdwelgx" path="res://core/ai/agents/base/ai_base.tscn" id="1_smbiq"]
[ext_resource type="PackedScene" uid="uid://58u6viv3qd63" path="res://core/ai/agents/sheep/sheep_mannequin.tscn" id="2_hnenk"]
[ext_resource type="Script" uid="uid://d3hy70ec8vqo5" path="res://core/ai/framework/run_animation_state.gd" id="2_vlyix"]
[ext_resource type="Animation" uid="uid://bjvoxmyf4vdy8" path="res://core/ai/agents/sheep/idle.res" id="3_i3d22"]
[ext_resource type="Script" uid="uid://bngfthvt04ivv" path="res://core/ai/framework/patrol_state.gd" id="3_uqv5v"]
[ext_resource type="Animation" uid="uid://8r05h8e7nmic" path="res://core/ai/agents/sheep/walking.res" id="4_hxh1r"]
[sub_resource type="BoxShape3D" id="BoxShape3D_hnenk"]
size = Vector3(1, 1.4770508, 1.3725281)
[sub_resource type="AnimationLibrary" id="AnimationLibrary_vlyix"]
_data = {
&"idle": ExtResource("3_i3d22"),
&"walking": ExtResource("4_hxh1r")
}
[node name="AiSheep" unique_id=1228675528 node_paths=PackedStringArray("anim_player") instance=ExtResource("1_smbiq")]
anim_player = NodePath("SheepMannequin/AnimationPlayer")
[node name="MeshInstance3D" parent="." index="0" unique_id=214482161]
visible = false
[node name="CollisionShape3D" parent="." index="1" unique_id=92811823]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.23852539, 0.11299133)
shape = SubResource("BoxShape3D_hnenk")
[node name="StateMachine" parent="." index="3" unique_id=1286404264 node_paths=PackedStringArray("initial_state")]
initial_state = NodePath("IdleState")
[node name="IdleState" type="Node" parent="StateMachine" index="0" unique_id=190711451]
script = ExtResource("2_vlyix")
state_id = &"idle"
next_state_id = &"patrol"
animation_name = "custom/idle"
[node name="PatrolState" type="Node" parent="StateMachine" index="1" unique_id=431976868]
script = ExtResource("3_uqv5v")
state_id = &"patrol"
next_state_id = &"idle"
animation_name = "custom/walking"
exit_on_action_finished = true
[node name="SheepMannequin" parent="." index="5" unique_id=1153770042 instance=ExtResource("2_hnenk")]
transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0, -0.9, 0)
[node name="Armature" parent="SheepMannequin" index="0" unique_id=62421163]
transform = Transform3D(100, 0, 0, 0, -4.3711384e-06, 99.99999, 0, -99.99999, -4.3711384e-06, 0, 0, 0)
[node name="AnimationPlayer" parent="SheepMannequin" index="1" unique_id=676833932]
libraries/custom = SubResource("AnimationLibrary_vlyix")
[editable path="SheepMannequin"]

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,29 +0,0 @@
[gd_scene format=3 uid="uid://58u6viv3qd63"]
[ext_resource type="PackedScene" uid="uid://oog8biov508a" path="res://core/ai/agents/sheep/sheep.fbx" id="1_pnkxh"]
[node name="SheepMannequin" unique_id=1153770042 instance=ExtResource("1_pnkxh")]
[node name="Skeleton3D" parent="Armature" parent_id_path=PackedInt32Array(1644576745) index="0" unique_id=811031257]
bones/1/rotation = Quaternion(0.7071068, -7.052583e-07, -7.052583e-07, 0.7071067)
bones/4/rotation = Quaternion(0.0017592248, -0.0017595046, 0.7071046, 0.7071046)
bones/5/rotation = Quaternion(0.706397, -0.7005701, -0.057003256, 0.08339989)
bones/6/rotation = Quaternion(0.17354831, -0.018694565, 0.003295098, 0.98464245)
bones/8/rotation = Quaternion(0.0011415672, -0.0011422854, 0.7071059, 0.7071059)
bones/9/rotation = Quaternion(0.66940695, -0.67618734, 0.20153745, -0.23248184)
bones/10/rotation = Quaternion(-0.38440856, 0.017864142, 0.0074402345, 0.92296034)
bones/12/rotation = Quaternion(0.70710427, 0.7071044, 0.001866237, -0.0018665171)
bones/13/rotation = Quaternion(-0.033540055, -0.106803544, 0.7078988, 0.6973861)
bones/14/rotation = Quaternion(0.17334078, 0.051493812, -0.009075931, 0.9834729)
bones/16/rotation = Quaternion(0.70710605, 0.7071062, 0.0009843343, -0.0009850523)
bones/17/rotation = Quaternion(0.2082713, 0.22595985, 0.6673435, 0.67839366)
bones/18/rotation = Quaternion(-0.384463, -0.008772296, -0.0036537221, 0.92309153)
bones/20/rotation = Quaternion(0.6012591, 0.022893472, -0.005923484, 0.7987042)
bones/22/rotation = Quaternion(0.006586622, 0.9146406, 0.40345904, -0.02469813)
bones/23/rotation = Quaternion(0.07927493, -0.021147288, -0.014362239, 0.996525)
bones/24/rotation = Quaternion(-0.6495659, -0.19198355, 0.17329836, 0.71496445)
bones/26/rotation = Quaternion(3.4527793e-06, 0.6944211, 0.71956885, 3.3297817e-06)
bones/27/rotation = Quaternion(0.0651835, 0.0008379451, -0.017830681, 0.9977136)
bones/29/rotation = Quaternion(0.7071068, -7.052583e-07, -7.052583e-07, 0.7071067)
bones/31/rotation = Quaternion(0.7071068, -1.0424332e-06, -1.0424329e-06, 0.7071067)
bones/33/rotation = Quaternion(0.7071068, -1.0424332e-06, -1.0424329e-06, 0.7071067)

Binary file not shown.

View File

@@ -1,6 +0,0 @@
extends State
func enter() -> void:
super.enter()
run_animation()

View File

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

View File

@@ -3,61 +3,18 @@ extends Node
class_name State
@export var state_id: StringName = &""
@export var next_state_id: StringName
@export var animation_name: String
@export var exit_on_action_finished: bool
@export var exit_on_animation_finished: bool
@export var min_wait_time: float = 3.0
@export var max_wait_time: float = 10
var runtime_timer: Timer
@onready var agent: AIBase = owner
@warning_ignore("unused_signal")
signal transitioned(state: State, new_state_id: StringName)
func _ready() -> void:
if min_wait_time > 0 and !exit_on_action_finished:
runtime_timer = Timer.new()
runtime_timer.name = "IdleTimer"
runtime_timer.one_shot = true
add_child(runtime_timer)
runtime_timer.timeout.connect(_on_timer_timeout)
func enter() -> void:
if exit_on_animation_finished:
if not agent.anim_player.animation_finished.is_connected(_on_animation_finished):
agent.anim_player.animation_finished.connect(_on_animation_finished)
elif min_wait_time > 0 and !exit_on_action_finished:
var wait_time:= randf_range(min_wait_time, max_wait_time)
runtime_timer.start(wait_time)
pass
func exit() -> void:
if exit_on_animation_finished and agent.anim_player.animation_finished.is_connected(_on_animation_finished):
agent.anim_player.animation_finished.disconnect(_on_animation_finished)
if runtime_timer and not runtime_timer.is_stopped():
runtime_timer.stop()
func update(_delta: float) -> void:
pass
func physics_update(_delta: float) -> void:
func update(_delta) -> void:
pass
func run_animation() -> void:
if agent.anim_player and agent.anim_player.has_animation(animation_name):
agent.anim_player.play(animation_name)
func _on_animation_finished(anim_name: StringName) -> void:
if animation_name == anim_name:
if exit_on_action_finished:
return
elif min_wait_time > 0:
var wait_time := randf_range(min_wait_time, max_wait_time)
runtime_timer.start(wait_time)
else:
transitioned.emit(self, next_state_id)
func _on_timer_timeout() -> void:
transitioned.emit(self, next_state_id)
func physics_update(_delta) -> void:
pass

View File

@@ -10,19 +10,6 @@ const ENTITY_SPAWN_ANY: int = 0
const ENTITY_SPAWN_HUMANOID_ONLY: int = 1
const ENTITY_SPAWN_ANIMAL_ONLY: int = 2
const CHUNK_GENERATION_FRAME_BUDGET_USEC: int = 2000 #2 ms/frame to generate chunks
const CHUNK_CLEANUP_FRAME_BUDGET_USEC: int = 1000 #1 ms/frame per cleanup
const LAMPPOST_WIRE_FRAME_BUDGET_USEC: int = 1000 #1 ms/frame per i fili dei lampioni
#(about 4 ms o work for frame)
#Se compaiono chunk troppo lentamente davanti al treno:
#aumentare generazione a 3000 o 4000
#Se ci sono micro-scatti:
#abbassare generazione a 1000 o 1500
#Se i fili appaiono in ritardo:
#aumentare wire a 1500 o 2000
#Se il cleanup causa scatti:
#abbassare cleanup a 500
const MAX_CHUNK_UNIQUENESS: int = 5
const RIVER_SIDE_ORDER: Array[String] = ["north", "est", "south", "west"]
const RIVER_DIRECTIONS: Dictionary = {
@@ -38,6 +25,20 @@ const RIVER_NEIGHBOUR_OFFSETS: Dictionary = {
"west": Vector2i(-1, 0),
}
@export_group("Generation")
@export var chunk_generation_frame_budget_usec: int = 1500 #2 ms/frame to generate chunks
@export var chunk_cleanup_frame_budget_usec: int = 1000 #1 ms/frame per cleanup
@export var lampost_wire_frame_budget_usec: int = 1000 #1 ms/frame per i fili dei lampioni
#(about 4 ms of work for frame)
#Se compaiono chunk troppo lentamente davanti al treno:
#aumentare generazione a 3000 o 4000
#Se ci sono micro-scatti:
#abbassare generazione a 1000 o 1500
#Se i fili appaiono in ritardo:
#aumentare wire a 1500 o 2000
#Se il cleanup causa scatti:
#abbassare cleanup a 500
@export_group("Rails")
@export var rail_path: Path3D #rail path
@export var railway_pool: Resource
@@ -483,7 +484,7 @@ func _queue_has_frame_budget(start_usec: int, budget_usec: int, processed: int)
func _drain_generation_queue() -> void:
var processed: int = 0
var start_usec: int = Time.get_ticks_usec()
while pending_generation_cursor < pending_generation_cells.size() and _queue_has_frame_budget(start_usec, CHUNK_GENERATION_FRAME_BUDGET_USEC, processed):
while pending_generation_cursor < pending_generation_cells.size() and _queue_has_frame_budget(start_usec, chunk_generation_frame_budget_usec, processed):
var grid_pos: Vector2i = pending_generation_cells[pending_generation_cursor]
pending_generation_cursor += 1
if board.has(grid_pos):
@@ -501,7 +502,7 @@ func _drain_generation_queue() -> void:
func _drain_cleanup_queue() -> void:
var processed: int = 0
var start_usec: int = Time.get_ticks_usec()
while pending_cleanup_cursor < pending_cleanup_cells.size() and _queue_has_frame_budget(start_usec, CHUNK_CLEANUP_FRAME_BUDGET_USEC, processed):
while pending_cleanup_cursor < pending_cleanup_cells.size() and _queue_has_frame_budget(start_usec, chunk_cleanup_frame_budget_usec, processed):
var grid_pos: Vector2i = pending_cleanup_cells[pending_cleanup_cursor]
pending_cleanup_cursor += 1
if not board.has(grid_pos):
@@ -529,7 +530,7 @@ func _queue_lamppost_wire_connection(grid_pos: Vector2i) -> void:
func _drain_wire_queue() -> void:
var processed: int = 0
var start_usec: int = Time.get_ticks_usec()
while pending_wire_cursor < pending_wire_cells.size() and _queue_has_frame_budget(start_usec, LAMPPOST_WIRE_FRAME_BUDGET_USEC, processed):
while pending_wire_cursor < pending_wire_cells.size() and _queue_has_frame_budget(start_usec, lampost_wire_frame_budget_usec, processed):
var grid_pos: Vector2i = pending_wire_cells[pending_wire_cursor]
pending_wire_cursor += 1
pending_wire_lookup.erase(grid_pos)

View File

@@ -1,31 +1,60 @@
extends Path3D
@export_group("Train")
##train speed
@export var train_speed: float = 6.0
##if true the train is in motion
@export var is_inmotion: bool = true
##the model for the locomotive
@export var train_model: PackedScene
##array of wagon scenes
@export var wagon_pool: Resource
##if true the number of wagons is random from 1 to wagon_count
@export var wagon_random_number: bool = true
##if wagon_random_number = true is used as max wagons
@export_range(0, 32, 1, "or_greater") var wagon_count: int = 3
##the distance between two wagons
@export var wagon_gap: float = 0.4
##the scale to calculate the distance of the bounds
@export_range(0.1, 2.0, 0.05, "or_greater") var wagon_spacing_scale: float = 0.5
##override spacing using this value
@export var wagon_spacing_override: float = 0.0
##distance of the rail axes
@export var axes_distance: float = 3.0
##discance between rails
@export var rail_distance: float = 1.2
##current camera
@export var cameras: Node3D
##swing of the train during the ran
@export_range(0.0, 1.0) var basic_swing: float = 0.1
@export_group("Rails Bulding")
##distance between sleepers of the rails
@export var sleepers_distance: float = 1.0
##nodel for the sleeper of the rail
@export var sleepers_model: PackedScene
@export_group("Manual Controls")
##max speed
@export var speed_max: float = 15.0
##min speed
@export var speed_min: float = -5.0
##acceleration
@export var manual_acceleration: float = 5.0
@export_group("Train Stops")
##if true the train stop the ran on stops
@export var enable_stops: bool = true
##time of stop
@export var stop_time: float = 4.0
##distance when the train start to brake
@export var brake_distance: float = 15.0
##restart time
@export var restart_time: float = 3.0
##scene for fireworks
@export var fireworks_scene: PackedScene
var fireworks_colors: Array[Color] = [
##array of colors for fireworks
@export var fireworks_colors: Array[Color] = [
Color(1.0, 0.2, 0.2), # Rosso vivo
Color(0.2, 1.0, 0.2), # Verde lime
Color(0.3, 0.5, 1.0), # Blu cielo
@@ -48,9 +77,14 @@ var stop_multiply: float = 1.0
var is_restarting: bool = false
var tween_restart: Tween
var environment_config: EnvironmentConfig
var wagon_instances: Array[Node3D] = []
var wagon_progress_offsets: Array[float] = []
func _ready() -> void:
randomize()
_cache_environment_config()
if curve != null and curve.get_baked_length() > 0:
build_rails()
build_train()
@@ -153,6 +187,8 @@ func _snap_train_to_progress() -> void:
cameras.global_position = center_position
cameras.global_basis = train_instance.global_basis
_snap_wagons_to_progress(total_length)
func build_rails() -> void:
var mat_wood = StandardMaterial3D.new()
mat_wood.albedo_color = Color(0.35, 0.2, 0.1)
@@ -324,6 +360,8 @@ func train_move(delta: float) -> void:
cameras.global_position = center_position
cameras.global_basis = train_instance.global_basis
_snap_wagons_to_progress(total_length)
var real_speed = abs(train_speed * stop_multiply)
var speed_factor = clamp(real_speed / max(speed_max, 0.001), 0.0, 1.0)
var dir_prev = (center_position - back_position).normalized()
@@ -401,6 +439,34 @@ func build_train() -> void:
else:
build_default_train()
var wagons = wagon_count
if wagon_random_number:
wagons = randi_range(1, wagon_count)
build_train_wagons(wagons)
func build_train_wagons(wagon_number: int) -> void:
_clear_train_wagons()
if wagon_number <= 0 or wagon_pool == null or not "available_wagons" in wagon_pool:
return
if wagon_pool.available_wagons.is_empty():
return
for i in range(wagon_number):
var wagon_scene: PackedScene = wagon_pool.available_wagons.pick_random()
if wagon_scene == null:
continue
var wagon: Node3D = wagon_scene.instantiate() as Node3D
if wagon == null:
push_warning("Wagon scene root must be a Node3D.")
continue
add_child(wagon)
wagon_instances.append(wagon)
_update_wagon_progress_offsets()
_snap_wagons_to_progress()
func build_default_train() -> void:
train_instance = Node3D.new()
add_child(train_instance)
@@ -435,3 +501,118 @@ func build_default_train() -> void:
stack.material_override = mat_body
stack.position = Vector3(0, 1.2, 1.0)
train_instance.add_child(stack)
func _clear_train_wagons() -> void:
for wagon in wagon_instances:
if is_instance_valid(wagon):
wagon.queue_free()
wagon_instances.clear()
wagon_progress_offsets.clear()
func _update_wagon_progress_offsets() -> void:
wagon_progress_offsets.clear()
if train_instance == null or wagon_instances.is_empty():
return
var train_length: float = _get_vehicle_length(train_instance)
var previous_length: float = train_length
var accumulated_distance: float = 0.0
for wagon in wagon_instances:
var wagon_length: float = _get_vehicle_length(wagon)
accumulated_distance += _get_wagon_spacing(previous_length, wagon_length)
wagon_progress_offsets.append(accumulated_distance)
previous_length = wagon_length
func _get_wagon_spacing(previous_length: float, wagon_length: float) -> float:
if wagon_spacing_override > 0.0:
return wagon_spacing_override + wagon_gap
var detected_spacing: float = previous_length * 0.5 + wagon_length * 0.5
return detected_spacing * wagon_spacing_scale + wagon_gap
func _snap_wagons_to_progress(total_length: float = 0.0) -> void:
if curve == null or wagon_instances.is_empty():
return
if total_length <= 0.0:
total_length = curve.get_baked_length()
if total_length <= 0.0:
return
var direction: float = 1.0
if train_speed < 0.0:
direction = -1.0
for i in range(wagon_instances.size()):
var wagon: Node3D = wagon_instances[i]
if not is_instance_valid(wagon):
continue
var wagon_offset: float = float(i + 1) * 7.0
if i < wagon_progress_offsets.size():
wagon_offset = wagon_progress_offsets[i]
var wagon_progress: float = train_progress - direction * wagon_offset
_snap_vehicle_to_progress(wagon, wagon_progress, total_length)
func _snap_vehicle_to_progress(vehicle: Node3D, progress: float, total_length: float) -> void:
var vehicle_progress: float = wrapf(progress, 0.0, total_length)
var center_position: Vector3 = to_global(curve.sample_baked(vehicle_progress, true))
var prog_forward: float = wrapf(vehicle_progress + 2.0, 0.0, total_length)
var forward_position: Vector3 = to_global(curve.sample_baked(prog_forward, true))
vehicle.global_position = center_position
if center_position.distance_to(forward_position) > 0.01:
vehicle.look_at(forward_position, Vector3.UP)
vehicle.rotate_y(PI)
func _get_vehicle_length(vehicle: Node3D) -> float:
var bounds: AABB = _get_node_local_bounds(vehicle, vehicle)
if bounds.size == Vector3.ZERO:
return 7.0
return maxf(bounds.size.z, 0.1)
func _get_node_local_bounds(root: Node3D, node: Node) -> AABB:
var result: AABB = AABB()
var has_bounds: bool = false
var mesh_instance := node as MeshInstance3D
if mesh_instance != null and mesh_instance.mesh != null:
var mesh_bounds: AABB = mesh_instance.get_aabb()
var mesh_transform: Transform3D = root.global_transform.affine_inverse() * mesh_instance.global_transform
for corner in _get_aabb_corners(mesh_bounds):
var local_point: Vector3 = mesh_transform * corner
if has_bounds:
result = result.expand(local_point)
else:
result = AABB(local_point, Vector3.ZERO)
has_bounds = true
for child in node.get_children():
var child_bounds: AABB = _get_node_local_bounds(root, child)
if child_bounds.size == Vector3.ZERO:
continue
if has_bounds:
result = result.merge(child_bounds)
else:
result = child_bounds
has_bounds = true
return result
func _get_aabb_corners(bounds: AABB) -> Array[Vector3]:
var start: Vector3 = bounds.position
var end: Vector3 = bounds.end
return [
Vector3(start.x, start.y, start.z),
Vector3(end.x, start.y, start.z),
Vector3(start.x, end.y, start.z),
Vector3(end.x, end.y, start.z),
Vector3(start.x, start.y, end.z),
Vector3(end.x, start.y, end.z),
Vector3(start.x, end.y, end.z),
Vector3(end.x, end.y, end.z),
]

View File

@@ -0,0 +1,6 @@
## Resource that lists the wagon scenes available for train composition.
class_name WagonPool
extends Resource
@export var name: String = "New Wagon Pool"
@export var available_wagons: Array[PackedScene] = []

View File

@@ -0,0 +1,9 @@
[gd_resource type="Resource" script_class="WagonPool" format=3 uid="uid://bjnytgwt8tmf4"]
[ext_resource type="PackedScene" uid="uid://dvk3bytqn3m5s" path="res://tgcc/train/main_train.tscn" id="1_t6q5r"]
[ext_resource type="Script" uid="uid://b6xk0gtn2pwa" path="res://core/biome_generator/wagon_pool.gd" id="2_x6bmc"]
[resource]
script = ExtResource("2_x6bmc")
name = "Wagon Pool"
available_wagons = Array[PackedScene]([ExtResource("1_t6q5r")])

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

View File

@@ -2,16 +2,16 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://buy4x63u237np"
path="res://.godot/imported/main_menu_background.png-a82c66c237b4c84234f36e08895b07ce.ctex"
uid="uid://b1wg4lif82dxp"
path="res://.godot/imported/photo_2025-08-27_17-35-14.jpg-78d5e1b9cf2d920968331a684da2ca42.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://core/main_menu/assets/main_menu_background.png"
dest_files=["res://.godot/imported/main_menu_background.png-a82c66c237b4c84234f36e08895b07ce.ctex"]
source_file="res://core/main_menu/assets/photo_2025-08-27_17-35-14.jpg"
dest_files=["res://.godot/imported/photo_2025-08-27_17-35-14.jpg-78d5e1b9cf2d920968331a684da2ca42.ctex"]
[params]

View File

@@ -2,7 +2,7 @@
[ext_resource type="Script" uid="uid://csqxuftsnv1br" path="res://core/main_menu/main_menu.gd" id="1_g1whv"]
[ext_resource type="PackedScene" uid="uid://cxf8s80ivwj1p" path="res://core/game_menu/option_menu.tscn" id="1_uvy4f"]
[ext_resource type="Texture2D" uid="uid://buy4x63u237np" path="res://core/main_menu/assets/main_menu_background.png" id="2_mloc8"]
[ext_resource type="Texture2D" uid="uid://b1wg4lif82dxp" path="res://core/main_menu/assets/photo_2025-08-27_17-35-14.jpg" id="2_mloc8"]
[ext_resource type="PackedScene" uid="uid://caqf471x0kttc" path="res://core/game_menu/settings_menu.tscn" id="3_26agx"]
[node name="MainMenu" type="Control" unique_id=889720172]

View File

@@ -1,18 +1,10 @@
[gd_scene format=3 uid="uid://dqvrhiqgkd3w1"]
[ext_resource type="PackedScene" uid="uid://bnnuke5e7e1yr" path="res://core/ai/agents/human/ai_citizen_walker.tscn" id="1_a2xtd"]
[ext_resource type="PackedScene" uid="uid://ceqxsqfiotm5j" path="res://core/ai/agents/human/ai_farmer.tscn" id="2_n3ssi"]
[ext_resource type="PackedScene" uid="uid://bbseno7clbepx" path="res://core/ai/agents/human/ai_citizen_sitter.tscn" id="3_fdj8t"]
[ext_resource type="PackedScene" uid="uid://dd8wn62anbts8" path="res://core/ai/agents/cow/ai_cow.tscn" id="4_wr508"]
[ext_resource type="PackedScene" uid="uid://cayakdk7gmlyg" path="res://core/ai/agents/horse/ai_horse.tscn" id="5_7kg15"]
[ext_resource type="PackedScene" uid="uid://c2hg6hu2y5srb" path="res://core/ai/agents/pig/ai_pig.tscn" id="6_hw7u7"]
[ext_resource type="PackedScene" uid="uid://2md4l83fy8kr" path="res://core/ai/agents/pug/ai_pug.tscn" id="7_s6v14"]
[ext_resource type="PackedScene" uid="uid://bs1bdtm7jdtgb" path="res://core/ai/agents/sheep/ai_sheep.tscn" id="8_amn6p"]
[ext_resource type="PackedScene" uid="uid://clx701xdwelgx" path="res://core/ai/agents/base/ai_base.tscn" id="1_a2xtd"]
[sub_resource type="NavigationMesh" id="NavigationMesh_optuv"]
vertices = PackedVector3Array(8.984741, 0.25012434, -0.014038086, 9.234741, 0.25012434, -1.0140381, -18.015259, 0.25012434, -18.014038, 17.984741, 0.25012434, 17.985962, 10.984741, 0.25012434, 1.2359619, 9.234741, 0.25012434, 1.2359619, 10.984741, 0.25012434, -1.0140381, 17.984741, 0.25012434, -18.014038, -18.015259, 0.25012434, 17.985962, 11.234741, 0.25012434, 0.23596191)
polygons = [PackedInt32Array(2, 1, 0), PackedInt32Array(5, 4, 3), PackedInt32Array(7, 6, 1), PackedInt32Array(5, 8, 0), PackedInt32Array(0, 8, 2), PackedInt32Array(5, 3, 8), PackedInt32Array(1, 2, 7), PackedInt32Array(3, 4, 9), PackedInt32Array(6, 7, 9), PackedInt32Array(9, 7, 3)]
border_size = 2.0
vertices = PackedVector3Array(10.984741, 0.25012434, -1.0140381, 11.234741, 0.25012434, 0.23596191, 19.484741, 0.25012434, 0.23596191, 19.484741, 0.25012434, -19.514038, 9.234741, 0.25012434, -1.0140381, -19.515259, 0.25012434, -19.514038, -19.515259, 0.25012434, -0.014038086, 8.984741, 0.25012434, -0.014038086, 10.984741, 0.25012434, 1.2359619, 19.484741, 0.25012434, 19.235962, 9.234741, 0.25012434, 1.2359619, -19.515259, 0.25012434, 19.235962)
polygons = [PackedInt32Array(1, 0, 2), PackedInt32Array(2, 0, 3), PackedInt32Array(6, 5, 4), PackedInt32Array(4, 5, 3), PackedInt32Array(3, 0, 4), PackedInt32Array(4, 7, 6), PackedInt32Array(1, 2, 8), PackedInt32Array(8, 2, 9), PackedInt32Array(6, 10, 11), PackedInt32Array(11, 10, 9), PackedInt32Array(10, 8, 9), PackedInt32Array(6, 7, 10)]
[sub_resource type="PlaneMesh" id="PlaneMesh_optuv"]
@@ -49,6 +41,14 @@ mesh = SubResource("BoxMesh_lmjyn")
[node name="CollisionShape3D" type="CollisionShape3D" parent="NavigationRegion3D/Obstacle/StaticBody3D" unique_id=1663742898]
shape = SubResource("BoxShape3D_lmjyn")
[node name="AIBase" parent="." unique_id=1228675528 instance=ExtResource("1_a2xtd")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.48246834, 0.21202153, 0.11262059)
speed = 5.0
enable_state_machine = true
[node name="Camera3D" type="Camera3D" parent="." unique_id=1148396057]
transform = Transform3D(-2.0613477e-08, 0.8818225, -0.47158146, 3.854569e-08, 0.47158146, 0.8818225, 1, -3.5527137e-15, -4.371139e-08, -18.21907, 28.71355, 0)
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1772424900]
environment = SubResource("Environment_lmjyn")
@@ -92,30 +92,3 @@ Parameters:
- Wait Time: Delay in seconds on the IdleState node.
- Area Radius: Radius of the SphereShape3D used by PatrolRadiusShape."
autowrap_mode = 2
[node name="AiCitizenWalker" parent="." unique_id=1228675528 instance=ExtResource("1_a2xtd")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.690094, 1, -11.367183)
[node name="Camera3D" type="Camera3D" parent="." unique_id=1753000680]
transform = Transform3D(1, 0, 0, 0, 0.42261824, 0.9063078, 0, -0.9063078, 0.42261824, 0, 18.361065, 15.377485)
[node name="AiFarmer" parent="." unique_id=1839077075 instance=ExtResource("2_n3ssi")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.2447205, 0.94226265, 2.9251099)
[node name="AiCitizenSitter" parent="." unique_id=127569260 instance=ExtResource("3_fdj8t")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.074956, 1.3552468, 11.883549)
[node name="AiCow" parent="." unique_id=1021070481 instance=ExtResource("4_wr508")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.4981034, 0.94226265, 15.013644)
[node name="AiHorse" parent="." unique_id=71046494 instance=ExtResource("5_7kg15")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.385908, 0.94226265, 14.142443)
[node name="AiPig" parent="." unique_id=430569938 instance=ExtResource("6_hw7u7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.327689, 0.94226265, 6.6309185)
[node name="AiPug" parent="." unique_id=1284695236 instance=ExtResource("7_s6v14")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.4858246, 0.9422617, 9.294181)
[node name="AiSheep" parent="." unique_id=806542551 instance=ExtResource("8_amn6p")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.740941, 1.1779783, 16.328548)

View File

@@ -23,6 +23,7 @@
[ext_resource type="AudioStream" uid="uid://h5yhjn1x3f4j" path="res://core/daynight/sounds/rain_2.mp3" id="21_wnhyx"]
[ext_resource type="AudioStream" uid="uid://elrjw0smm0cj" path="res://core/daynight/sounds/rain_3.mp3" id="22_53kbn"]
[ext_resource type="Script" uid="uid://cx2tlvxhvatj5" path="res://docs/museums/daynight/control.gd" id="23_27ile"]
[ext_resource type="Script" uid="uid://ccdd52apoh4ir" path="res://docs/museums/daynight/camera_3d.gd" id="24_sw7bt"]
[sub_resource type="FastNoiseLite" id="FastNoiseLite_wjpfq"]
fractal_lacunarity = 1.915
@@ -148,7 +149,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
curve = SubResource("Curve3D_xtogr")
script = ExtResource("6_pypsn")
train_model = ExtResource("6_wjpfq")
cameras = NodePath("../cameras")
cameras = NodePath("../Camera3D")
sleepers_model = ExtResource("8_mb5yv")
fireworks_scene = ExtResource("8_xtogr")
@@ -373,6 +374,10 @@ theme_override_colors/font_color = Color(1, 1, 1, 1)
theme_override_colors/font_outline_color = Color(1, 1, 1, 1)
text = "Weather: Clear"
[node name="Camera3D" type="Camera3D" parent="." unique_id=1305162994]
transform = Transform3D(0.035881948, 0.7570504, -0.65237045, -0.1472942, 0.6496678, 0.7458125, 0.9884417, 0.06932917, 0.13482046, -18.173235, 14.658583, -10.483771)
script = ExtResource("24_sw7bt")
[connection signal="toggled" from="Control/Snow" to="Control" method="_on_snow_toggled"]
[connection signal="toggled" from="Control/Rain" to="Control" method="_on_rain_toggled"]
[connection signal="toggled" from="Control/Wind" to="Control" method="_on_wind_toggled"]

View File

@@ -5,7 +5,6 @@
[ext_resource type="Texture2D" uid="uid://dest0qa7vaid0" path="res://core/daynight/stars_albedo.png" id="3_ncg1s"]
[ext_resource type="Script" uid="uid://brcimd12tx3dm" path="res://core/daynight/edge_detection_compositor.gd" id="4_5uio4"]
[ext_resource type="PackedScene" uid="uid://ujv2f1l4d2ps" path="res://core/biome_generator/biome_generator.tscn" id="5_yeh4a"]
[ext_resource type="Resource" uid="uid://nrm040srfjwo" path="res://core/biome_generator/railway_pool.tres" id="6_awm2r"]
[ext_resource type="Script" uid="uid://wv6kcqkibium" path="res://core/biome_generator/biome.gd" id="6_s3jnv"]
[ext_resource type="PackedScene" uid="uid://crlk31ecl480n" path="res://tgcc/chunk/countryside/scene/chunk_country_corner_03.tscn" id="7_4elh6"]
[ext_resource type="PackedScene" uid="uid://b8blm6bwintf7" path="res://tgcc/chunk/countryside/scene/chunk_country_empty_01.tscn" id="7_xgfli"]
@@ -145,7 +144,7 @@ data = PackedByteArray("//vQZAAOhpd2PgtGR7JsJPfgYSYSJ6387g9rgIGKF+EZgxxoAM4TYIWm
[sub_resource type="Curve3D" id="Curve3D_ndco5"]
closed = true
bake_interval = 150.82
bake_interval = 50.0
_data = {
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 0, 0, 0, -4.372, 0, 140, 0, 0, 0, 0, 0, 0, -20.963, 0, 160, 0, 0, 0, 0, 0, 0, -40.62518, 0, 168.52754, 0, 0, 0, 0, 0, 0, -60, 0, 170, 0, 0, 0, 0, 0, 0, -80, 0, 170, 0, 0, 0, 0, 0, 0, -100, 0, 170, 0, 0, 0, 0, 0, 0, -120.42937, 0, 171.50279, 0, 0, 0, 0, 0, 0, -141.41747, 7.6293945e-06, 180.5982, 0, 0, 0, 0, 0, 0, -155.77005, 7.6293945e-06, 198.35184, 0, 0, 0, 0, 0, 0, -160.14105, 7.6293945e-06, 219.80951, 0, 0, 0, 0, 0, 0, -163.99007, 7.6293945e-06, 239.36005, 0, 0, 0, 0, 0, 0, -175.77509, 7.6293945e-06, 256.16028, 0, 0, 0, 0, 0, 0, -195.62283, 7.6293945e-06, 267.46912, 0, 0, 0, 0, 0, 0, -219.9999, 7.6293945e-06, 270.11758, 0, 0, 0, 0, 0, 0, -240, 0, 270.118, 0, 0, 0, 0, 0, 0, -260, 0, 270.118, 0, 0, 0, 0, 0, 0, -275.19666, 7.6293945e-06, 270.55228, 0, 0, 0, 0, 0, 0, -294.2925, 7.6293945e-06, 276.05307, 0, 0, 0, 0, 0, 0, -307.19006, 7.6293945e-06, 286.9095, 0, 0, 0, 0, 0, 0, -317.32443, 7.6293945e-06, 303.14682, 0, 0, 0, 0, 0, 0, -320, 0, 320, 0, 0, 0, 0, 0, 0, -320, 0, 340, 0, 0, 0, 0, 0, 0, -320, 0, 360, 0, 0, 0, 0, 0, 0, -320, 0, 380, 0, 0, 0, 0, 0, 0, -316.78876, 7.6293945e-06, 396.91193, 0, 0, 0, 0, 0, 0, -307.68207, 7.6293945e-06, 412.70596, 0, 0, 0, 0, 0, 0, -291.08273, 7.6293945e-06, 424.7491, 0, 0, 0, 0, 0, 0, -270, 0, 429.994, 0, 0, 0, 0, 0, 0, -250, 0, 429.994, 0, 0, 0, 0, 0, 0, -229.90146, 7.6293945e-06, 433.90823, 0, 0, 0, 0, 0, 0, -217.15442, 7.6293945e-06, 442.98242, 0, 0, 0, 0, 0, 0, -204.60803, 7.6293945e-06, 459.93704, 0, 0, 0, 0, 0, 0, -200, 0, 480, 0, 0, 0, 0, 0, 0, -200, 0, 500, 0, 0, 0, 0, 0, 0, -195.5338, 7.6293945e-06, 520.0368, 0, 0, 0, 0, 0, 0, -184.9173, 7.6293945e-06, 535.07776, 0, 0, 0, 0, 0, 0, -170.36423, 7.6293945e-06, 545.0799, 0, 0, 0, 0, 0, 0, -150.56184, 0, 549.8127, 0, 0, 0, 0, 0, 0, -130, 0, 550, 0, 0, 0, 0, 0, 0, -110, 0, 550, 0, 0, 0, 0, 0, 0, -90, 0, 550, 0, 0, 0, 0, 0, 0, -70, 0, 550, 0, 0, 0, 0, 0, 0, -50, 0, 550, 0, 0, 0, 0, 0, 0, -29.862535, 7.6293945e-06, 545.3371, 0, 0, 0, 0, 0, 0, -13.215244, 7.6293945e-06, 533.0626, 0, 0, 0, 0, 0, 0, -4.098665, 7.6293945e-06, 519.6814, 0, 0, 0, 0, 0, 0, -0.048213482, 7.6293945e-06, 500.107, 0, 0, 0, 0, 0, 0, 3.7920675, 7.6293945e-06, 480.64902, 0, 0, 0, 0, 0, 0, 13.513225, 7.6293945e-06, 465.9133, 0, 0, 0, 0, 0, 0, 29.76715, 7.6293945e-06, 454.41486, 0, 0, 0, 0, 0, 0, 49.711926, 7.6293945e-06, 450.12488, 0, 0, 0, 0, 0, 0, 70, 0, 450, 0, 0, 0, 0, 0, 0, 90, 0, 450, 0, 0, 0, 0, 0, 0, 110.055405, 7.6293945e-06, 445.42627, 0, 0, 0, 0, 0, 0, 126.975784, 7.6293945e-06, 432.8683, 0, 0, 0, 0, 0, 0, 136.95703, 7.6293945e-06, 417.5506, 0, 0, 0, 0, 0, 0, 140, 0, 400, 0, 0, 0, 0, 0, 0, 140, 0, 380, 0, 0, 0, 0, 0, 0, 140, 0, 360, 0, 0, 0, 0, 0, 0, 140, 0, 340, 0, 0, 0, 0, 0, 0, 140, 0, 320, 0, 0, 0, 0, 0, 0, 140, 0, 300, 0, 0, 0, 0, 0, 0, 140, 0, 280, 0, 0, 0, 0, 0, 0, 140, 0, 260, 0, 0, 0, 0, 0, 0, 140, 0, 240, 0, 0, 0, 0, 0, 0, 140, 0, 220, 0, 0, 0, 0, 0, 0, 140, 0, 200, 0, 0, 0, 0, 0, 0, 140, 0, 180, 0, 0, 0, 0, 0, 0, 140, 0, 160, 0, 0, 0, 0, 0, 0, 140, 0, 140, 0, 0, 0, 0, 0, 0, 140, 0, 120, 0, 0, 0, 0, 0, 0, 140, 0, 100, 0, 0, 0, 0, 0, 0, 140, 0, 80, 0, 0, 0, 0, 0, 0, 140, 0, 60, 0, 0, 0, 0, 0, 0, 140, 0, 40, 0, 0, 0, 0, 0, 0, 140, 0, 20, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 0, 0, 0, 136.2151, 7.6293945e-06, -18.930761, 0, 0, 0, 0, 0, 0, 124.47424, 7.6293945e-06, -35.771675, 0, 0, 0, 0, 0, 0, 109.556854, 7.6293945e-06, -45.911987, 0, 0, 0, 0, 0, 0, 90, 0, -50, 0, 0, 0, 0, 0, 0, 70, 0, -50, 0, 0, 0, 0, 0, 0, 50, 0, -50, 0, 0, 0, 0, 0, 0, 30.626865, 7.6293945e-06, -46.35706, 0, 0, 0, 0, 0, 0, 14.519331, 7.6293945e-06, -35.468895, 0, 0, 0, 0, 0, 0, 3.52941, 7.6293945e-06, -19.590664),
"tilts": PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
@@ -161,10 +160,9 @@ compositor = SubResource("Compositor_mb5yv")
[node name="biome_generator" parent="." unique_id=1861369341 node_paths=PackedStringArray("rail_path") instance=ExtResource("5_yeh4a")]
rail_path = NodePath("../rail")
railway_pool = ExtResource("6_awm2r")
biome_list = Array[ExtResource("6_s3jnv")]([SubResource("Resource_3qrd0")])
entity_pool = ExtResource("35_hmtvu")
eye_line = 5
eye_line = 4
[node name="Terrain" type="MeshInstance3D" parent="." unique_id=219178561]
visible = false

71
export_presets.cfg Normal file
View File

@@ -0,0 +1,71 @@
[preset.0]
name="Windows Desktop"
platform="Windows Desktop"
runnable=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="../tgcc.exe"
patches=PackedStringArray()
patch_delta_encoding=false
patch_delta_compression_level_zstd=19
patch_delta_min_reduction=0.1
patch_delta_include_filters="*"
patch_delta_exclude_filters=""
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.0.options]
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=1
binary_format/embed_pck=false
texture_format/s3tc_bptc=true
texture_format/etc2_astc=false
shader_baker/enabled=false
binary_format/architecture="x86_64"
codesign/enable=false
codesign/timestamp=true
codesign/timestamp_server_url=""
codesign/digest_algorithm=1
codesign/description=""
codesign/custom_options=PackedStringArray()
application/modify_resources=true
application/icon=""
application/console_wrapper_icon=""
application/icon_interpolation=4
application/file_version=""
application/product_version=""
application/company_name=""
application/product_name=""
application/file_description=""
application/copyright=""
application/trademarks=""
application/export_angle=0
application/export_d3d12=0
application/d3d12_agility_sdk_multiarch=true
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}'
$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}'
$trigger = New-ScheduledTaskTrigger -Once -At 00:00
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true
Start-ScheduledTask -TaskName godot_remote_debug
while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 }
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue"
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
Remove-Item -Recurse -Force '{temp_dir}'"

View File

@@ -11,7 +11,7 @@ config_version=5
[application]
config/name="tgcc"
run/main_scene="uid://38qpxwbpvd28"
run/main_scene="uid://vjf4bdxd8saj"
config/features=PackedStringArray("4.6", "Forward Plus")
run/max_fps=60
config/icon="uid://bfar1kk3pgq8f"
@@ -20,7 +20,7 @@ config/icon="uid://bfar1kk3pgq8f"
UIEvents="*uid://dehu28iq27mbn"
GameState="*uid://b17g2w2g101o6"
CollectionManager="*uid://22orqdm34hfm"
CollectionManager="*uid://c3kq1qddpm8tf"
AudioManager="*uid://dcttbbavtwtsg"
SceneManager="*uid://bw8hwkw55j675"

View File

@@ -57,16 +57,16 @@ script = ExtResource("2_yfmnf")
south = true
west = true
[node name="Argini" parent="." index="0" unique_id=487109030]
[node name="Argini" parent="." index="0" unique_id=357182272]
surface_material_override/0 = ExtResource("2_02qm6")
[node name="Sentieri" parent="." index="1" unique_id=320924856 groups=["weather_node"]]
[node name="Sentieri" parent="." index="1" unique_id=1704203551 groups=["weather_node"]]
surface_material_override/0 = ExtResource("3_yfmnf")
[node name="Terreno" parent="." index="2" unique_id=1980435075]
[node name="Terreno" parent="." index="2" unique_id=1478648388]
surface_material_override/0 = ExtResource("2_02qm6")
[node name="Water" parent="." index="3" unique_id=424969495]
[node name="Water" parent="." index="3" unique_id=415433510]
surface_material_override/0 = ExtResource("4_x1bjv")
[node name="grass" type="Node3D" parent="." index="4" unique_id=543668848 groups=["weather_vegetables_node", "wind_node"]]

Binary file not shown.

View File

@@ -1,44 +0,0 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://dsvlxc3l5i1vk"
path="res://.godot/imported/Lantern_2.fbx-4aa3960da9dcc2d67f606c4b71816ef7.scn"
[deps]
source_file="res://tgcc/chunk/prop/pylon/Lantern_2.fbx"
dest_files=["res://.godot/imported/Lantern_2.fbx-4aa3960da9dcc2d67f606c4b71816ef7.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=true
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
fbx/importer=0
fbx/allow_geometry_helper_nodes=false
fbx/embedded_image_handling=1
fbx/naming_version=2

464
tgcc/main_scene.tscn Normal file

File diff suppressed because one or more lines are too long