архитектура и цели для агентов
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user