mirror of
https://github.com/Theaninova/mhlib.git
synced 2025-12-11 03:56:18 +00:00
Add kart game
This commit is contained in:
@@ -1,6 +1,13 @@
|
||||
extends Area3D
|
||||
extends Node3D
|
||||
|
||||
class_name FinishLine
|
||||
|
||||
@export var start_positions: Array[Marker3D]
|
||||
@onready var start_positions = [
|
||||
$pos_0,
|
||||
$pos_1,
|
||||
$pos_2,
|
||||
$pos_3,
|
||||
$pos_4,
|
||||
$pos_5
|
||||
]
|
||||
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
[gd_scene load_steps=16 format=3 uid="uid://1sm0qglu7q7i"]
|
||||
|
||||
[ext_resource type="Script" path="res://PhysicsInterpolator.gd" id="1_x8dkv"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_cars/moorhuhn.lwo/layer_0.res" id="2_rbnr8"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_cars/moorhuhn.lwo/layer_1.res" id="3_j84nv"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_cars/moorhuhn.lwo/layer_2.res" id="4_trmbd"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_cars/kart_01.lwo/layer_0.res" id="5_ydkp1"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_cars/kart_01.lwo/layer_1.res" id="6_ul4ba"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_cars/kart_01.lwo/layer_6.res" id="7_s4uu8"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_cars/kart_01.lwo/layer_7.res" id="8_yx2s2"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_cars/kart_01.lwo/layer_8.res" id="9_kadfc"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_cars/kart_01.lwo/layer_3.res" id="10_hfn0h"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_cars/kart_01.lwo/layer_4.res" id="11_scyqe"]
|
||||
[ext_resource type="Script" path="res://PhysicsInterpolator.gd" id="1_cxgl4"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_cars/moorhuhn.lwo/layer_0.res" id="2_ges5k"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_cars/moorhuhn.lwo/layer_1.res" id="3_3dgmt"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_cars/moorhuhn.lwo/layer_2.res" id="4_pr7c3"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_cars/kart_01.lwo/layer_0.res" id="5_eqscg"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_cars/kart_01.lwo/layer_1.res" id="6_o6fvu"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_cars/kart_01.lwo/layer_6.res" id="7_bicni"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_cars/kart_01.lwo/layer_7.res" id="8_3dlnt"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_cars/kart_01.lwo/layer_8.res" id="9_qvqff"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_cars/kart_01.lwo/layer_3.res" id="10_xywge"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_cars/kart_01.lwo/layer_4.res" id="11_57yte"]
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_dfi4v"]
|
||||
script/source = "extends VehicleBody3D
|
||||
@@ -89,40 +89,40 @@ spring_length = -2.06
|
||||
transform = Transform3D(-1, 1.21669e-08, -8.6572e-08, 0, 0.990268, 0.139173, 8.74228e-08, 0.139173, -0.990268, 0, 0, 0)
|
||||
|
||||
[node name="Interpolator" type="Node3D" parent="."]
|
||||
script = ExtResource("1_x8dkv")
|
||||
script = ExtResource("1_cxgl4")
|
||||
|
||||
[node name="Character" type="Node3D" parent="Interpolator"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 0, 0)
|
||||
|
||||
[node name="layer_0" type="MeshInstance3D" parent="Interpolator/Character"]
|
||||
mesh = ExtResource("2_rbnr8")
|
||||
mesh = ExtResource("2_ges5k")
|
||||
skeleton = NodePath("../..")
|
||||
|
||||
[node name="layer_1" type="MeshInstance3D" parent="Interpolator/Character"]
|
||||
mesh = ExtResource("3_j84nv")
|
||||
mesh = ExtResource("3_3dgmt")
|
||||
skeleton = NodePath("../..")
|
||||
|
||||
[node name="layer_2" type="MeshInstance3D" parent="Interpolator/Character"]
|
||||
mesh = ExtResource("4_trmbd")
|
||||
mesh = ExtResource("4_pr7c3")
|
||||
skeleton = NodePath("../..")
|
||||
|
||||
[node name="kart_01" type="Node3D" parent="Interpolator"]
|
||||
transform = Transform3D(1.31134e-07, 0, -1, 0, 1, 0, 1, 0, 1.31134e-07, -0.00301218, -0.102925, 0.0106623)
|
||||
|
||||
[node name="kart_base" type="MeshInstance3D" parent="Interpolator/kart_01"]
|
||||
mesh = ExtResource("5_ydkp1")
|
||||
mesh = ExtResource("5_eqscg")
|
||||
|
||||
[node name="steering_wheel" type="MeshInstance3D" parent="Interpolator/kart_01"]
|
||||
mesh = ExtResource("6_ul4ba")
|
||||
mesh = ExtResource("6_o6fvu")
|
||||
|
||||
[node name="engine" type="MeshInstance3D" parent="Interpolator/kart_01"]
|
||||
mesh = ExtResource("7_s4uu8")
|
||||
mesh = ExtResource("7_bicni")
|
||||
|
||||
[node name="layer_7" type="MeshInstance3D" parent="Interpolator/kart_01"]
|
||||
mesh = ExtResource("8_yx2s2")
|
||||
mesh = ExtResource("8_3dlnt")
|
||||
|
||||
[node name="exhaust" type="MeshInstance3D" parent="Interpolator/kart_01"]
|
||||
mesh = ExtResource("9_kadfc")
|
||||
mesh = ExtResource("9_qvqff")
|
||||
|
||||
[node name="CharacterCollision" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1.31134e-07, 0, -1, 0, 1, 0, 1, 0, 1.31134e-07, -0.00301217, 0.516557, 0.0695111)
|
||||
@@ -143,11 +143,11 @@ suspension_travel = 0.1
|
||||
suspension_stiffness = 50.0
|
||||
|
||||
[node name="Interpolator" type="Node3D" parent="FrontLeftWheel"]
|
||||
script = ExtResource("1_x8dkv")
|
||||
script = ExtResource("1_cxgl4")
|
||||
|
||||
[node name="wheel_fr" type="MeshInstance3D" parent="FrontLeftWheel/Interpolator"]
|
||||
transform = Transform3D(-7.54979e-08, -6.60024e-15, 1, 8.74228e-08, -1, 0, 1, 8.74228e-08, 7.54979e-08, -0.412, 0.142, -0.55)
|
||||
mesh = ExtResource("10_hfn0h")
|
||||
mesh = ExtResource("10_xywge")
|
||||
skeleton = NodePath("../../../Interpolator/kart_01")
|
||||
|
||||
[node name="FrontRightWheel" type="VehicleWheel3D" parent="."]
|
||||
@@ -161,11 +161,11 @@ suspension_travel = 0.1
|
||||
suspension_stiffness = 50.0
|
||||
|
||||
[node name="Node3D" type="Node3D" parent="FrontRightWheel"]
|
||||
script = ExtResource("1_x8dkv")
|
||||
script = ExtResource("1_cxgl4")
|
||||
|
||||
[node name="wheel_fr" type="MeshInstance3D" parent="FrontRightWheel/Node3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0.412142, -0.142, -0.55)
|
||||
mesh = ExtResource("10_hfn0h")
|
||||
mesh = ExtResource("10_xywge")
|
||||
skeleton = NodePath("../../../Interpolator/kart_01")
|
||||
|
||||
[node name="RearLeftWheel" type="VehicleWheel3D" parent="."]
|
||||
@@ -178,11 +178,11 @@ suspension_travel = 0.1
|
||||
suspension_stiffness = 50.0
|
||||
|
||||
[node name="Node3D" type="Node3D" parent="RearLeftWheel"]
|
||||
script = ExtResource("1_x8dkv")
|
||||
script = ExtResource("1_cxgl4")
|
||||
|
||||
[node name="wheel_bl" type="MeshInstance3D" parent="RearLeftWheel/Node3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -0.421, -0.175, 0.44)
|
||||
mesh = ExtResource("11_scyqe")
|
||||
mesh = ExtResource("11_57yte")
|
||||
skeleton = NodePath("../../../Interpolator/kart_01")
|
||||
|
||||
[node name="RearRightWheel" type="VehicleWheel3D" parent="."]
|
||||
@@ -195,9 +195,9 @@ suspension_travel = 0.1
|
||||
suspension_stiffness = 50.0
|
||||
|
||||
[node name="Node3D" type="Node3D" parent="RearRightWheel"]
|
||||
script = ExtResource("1_x8dkv")
|
||||
script = ExtResource("1_cxgl4")
|
||||
|
||||
[node name="wheel_bl" type="MeshInstance3D" parent="RearRightWheel/Node3D"]
|
||||
transform = Transform3D(4.37114e-08, 0, 1, 0, -1, 0, -1, 0, 4.37114e-08, 0.421, 0.18, -0.44)
|
||||
mesh = ExtResource("11_scyqe")
|
||||
mesh = ExtResource("11_57yte")
|
||||
skeleton = NodePath("../../../Interpolator/kart_01")
|
||||
|
||||
@@ -1,68 +1,68 @@
|
||||
[gd_scene load_steps=57 format=3 uid="uid://c08iaahf32kfe"]
|
||||
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/skydome.lwo/layer_0.res" id="1_c65rh"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/colmesh.lwo/layer_0.res" id="2_0vph3"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/colmesh_ai.lwo/layer_0.res" id="3_5o533"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/colmesh_fall.lwo/layer_0.res" id="4_xogjj"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/colmesh_floor_fahrbahn.lwo/layer_0.res" id="5_ifrb3"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/colmesh_floor_sand.lwo/layer_0.res" id="6_ihb7w"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/colreset.lwo/layer_0.res" id="7_72khp"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/boden.lwo/layer_0.res" id="8_5p6dl"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/boden.lwo/layer_1.res" id="9_ytc4o"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/boden.lwo/layer_2.res" id="10_lywwv"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/boden.lwo/layer_3.res" id="11_4v0yx"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/boden.lwo/layer_4.res" id="12_jvdyb"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/boden.lwo/layer_5.res" id="13_336u2"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/boden.lwo/layer_6.res" id="14_ee0c4"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/fackel_flamme.lwo/layer_0.res" id="15_70tk5"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/fackeln.lwo/layer_0.res" id="16_cemce"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/fackeln.lwo/layer_1.res" id="17_4gfai"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/fackeln.lwo/layer_2.res" id="18_5gmxo"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/fackeln.lwo/layer_3.res" id="19_y4m5k"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/fadeplane.lwo/layer_0.res" id="20_vrkeu"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/felsbrocken.lwo/layer_0.res" id="21_hd23i"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/felsbrocken.lwo/layer_1.res" id="22_5k0rw"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/felsbrocken.lwo/layer_2.res" id="23_myo8x"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/felsbrocken.lwo/layer_3.res" id="24_cmcne"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/felsbrocken.lwo/layer_4.res" id="25_6wu5v"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/flamme_gruen.lwo/layer_0.res" id="26_pgy6e"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/haeuser.lwo/layer_0.res" id="27_5qssv"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/haeuser.lwo/layer_1.res" id="28_2k7mn"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/haeuser.lwo/layer_2.res" id="29_svld3"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/haeuser.lwo/layer_3.res" id="30_oiilc"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/haeuser.lwo/layer_4.res" id="31_q5gnp"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/haeuser.lwo/layer_5.res" id="32_iota2"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/haeuser.lwo/layer_6.res" id="33_xu506"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/palmen.lwo/layer_0.res" id="34_bpxiv"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/palmen.lwo/layer_1.res" id="35_3cejh"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/palmen.lwo/layer_2.res" id="36_qmnch"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/palmen.lwo/layer_3.res" id="37_huntu"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/palmen.lwo/layer_4.res" id="38_rwaiu"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/palmen.lwo/layer_5.res" id="39_u5xq7"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/palmen.lwo/layer_6.res" id="40_ayamf"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/palmen.lwo/layer_7.res" id="41_eb8ee"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/pyramide_inside.lwo/layer_0.res" id="42_77jcw"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/pyramide_inside.lwo/layer_1.res" id="43_c0iwq"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/pyramide_inside.lwo/layer_2.res" id="44_tx4mp"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/sphinx.lwo/layer_0.res" id="45_n7j1d"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/stampfer_saeule.lwo/layer_0.res" id="46_pa778"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/statuen.lwo/layer_0.res" id="47_7yqjk"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/statuen.lwo/layer_1.res" id="48_di7dj"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/statuen.lwo/layer_2.res" id="49_k4ed0"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/statuen.lwo/layer_3.res" id="50_pes1e"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/statuen.lwo/layer_4.res" id="51_cwuyq"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/statuen.lwo/layer_5.res" id="52_8aw2s"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/statuen.lwo/layer_6.res" id="53_6avia"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/statuen.lwo/layer_7.res" id="54_wy6ms"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/statuen.lwo/layer_8.res" id="55_mib5n"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/statuen.lwo/layer_9.res" id="56_l2bqy"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/skydome.lwo/layer_0.res" id="1_g70un"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/colmesh.lwo/layer_0.res" id="2_sg51j"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/colmesh_ai.lwo/layer_0.res" id="3_cufsh"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/colmesh_fall.lwo/layer_0.res" id="4_jm0br"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/colmesh_floor_fahrbahn.lwo/layer_0.res" id="5_kfkhw"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/colmesh_floor_sand.lwo/layer_0.res" id="6_td8k1"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/colreset.lwo/layer_0.res" id="7_7yxop"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/boden.lwo/layer_0.res" id="8_xka2g"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/boden.lwo/layer_1.res" id="9_s811u"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/boden.lwo/layer_2.res" id="10_jyu5s"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/boden.lwo/layer_3.res" id="11_ul8gg"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/boden.lwo/layer_4.res" id="12_lwbnk"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/boden.lwo/layer_5.res" id="13_fxx2d"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/boden.lwo/layer_6.res" id="14_p7emx"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/fackel_flamme.lwo/layer_0.res" id="15_ytsgp"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/fackeln.lwo/layer_0.res" id="16_5haoh"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/fackeln.lwo/layer_1.res" id="17_08o3v"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/fackeln.lwo/layer_2.res" id="18_h6mgv"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/fackeln.lwo/layer_3.res" id="19_4spta"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/fadeplane.lwo/layer_0.res" id="20_xyk5d"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/felsbrocken.lwo/layer_0.res" id="21_vaiyg"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/felsbrocken.lwo/layer_1.res" id="22_l7xpd"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/felsbrocken.lwo/layer_2.res" id="23_066ro"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/felsbrocken.lwo/layer_3.res" id="24_nsalh"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/felsbrocken.lwo/layer_4.res" id="25_s6d6m"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/flamme_gruen.lwo/layer_0.res" id="26_jlrrh"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/haeuser.lwo/layer_0.res" id="27_obm7s"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/haeuser.lwo/layer_1.res" id="28_c3h6e"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/haeuser.lwo/layer_2.res" id="29_e8f64"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/haeuser.lwo/layer_3.res" id="30_n8g5h"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/haeuser.lwo/layer_4.res" id="31_oeos5"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/haeuser.lwo/layer_5.res" id="32_oq0or"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/haeuser.lwo/layer_6.res" id="33_hmoyp"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/palmen.lwo/layer_0.res" id="34_th46l"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/palmen.lwo/layer_1.res" id="35_0dy2b"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/palmen.lwo/layer_2.res" id="36_x3s28"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/palmen.lwo/layer_3.res" id="37_jhuhh"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/palmen.lwo/layer_4.res" id="38_b0vy6"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/palmen.lwo/layer_5.res" id="39_splx0"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/palmen.lwo/layer_6.res" id="40_ktu0r"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/palmen.lwo/layer_7.res" id="41_0it0h"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/pyramide_inside.lwo/layer_0.res" id="42_yfx8d"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/pyramide_inside.lwo/layer_1.res" id="43_xnlgr"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/pyramide_inside.lwo/layer_2.res" id="44_5syhs"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/sphinx.lwo/layer_0.res" id="45_x8mul"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/stampfer_saeule.lwo/layer_0.res" id="46_8yqhj"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/statuen.lwo/layer_0.res" id="47_n1dps"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/statuen.lwo/layer_1.res" id="48_pkatc"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/statuen.lwo/layer_2.res" id="49_awms6"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/statuen.lwo/layer_3.res" id="50_va8p8"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/statuen.lwo/layer_4.res" id="51_ljmi0"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/statuen.lwo/layer_5.res" id="52_slvmn"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/statuen.lwo/layer_6.res" id="53_eo76r"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/statuen.lwo/layer_7.res" id="54_r0d4r"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/statuen.lwo/layer_8.res" id="55_b86ab"]
|
||||
[ext_resource type="ArrayMesh" path="res://games/mhk3/D/Moorhuhnkart/3dobjects_tracks/track05_aegypten/statuen.lwo/layer_9.res" id="56_drfwp"]
|
||||
|
||||
[node name="egypt" type="Node3D"]
|
||||
|
||||
[node name="skydome" type="Node3D" parent="."]
|
||||
|
||||
[node name="layer_0" type="MeshInstance3D" parent="skydome"]
|
||||
mesh = ExtResource("1_c65rh")
|
||||
mesh = ExtResource("1_g70un")
|
||||
|
||||
[node name="Collision" type="Node3D" parent="."]
|
||||
visible = false
|
||||
@@ -70,202 +70,202 @@ visible = false
|
||||
[node name="colmesh" type="Node3D" parent="Collision"]
|
||||
|
||||
[node name="layer_0" type="MeshInstance3D" parent="Collision/colmesh"]
|
||||
mesh = ExtResource("2_0vph3")
|
||||
mesh = ExtResource("2_sg51j")
|
||||
|
||||
[node name="colmesh_ai" type="Node3D" parent="Collision"]
|
||||
|
||||
[node name="layer_0" type="MeshInstance3D" parent="Collision/colmesh_ai"]
|
||||
mesh = ExtResource("3_5o533")
|
||||
mesh = ExtResource("3_cufsh")
|
||||
|
||||
[node name="colmesh_fall" type="Node3D" parent="Collision"]
|
||||
|
||||
[node name="layer_0" type="MeshInstance3D" parent="Collision/colmesh_fall"]
|
||||
mesh = ExtResource("4_xogjj")
|
||||
mesh = ExtResource("4_jm0br")
|
||||
|
||||
[node name="colmesh_floor_fahrbahn" type="Node3D" parent="Collision"]
|
||||
|
||||
[node name="layer_0" type="MeshInstance3D" parent="Collision/colmesh_floor_fahrbahn"]
|
||||
mesh = ExtResource("5_ifrb3")
|
||||
mesh = ExtResource("5_kfkhw")
|
||||
|
||||
[node name="colmesh_floor_sand" type="Node3D" parent="Collision"]
|
||||
|
||||
[node name="layer_0" type="MeshInstance3D" parent="Collision/colmesh_floor_sand"]
|
||||
mesh = ExtResource("6_ihb7w")
|
||||
mesh = ExtResource("6_td8k1")
|
||||
|
||||
[node name="colreset" type="Node3D" parent="Collision"]
|
||||
|
||||
[node name="layer_0" type="MeshInstance3D" parent="Collision/colreset"]
|
||||
mesh = ExtResource("7_72khp")
|
||||
mesh = ExtResource("7_7yxop")
|
||||
|
||||
[node name="Geometry" type="Node3D" parent="."]
|
||||
|
||||
[node name="boden" type="Node3D" parent="Geometry"]
|
||||
|
||||
[node name="layer_0" type="MeshInstance3D" parent="Geometry/boden"]
|
||||
mesh = ExtResource("8_5p6dl")
|
||||
mesh = ExtResource("8_xka2g")
|
||||
|
||||
[node name="layer_1" type="MeshInstance3D" parent="Geometry/boden"]
|
||||
mesh = ExtResource("9_ytc4o")
|
||||
mesh = ExtResource("9_s811u")
|
||||
|
||||
[node name="layer_2" type="MeshInstance3D" parent="Geometry/boden"]
|
||||
mesh = ExtResource("10_lywwv")
|
||||
mesh = ExtResource("10_jyu5s")
|
||||
|
||||
[node name="layer_3" type="MeshInstance3D" parent="Geometry/boden"]
|
||||
mesh = ExtResource("11_4v0yx")
|
||||
mesh = ExtResource("11_ul8gg")
|
||||
|
||||
[node name="layer_4" type="MeshInstance3D" parent="Geometry/boden"]
|
||||
mesh = ExtResource("12_jvdyb")
|
||||
mesh = ExtResource("12_lwbnk")
|
||||
|
||||
[node name="layer_5" type="MeshInstance3D" parent="Geometry/boden"]
|
||||
mesh = ExtResource("13_336u2")
|
||||
mesh = ExtResource("13_fxx2d")
|
||||
|
||||
[node name="layer_6" type="MeshInstance3D" parent="Geometry/boden"]
|
||||
mesh = ExtResource("14_ee0c4")
|
||||
mesh = ExtResource("14_p7emx")
|
||||
|
||||
[node name="fackel_flamme" type="Node3D" parent="Geometry"]
|
||||
|
||||
[node name="layer_0" type="MeshInstance3D" parent="Geometry/fackel_flamme"]
|
||||
mesh = ExtResource("15_70tk5")
|
||||
mesh = ExtResource("15_ytsgp")
|
||||
|
||||
[node name="fackeln" type="Node3D" parent="Geometry"]
|
||||
|
||||
[node name="layer_0" type="MeshInstance3D" parent="Geometry/fackeln"]
|
||||
mesh = ExtResource("16_cemce")
|
||||
mesh = ExtResource("16_5haoh")
|
||||
|
||||
[node name="layer_1" type="MeshInstance3D" parent="Geometry/fackeln"]
|
||||
mesh = ExtResource("17_4gfai")
|
||||
mesh = ExtResource("17_08o3v")
|
||||
|
||||
[node name="layer_2" type="MeshInstance3D" parent="Geometry/fackeln"]
|
||||
mesh = ExtResource("18_5gmxo")
|
||||
mesh = ExtResource("18_h6mgv")
|
||||
|
||||
[node name="layer_3" type="MeshInstance3D" parent="Geometry/fackeln"]
|
||||
mesh = ExtResource("19_y4m5k")
|
||||
mesh = ExtResource("19_4spta")
|
||||
|
||||
[node name="fadeplane" type="Node3D" parent="Geometry"]
|
||||
|
||||
[node name="layer_0" type="MeshInstance3D" parent="Geometry/fadeplane"]
|
||||
mesh = ExtResource("20_vrkeu")
|
||||
mesh = ExtResource("20_xyk5d")
|
||||
|
||||
[node name="felsbrocken" type="Node3D" parent="Geometry"]
|
||||
|
||||
[node name="layer_0" type="MeshInstance3D" parent="Geometry/felsbrocken"]
|
||||
mesh = ExtResource("21_hd23i")
|
||||
mesh = ExtResource("21_vaiyg")
|
||||
|
||||
[node name="layer_1" type="MeshInstance3D" parent="Geometry/felsbrocken"]
|
||||
mesh = ExtResource("22_5k0rw")
|
||||
mesh = ExtResource("22_l7xpd")
|
||||
|
||||
[node name="layer_2" type="MeshInstance3D" parent="Geometry/felsbrocken"]
|
||||
mesh = ExtResource("23_myo8x")
|
||||
mesh = ExtResource("23_066ro")
|
||||
|
||||
[node name="layer_3" type="MeshInstance3D" parent="Geometry/felsbrocken"]
|
||||
mesh = ExtResource("24_cmcne")
|
||||
mesh = ExtResource("24_nsalh")
|
||||
|
||||
[node name="layer_4" type="MeshInstance3D" parent="Geometry/felsbrocken"]
|
||||
mesh = ExtResource("25_6wu5v")
|
||||
mesh = ExtResource("25_s6d6m")
|
||||
|
||||
[node name="flamme_gruen" type="Node3D" parent="Geometry"]
|
||||
|
||||
[node name="layer_0" type="MeshInstance3D" parent="Geometry/flamme_gruen"]
|
||||
mesh = ExtResource("26_pgy6e")
|
||||
mesh = ExtResource("26_jlrrh")
|
||||
|
||||
[node name="haeuser" type="Node3D" parent="Geometry"]
|
||||
|
||||
[node name="layer_0" type="MeshInstance3D" parent="Geometry/haeuser"]
|
||||
mesh = ExtResource("27_5qssv")
|
||||
mesh = ExtResource("27_obm7s")
|
||||
|
||||
[node name="layer_1" type="MeshInstance3D" parent="Geometry/haeuser"]
|
||||
mesh = ExtResource("28_2k7mn")
|
||||
mesh = ExtResource("28_c3h6e")
|
||||
|
||||
[node name="layer_2" type="MeshInstance3D" parent="Geometry/haeuser"]
|
||||
mesh = ExtResource("29_svld3")
|
||||
mesh = ExtResource("29_e8f64")
|
||||
|
||||
[node name="layer_3" type="MeshInstance3D" parent="Geometry/haeuser"]
|
||||
mesh = ExtResource("30_oiilc")
|
||||
mesh = ExtResource("30_n8g5h")
|
||||
|
||||
[node name="layer_4" type="MeshInstance3D" parent="Geometry/haeuser"]
|
||||
mesh = ExtResource("31_q5gnp")
|
||||
mesh = ExtResource("31_oeos5")
|
||||
|
||||
[node name="layer_5" type="MeshInstance3D" parent="Geometry/haeuser"]
|
||||
mesh = ExtResource("32_iota2")
|
||||
mesh = ExtResource("32_oq0or")
|
||||
|
||||
[node name="layer_6" type="MeshInstance3D" parent="Geometry/haeuser"]
|
||||
mesh = ExtResource("33_xu506")
|
||||
mesh = ExtResource("33_hmoyp")
|
||||
|
||||
[node name="palmen" type="Node3D" parent="Geometry"]
|
||||
|
||||
[node name="layer_0" type="MeshInstance3D" parent="Geometry/palmen"]
|
||||
mesh = ExtResource("34_bpxiv")
|
||||
mesh = ExtResource("34_th46l")
|
||||
|
||||
[node name="layer_1" type="MeshInstance3D" parent="Geometry/palmen"]
|
||||
mesh = ExtResource("35_3cejh")
|
||||
mesh = ExtResource("35_0dy2b")
|
||||
|
||||
[node name="layer_2" type="MeshInstance3D" parent="Geometry/palmen"]
|
||||
mesh = ExtResource("36_qmnch")
|
||||
mesh = ExtResource("36_x3s28")
|
||||
|
||||
[node name="layer_3" type="MeshInstance3D" parent="Geometry/palmen"]
|
||||
mesh = ExtResource("37_huntu")
|
||||
mesh = ExtResource("37_jhuhh")
|
||||
|
||||
[node name="layer_4" type="MeshInstance3D" parent="Geometry/palmen"]
|
||||
mesh = ExtResource("38_rwaiu")
|
||||
mesh = ExtResource("38_b0vy6")
|
||||
|
||||
[node name="layer_5" type="MeshInstance3D" parent="Geometry/palmen"]
|
||||
mesh = ExtResource("39_u5xq7")
|
||||
mesh = ExtResource("39_splx0")
|
||||
|
||||
[node name="layer_6" type="MeshInstance3D" parent="Geometry/palmen"]
|
||||
mesh = ExtResource("40_ayamf")
|
||||
mesh = ExtResource("40_ktu0r")
|
||||
|
||||
[node name="layer_7" type="MeshInstance3D" parent="Geometry/palmen"]
|
||||
mesh = ExtResource("41_eb8ee")
|
||||
mesh = ExtResource("41_0it0h")
|
||||
|
||||
[node name="pyramide_inside" type="Node3D" parent="Geometry"]
|
||||
|
||||
[node name="layer_0" type="MeshInstance3D" parent="Geometry/pyramide_inside"]
|
||||
mesh = ExtResource("42_77jcw")
|
||||
mesh = ExtResource("42_yfx8d")
|
||||
|
||||
[node name="layer_1" type="MeshInstance3D" parent="Geometry/pyramide_inside"]
|
||||
mesh = ExtResource("43_c0iwq")
|
||||
mesh = ExtResource("43_xnlgr")
|
||||
|
||||
[node name="layer_2" type="MeshInstance3D" parent="Geometry/pyramide_inside"]
|
||||
mesh = ExtResource("44_tx4mp")
|
||||
mesh = ExtResource("44_5syhs")
|
||||
|
||||
[node name="sphinx" type="Node3D" parent="Geometry"]
|
||||
|
||||
[node name="layer_0" type="MeshInstance3D" parent="Geometry/sphinx"]
|
||||
mesh = ExtResource("45_n7j1d")
|
||||
mesh = ExtResource("45_x8mul")
|
||||
|
||||
[node name="stampfer_saeule" type="Node3D" parent="Geometry"]
|
||||
|
||||
[node name="layer_0" type="MeshInstance3D" parent="Geometry/stampfer_saeule"]
|
||||
mesh = ExtResource("46_pa778")
|
||||
mesh = ExtResource("46_8yqhj")
|
||||
|
||||
[node name="statuen" type="Node3D" parent="Geometry"]
|
||||
|
||||
[node name="layer_0" type="MeshInstance3D" parent="Geometry/statuen"]
|
||||
mesh = ExtResource("47_7yqjk")
|
||||
mesh = ExtResource("47_n1dps")
|
||||
|
||||
[node name="layer_1" type="MeshInstance3D" parent="Geometry/statuen"]
|
||||
mesh = ExtResource("48_di7dj")
|
||||
mesh = ExtResource("48_pkatc")
|
||||
|
||||
[node name="layer_2" type="MeshInstance3D" parent="Geometry/statuen"]
|
||||
mesh = ExtResource("49_k4ed0")
|
||||
mesh = ExtResource("49_awms6")
|
||||
|
||||
[node name="layer_3" type="MeshInstance3D" parent="Geometry/statuen"]
|
||||
mesh = ExtResource("50_pes1e")
|
||||
mesh = ExtResource("50_va8p8")
|
||||
|
||||
[node name="layer_4" type="MeshInstance3D" parent="Geometry/statuen"]
|
||||
mesh = ExtResource("51_cwuyq")
|
||||
mesh = ExtResource("51_ljmi0")
|
||||
|
||||
[node name="layer_5" type="MeshInstance3D" parent="Geometry/statuen"]
|
||||
mesh = ExtResource("52_8aw2s")
|
||||
mesh = ExtResource("52_slvmn")
|
||||
|
||||
[node name="layer_6" type="MeshInstance3D" parent="Geometry/statuen"]
|
||||
mesh = ExtResource("53_6avia")
|
||||
mesh = ExtResource("53_eo76r")
|
||||
|
||||
[node name="layer_7" type="MeshInstance3D" parent="Geometry/statuen"]
|
||||
mesh = ExtResource("54_wy6ms")
|
||||
mesh = ExtResource("54_r0d4r")
|
||||
|
||||
[node name="layer_8" type="MeshInstance3D" parent="Geometry/statuen"]
|
||||
mesh = ExtResource("55_mib5n")
|
||||
mesh = ExtResource("55_b86ab")
|
||||
|
||||
[node name="layer_9" type="MeshInstance3D" parent="Geometry/statuen"]
|
||||
mesh = ExtResource("56_l2bqy")
|
||||
mesh = ExtResource("56_drfwp")
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,47 +1,47 @@
|
||||
[gd_resource type="ShaderMaterial" load_steps=15 format=3 uid="uid://d0i0klcefalj4"]
|
||||
|
||||
[ext_resource type="Shader" uid="uid://44g7mn3konwc" path="res://kart/maps/ufo/force_field_shader.tres" id="1_wvajq"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_00.bmp.res" id="2_2v7do"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_01.bmp.res" id="3_yqcd0"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_10.bmp.res" id="4_q8kg5"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_11.bmp.res" id="5_bdkkc"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_02.bmp.res" id="6_ee2hq"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_03.bmp.res" id="7_hviv3"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_04.bmp.res" id="8_s51bi"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_05.bmp.res" id="9_4irmw"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_06.bmp.res" id="10_qip6w"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_07.bmp.res" id="11_48ndu"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_08.bmp.res" id="12_t0827"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_09.bmp.res" id="13_wqq6s"]
|
||||
[ext_resource type="Shader" uid="uid://44g7mn3konwc" path="res://kart/maps/ufo/force_field_shader.tres" id="1_hof1b"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_00.bmp.res" id="2_4m4pv"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_01.bmp.res" id="3_dnoca"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_10.bmp.res" id="4_10n5q"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_11.bmp.res" id="5_rw77u"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_02.bmp.res" id="6_biohn"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_03.bmp.res" id="7_k4lb2"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_04.bmp.res" id="8_1j65w"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_05.bmp.res" id="9_5vgii"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_06.bmp.res" id="10_b4oss"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_07.bmp.res" id="11_pv4ig"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_08.bmp.res" id="12_q04bs"]
|
||||
[ext_resource type="Texture2D" path="res://games/mhk3/D/Moorhuhnkart/textures_animations/portal/water_09.bmp.res" id="13_ytoc5"]
|
||||
|
||||
[sub_resource type="AnimatedTexture" id="AnimatedTexture_mt86o"]
|
||||
frames = 12
|
||||
frame_0/texture = ExtResource("2_2v7do")
|
||||
frame_0/texture = ExtResource("2_4m4pv")
|
||||
frame_0/duration = 0.0666667
|
||||
frame_1/texture = ExtResource("3_yqcd0")
|
||||
frame_1/texture = ExtResource("3_dnoca")
|
||||
frame_1/duration = 0.0666667
|
||||
frame_2/texture = ExtResource("6_ee2hq")
|
||||
frame_2/texture = ExtResource("6_biohn")
|
||||
frame_2/duration = 0.0666667
|
||||
frame_3/texture = ExtResource("7_hviv3")
|
||||
frame_3/texture = ExtResource("7_k4lb2")
|
||||
frame_3/duration = 0.0666667
|
||||
frame_4/texture = ExtResource("8_s51bi")
|
||||
frame_4/texture = ExtResource("8_1j65w")
|
||||
frame_4/duration = 0.0666667
|
||||
frame_5/texture = ExtResource("9_4irmw")
|
||||
frame_5/texture = ExtResource("9_5vgii")
|
||||
frame_5/duration = 0.0666667
|
||||
frame_6/texture = ExtResource("10_qip6w")
|
||||
frame_6/texture = ExtResource("10_b4oss")
|
||||
frame_6/duration = 0.0666667
|
||||
frame_7/texture = ExtResource("11_48ndu")
|
||||
frame_7/texture = ExtResource("11_pv4ig")
|
||||
frame_7/duration = 0.0666667
|
||||
frame_8/texture = ExtResource("12_t0827")
|
||||
frame_8/texture = ExtResource("12_q04bs")
|
||||
frame_8/duration = 0.0666667
|
||||
frame_9/texture = ExtResource("13_wqq6s")
|
||||
frame_9/texture = ExtResource("13_ytoc5")
|
||||
frame_9/duration = 0.0666667
|
||||
frame_10/texture = ExtResource("4_q8kg5")
|
||||
frame_10/texture = ExtResource("4_10n5q")
|
||||
frame_10/duration = 0.0666667
|
||||
frame_11/texture = ExtResource("5_bdkkc")
|
||||
frame_11/texture = ExtResource("5_rw77u")
|
||||
frame_11/duration = 0.0666667
|
||||
|
||||
[resource]
|
||||
render_priority = 0
|
||||
shader = ExtResource("1_wvajq")
|
||||
shader = ExtResource("1_hof1b")
|
||||
shader_parameter/Texture2DParameter = SubResource("AnimatedTexture_mt86o")
|
||||
|
||||
@@ -8,7 +8,7 @@ texture_type = 1
|
||||
source = 5
|
||||
|
||||
[sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_wfaag"]
|
||||
input_name = "uv2"
|
||||
input_name = "uv"
|
||||
|
||||
[sub_resource type="VisualShaderNodeVectorOp" id="VisualShaderNodeVectorOp_akd1a"]
|
||||
default_input_values = [0, Vector3(0, 0, 0), 1, Vector3(5.915, 0, 0)]
|
||||
@@ -36,7 +36,7 @@ void fragment() {
|
||||
|
||||
|
||||
// Input:5
|
||||
vec2 n_out5p0 = UV2;
|
||||
vec2 n_out5p0 = UV;
|
||||
|
||||
|
||||
vec4 n_out4p0;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -12,7 +12,7 @@ config_version=5
|
||||
|
||||
config/name="MHJNR"
|
||||
run/main_scene="res://mhjnr/level.tscn"
|
||||
config/features=PackedStringArray("4.1", "GL Compatibility")
|
||||
config/features=PackedStringArray("4.0", "GL Compatibility")
|
||||
boot_splash/bg_color=Color(0, 0, 0, 0)
|
||||
boot_splash/image="res://icon.png"
|
||||
boot_splash/fullsize=false
|
||||
@@ -68,10 +68,16 @@ Brake={
|
||||
|
||||
[physics]
|
||||
|
||||
3d/run_on_separate_thread=true
|
||||
2d/default_gravity=2000.0
|
||||
|
||||
[rendering]
|
||||
|
||||
renderer/rendering_method.mobile="gl_compatibility"
|
||||
lights_and_shadows/directional_shadow/size=8192
|
||||
lights_and_shadows/directional_shadow/soft_shadow_filter_quality=4
|
||||
lights_and_shadows/positional_shadow/soft_shadow_filter_quality=4
|
||||
scaling_3d/mode=1
|
||||
environment/screen_space_reflection/roughness_quality=3
|
||||
global_illumination/sdfgi/probe_ray_count=4
|
||||
global_illumination/sdfgi/frames_to_update_lights=3
|
||||
anti_aliasing/quality/use_taa=true
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
shader_type spatial;
|
||||
render_mode skip_vertex_transform;
|
||||
|
||||
uniform vec4 color: source_color;
|
||||
/*uniform vec4 color: source_color;*/
|
||||
|
||||
uniform float diffuse;
|
||||
/*uniform float diffuse;
|
||||
uniform float diffuse_envelope;
|
||||
uniform float specular;
|
||||
uniform float specular_envelope;
|
||||
@@ -14,86 +13,15 @@ uniform float reflectivity_envelope;
|
||||
uniform float translucency;
|
||||
uniform float translucency_envelope;
|
||||
uniform float transparency;
|
||||
uniform float transparency_envelope;
|
||||
uniform float transparency_envelope;*/
|
||||
|
||||
uniform sampler2D tex_color: source_color;
|
||||
uniform int tex_color_axis;
|
||||
uniform int tex_color_projection;
|
||||
uniform mat4 tex_color_projection_transform;
|
||||
uniform vec3 tex_color_projection_falloff;
|
||||
uniform int tex_color_projection_falloff_type;
|
||||
uniform bool tex_color_projection_world_coords;
|
||||
|
||||
uniform sampler2D tex_diffuse: source_color;
|
||||
uniform int tex_diffuse_axis;
|
||||
uniform int tex_diffuse_projection;
|
||||
uniform mat4 tex_diffuse_projection_transform;
|
||||
uniform vec3 tex_diffuse_projection_falloff;
|
||||
uniform int tex_diffuse_projection_falloff_type;
|
||||
uniform bool tex_diffuse_projection_world_coords;
|
||||
|
||||
varying vec3 position;
|
||||
varying vec3 normal;
|
||||
|
||||
vec3 project(
|
||||
sampler2D tex,
|
||||
int mode,
|
||||
mat4 transform,
|
||||
vec3 falloff,
|
||||
int falloff_type,
|
||||
bool world_coords,
|
||||
vec2 uv,
|
||||
) {
|
||||
switch (mode) {
|
||||
case 5: // UV
|
||||
return texture(tex, uv).rgb;
|
||||
case 4: // Front Projection
|
||||
return vec3(0.0, 1.0, 0.0);
|
||||
case 3:
|
||||
vec3 p = (transform * vec4(position, 1.0)).xyz;
|
||||
vec3 n = normalize(abs(mat3(transform) * normal));
|
||||
vec2 uv2 = (n.x > n.y && n.x > n.z) ? p.zy
|
||||
: ((n.y > n.x && n.y > n.z) ? p.zx : p.xy);
|
||||
return texture(tex, uv2 + 0.5).rgb;
|
||||
case 2: // Spherical
|
||||
return vec3(0.0, 0.0, 1.0);
|
||||
case 1: // Cylindrical
|
||||
return vec3(1.0, 1.0, 0.0);
|
||||
case 0: // Planar
|
||||
return texture(tex, (transform * vec4(position, 1.0)).zx + 0.5).rgb;
|
||||
default:
|
||||
return vec3(0.0);
|
||||
}
|
||||
}
|
||||
|
||||
void vertex() {
|
||||
position = VERTEX;
|
||||
VERTEX = (MODELVIEW_MATRIX * vec4(VERTEX, 1.0)).xyz;
|
||||
NORMAL = normalize((MODELVIEW_MATRIX * vec4(NORMAL, 0.0)).xyz);
|
||||
}
|
||||
|
||||
void fragment() {
|
||||
normal = (INV_VIEW_MATRIX * vec4(NORMAL, 0.0)).xyz;
|
||||
|
||||
ALBEDO = project(
|
||||
tex_color,
|
||||
tex_color_projection,
|
||||
tex_color_projection_transform,
|
||||
tex_color_projection_falloff,
|
||||
tex_color_projection_falloff_type,
|
||||
tex_color_projection_world_coords,
|
||||
UV2
|
||||
);
|
||||
ALBEDO = texture(tex_color, UV).rgb;
|
||||
}
|
||||
|
||||
void light() {
|
||||
DIFFUSE_LIGHT = project(
|
||||
tex_diffuse,
|
||||
tex_diffuse_projection,
|
||||
tex_diffuse_projection_transform,
|
||||
tex_diffuse_projection_falloff,
|
||||
tex_diffuse_projection_falloff_type,
|
||||
tex_diffuse_projection_world_coords,
|
||||
UV
|
||||
);
|
||||
DIFFUSE_LIGHT = texture(tex_diffuse, UV2).rgb;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,18 @@
|
||||
use crate::lwo::material::MaterialUvInfo;
|
||||
use crate::lwo::material::{MaterialProjectionMode, MaterialUvInfo};
|
||||
use crate::lwo::surface_info::SurfaceInfo;
|
||||
use godot::builtin::{Array, Dictionary, Vector2, Vector3};
|
||||
use godot::engine::mesh::{ArrayFormat, PrimitiveType};
|
||||
use crate::lwo::uv_baker::{project_cubic, project_planar};
|
||||
use godot::builtin::{
|
||||
Array, Dictionary, FromVariant, PackedVector2Array, PackedVector3Array, ToVariant, Vector2,
|
||||
Vector3,
|
||||
};
|
||||
use godot::engine::mesh::{ArrayFormat, ArrayType, PrimitiveType};
|
||||
use godot::engine::{ArrayMesh, SurfaceTool};
|
||||
use godot::log::godot_print;
|
||||
use godot::obj::{Gd, Share};
|
||||
use godot::obj::{EngineEnum, Gd, Share};
|
||||
use itertools::Itertools;
|
||||
use lightwave_3d::lwo2::tags::polygon_list::PolygonList;
|
||||
use std::collections::HashMap;
|
||||
use std::iter::zip;
|
||||
|
||||
pub type SurfaceMapping<T> = HashMap<i32, HashMap<i32, T>>;
|
||||
|
||||
@@ -75,16 +80,52 @@ fn post_process_mesh(
|
||||
tool.create_from(mesh.share().upcast(), surface_idx as i64);
|
||||
tool.generate_normals(false);
|
||||
tool.generate_tangents();
|
||||
let mut arrays = tool.commit_to_arrays();
|
||||
|
||||
let mat = &materials[surface_id];
|
||||
for (uv_type, info) in [
|
||||
(ArrayType::ARRAY_TEX_UV, &mat.color_projection),
|
||||
(ArrayType::ARRAY_TEX_UV2, &mat.diffuse_projection),
|
||||
] {
|
||||
match info {
|
||||
Some(MaterialProjectionMode::Planar { transform, axis }) => {
|
||||
let vertices = PackedVector3Array::from_variant(
|
||||
&arrays.get(ArrayType::ARRAY_VERTEX.ord() as usize),
|
||||
)
|
||||
.to_vec();
|
||||
let mut uvs = PackedVector2Array::new();
|
||||
for vertex in vertices {
|
||||
uvs.push(project_planar(vertex, *axis, *transform))
|
||||
}
|
||||
arrays.set(uv_type.ord() as usize, uvs.to_variant());
|
||||
}
|
||||
Some(MaterialProjectionMode::Cubic { transform }) => {
|
||||
let vertices = PackedVector3Array::from_variant(
|
||||
&arrays.get(ArrayType::ARRAY_VERTEX.ord() as usize),
|
||||
)
|
||||
.to_vec();
|
||||
let normals = PackedVector3Array::from_variant(
|
||||
&arrays.get(ArrayType::ARRAY_NORMAL.ord() as usize),
|
||||
)
|
||||
.to_vec();
|
||||
let mut uvs = PackedVector2Array::new();
|
||||
for (vertex, normal) in zip(vertices, normals) {
|
||||
uvs.push(project_cubic(vertex, normal, *transform))
|
||||
}
|
||||
arrays.set(uv_type.ord() as usize, uvs.to_variant());
|
||||
}
|
||||
_ => (),
|
||||
}
|
||||
}
|
||||
|
||||
out_mesh.add_surface_from_arrays(
|
||||
PrimitiveType::PRIMITIVE_TRIANGLES,
|
||||
tool.commit_to_arrays(),
|
||||
arrays,
|
||||
Array::new(),
|
||||
Dictionary::new(),
|
||||
ArrayFormat::ARRAY_FORMAT_NORMAL,
|
||||
);
|
||||
|
||||
let mat = &materials[surface_id];
|
||||
out_mesh.surface_set_material(surface_idx as i64, mat.material.share().upcast())
|
||||
}
|
||||
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
use godot::builtin::{Basis, Color, EulerOrder, ToVariant, Transform3D, Variant, Vector3};
|
||||
use godot::builtin::{Basis, Color, EulerOrder, ToVariant, Transform3D, Vector3};
|
||||
use godot::engine::{load, PlaceholderTexture2D, ShaderMaterial, Texture2D};
|
||||
use godot::log::{godot_error, godot_print};
|
||||
use godot::obj::{Gd, Share};
|
||||
use lightwave_3d::lwo2::sub_tags::blocks::image_texture::{
|
||||
ProjectionMode, SurfaceBlockImageTextureSubChunk,
|
||||
};
|
||||
use lightwave_3d::lwo2::sub_tags::blocks::texture_mapping::{
|
||||
CoordinateSystem, FalloffType, TextureMappingSubChunk,
|
||||
};
|
||||
use lightwave_3d::lwo2::sub_tags::blocks::texture_mapping::{FalloffType, TextureMappingSubChunk};
|
||||
use lightwave_3d::lwo2::sub_tags::blocks::{
|
||||
SurfaceBlockHeaderSubChunk, SurfaceBlocks, TextureChannel,
|
||||
};
|
||||
@@ -15,10 +13,17 @@ use lightwave_3d::lwo2::sub_tags::surface_parameters::SurfaceParameterSubChunk;
|
||||
use lightwave_3d::lwo2::tags::surface_definition::SurfaceDefinition;
|
||||
use std::collections::HashMap;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum MaterialProjectionMode {
|
||||
UvChannelName(String),
|
||||
Planar { transform: Transform3D, axis: u16 },
|
||||
Cubic { transform: Transform3D },
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct MaterialUvInfo {
|
||||
pub diffuse_channel: Option<String>,
|
||||
pub color_channel: Option<String>,
|
||||
pub diffuse_projection: Option<MaterialProjectionMode>,
|
||||
pub color_projection: Option<MaterialProjectionMode>,
|
||||
pub material: Gd<ShaderMaterial>,
|
||||
pub id: u16,
|
||||
}
|
||||
@@ -30,8 +35,8 @@ impl MaterialUvInfo {
|
||||
id: u16,
|
||||
) -> Self {
|
||||
let mut m = MaterialUvInfo {
|
||||
diffuse_channel: None,
|
||||
color_channel: None,
|
||||
diffuse_projection: None,
|
||||
color_projection: None,
|
||||
material: ShaderMaterial::new(),
|
||||
id,
|
||||
};
|
||||
@@ -47,8 +52,8 @@ impl MaterialUvInfo {
|
||||
let mut chan = TextureChannel::Color;
|
||||
let mut uv_channel = None;
|
||||
let mut major_axis = 0;
|
||||
let mut transform: Transform3D = Transform3D::IDENTITY;
|
||||
let mut projection_mode = ProjectionMode::UV;
|
||||
let mut mapping_info = Vec::<(&str, Variant)>::new();
|
||||
for attr in header.data.block_attributes {
|
||||
match attr {
|
||||
SurfaceBlockHeaderSubChunk::Channel(c) => {
|
||||
@@ -116,6 +121,7 @@ impl MaterialUvInfo {
|
||||
};
|
||||
}
|
||||
TextureMappingSubChunk::Falloff(it) => {
|
||||
/* TODO
|
||||
mapping_info.push((
|
||||
"falloff",
|
||||
Vector3 {
|
||||
@@ -135,9 +141,10 @@ impl MaterialUvInfo {
|
||||
FalloffType::LinearZ => 4,
|
||||
}
|
||||
.to_variant(),
|
||||
));
|
||||
));*/
|
||||
}
|
||||
TextureMappingSubChunk::CoordinateSystem(it) => {
|
||||
/* TODO
|
||||
mapping_info.push((
|
||||
"world_coords",
|
||||
matches!(
|
||||
@@ -145,7 +152,7 @@ impl MaterialUvInfo {
|
||||
CoordinateSystem::WorldCoordinates
|
||||
)
|
||||
.to_variant(),
|
||||
));
|
||||
));*/
|
||||
}
|
||||
TextureMappingSubChunk::ReferenceObject(it) => {
|
||||
if !matches!(it.object_name.as_str(), "" | "(none)")
|
||||
@@ -156,16 +163,11 @@ impl MaterialUvInfo {
|
||||
}
|
||||
}
|
||||
|
||||
mapping_info.push((
|
||||
"transform",
|
||||
Transform3D {
|
||||
basis: Basis::from_euler(EulerOrder::ZYX, rot)
|
||||
.scaled(size),
|
||||
origin: pos,
|
||||
}
|
||||
.affine_inverse()
|
||||
.to_variant(),
|
||||
));
|
||||
transform = Transform3D {
|
||||
basis: Basis::from_euler(EulerOrder::ZYX, rot).scaled(size),
|
||||
origin: pos,
|
||||
}
|
||||
.affine_inverse()
|
||||
}
|
||||
SurfaceBlockImageTextureSubChunk::MajorAxis(axis) => {
|
||||
major_axis = axis.data.texture_axis;
|
||||
@@ -190,12 +192,7 @@ impl MaterialUvInfo {
|
||||
}
|
||||
}
|
||||
}
|
||||
/*godot_print!(
|
||||
"TX: {:?} ({:?}) @ UV{:?}",
|
||||
chan,
|
||||
projection_mode,
|
||||
uv_channel
|
||||
);*/
|
||||
|
||||
let channel_name = match &chan {
|
||||
TextureChannel::Color => "color",
|
||||
// this is a bit confusing, but this is actually diffuse *lighting*
|
||||
@@ -210,37 +207,29 @@ impl MaterialUvInfo {
|
||||
TextureChannel::Translucency => "translucency",
|
||||
TextureChannel::Luminosity => "luminosity",
|
||||
};
|
||||
m.material.set_shader_parameter(
|
||||
format!("tex_{}_axis", channel_name).into(),
|
||||
major_axis.to_variant(),
|
||||
);
|
||||
m.material.set_shader_parameter(
|
||||
format!("tex_{}_projection", channel_name).into(),
|
||||
match projection_mode {
|
||||
ProjectionMode::Planar => 0,
|
||||
ProjectionMode::Cylindrical => 1,
|
||||
ProjectionMode::Spherical => 2,
|
||||
ProjectionMode::Cubic => 3,
|
||||
ProjectionMode::FrontProjection => 4,
|
||||
ProjectionMode::UV => 5,
|
||||
}
|
||||
.to_variant(),
|
||||
);
|
||||
m.material.set_shader_parameter(
|
||||
format!("tex_{}", channel_name).into(),
|
||||
texture.to_variant(),
|
||||
);
|
||||
|
||||
for (name, value) in mapping_info {
|
||||
m.material.set_shader_parameter(
|
||||
format!("tex_{}_projection_{}", channel_name, name).into(),
|
||||
value,
|
||||
);
|
||||
}
|
||||
let projection_info = match projection_mode {
|
||||
ProjectionMode::UV => {
|
||||
MaterialProjectionMode::UvChannelName(uv_channel.unwrap())
|
||||
}
|
||||
ProjectionMode::Cubic => MaterialProjectionMode::Cubic { transform },
|
||||
ProjectionMode::Planar => MaterialProjectionMode::Planar {
|
||||
transform,
|
||||
axis: major_axis,
|
||||
},
|
||||
x => {
|
||||
godot_error!("TODO: {:?}", x);
|
||||
MaterialProjectionMode::UvChannelName("[[unsupported]]".into())
|
||||
}
|
||||
};
|
||||
|
||||
match chan {
|
||||
TextureChannel::Diffuse => m.diffuse_channel = uv_channel,
|
||||
TextureChannel::Color => m.color_channel = uv_channel,
|
||||
TextureChannel::Diffuse => m.diffuse_projection = Some(projection_info),
|
||||
TextureChannel::Color => m.color_projection = Some(projection_info),
|
||||
_ => (),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,3 +5,4 @@ pub(crate) mod material;
|
||||
pub(crate) mod object;
|
||||
pub(crate) mod surface_info;
|
||||
pub(crate) mod unique_vertex;
|
||||
pub(crate) mod uv_baker;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use crate::lwo::intermediate_layer::IntermediateLayer;
|
||||
use crate::lwo::mapping::find_mapping;
|
||||
use crate::lwo::material::MaterialUvInfo;
|
||||
use crate::lwo::material::{MaterialProjectionMode, MaterialUvInfo};
|
||||
use crate::lwo::unique_vertex::UniqueVertex;
|
||||
use godot::builtin::{
|
||||
PackedFloat32Array, PackedInt32Array, PackedVector2Array, PackedVector3Array, ToVariant,
|
||||
@@ -78,13 +78,18 @@ impl SurfaceInfo {
|
||||
|
||||
pub fn collect_from_layer(layer: &IntermediateLayer, material: &MaterialUvInfo) -> Self {
|
||||
let uv_names = [
|
||||
material.color_channel.as_ref(),
|
||||
material.diffuse_channel.as_ref(),
|
||||
material.color_projection.as_ref(),
|
||||
material.diffuse_projection.as_ref(),
|
||||
];
|
||||
|
||||
let uv_subset = uv_names
|
||||
.iter()
|
||||
.map(|it| it.and_then(|it| layer.uv_mappings.iter().find(|(name, _)| name == it)))
|
||||
.map(|it| {
|
||||
it.and_then(|it| {
|
||||
layer.uv_mappings.iter().find(|(name, _)|
|
||||
matches!(it, MaterialProjectionMode::UvChannelName(it) if name == it))
|
||||
})
|
||||
})
|
||||
.collect_vec();
|
||||
|
||||
let mut surface_info = SurfaceInfo {
|
||||
|
||||
49
rust/mhgd/src/lwo/uv_baker.rs
Normal file
49
rust/mhgd/src/lwo/uv_baker.rs
Normal file
@@ -0,0 +1,49 @@
|
||||
use godot::builtin::{Transform3D, Vector2, Vector3};
|
||||
|
||||
enum Axis {
|
||||
X,
|
||||
Y,
|
||||
Z,
|
||||
}
|
||||
|
||||
pub fn project_planar(vertex: Vector3, axis: u16, transform: Transform3D) -> Vector2 {
|
||||
by_axis(
|
||||
transform * vertex,
|
||||
match axis {
|
||||
0 => Axis::X,
|
||||
1 => Axis::Y,
|
||||
2 => Axis::Z,
|
||||
_ => panic!(),
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
pub fn project_cubic(vertex: Vector3, normal: Vector3, transform: Transform3D) -> Vector2 {
|
||||
let p = transform * vertex;
|
||||
let n = (transform.basis * normal).abs().normalized();
|
||||
let axis = if n.x > n.y && n.x > n.z {
|
||||
Axis::X
|
||||
} else if n.y > n.x && n.y > n.z {
|
||||
Axis::Y
|
||||
} else {
|
||||
Axis::Z
|
||||
};
|
||||
by_axis(p, axis)
|
||||
}
|
||||
|
||||
fn by_axis(v: Vector3, axis: Axis) -> Vector2 {
|
||||
match axis {
|
||||
Axis::X => Vector2 {
|
||||
x: v.z + 0.5,
|
||||
y: v.y + 0.5,
|
||||
},
|
||||
Axis::Y => Vector2 {
|
||||
x: v.z + 0.5,
|
||||
y: v.x + 0.5,
|
||||
},
|
||||
Axis::Z => Vector2 {
|
||||
x: v.x + 0.5,
|
||||
y: v.y + 0.5,
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -45,7 +45,9 @@ impl Mhk3Map {
|
||||
};
|
||||
let mut files_to_convert = HashSet::new();
|
||||
for file in archive.files.iter_mut() {
|
||||
let convert = file.path.ends_with(".lwo");
|
||||
let convert = file.path.ends_with(".lwo")
|
||||
|| file.path.ends_with(".bmp")
|
||||
|| file.path.ends_with(".dds");
|
||||
file.path = sarc_path_to_gd(&file.path);
|
||||
if convert {
|
||||
files_to_convert.insert(file.path.clone());
|
||||
|
||||
Reference in New Issue
Block a user