Files
tgcc/core/ai/agents/cat/ai_cat.gd

39 lines
1.1 KiB
GDScript

extends AIBase
class_name AICat
@export_group("Cat Colors")
@export var mesh: MeshInstance3D
@export var fur_colors: Array[Color] = []
@export var eye_colors: Array[Color] = []
@export var fur_material_index: int = 0
@export var eye_material_index: int = 1
func _ready() -> void:
super._ready()
_apply_random_color()
func _apply_random_color() -> void:
if fur_colors.is_empty() or eye_colors.is_empty():
return
if not mesh or not mesh.mesh:
return
var max_index = min(fur_colors.size(), eye_colors.size())
var random_idx = randi() % max_index
_override_material_color(mesh, fur_material_index, fur_colors[random_idx])
_override_material_color(mesh, eye_material_index, eye_colors[random_idx])
func _override_material_color(mesh_node: MeshInstance3D, surface_idx: int, color: Color) -> void:
if surface_idx < 0 or surface_idx >= mesh_node.mesh.get_surface_count():
return
var mat = mesh_node.mesh.surface_get_material(surface_idx)
if mat and mat is StandardMaterial3D:
var new_mat = mat.duplicate() as StandardMaterial3D
new_mat.albedo_color = color
mesh_node.set_surface_override_material(surface_idx, new_mat)