архитектура и цели для агентов

This commit is contained in:
2026-07-10 10:28:37 +04:00
parent f561e52aa9
commit 93bfe114c0
46 changed files with 2826 additions and 55 deletions
+41 -1
View File
@@ -6,7 +6,7 @@
class_name M2Builder
const WOW_M2_MATERIAL := preload("res://addons/mpq_extractor/loaders/wow_m2_material.gd")
const MATERIAL_FORMAT_VERSION := 1
const MATERIAL_FORMAT_VERSION := 2
static var _texture_cache: Dictionary = {}
@@ -164,6 +164,14 @@ static func _build_material(
combiner["stage1_uv_scroll"] = _resolve_texture_scroll(batch, 1, tex_transform_combos, tex_transforms)
combiner["stage2_uv_scroll"] = _resolve_texture_scroll(batch, 2, tex_transform_combos, tex_transforms)
combiner["stage3_uv_scroll"] = _resolve_texture_scroll(batch, 3, tex_transform_combos, tex_transforms)
combiner["stage0_uv_rotation"] = _resolve_texture_rotation(batch, 0, tex_transform_combos, tex_transforms)
combiner["stage1_uv_rotation"] = _resolve_texture_rotation(batch, 1, tex_transform_combos, tex_transforms)
combiner["stage2_uv_rotation"] = _resolve_texture_rotation(batch, 2, tex_transform_combos, tex_transforms)
combiner["stage3_uv_rotation"] = _resolve_texture_rotation(batch, 3, tex_transform_combos, tex_transforms)
combiner["stage0_uv_rotation_speed"] = _resolve_texture_rotation_speed(batch, 0, tex_transform_combos, tex_transforms)
combiner["stage1_uv_rotation_speed"] = _resolve_texture_rotation_speed(batch, 1, tex_transform_combos, tex_transforms)
combiner["stage2_uv_rotation_speed"] = _resolve_texture_rotation_speed(batch, 2, tex_transform_combos, tex_transforms)
combiner["stage3_uv_rotation_speed"] = _resolve_texture_rotation_speed(batch, 3, tex_transform_combos, tex_transforms)
combiner["vertex_shader_id"] = _m2_vertex_shader_id(texture_count, int(batch.get("shader_id", 0)))
combiner["pixel_shader_id"] = _m2_pixel_shader_id(texture_count, int(batch.get("shader_id", 0)))
combiner["priority_plane"] = int(batch.get("priority_plane", 0))
@@ -460,6 +468,38 @@ static func _resolve_texture_scroll(
return transform.get("translation_speed", Vector2.ZERO)
static func _resolve_texture_rotation(
batch: Dictionary,
stage: int,
tex_transform_combos: PackedInt32Array,
tex_transforms: Array) -> Vector4:
var combo_index := int(batch.get("texture_transform_combo_index", -1)) + stage
if combo_index < 0 or combo_index >= tex_transform_combos.size():
return Vector4(1.0, 0.0, 0.0, 1.0)
var transform_index := int(tex_transform_combos[combo_index])
if transform_index < 0 or transform_index >= tex_transforms.size():
return Vector4(1.0, 0.0, 0.0, 1.0)
var transform: Dictionary = tex_transforms[transform_index] if tex_transforms[transform_index] is Dictionary else {}
return transform.get("rotation", Vector4(1.0, 0.0, 0.0, 1.0))
static func _resolve_texture_rotation_speed(
batch: Dictionary,
stage: int,
tex_transform_combos: PackedInt32Array,
tex_transforms: Array) -> float:
var combo_index := int(batch.get("texture_transform_combo_index", -1)) + stage
if combo_index < 0 or combo_index >= tex_transform_combos.size():
return 0.0
var transform_index := int(tex_transform_combos[combo_index])
if transform_index < 0 or transform_index >= tex_transforms.size():
return 0.0
var transform: Dictionary = tex_transforms[transform_index] if tex_transforms[transform_index] is Dictionary else {}
return float(transform.get("rotation_speed", 0.0))
static func _default_texture_path(model_path: String, texture_type: int) -> String:
var normalized := model_path.replace("\\", "/")
var rel_model := _relative_extracted_model_path(normalized)