Premier commit

This commit is contained in:
2026-09-01 22:41:37 +02:00
commit 7cff988739
133 changed files with 6412 additions and 0 deletions
+142
View File
@@ -0,0 +1,142 @@
extends Area3D
class_name Alien
const DEATH_SCENE : PackedScene = preload("res://entities/alien/alien_death_effect/alien_death_effect.tscn") as PackedScene
const DEATH_SCENE_TIME : float = 10.
const COLLISION_HEIGHT = 5
const COLLISION_RADIUS = 1.5
const NEIGHBOR_DETECTION_MARGIN = 0.5
const ATTACK_DISTANCE = 6.
const NEIGHBOR_ROTATION = 0.5
const NEIGHBOR_BUMP_FORCE = 4. * AlienHordeManager.CALCULATE_SCATTER_FREQUENCY
const NEIGHBOR_BLOCKED_SPEED_FACTOR = 0.5
const DIRECTION_DRIFT_RANGE = PI/8
const DAMAGE_EFFECT_DURATION : float = 0.5
const DEFAULT_HP : float = 20.
const DEFAULT_DAMAGE_RATE : float = 1.
signal died
enum State {RUNNING, ATTACKING, DEAD}
@export var size : float = 1.0
@export var speed : float = 10.
@export var turn_speed : float = 20.
@onready var damage_rate : float = size * DEFAULT_DAMAGE_RATE
@onready var hp : float = size * DEFAULT_HP
var state : State = State.RUNNING
var damage_effect_last : float = 0.
var id : int = 0
var target : Node3D
@onready var collision_shape : CollisionShape3D = generate_collision_shape()
func _ready():
monitoring = false
func generate_collision_shape() -> CollisionShape3D:
var new_collision_shape : CollisionShape3D= CollisionShape3D.new()
var cylinder_shape : CylinderShape3D = CylinderShape3D.new()
cylinder_shape.height = COLLISION_HEIGHT
cylinder_shape.radius = COLLISION_RADIUS
new_collision_shape.shape = cylinder_shape
new_collision_shape.position = Vector3(0,COLLISION_HEIGHT/2.,0)
add_child(new_collision_shape)
return new_collision_shape
func move(
delta: float,
calculate_direction: bool,
calculate_scatter : bool
):
var target_angle = rotation.y
var current_speed = speed
if calculate_direction and target:
target_angle = calculate_target_angle()
if calculate_scatter:
var collision_right = has_neighbor(1)
var collision_left = has_neighbor(-1)
if collision_left and not collision_right:
target_angle += - NEIGHBOR_ROTATION
position += Vector3.RIGHT.rotated(Vector3.UP, rotation.y) * NEIGHBOR_BUMP_FORCE * delta
elif collision_right and not collision_left:
target_angle += NEIGHBOR_ROTATION
position += Vector3.LEFT.rotated(Vector3.UP, rotation.y) * NEIGHBOR_BUMP_FORCE * delta
elif collision_left and collision_right:
current_speed = speed * get_random().randf_range(0., NEIGHBOR_BLOCKED_SPEED_FACTOR)
rotation.y = lerp_angle(
rotation.y,
target_angle,
min(1, delta*turn_speed)
)
position += Vector3.FORWARD.rotated(Vector3.UP, rotation.y) * current_speed * delta
func calculate_target_angle() -> float:
var target_angle : float = (
Vector2(global_position.z,global_position.x)
- Vector2(target.global_position.z,target.global_position.x)
).normalized().angle()
# Random drift in direction
target_angle += get_random().randf_range(-DIRECTION_DRIFT_RANGE, DIRECTION_DRIFT_RANGE)
return target_angle
func has_neighbor(direction = 1) -> bool:
var space_state = get_world_3d().direct_space_state
var query = PhysicsRayQueryParameters3D.create(
global_position,
global_position + Vector3(
direction * (COLLISION_RADIUS + NEIGHBOR_DETECTION_MARGIN), 0,0
).rotated(Vector3.UP, rotation.y)
)
query.collide_with_areas = true
query.exclude.append(get_rid())
var result = space_state.intersect_ray(query)
return result != {}
func attack_target(delta : float):
if target and target.has_method("hit"):
target.hit(delta * damage_rate)
func hit(damage = 1.):
hp = max(0, hp - damage)
damage_effect_last = DAMAGE_EFFECT_DURATION
if hp == 0:
die()
func die():
died.emit()
state = State.DEAD
collision_shape.disabled = true
add_child(DEATH_SCENE.instantiate())
await get_tree().create_timer(DEATH_SCENE_TIME).timeout
queue_free()
func get_random() -> RandomNumberGenerator:
var random : RandomNumberGenerator = RandomNumberGenerator.new()
random.seed = id
return random
+1
View File
@@ -0,0 +1 @@
uid://bkfr1dvvrmota
+43
View File
@@ -0,0 +1,43 @@
[gd_scene format=3 uid="uid://10ogf77klwu"]
[ext_resource type="Script" uid="uid://bkfr1dvvrmota" path="res://entities/alien/alien.gd" id="1_qp64o"]
[ext_resource type="Texture2D" uid="uid://dvgqy34aw6xfc" path="res://entities/mecha/assets/textures/pointer.svg" id="3_ym0y8"]
[sub_resource type="CylinderShape3D" id="CylinderShape3D_g4v7s"]
height = 4.0
radius = 1.5
[node name="Alien" type="Area3D" unique_id=537229132]
monitoring = false
monitorable = false
script = ExtResource("1_qp64o")
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=209124875]
unique_name_in_owner = true
shape = SubResource("CylinderShape3D_g4v7s")
[node name="ColliderRayCast3D" type="RayCast3D" parent="." unique_id=303441313]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 2, -0.1)
target_position = Vector3(0, -2, 0)
[node name="NeighborRRayCast3D" type="RayCast3D" parent="." unique_id=91948683]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0.1, 2, 0.5)
target_position = Vector3(2, 0, 0)
collide_with_areas = true
collide_with_bodies = false
[node name="NeighborLRayCast3D" type="RayCast3D" parent="." unique_id=580620392]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, -0.1, 2, 0.5)
target_position = Vector3(-2, 0, 0)
collide_with_areas = true
collide_with_bodies = false
[node name="Indicator" type="Sprite3D" parent="." unique_id=1377230752]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.514289, 0)
visible = false
billboard = 1
texture = ExtResource("3_ym0y8")
@@ -0,0 +1,5 @@
extends Node3D
func _ready():
%ExplosionGPUParticles3D.emitting = true
%CorpseGPUParticles3D.emitting = true
@@ -0,0 +1 @@
uid://lhn14psdj7hr
@@ -0,0 +1,121 @@
[gd_scene format=3 uid="uid://mi0hwb80ud8h"]
[ext_resource type="Script" uid="uid://lhn14psdj7hr" path="res://entities/alien/alien_death_effect/alien_death_effect.gd" id="1_vt2i7"]
[ext_resource type="ArrayMesh" uid="uid://667gyf6p35nw" path="res://entities/alien/assets/3d/alien_part.tres" id="2_on0xa"]
[sub_resource type="Gradient" id="Gradient_t4u1q"]
offsets = PackedFloat32Array(0, 0.8219697, 1)
colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_p1u0y"]
gradient = SubResource("Gradient_t4u1q")
[sub_resource type="Curve" id="Curve_p83er"]
_data = [Vector2(0, 0), 0.0, 2.7057414, 0, 0, Vector2(0.8, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
point_count = 3
[sub_resource type="CurveTexture" id="CurveTexture_3gngh"]
curve = SubResource("Curve_p83er")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_g4v7s"]
lifetime_randomness = 0.5
angle_min = 1.0728835e-05
angle_max = 1.0728835e-05
direction = Vector3(0, 1, 0)
spread = 114.231
initial_velocity_min = 2.0
initial_velocity_max = 3.0
radial_velocity_min = -2.2351742e-05
radial_velocity_max = 0.39997762
gravity = Vector3(0, 0, 0)
use_scale_3d = true
scale_3d_min = Vector3(1, 1, 1)
scale_3d_max = Vector3(1, 1, 1)
scale_min = 0.5
scale_max = 0.5
scale_curve = SubResource("CurveTexture_3gngh")
color_ramp = SubResource("GradientTexture1D_p1u0y")
hue_variation_min = -2.2351742e-08
hue_variation_max = 0.09999997
[sub_resource type="Gradient" id="Gradient_d6cdn"]
interpolation_mode = 1
colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_fcnqv"]
gradient = SubResource("Gradient_d6cdn")
fill = 1
fill_from = Vector2(0.5, 0.5)
fill_to = Vector2(1, 0.5)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_57qmd"]
transparency = 1
shading_mode = 0
vertex_color_use_as_albedo = true
albedo_color = Color(0.73333335, 0.6156863, 0.69803923, 1)
albedo_texture = SubResource("GradientTexture2D_fcnqv")
billboard_mode = 1
billboard_keep_scale = true
[sub_resource type="QuadMesh" id="QuadMesh_yf5fn"]
material = SubResource("StandardMaterial3D_57qmd")
[sub_resource type="Curve" id="Curve_kxalf"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.8793103, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
point_count = 3
[sub_resource type="CurveTexture" id="CurveTexture_fcnqv"]
curve = SubResource("Curve_kxalf")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_emcji"]
lifetime_randomness = 0.5
angle_min = 1.0728835e-05
angle_max = 1.0728835e-05
use_rotation_3d = true
rotation_3d_min = Vector3(0, 0, 0)
rotation_3d_max = Vector3(360, 360, 360)
inherit_velocity_ratio = 1.0
direction = Vector3(0, 1, 0)
spread = 33.462
initial_velocity_min = 4.0
initial_velocity_max = 6.0
radial_velocity_min = -2.2351742e-05
radial_velocity_max = 0.39997762
gravity = Vector3(0, -9.1, 0)
scale_min = 0.59999996
scale_curve = SubResource("CurveTexture_fcnqv")
collision_mode = 1
collision_friction = 1.0
collision_bounce = 0.5
[node name="AlienDeathEffect" type="Node3D" unique_id=1248383251]
script = ExtResource("1_vt2i7")
[node name="ExplosionGPUParticles3D" type="GPUParticles3D" parent="." unique_id=416874722]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.2686481, -0.70010376)
emitting = false
amount = 20
one_shot = true
speed_scale = 3.0
explosiveness = 1.0
local_coords = true
process_material = SubResource("ParticleProcessMaterial_g4v7s")
draw_pass_1 = SubResource("QuadMesh_yf5fn")
[node name="CorpseGPUParticles3D" type="GPUParticles3D" parent="." unique_id=810474087]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.2686481, -0.70010376)
emitting = false
amount = 5
lifetime = 10.0
one_shot = true
speed_scale = 2.0
explosiveness = 1.0
local_coords = true
process_material = SubResource("ParticleProcessMaterial_emcji")
draw_pass_1 = ExtResource("2_on0xa")
[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="." unique_id=813937432]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
size = Vector3(12, 2, 12)
@@ -0,0 +1,143 @@
extends Node
class_name AlienHordeManager
const CALCULATE_TARGET_FREQUENCY = 10
const CALCULATE_DIRECTION_FREQUENCY = 10
const CALCULATE_SCATTER_FREQUENCY = 5
const CALCULATE_STATE_FREQUENCY = 5
const ATTACK_DISTANCE = 10.
const MECHA_ATTACK_DISTANCE = 5.
const MAX_ALIEN_MECHA_AGGRO_DISTANCE = 100
const ALIEN_RANDOM_SCALE = 0.3
const MASTODONT_CHANCE = 0.01
const MASTODONT_SCALE_FACTOR = 4.
@export var hex_map : HexMap
@export var mecha : Mecha
@onready var multimeshes : Array[MultiMeshInstance3D] = [
%RunningAlienMultiMesh,
%AttackingAlienMultiMesh
]
@onready var targets : Array = hex_map.get_all_tiles_with_id("House")
var current_frame : int = 0
var alien_id_acc : int = 0
var aliens : Array[Alien] = []
func _physics_process(delta):
current_frame += 1
for t in targets:
if t is HouseHexTile:
if t.destroyed:
targets.erase(t)
# if current_frame % CALCULATE_CLUSTERS_FREQUENCY == 0:
# calculate_clusters()
calculate_target()
calculate_state()
update_horde(delta)
spawn_models(delta)
func spawn_alien(position : Vector3, rotation: float) -> Alien:
var alien : Alien = Alien.new()
alien.id = alien_id_acc
alien.position = position
alien.rotation.y = rotation
var is_mastodont = randf() < MASTODONT_CHANCE
alien.size = randf_range(1. - ALIEN_RANDOM_SCALE, 1. + ALIEN_RANDOM_SCALE) * (MASTODONT_SCALE_FACTOR if is_mastodont else 1.)
alien.scale = Vector3.ONE * alien.size
add_child(alien)
aliens.append(alien)
alien.died.connect(
func():
aliens.erase(alien)
)
alien_id_acc += 1
return alien
func calculate_target():
for alien in aliens:
if (current_frame + alien.id)%CALCULATE_TARGET_FREQUENCY and alien.state != Alien.State.DEAD :
if (
len(targets) == 0
or mecha.position.distance_to(alien.position) < alien.get_random().randf_range(0., MAX_ALIEN_MECHA_AGGRO_DISTANCE)
):
alien.target = mecha
else :
var old_target = alien.target
alien.target = targets[alien.get_random().randi() % len(targets)]
if old_target != alien.target:
alien.state = Alien.State.RUNNING
func calculate_state():
for alien in aliens:
if (current_frame + alien.id)%CALCULATE_STATE_FREQUENCY and alien.state != Alien.State.DEAD and alien.target:
var target_attack_distance = MECHA_ATTACK_DISTANCE if alien.target is Mecha else ATTACK_DISTANCE
alien.state = (
Alien.State.RUNNING if alien.target.position.distance_to(alien.position) > target_attack_distance
else Alien.State.ATTACKING
)
func update_horde(delta):
for alien in aliens:
match alien.state:
Alien.State.RUNNING:
alien.move(
delta,
(current_frame + alien.id)%CALCULATE_DIRECTION_FREQUENCY,
(current_frame + alien.id)%CALCULATE_SCATTER_FREQUENCY
)
Alien.State.ATTACKING:
alien.attack_target(delta)
func alien_to_multimesh_id(alien : Alien) -> int:
match alien.state:
Alien.State.RUNNING:
return 0
Alien.State.ATTACKING:
return 1
_: return -1
func spawn_models(delta):
for m_id in range(len(multimeshes)):
var multimesh = multimeshes[m_id].multimesh
multimesh.instance_count = len(aliens)
for i in range(len(aliens)):
var alien = aliens[i]
var is_current = m_id == alien_to_multimesh_id(alien)
multimesh.set_instance_transform(
i,
alien.transform.scaled(Vector3.ONE if is_current else Vector3.ZERO)
)
if alien.damage_effect_last > 0:
alien.damage_effect_last -= delta
multimesh.set_instance_custom_data(
i,
Color(
alien.id,
alien.damage_effect_last > 0,
alien.size,
0
))
multimesh.set_instance_color(i ,Color(alien.get_random().randi()%255,alien.get_random().randi()%255,alien.get_random().randi()%255))
func is_alien_alive(alien):
return alien and alien is Alien and alien.hp > 0
@@ -0,0 +1 @@
uid://bsiixctjr7ml4
@@ -0,0 +1,28 @@
[gd_scene format=3 uid="uid://brr2idsr7qmpf"]
[ext_resource type="ArrayMesh" uid="uid://cgv8clg8y80on" path="res://entities/alien/assets/vat/running_alien_vat/alien_mesh.tres" id="1_0bggl"]
[ext_resource type="Script" uid="uid://bsiixctjr7ml4" path="res://entities/alien/alien_horde_manager/alien_horde_manager.gd" id="1_hjbcl"]
[ext_resource type="ArrayMesh" uid="uid://chhggu10sxmuc" path="res://entities/alien/assets/vat/attacking_alien_vat/alien_mesh.tres" id="2_hjbcl"]
[sub_resource type="MultiMesh" id="MultiMesh_33mok"]
transform_format = 1
use_colors = true
use_custom_data = true
mesh = ExtResource("2_hjbcl")
[sub_resource type="MultiMesh" id="MultiMesh_tj3hn"]
transform_format = 1
use_colors = true
use_custom_data = true
mesh = ExtResource("1_0bggl")
[node name="AlienHordeManager" type="Node" unique_id=1604717993]
script = ExtResource("1_hjbcl")
[node name="AttackingAlienMultiMesh" type="MultiMeshInstance3D" parent="." unique_id=1055420147]
unique_name_in_owner = true
multimesh = SubResource("MultiMesh_33mok")
[node name="RunningAlienMultiMesh" type="MultiMeshInstance3D" parent="." unique_id=245629817]
unique_name_in_owner = true
multimesh = SubResource("MultiMesh_tj3hn")
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,75 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://cyjynungpt2a6"
path="res://.godot/imported/alien_part.blend-3b5a9ff739e267fe3e3ee37a08e055a3.scn"
[deps]
source_file="res://entities/alien/assets/3d/alien_part.blend"
dest_files=["res://.godot/imported/alien_part.blend-3b5a9ff739e267fe3e3ee37a08e055a3.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
mesh_library/use_node_names_as_mesh_names=false
array_mesh/deduplicate_surfaces=true
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=false
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={
"meshes": {
"alien_part_Plane_002": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 20.0,
"save_to_file/enabled": true,
"save_to_file/fallback_path": "res://entities/alien/assets/3d/alien_part.tres",
"save_to_file/path": "uid://dbxb76bsurcoy"
}
}
}
blender/nodes/visible=0
blender/nodes/active_collection_only=false
blender/nodes/punctual_lights=true
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/vertex_colors=1
blender/meshes/uvs=true
blender/meshes/normals=true
blender/meshes/export_geometry_nodes_instances=false
blender/meshes/gpu_instances=false
blender/meshes/tangents=true
blender/meshes/skins=2
blender/meshes/export_bones_deforming_mesh_only=false
blender/materials/unpack_enabled=true
blender/materials/export_materials=1
blender/animation/limit_playback=true
blender/animation/always_sample=true
blender/animation/group_tracks=true
gltf/naming_version=2
gltf/texture_map_mode=1
Binary file not shown.
+37
View File
@@ -0,0 +1,37 @@
[gd_resource type="ArrayMesh" format=4 uid="uid://667gyf6p35nw"]
[ext_resource type="Material" uid="uid://41afldgohk0o" path="res://common/materials/default3d.tres" id="1_ndtte"]
[sub_resource type="ArrayMesh" id="ArrayMesh_ndtte"]
_surfaces = [{
"aabb": AABB(-0.875597, -0.4483304, -0.68256557, 1.751194, 1.2514424, 1.2417288),
"format": 34359742465,
"index_count": 102,
"index_data": PackedByteArray("CQABAAIAAwABAAkAAAADAAkAAAAEAAMACQAMAAAAAAAFAAQADAAFAAAACgAMAAkAAgAKAAkABQAMAA0ACgANAAwACgAOAA0ABQANAA4AAgAPAAoAEAAOAAoAEAAKAA8ABQAOABAAAgARAA8AEAAPABEABQAQABIAEAARABIAEQATABIAFAASABMAEQAUABMAFAAFABIAAgAGABEAEQAGABQABgACAAcACAAGAAcABgALABQACwAGAAgABQAUAAsACwAIAAQABQALAAQA"),
"lods": [0.7015672, PackedByteArray("CQABAAIAAwABAAkAAAADAAkAAAAEAAMAAgAKAAkACgAAAAkACgACAAYABgACAAcACgAFAAAACgAGAAUAAAAFAAQACAAGAAcABgALAAUACwAGAAgABQALAAQACwAIAAQA"), 1.0523508, PackedByteArray("AAABAAIAAwABAAAAAAAEAAMAAgAFAAAAAAAFAAQAAgAGAAUABQAGAAQABgACAAcABgAIAAQACAAGAAcA")],
"name": "Material",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 21,
"vertex_data": PackedByteArray("ISdgPwiTGr5SJQ8/2gkwu8CYTT/gi28+sCxlsxiS6j7A4Qc9WD6TuiCyRz5Agb0+eNEDMyj6Ir78ywo/8AUBM/xJ5b6uUCq/yAYav7B/QD78Mbg+vgkwO8CYTT/Yi28+fD2TOiCyRz5Agb0+xwYaP8B/QD4AMrg+SncBP4DqSTxQA5a+ICdgvwiTGr5SJQ8/tQk6P8iij7748Gs+tQk6P9TYvr4Au3C+dmqQPoiL5b5mRyq/YCOHsjjmwD44ErK+wPeaMfAN9b2evC6/S3cBv4DqSTxQA5a+dGqQvpCL5b52Ryq/tQk6v9jYvr4gu3C+tQk6v8iij7748Gs+")
}]
blend_shape_mode = 0
[resource]
resource_name = "alien_part_Plane_002"
_surfaces = [{
"aabb": AABB(-0.875597, -0.4483304, -0.68256557, 1.751194, 1.2514424, 1.2417288),
"attribute_data": PackedByteArray("qFa/PjyPYT+oVr8+bMeHPqhWvz6Sn88+qFa/PsO5YD+oVr8+VoVhP6hWvz5MFyM/qFa/PmzHhz5C8Lg+VCp8P0LwuD6uI3w/QvC4PsEEUj9C8Lg+YD4SP0LwuD4MM1I/QvC4PsEEUj9C8Lg+YD4SP6hWvz5MFyM/qFa/PkWOIz+oVr8+PI9hP0LwuD4MM1I/QvC4PlQqfD+oVr8+RY4jP6hWvz4uv9E+qFa/PsuPYT+oVr8+y49hP6hWvz7gzmA/qFa/PhzSLD+oVr8+4M5gP6hWvz7Lj2E/qFa/PsuPYT8="),
"format": 34359742487,
"index_count": 102,
"index_data": PackedByteArray("DgABAAIABQACAAYAAgAPAA4AAgAFABMAAgAUAA8AAgATABQAEwAFABUABQAQABUAEwAVABYAAwAVABAAAwAQAAQAFQAXABYAEwAWABcAFQADABcAGAAUABMAGAATABcAGAAPABQAAwAYABcAGAAZAA8AAwAZABgADwAZABoAAwAaABkAAAADAAQADwAaABsAAwAbABoAGwADAAAADwAbAA4ADgAbAAAABwAJABEACQAKABEABwAIAAkAEgAMAAgAEgALAAwADAALAA0A"),
"lods": [0.7015672, PackedByteArray("DgABAAIAAgAPAA4ADwAAAA4ADwACAAUABQACAAYADwADAAAADwAFAAMAAAADAAQABQAQAAMAAwAQAAQABwAJABEACQAKABEABwAIAAkAEgAMAAgAEgALAAwADAALAA0A"), 1.0523508, PackedByteArray("AAABAAIAAgADAAAAAAADAAQAAwAFAAQAAgAFAAMABQACAAYABwAIAAkACQAKAAcACwAMAAgADAALAA0A")],
"material": ExtResource("1_ndtte"),
"name": "Material",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 28,
"vertex_data": PackedByteArray("ISdgPwiTGr5SJQ8/2gkwu8CYTT/gi28+sCxlsxiS6j7A4Qc98AUBM/xJ5b6uUCq/eNEDMyj6Ir78ywo/yAYav7B/QD78Mbg+vgkwO8CYTT/Yi28+ISdgPwiTGr5SJQ8/eNEDMyj6Ir78ywo/WD6TuiCyRz5Agb0+2gkwu8CYTT/gi28+yAYav7B/QD78Mbg+fD2TOiCyRz5Agb0+vgkwO8CYTT/Yi28+xwYaP8B/QD4AMrg+SncBP4DqSTxQA5a+ICdgvwiTGr5SJQ8/xwYaP8B/QD4AMrg+ICdgvwiTGr5SJQ8/S3cBv4DqSTxQA5a+YCOHsjjmwD44ErK+tQk6v8iij7748Gs+tQk6v9jYvr4gu3C+dGqQvpCL5b52Ryq/wPeaMfAN9b2evC6/dmqQPoiL5b5mRyq/tQk6P9TYvr4Au3C+tQk6P8iij7748Gs+gMYlbv///z8Gvsu9////P4G2//////+/YbYAAP///7//f0FY////PwJSkLb///8/+EHLvf///z+AxiVu////P/9/QVj///8/wIBjov///z8Gvsu9////PwJSkLb///8/Pn9jov///z/4Qcu9////P/ytkLb///8/hth3zP///79+OSVu////P/ytkLb///8/fjklbv///z94J3fM////v6i0//////+/SyvGTf///79lK7xC////v6AuBx3///+/MNv//////79e0Qcd////v5nUvEL///+/s9TGTf///78=")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_ndtte")
@@ -0,0 +1,29 @@
[gd_resource type="ShaderMaterial" format=3 uid="uid://b48t0vv053qrt"]
[ext_resource type="Shader" uid="uid://gjx57s1ye44t" path="res://entities/alien/assets/shader/vat.gdshader" id="1_nk817"]
[ext_resource type="Texture2D" uid="uid://cmyt23s5n76ak" path="res://entities/alien/assets/textures/alien_base_color.png" id="2_a2hb3"]
[ext_resource type="Texture2D" uid="uid://4peb6wokfoyu" path="res://entities/alien/assets/textures/alien_normal.png" id="3_7iaoq"]
[ext_resource type="Texture2D" uid="uid://cbjj8cusm385o" path="res://entities/alien/assets/vat/attacking_alien_vat/Alien_vat.exr" id="4_nk817"]
[resource]
render_priority = 0
shader = ExtResource("1_nk817")
shader_parameter/vertex_animation_texture = ExtResource("4_nk817")
shader_parameter/min_bounds = Vector3(-0.2, -0.8, -0.4)
shader_parameter/max_bounds = Vector3(1, 2.2, 4.9)
shader_parameter/autoplay = true
shader_parameter/autoplay_speed = 30.0
shader_parameter/frame = 12.0
shader_parameter/use_uv_1 = false
shader_parameter/cull_mode = 0
shader_parameter/albedo_map = ExtResource("2_a2hb3")
shader_parameter/albedo_tint = Color(1, 1, 1, 1)
shader_parameter/occlusion_channel = Color(1, 0, 0, 1)
shader_parameter/occlusion = 1.0
shader_parameter/roughness_channel = Color(0, 1, 0, 1)
shader_parameter/roughness = 1.0
shader_parameter/metallic_channel = Color(0, 0, 1, 1)
shader_parameter/metallic = 1.0
shader_parameter/specular = 0.5
shader_parameter/normal_map = ExtResource("3_7iaoq")
shader_parameter/normal_map_scale = 1.0
@@ -0,0 +1,29 @@
[gd_resource type="ShaderMaterial" format=3 uid="uid://b7o0pgg1fweqq"]
[ext_resource type="Shader" uid="uid://gjx57s1ye44t" path="res://entities/alien/assets/shader/vat.gdshader" id="1_ig0tm"]
[ext_resource type="Texture2D" uid="uid://cmyt23s5n76ak" path="res://entities/alien/assets/textures/alien_base_color.png" id="2_cxjnj"]
[ext_resource type="Texture2D" uid="uid://4peb6wokfoyu" path="res://entities/alien/assets/textures/alien_normal.png" id="3_1leus"]
[ext_resource type="Texture2D" uid="uid://cxy6bh1jymqsk" path="res://entities/alien/assets/vat/running_alien_vat/Alien_vat.exr" id="3_ig0tm"]
[resource]
render_priority = 0
shader = ExtResource("1_ig0tm")
shader_parameter/vertex_animation_texture = ExtResource("3_ig0tm")
shader_parameter/min_bounds = Vector3(-0.2, -2, -0.9)
shader_parameter/max_bounds = Vector3(0.1, 3.4, 1.1)
shader_parameter/autoplay = true
shader_parameter/autoplay_speed = 30.0
shader_parameter/frame = 12.0
shader_parameter/use_uv_1 = false
shader_parameter/cull_mode = 0
shader_parameter/albedo_map = ExtResource("2_cxjnj")
shader_parameter/albedo_tint = Color(1, 1, 1, 1)
shader_parameter/occlusion_channel = Color(1, 0, 0, 1)
shader_parameter/occlusion = 1.0
shader_parameter/roughness_channel = Color(0, 1, 0, 1)
shader_parameter/roughness = 1.0
shader_parameter/metallic_channel = Color(0, 0, 1, 1)
shader_parameter/metallic = 1.0
shader_parameter/specular = 0.5
shader_parameter/normal_map = ExtResource("3_1leus")
shader_parameter/normal_map_scale = 1.0
+169
View File
@@ -0,0 +1,169 @@
// Shader stolen here : https://godotshaders.com/shader/vertex-animation-texture-uses-openvat-output/
shader_type spatial;
render_mode cull_disabled; // Prevents GPU hardware culling so shader can handle it
/*
For use with models exported from Blender using the OpenVAT plugin.
Expects:
Vertex Normals - Packed (Math gets too complex to include a toggle. Making a separate shader recommended if normals are not needed.)
Use Single Row - On
Export Model - On
Model Format - glTF Binary. (Unsure why the otherse do not work)
Ensure .exr file is set to Lossless compression and MipMaps - Off.
*/
// --- Uniforms ---
group_uniforms openVAT_inputs;
/** OpenVAT texture exported from Blender plugin. */
uniform sampler2D vertex_animation_texture : repeat_disable;
/** Min values from the .json file included with OpenVAT exports. */
uniform vec3 min_bounds;
/** Max values from the .json file included with OpenVAT exports. */
uniform vec3 max_bounds;
/** Plays animation automatically. Turn off to control manually via keyframes. */
uniform bool autoplay = true;
/**
Autoplay speed in frames per second. Defaults to 30.
[b]Blender default is 24. May require adjustment either in Blender or Here to match speed.[b]
*/
uniform float autoplay_speed = 30.0;
/** Frame to display if animating manually. */
uniform float frame = 1.0;
/** Enable this if the asset does not have 2 UV sets. */
uniform bool use_uv_1 = false;
/** Cull Mode, editable here for flexibility.
0: Backface Cull
1: Frontface Cull
2: Cull disabled (double sided rendering)*/
uniform int cull_mode : hint_enum("Back:0", "Front:1", "Disabled:2") = 0;
group_uniforms;
group_uniforms Albedo_map;
uniform sampler2D albedo_map : source_color, hint_default_white;
uniform vec4 albedo_tint : source_color = vec4(1.0);
group_uniforms;
group_uniforms ORM_inputs;
/**
[b]ORM texture.[/b] Standardized detail maps for PBR materials. Ignore, remap, or remove as needed.
[b]O[/b]cclusion (Ambient)
[b]R[/b]oughness
[b]M[/b]etallic
*/
uniform sampler2D orm_map : hint_default_white;
/** Select channel used by Occlusion map. R G [b]or[/b] B, combining will have strange results */
uniform vec4 occlusion_channel : source_color = vec4(1.0, 0.0, 0.0, 1.0);
/** Strength of Occlusion*/
uniform float occlusion : hint_range(0.0, 1.0) = 1.0;
/** Select channel used by Roughness map. R G [b]or[/b] B, combining will have strange results */
uniform vec4 roughness_channel : source_color = vec4(0.0, 1.0, 0.0, 1.0);
/** Strength of Roughness*/
uniform float roughness : hint_range(0.0, 1.0) = 1.0;
/** Select channel used by Metallic map. R G [b]or[/b] B, combining will have strange results */
uniform vec4 metallic_channel : source_color = vec4(0.0, 0.0, 1.0, 1.0);
/** Strength of Metallic*/
uniform float metallic : hint_range(0.0, 1.0) = 1.0;
/** Strength of Specular (No Map Included)*/
uniform float specular : hint_range(0.0, 1.0) = 0.5;
group_uniforms;
group_uniforms Normal_map;
uniform sampler2D normal_map : hint_roughness_normal;
uniform float normal_map_scale : hint_range(-10.0, 10.0) = 1.0;
/** Passed data from INSTANCE_CUSTOM_VARIABLE :
x : Unique Id
y : Damage effect
z : Size
**/
varying flat float unique_id;
varying flat float damage_effect;
varying flat float size;
float remapFloat(float value, float input_min, float input_max, float output_min, float output_max){
// Code to replicate the remap feature from Visual Shader.
float _input_range = input_max - input_min;
float _output_range = output_max - output_min;
return output_min + _output_range * ((value - input_min) / _input_range);
}
void vertex() {
unique_id = INSTANCE_CUSTOM.x;
damage_effect = INSTANCE_CUSTOM.y;
size = INSTANCE_CUSTOM.z;
// Animation Timing
// ------
// Divided by 2. since bottom half of texture is the normal data.
// Second argument (0) is MipMap level. These VATs use no mipmaps so always 0.
int total_frames = textureSize(vertex_animation_texture, 0).y / 2;
// Checks if Autoplaying is checked
float play_frame = autoplay ? (TIME * autoplay_speed / size) : frame;
// Loops the current frame counter so it stays between 0 and total_frames - 1
float current_frame = mod(play_frame + unique_id, float(total_frames));
// Compute UV Coordinates
// ------
// samples pixel from the center, not the edge. Avoid unwanted bleeding into normal data pixels at the end of the loop.
float center_pixel = current_frame - 0.5;
float vat_y = center_pixel / float(total_frames);
vat_y = clamp(vat_y * 0.5, 0.0, 0.5);
vec2 vat_uv = vec2((use_uv_1 ? UV.x : UV2.x), vat_y);
// Vertex Position Displacement
// ------
vec4 vat_pos_raw = texture(vertex_animation_texture, vat_uv);
// Must go through some remapping to convert Blender to Godot coordinates
vec3 offset_values = vec3(
remapFloat(vat_pos_raw.r, 0.0, 1.0, min_bounds.x, max_bounds.x),
remapFloat(vat_pos_raw.b, 0.0, 1.0, min_bounds.z, max_bounds.z),
remapFloat(vat_pos_raw.g, 1.0, 0.0, min_bounds.y, max_bounds.y)
);
VERTEX += offset_values;
// Normals. 0.5 added to UV.y to shift it down by 1/2 the map - to the normals section.
vec4 vat_norm_raw = texture(vertex_animation_texture, vat_uv + vec2(0.0, 0.5));
vec3 decoded_normals = vec3(
remapFloat(vat_norm_raw.r, 0.0, 1.0, -1.0, 1.0),
remapFloat(vat_norm_raw.b, 0.0, 1.0, -1.0, 1.0),
remapFloat(vat_norm_raw.g, 1.0, 0.0, -1.0, 1.0)
);
NORMAL = normalize(decoded_normals);
// Calculate Tangent and Binormal from computed Normal
TANGENT = normalize(vec3(abs(NORMAL.y) + abs(NORMAL.z), 0.0, -abs(NORMAL.x)));
BINORMAL = normalize(vec3(0.0, abs(NORMAL.x) + abs(NORMAL.z), -abs(NORMAL.y)));
}
void fragment() {
// Cull Mode
if (cull_mode == 0 && !FRONT_FACING) {
discard; // Cull back faces
}
else if (cull_mode == 1 && FRONT_FACING) {
discard; // Cull front faces
}
// Albedo
ALBEDO = texture(albedo_map, UV).rgb * albedo_tint.rgb;
EMISSION = vec3(1.,1.,1.) * damage_effect;
// ORM maps (Occlusion, Roughness, Metallic) Packing
vec4 orm_tex = texture(orm_map, UV);
AO = occlusion * dot(orm_tex.rgb, occlusion_channel.rgb);
ROUGHNESS = roughness * dot(orm_tex.rgb, roughness_channel.rgb);
METALLIC = metallic * dot(orm_tex.rgb, metallic_channel.rgb);
// Specular
SPECULAR = specular;
// Normal Map
NORMAL_MAP = texture(normal_map, UV).rgb;
NORMAL_MAP_DEPTH = normal_map_scale;
}
@@ -0,0 +1 @@
uid://gjx57s1ye44t
Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cmyt23s5n76ak"
path.s3tc="res://.godot/imported/alien_base_color.png-86b98d00ab0dc2f32c9eec134715ed52.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://entities/alien/assets/textures/alien_base_color.png"
dest_files=["res://.godot/imported/alien_base_color.png-86b98d00ab0dc2f32c9eec134715ed52.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0
Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://4peb6wokfoyu"
path.s3tc="res://.godot/imported/alien_normal.png-1cf9a8467a6c91a4f9725d4eaacfcf3f.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://entities/alien/assets/textures/alien_normal.png"
dest_files=["res://.godot/imported/alien_normal.png-1cf9a8467a6c91a4f9725d4eaacfcf3f.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://entities/alien/assets/textures/alien_normal.png"
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0
+57
View File
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="79.375mm"
height="79.375mm"
viewBox="0 0 79.375 79.375"
version="1.1"
id="svg1"
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
sodipodi:docname="stain.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:document-units="mm"
inkscape:zoom="2.2375049"
inkscape:cx="130.27904"
inkscape:cy="161.78736"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs1" />
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1">
<path
style="opacity:1;fill:#ffffff;stroke-width:2.30664;stroke-linecap:round;paint-order:stroke fill markers;fill-opacity:1"
d="M 38.600507,23.826755 C 33.435229,26.617406 23.967905,12.705978 24.302365,13.542127 c 0.334459,0.836148 5.450332,11.19757 3.488055,12.308192 -3.353618,1.898103 -18.037041,-10.71951 -18.037041,-10.71951 0,0 7.412537,9.636789 5.68581,14.548987 -1.130403,3.215773 -8.863175,5.100506 -8.863175,5.100506 0,0 9.071694,-1.522301 10.869932,1.672296 2.071801,3.680585 -4.849662,11.706082 -4.849662,11.706082 0,0 12.541637,-4.879053 15.30152,-0.585304 2.379106,3.701344 -5.936656,11.789697 -5.936656,11.789697 0,0 9.269778,-8.334192 13.766893,-6.103886 5.414476,2.685263 4.180743,17.642735 4.180743,17.642735 0,0 0.304675,-12.335049 4.962837,-14.130912 8.343511,-3.216675 23.579391,12.793076 23.579391,12.793076 0,0 -16.366284,-17.953012 -14.381755,-20.820102 1.468454,-2.121506 11.873309,3.260979 12.709459,3.428209 0.836149,0.16723 -5.713781,-3.30117 -5.184122,-5.853039 0.562559,-2.710379 7.525337,-3.511825 7.525337,-3.511825 0,0 -9.290842,-1.681472 -9.699323,-5.351351 -0.659584,-5.925848 13.378378,-11.873311 13.378378,-11.873311 0,0 -15.447192,6.786266 -17.057432,4.766048 -1.251294,-1.569883 12.040541,-8.612332 12.040541,-8.612332 0,0 -8.720738,4.194812 -12.124156,1.923143 -3.266774,-2.180465 -2.759291,-11.455237 -2.759291,-11.455237 0,0 -2.332874,6.07263 -5.016891,6.354729 -4.251764,0.446876 -9.866554,-8.194256 -9.866554,-8.194256 0,0 4.537013,11.326998 0.585304,13.461993 z"
id="path1"
sodipodi:nodetypes="asscacacacacacssacacscacaca" />
<path
style="opacity:1;fill:#ffffff;stroke-width:2.30664;stroke-linecap:round;paint-order:stroke fill markers;fill-opacity:1"
d="m 19.680232,16.465199 c 0.896728,4.593961 3.477795,7.479963 3.341915,2.902904 -0.05403,-1.819945 -3.341915,-2.902904 -3.341915,-2.902904 z"
id="path2"
sodipodi:nodetypes="czc" />
<path
style="opacity:1;fill:#ffffff;stroke-width:2.30664;stroke-linecap:round;paint-order:stroke fill markers;fill-opacity:1"
d="m 59.353071,52.958861 c -1.811385,2.713194 7.483347,6.307322 7.483347,6.307322 -1.359715,-1.888021 -6.479923,-7.810307 -7.483347,-6.307322 z"
id="path3"
sodipodi:nodetypes="scs" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

@@ -0,0 +1,44 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ci1qyjgjvtpbj"
path.s3tc="res://.godot/imported/stain.svg-f2fdcdf42fafc92b5172e9a1b9c7292d.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://entities/alien/assets/textures/stain.svg"
dest_files=["res://.godot/imported/stain.svg-f2fdcdf42fafc92b5172e9a1b9c7292d.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false
@@ -0,0 +1,16 @@
{
"os-remap": {
"Min": [
-0.2,
-0.8,
-0.4
],
"Max": [
1.0,
2.2,
4.9
],
"Frames": 12
},
"animations": {}
}
@@ -0,0 +1,63 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://blpvoauvdf700"
path="res://.godot/imported/Alien.glb-d7449a099f5202e69c28d18dd7bdda8c.scn"
[deps]
source_file="res://entities/alien/assets/vat/attacking_alien_vat/Alien.glb"
dest_files=["res://.godot/imported/Alien.glb-d7449a099f5202e69c28d18dd7bdda8c.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
mesh_library/use_node_names_as_mesh_names=false
array_mesh/deduplicate_surfaces=true
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=false
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={
"materials": {
"@MATERIAL:0": {
"use_external/enabled": true,
"use_external/path": "uid://b48t0vv053qrt"
}
},
"meshes": {
"Alien_Alien_mesh": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 20.0,
"save_to_file/enabled": true,
"save_to_file/fallback_path": "res://entities/alien/assets/vat/attacking_alien_vat/alien_mesh.tres",
"save_to_file/path": "uid://dmkpueem7h3gg"
}
}
}
gltf/naming_version=2
gltf/embedded_image_handling=1
gltf/texture_map_mode=1
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cbjj8cusm385o"
path="res://.godot/imported/Alien_vat.exr-0e18ace1cc9af2d3f2eab97c0bf74649.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://entities/alien/assets/vat/attacking_alien_vat/Alien_vat.exr"
dest_files=["res://.godot/imported/Alien_vat.exr-0e18ace1cc9af2d3f2eab97c0bf74649.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0
File diff suppressed because one or more lines are too long
@@ -0,0 +1,16 @@
{
"os-remap": {
"Min": [
-0.2,
-2.0,
-0.9
],
"Max": [
0.1,
3.4,
1.1
],
"Frames": 12
},
"animations": {}
}
@@ -0,0 +1,63 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://c8b280nh1i42w"
path="res://.godot/imported/Alien.glb-fad778d224a52bd474cfd3984bcf01f5.scn"
[deps]
source_file="res://entities/alien/assets/vat/running_alien_vat/Alien.glb"
dest_files=["res://.godot/imported/Alien.glb-fad778d224a52bd474cfd3984bcf01f5.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
mesh_library/use_node_names_as_mesh_names=false
array_mesh/deduplicate_surfaces=true
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=false
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={
"materials": {
"@MATERIAL:0": {
"use_external/enabled": true,
"use_external/path": "uid://b7o0pgg1fweqq"
}
},
"meshes": {
"Alien_Alien_mesh_001": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 20.0,
"save_to_file/enabled": true,
"save_to_file/fallback_path": "res://entities/alien/assets/vat/running_alien_vat/alien_mesh.tres",
"save_to_file/path": "uid://cgv8clg8y80on"
}
}
}
gltf/naming_version=2
gltf/embedded_image_handling=1
gltf/texture_map_mode=1
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cxy6bh1jymqsk"
path="res://.godot/imported/Alien_vat.exr-412e4d42f972d99628cc1bff26b09e66.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://entities/alien/assets/vat/running_alien_vat/Alien_vat.exr"
dest_files=["res://.godot/imported/Alien_vat.exr-412e4d42f972d99628cc1bff26b09e66.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0
File diff suppressed because one or more lines are too long