mirror of
https://github.com/zeldaret/oot.git
synced 2025-08-23 15:31:15 +00:00
refactor CDataExt.set_write callback args to use a dataclass
This commit is contained in:
parent
8e5e543731
commit
6e9b4d1a59
12 changed files with 215 additions and 202 deletions
|
@ -1,5 +1,5 @@
|
|||
from __future__ import annotations
|
||||
import abc
|
||||
import dataclasses
|
||||
import io
|
||||
from typing import TYPE_CHECKING, Callable, Any, Sequence, Union
|
||||
|
||||
|
@ -21,6 +21,12 @@ from .repr_c_struct import (
|
|||
)
|
||||
|
||||
|
||||
@dataclasses.dataclass
|
||||
class CDataExtWriteContext:
|
||||
f: io.TextIOBase
|
||||
line_prefix: str
|
||||
|
||||
|
||||
class CDataExt(CData, abc.ABC):
|
||||
|
||||
report_f = None
|
||||
|
@ -37,7 +43,7 @@ class CDataExt(CData, abc.ABC):
|
|||
def set_write(
|
||||
self,
|
||||
write_f: Callable[
|
||||
["CDataResource", "MemoryContext", Any, io.TextIOBase, str],
|
||||
["CDataResource", "MemoryContext", Any, CDataExtWriteContext],
|
||||
bool,
|
||||
],
|
||||
):
|
||||
|
@ -88,7 +94,9 @@ class CDataExt(CData, abc.ABC):
|
|||
(typically, False will be returned if this data is struct padding)
|
||||
"""
|
||||
if self.write_f:
|
||||
ret = self.write_f(resource, memory_context, v, f, line_prefix)
|
||||
ret = self.write_f(
|
||||
resource, memory_context, v, CDataExtWriteContext(f, line_prefix)
|
||||
)
|
||||
# This assert is meant to ensure the function returns a value at all,
|
||||
# since it's easy to forget to return a value (typically True)
|
||||
assert isinstance(ret, bool), ("must return a bool", self.write_f)
|
||||
|
@ -116,11 +124,10 @@ class CDataExt_Value(CData_Value, CDataExt):
|
|||
resource: "CDataResource",
|
||||
memory_context: "MemoryContext",
|
||||
v: Any,
|
||||
f: io.TextIOBase,
|
||||
line_prefix: str,
|
||||
wctx: CDataExtWriteContext,
|
||||
):
|
||||
f.write(line_prefix)
|
||||
f.write(str_v(v))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(str_v(v))
|
||||
return True
|
||||
|
||||
self.set_write(write_f)
|
||||
|
@ -395,6 +402,7 @@ class S16ArrayResource(CDataResource):
|
|||
else:
|
||||
raise ValueError()
|
||||
|
||||
|
||||
cdata_ext_Vec3f = CDataExt_Struct(
|
||||
(
|
||||
("x", CDataExt_Value.f32),
|
||||
|
|
|
@ -15,13 +15,14 @@ from ..extase.cdata_resources import (
|
|||
CDataExt_Value,
|
||||
CDataExt_Struct,
|
||||
CDataExt_Array,
|
||||
CDataExtWriteContext,
|
||||
)
|
||||
|
||||
|
||||
class AnimationFrameDataResource(CDataResource, can_size_be_unknown=True):
|
||||
def write_binang(resource, memory_context, v, f: io.TextIOBase, line_prefix):
|
||||
f.write(line_prefix)
|
||||
f.write(f" 0x{v:04X}" if v >= 0 else "-0x" + f"{v:04X}".removeprefix("-"))
|
||||
def write_binang(resource, memory_context, v, wctx:CDataExtWriteContext):
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(f" 0x{v:04X}" if v >= 0 else "-0x" + f"{v:04X}".removeprefix("-"))
|
||||
return True
|
||||
|
||||
elem_cdata_ext = CDataExt_Value("h").set_write(write_binang)
|
||||
|
@ -81,21 +82,21 @@ class AnimationJointIndicesResource(CDataResource, can_size_be_unknown=True):
|
|||
|
||||
class AnimationResource(CDataResource):
|
||||
def write_frameData(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
def write_jointIndices(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
cdata_ext = CDataExt_Struct(
|
||||
|
|
|
@ -17,6 +17,7 @@ from ..extase.cdata_resources import (
|
|||
CDataExt_Struct,
|
||||
CDataExt_Array,
|
||||
CDataExt_Value,
|
||||
CDataExtWriteContext,
|
||||
cdata_ext_Vec3s,
|
||||
INDENT,
|
||||
)
|
||||
|
@ -60,13 +61,13 @@ class CollisionPolyListResource(CDataResource):
|
|||
resource: "CollisionPolyListResource",
|
||||
memory_context: "MemoryContext",
|
||||
v,
|
||||
f: io.TextIOBase,
|
||||
line_prefix,
|
||||
wctx: CDataExtWriteContext,
|
||||
):
|
||||
assert isinstance(v, list)
|
||||
assert len(v) == 3
|
||||
vtxData = v
|
||||
f.write(line_prefix)
|
||||
f = wctx.f
|
||||
f.write(wctx.line_prefix)
|
||||
f.write("{\n")
|
||||
for i in range(3):
|
||||
vI = vtxData[i]
|
||||
|
@ -93,10 +94,10 @@ class CollisionPolyListResource(CDataResource):
|
|||
flags_str = " | ".join(flags_str_list)
|
||||
else:
|
||||
flags_str = "0"
|
||||
f.write(line_prefix)
|
||||
f.write(wctx.line_prefix)
|
||||
f.write(INDENT)
|
||||
f.write(f"{vtxId} | (({flags_str}) << 13), // {i}\n")
|
||||
f.write(line_prefix)
|
||||
f.write(wctx.line_prefix)
|
||||
f.write("}")
|
||||
return True
|
||||
|
||||
|
@ -104,13 +105,12 @@ class CollisionPolyListResource(CDataResource):
|
|||
resource: "CollisionPolyListResource",
|
||||
memory_context: "MemoryContext",
|
||||
v,
|
||||
f: io.TextIOBase,
|
||||
line_prefix,
|
||||
wctx: CDataExtWriteContext,
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
nf = v / 0x7FFF
|
||||
f.write(line_prefix)
|
||||
f.write(f"COLPOLY_SNORMAL({nf})")
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(f"COLPOLY_SNORMAL({nf})")
|
||||
|
||||
return True
|
||||
|
||||
|
@ -166,13 +166,13 @@ class CollisionSurfaceTypeListResource(CDataResource):
|
|||
resource: "CollisionSurfaceTypeListResource",
|
||||
memory_context: "MemoryContext",
|
||||
v,
|
||||
f: io.TextIOBase,
|
||||
line_prefix,
|
||||
wctx: CDataExtWriteContext,
|
||||
):
|
||||
assert isinstance(v, list)
|
||||
assert len(v) == 2
|
||||
f = wctx.f
|
||||
|
||||
f.write(line_prefix)
|
||||
f.write(wctx.line_prefix)
|
||||
f.write("{\n")
|
||||
|
||||
for i_data, bitfield_info in (
|
||||
|
@ -206,7 +206,7 @@ class CollisionSurfaceTypeListResource(CDataResource):
|
|||
|
||||
data_val = v[i_data]
|
||||
|
||||
f.write(line_prefix)
|
||||
f.write(wctx.line_prefix)
|
||||
f.write(INDENT)
|
||||
f.write("(\n")
|
||||
|
||||
|
@ -214,7 +214,7 @@ class CollisionSurfaceTypeListResource(CDataResource):
|
|||
for mask, shift, name in bitfield_info:
|
||||
val = (data_val & mask) >> shift
|
||||
|
||||
f.write(line_prefix)
|
||||
f.write(wctx.line_prefix)
|
||||
f.write(INDENT * 2)
|
||||
if has_prev:
|
||||
f.write("| ")
|
||||
|
@ -225,11 +225,11 @@ class CollisionSurfaceTypeListResource(CDataResource):
|
|||
|
||||
has_prev = True
|
||||
|
||||
f.write(line_prefix)
|
||||
f.write(wctx.line_prefix)
|
||||
f.write(INDENT)
|
||||
f.write(f"), // {i_data}\n")
|
||||
|
||||
f.write(line_prefix)
|
||||
f.write(wctx.line_prefix)
|
||||
f.write("}")
|
||||
|
||||
return True
|
||||
|
@ -294,16 +294,15 @@ class CollisionBgCamListResource(CDataResource):
|
|||
resource: "CollisionSurfaceTypeListResource",
|
||||
memory_context: "MemoryContext",
|
||||
v,
|
||||
f: io.TextIOBase,
|
||||
line_prefix,
|
||||
wctx: CDataExtWriteContext,
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
if address != 0:
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
else:
|
||||
f.write("NULL")
|
||||
wctx.f.write("NULL")
|
||||
return True
|
||||
|
||||
cdata_ext_elem = CDataExt_Struct(
|
||||
|
@ -428,11 +427,10 @@ class CollisionResource(CDataResource):
|
|||
resource: "CollisionResource",
|
||||
memory_context: "MemoryContext",
|
||||
v,
|
||||
f: io.TextIOBase,
|
||||
line_prefix,
|
||||
wctx: CDataExtWriteContext,
|
||||
):
|
||||
f.write(line_prefix)
|
||||
f.write(
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(
|
||||
memory_context.get_c_expression_length_at_segmented(
|
||||
resource.cdata_unpacked["vtxList"]
|
||||
)
|
||||
|
@ -463,23 +461,21 @@ class CollisionResource(CDataResource):
|
|||
resource: "CollisionResource",
|
||||
memory_context: "MemoryContext",
|
||||
v,
|
||||
f: io.TextIOBase,
|
||||
line_prefix,
|
||||
wctx: CDataExtWriteContext,
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(v))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(v))
|
||||
return True
|
||||
|
||||
def write_numPolygons(
|
||||
resource: "CollisionResource",
|
||||
memory_context: "MemoryContext",
|
||||
v,
|
||||
f: io.TextIOBase,
|
||||
line_prefix,
|
||||
wctx: CDataExtWriteContext,
|
||||
):
|
||||
f.write(line_prefix)
|
||||
f.write(
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(
|
||||
memory_context.get_c_expression_length_at_segmented(
|
||||
resource.cdata_unpacked["polyList"]
|
||||
)
|
||||
|
@ -510,32 +506,30 @@ class CollisionResource(CDataResource):
|
|||
resource: "CollisionResource",
|
||||
memory_context: "MemoryContext",
|
||||
v,
|
||||
f: io.TextIOBase,
|
||||
line_prefix,
|
||||
wctx: CDataExtWriteContext,
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
def write_numWaterBoxes(
|
||||
resource: "CollisionResource",
|
||||
memory_context: "MemoryContext",
|
||||
v,
|
||||
f: io.TextIOBase,
|
||||
line_prefix,
|
||||
wctx: CDataExtWriteContext,
|
||||
):
|
||||
f.write(line_prefix)
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
length = resource.cdata_unpacked["numWaterBoxes"]
|
||||
if length != 0:
|
||||
f.write(
|
||||
wctx.f.write(
|
||||
memory_context.get_c_expression_length_at_segmented(
|
||||
resource.cdata_unpacked["waterBoxes"]
|
||||
)
|
||||
)
|
||||
else:
|
||||
f.write("0")
|
||||
wctx.f.write("0")
|
||||
return True
|
||||
|
||||
def report_waterBoxes(
|
||||
|
@ -565,36 +559,34 @@ class CollisionResource(CDataResource):
|
|||
resource: "CollisionResource",
|
||||
memory_context: "MemoryContext",
|
||||
v,
|
||||
f: io.TextIOBase,
|
||||
line_prefix,
|
||||
wctx: CDataExtWriteContext,
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(v))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(v))
|
||||
return True
|
||||
|
||||
def write_bgCamList(
|
||||
resource: "CollisionResource",
|
||||
memory_context: "MemoryContext",
|
||||
v,
|
||||
f: io.TextIOBase,
|
||||
line_prefix,
|
||||
wctx: CDataExtWriteContext,
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(v))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(v))
|
||||
return True
|
||||
|
||||
def write_waterBoxes(
|
||||
resource: "CollisionResource",
|
||||
memory_context: "MemoryContext",
|
||||
v,
|
||||
f: io.TextIOBase,
|
||||
line_prefix,
|
||||
wctx: CDataExtWriteContext,
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
length = resource.cdata_unpacked["numWaterBoxes"]
|
||||
f.write(line_prefix)
|
||||
f = wctx.f
|
||||
f.write(wctx.line_prefix)
|
||||
if length != 0:
|
||||
f.write(memory_context.get_c_reference_at_segmented(v))
|
||||
else:
|
||||
|
|
|
@ -27,6 +27,7 @@ from ..extase.cdata_resources import (
|
|||
CDataExt_Array,
|
||||
CDataExt_Struct,
|
||||
CDataExt_Value,
|
||||
CDataExtWriteContext,
|
||||
INDENT,
|
||||
)
|
||||
|
||||
|
@ -38,19 +39,21 @@ VERBOSE_BEST_EFFORT_TLUT_NO_REAL_USER = True
|
|||
|
||||
|
||||
class MtxResource(CDataResource):
|
||||
def write_mtx(resource, memory_context, v, f: io.TextIOBase, line_prefix):
|
||||
|
||||
def write_mtx(resource, memory_context, v, wctx: CDataExtWriteContext):
|
||||
assert isinstance(v, dict)
|
||||
assert v.keys() == {"intPart", "fracPart"}
|
||||
intPart = v["intPart"]
|
||||
fracPart = v["fracPart"]
|
||||
|
||||
f.write(line_prefix)
|
||||
f = wctx.f
|
||||
f.write(wctx.line_prefix)
|
||||
f.write("gdSPDefMtx(\n")
|
||||
|
||||
for i in range(4):
|
||||
if i != 0:
|
||||
f.write(",\n")
|
||||
f.write(line_prefix + INDENT)
|
||||
f.write(wctx.line_prefix + INDENT)
|
||||
|
||||
for j in range(4):
|
||||
# #define IPART(x) (((s32)((x) * 0x10000) >> 16) & 0xFFFF)
|
||||
|
@ -75,7 +78,7 @@ class MtxResource(CDataResource):
|
|||
f.write(f"{x}f")
|
||||
f.write("\n")
|
||||
|
||||
f.write(line_prefix)
|
||||
f.write(wctx.line_prefix)
|
||||
f.write(")")
|
||||
|
||||
return True
|
||||
|
@ -98,10 +101,10 @@ class MtxResource(CDataResource):
|
|||
|
||||
|
||||
class VtxArrayResource(CDataResource):
|
||||
def write_elem(resource, memory_context, v, f: io.TextIOBase, line_prefix):
|
||||
def write_elem(resource, memory_context, v, wctx: CDataExtWriteContext):
|
||||
assert isinstance(v, dict)
|
||||
f.write(line_prefix)
|
||||
f.write(
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(
|
||||
f"VTX({v['x']:6}, {v['y']:6}, {v['z']:6}, "
|
||||
f"{v['s']:#7X}, {v['t']:#7X}, "
|
||||
f"{v['crnx']:#04X}, {v['cgny']:#04X}, {v['cbnz']:#04X}, {v['a']:#04X})"
|
||||
|
@ -1464,16 +1467,15 @@ def write_gfx_segmented(
|
|||
resource: Resource,
|
||||
memory_context: "MemoryContext",
|
||||
v,
|
||||
f: io.TextIOBase,
|
||||
line_prefix: str,
|
||||
wctx:CDataExtWriteContext,
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
if address == 0:
|
||||
f.write("NULL")
|
||||
wctx.f.write("NULL")
|
||||
else:
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
from typing import TYPE_CHECKING
|
||||
|
||||
if TYPE_CHECKING:
|
||||
import io
|
||||
|
||||
from ..extase import MemoryContext
|
||||
|
||||
from ..extase.cdata_resources import (
|
||||
|
@ -10,6 +8,7 @@ from ..extase.cdata_resources import (
|
|||
CDataArrayResource,
|
||||
CDataExt_Struct,
|
||||
CDataExt_Value,
|
||||
CDataExtWriteContext,
|
||||
)
|
||||
|
||||
|
||||
|
@ -49,12 +48,12 @@ class PlayerAnimationResource(CDataResource):
|
|||
player_animation_data_res.set_frame_count(v["common"]["frameCount"])
|
||||
|
||||
def write_frameCount(
|
||||
resource, memory_context: "MemoryContext", v, f: "io.TextIOBase", line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
address = resource.cdata_unpacked["segment"]
|
||||
assert isinstance(address, int)
|
||||
f.write(line_prefix)
|
||||
f.write(
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(
|
||||
memory_context.resolve_segmented(address)
|
||||
.get_resource(PlayerAnimationDataResource)
|
||||
.frame_count_name
|
||||
|
@ -62,12 +61,12 @@ class PlayerAnimationResource(CDataResource):
|
|||
return True
|
||||
|
||||
def write_segment(
|
||||
resource, memory_context: "MemoryContext", v, f: "io.TextIOBase", line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
cdata_ext = CDataExt_Struct(
|
||||
|
|
|
@ -20,6 +20,7 @@ from ..extase.cdata_resources import (
|
|||
CDataArrayNamedLengthResource,
|
||||
CDataExt_Struct,
|
||||
CDataExt_Value,
|
||||
CDataExtWriteContext,
|
||||
cdata_ext_Vec3s,
|
||||
)
|
||||
|
||||
|
@ -114,12 +115,12 @@ class RoomShapeNormalEntryArrayResource(CDataArrayNamedLengthResource):
|
|||
|
||||
class RoomShapeNormalResource(CDataResource):
|
||||
def write_numEntries(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix: str
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
address = resource.cdata_unpacked["entries"]
|
||||
assert isinstance(address, int)
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_expression_length_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_expression_length_at_segmented(address))
|
||||
return True
|
||||
|
||||
def report_entries(resource, memory_context: "MemoryContext", v):
|
||||
|
@ -139,23 +140,23 @@ class RoomShapeNormalResource(CDataResource):
|
|||
entries_resource.set_length(numEntries)
|
||||
|
||||
def write_entries(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix: str
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
def write_entriesEnd(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix: str
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
address = resource.cdata_unpacked["entries"]
|
||||
assert isinstance(address, int)
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
f.write(" + ")
|
||||
f.write(memory_context.get_c_expression_length_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(" + ")
|
||||
wctx.f.write(memory_context.get_c_expression_length_at_segmented(address))
|
||||
return True
|
||||
|
||||
cdata_ext = CDataExt_Struct(
|
||||
|
@ -211,12 +212,12 @@ def report_RoomShapeImageBase_entry(resource, memory_context: "MemoryContext", v
|
|||
|
||||
|
||||
def write_RoomShapeImageBase_entry(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
|
||||
|
@ -287,12 +288,12 @@ class RoomShapeImageSingleResource(CDataResource):
|
|||
)
|
||||
|
||||
def write_source(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
cdata_ext = CDataExt_Struct(
|
||||
|
@ -340,12 +341,12 @@ class RoomShapeImageMultiBgEntryArrayResource(CDataArrayNamedLengthResource):
|
|||
)
|
||||
|
||||
def write_source(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
elem_cdata_ext = CDataExt_Struct(
|
||||
|
@ -375,15 +376,15 @@ class RoomShapeImageMultiBgEntryArrayResource(CDataArrayNamedLengthResource):
|
|||
|
||||
class RoomShapeImageMultiResource(CDataResource):
|
||||
def write_numBackgrounds(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
address = resource.cdata_unpacked["backgrounds"]
|
||||
assert isinstance(address, int)
|
||||
backgrounds_resource = memory_context.resolve_segmented(address).get_resource(
|
||||
RoomShapeImageMultiBgEntryArrayResource
|
||||
)
|
||||
f.write(line_prefix)
|
||||
f.write(backgrounds_resource.length_name)
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(backgrounds_resource.length_name)
|
||||
return True
|
||||
|
||||
def report_backgrounds(resource, memory_context: "MemoryContext", v):
|
||||
|
@ -402,12 +403,12 @@ class RoomShapeImageMultiResource(CDataResource):
|
|||
backgrounds_resource.set_length(resource.cdata_unpacked["numBackgrounds"])
|
||||
|
||||
def write_backgrounds(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
cdata_ext = CDataExt_Struct(
|
||||
|
@ -453,12 +454,12 @@ class RoomShapeCullableEntryArrayResource(CDataArrayNamedLengthResource):
|
|||
|
||||
class RoomShapeCullableResource(CDataResource):
|
||||
def write_numEntries(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix: str
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
address = resource.cdata_unpacked["entries"]
|
||||
assert isinstance(address, int)
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_expression_length_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_expression_length_at_segmented(address))
|
||||
return True
|
||||
|
||||
def report_entries(resource, memory_context: "MemoryContext", v):
|
||||
|
@ -478,23 +479,23 @@ class RoomShapeCullableResource(CDataResource):
|
|||
entries_resource.set_length(numEntries)
|
||||
|
||||
def write_entries(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix: str
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
def write_entriesEnd(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix: str
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
address = resource.cdata_unpacked["entries"]
|
||||
assert isinstance(address, int)
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
f.write(" + ")
|
||||
f.write(memory_context.get_c_expression_length_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(" + ")
|
||||
wctx.f.write(memory_context.get_c_expression_length_at_segmented(address))
|
||||
return True
|
||||
|
||||
cdata_ext = CDataExt_Struct(
|
||||
|
|
|
@ -17,6 +17,7 @@ from ..extase import (
|
|||
from ..extase.cdata_resources import (
|
||||
CDataArrayResource,
|
||||
CDataExt_Value,
|
||||
CDataExtWriteContext,
|
||||
)
|
||||
|
||||
from .. import oot64_data
|
||||
|
@ -638,15 +639,15 @@ class AltHeadersResource(CDataArrayResource):
|
|||
)
|
||||
|
||||
def write_elem(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix: str
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
if address == 0:
|
||||
f.write("NULL")
|
||||
wctx.f.write("NULL")
|
||||
else:
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
elem_cdata_ext = (
|
||||
|
|
|
@ -17,6 +17,7 @@ from ..extase.cdata_resources import (
|
|||
CDataExt_Struct,
|
||||
CDataExt_Array,
|
||||
CDataExt_Value,
|
||||
CDataExtWriteContext,
|
||||
cdata_ext_Vec3s,
|
||||
INDENT,
|
||||
Vec3sArrayResource,
|
||||
|
@ -65,26 +66,27 @@ def fmt_hex_u(v: int, nibbles: int = 0):
|
|||
|
||||
|
||||
class ActorEntryListResource(CDataArrayNamedLengthResource):
|
||||
def write_elem(resource, memory_context, v, f: io.TextIOBase, line_prefix: str):
|
||||
def write_elem(resource, memory_context, v, wctx: CDataExtWriteContext):
|
||||
assert isinstance(v, dict)
|
||||
f.write(line_prefix)
|
||||
f = wctx.f
|
||||
f.write(wctx.line_prefix)
|
||||
f.write("{\n")
|
||||
|
||||
f.write(line_prefix + INDENT)
|
||||
f.write(wctx.line_prefix + INDENT)
|
||||
f.write(oot64_data.get_actor_id_name(v["id"]))
|
||||
f.write(",\n")
|
||||
|
||||
f.write(line_prefix + INDENT)
|
||||
f.write(wctx.line_prefix + INDENT)
|
||||
f.write("{ ")
|
||||
f.write(", ".join(f"{p:6}" for p in (v["pos"][axis] for axis in "xyz")))
|
||||
f.write(" }, // pos\n")
|
||||
|
||||
f.write(line_prefix + INDENT)
|
||||
f.write(wctx.line_prefix + INDENT)
|
||||
f.write("{ ")
|
||||
f.write(", ".join(fmt_hex_s(r, 4) for r in (v["rot"][axis] for axis in "xyz")))
|
||||
f.write(" }, // rot\n")
|
||||
|
||||
f.write(line_prefix + INDENT)
|
||||
f.write(wctx.line_prefix + INDENT)
|
||||
params = v["params"]
|
||||
f.write(fmt_hex_s(params, 4))
|
||||
if params < 0:
|
||||
|
@ -92,7 +94,7 @@ class ActorEntryListResource(CDataArrayNamedLengthResource):
|
|||
f.write(f" /* 0x{params_u16:04X} */")
|
||||
f.write(", // params\n")
|
||||
|
||||
f.write(line_prefix)
|
||||
f.write(wctx.line_prefix)
|
||||
f.write("}")
|
||||
|
||||
return True
|
||||
|
@ -120,7 +122,7 @@ class ObjectListResource(CDataArrayNamedLengthResource):
|
|||
|
||||
|
||||
def write_RomFile(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix: str
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, dict)
|
||||
vromStart = v["vromStart"]
|
||||
|
@ -128,8 +130,8 @@ def write_RomFile(
|
|||
rom_file_name = memory_context.get_dmadata_table_rom_file_name_from_vrom(
|
||||
vromStart, vromEnd
|
||||
)
|
||||
f.write(line_prefix)
|
||||
f.write(f"ROM_FILE({rom_file_name})")
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(f"ROM_FILE({rom_file_name})")
|
||||
return True
|
||||
|
||||
|
||||
|
@ -302,40 +304,41 @@ class EnvLightSettingsListResource(CDataArrayNamedLengthResource):
|
|||
|
||||
|
||||
class TransitionActorEntryListResource(CDataArrayNamedLengthResource):
|
||||
def write_elem(resource, memory_context, v, f: io.TextIOBase, line_prefix: str):
|
||||
def write_elem(resource, memory_context, v, wctx: CDataExtWriteContext):
|
||||
assert isinstance(v, dict)
|
||||
f.write(line_prefix)
|
||||
f = wctx.f
|
||||
f.write(wctx.line_prefix)
|
||||
f.write("{\n")
|
||||
|
||||
f.write(line_prefix + INDENT)
|
||||
f.write(wctx.line_prefix + INDENT)
|
||||
f.write("{\n")
|
||||
f.write(line_prefix + 2 * INDENT)
|
||||
f.write(wctx.line_prefix + 2 * INDENT)
|
||||
f.write("// { room, bgCamIndex }\n")
|
||||
for side_i in range(2):
|
||||
side = v["sides"][side_i]
|
||||
room = side["room"]
|
||||
bgCamIndex = side["bgCamIndex"]
|
||||
f.write(line_prefix + 2 * INDENT)
|
||||
f.write(wctx.line_prefix + 2 * INDENT)
|
||||
f.write("{ ")
|
||||
f.write(f"{room}, {bgCamIndex}")
|
||||
f.write(" },\n")
|
||||
f.write(line_prefix + INDENT)
|
||||
f.write(wctx.line_prefix + INDENT)
|
||||
f.write("}, // sides\n")
|
||||
|
||||
f.write(line_prefix + INDENT)
|
||||
f.write(wctx.line_prefix + INDENT)
|
||||
f.write(oot64_data.get_actor_id_name(v["id"]))
|
||||
f.write(",\n")
|
||||
|
||||
f.write(line_prefix + INDENT)
|
||||
f.write(wctx.line_prefix + INDENT)
|
||||
f.write("{ ")
|
||||
f.write(", ".join(f"{p:6}" for p in (v["pos"][axis] for axis in "xyz")))
|
||||
f.write(" }, // pos\n")
|
||||
|
||||
f.write(line_prefix + INDENT)
|
||||
f.write(wctx.line_prefix + INDENT)
|
||||
f.write(fmt_hex_s(v["rotY"], 4))
|
||||
f.write(", // rotY\n")
|
||||
|
||||
f.write(line_prefix + INDENT)
|
||||
f.write(wctx.line_prefix + INDENT)
|
||||
params = v["params"]
|
||||
f.write(fmt_hex_s(params, 4))
|
||||
if params < 0:
|
||||
|
@ -343,7 +346,7 @@ class TransitionActorEntryListResource(CDataArrayNamedLengthResource):
|
|||
f.write(f" /* 0x{params_u16:04X} */")
|
||||
f.write(", // params\n")
|
||||
|
||||
f.write(line_prefix)
|
||||
f.write(wctx.line_prefix)
|
||||
f.write("}")
|
||||
|
||||
return True
|
||||
|
@ -390,14 +393,15 @@ class PathListResource(CDataArrayResource):
|
|||
)
|
||||
|
||||
def write_elem(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix: str
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, dict)
|
||||
count = v["count"]
|
||||
assert isinstance(count, int)
|
||||
points = v["points"]
|
||||
assert isinstance(points, int)
|
||||
f.write(line_prefix)
|
||||
f = wctx.f
|
||||
f.write(wctx.line_prefix)
|
||||
f.write("{ ")
|
||||
f.write(memory_context.get_c_expression_length_at_segmented(points))
|
||||
f.write(", ")
|
||||
|
|
|
@ -10,6 +10,7 @@ from ..extase.cdata_resources import (
|
|||
CDataResource,
|
||||
CDataArrayResource,
|
||||
CDataExt_Struct,
|
||||
CDataExtWriteContext,
|
||||
cdata_ext_Vec3f,
|
||||
cdata_ext_Vec3s,
|
||||
CDataExt_Value,
|
||||
|
@ -38,15 +39,15 @@ class LegacyLimbResource(CDataResource):
|
|||
)
|
||||
|
||||
def write_limb(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
if address == 0:
|
||||
f.write("NULL")
|
||||
wctx.f.write("NULL")
|
||||
else:
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
cdata_ext = CDataExt_Struct(
|
||||
|
@ -101,21 +102,21 @@ class LegacyJointKeyArrayResource(CDataArrayResource):
|
|||
class LegacyAnimationResource(CDataResource):
|
||||
|
||||
def write_frameData(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
def write_jointKey(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
cdata_ext = CDataExt_Struct(
|
||||
|
|
|
@ -15,6 +15,7 @@ from ..extase.cdata_resources import (
|
|||
CDataExt_Struct,
|
||||
CDataExt_Value,
|
||||
CDataExt_Array,
|
||||
CDataExtWriteContext,
|
||||
)
|
||||
|
||||
from . import dlist_resources
|
||||
|
@ -117,12 +118,12 @@ class CurveAnimationHeaderResource(CDataResource):
|
|||
)
|
||||
|
||||
def write_knotCounts(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
def report_interpolationData(resource, memory_context: "MemoryContext", v):
|
||||
|
@ -138,12 +139,12 @@ class CurveAnimationHeaderResource(CDataResource):
|
|||
)
|
||||
|
||||
def write_interpolationData(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
def report_constantData(resource, memory_context: "MemoryContext", v):
|
||||
|
@ -159,12 +160,12 @@ class CurveAnimationHeaderResource(CDataResource):
|
|||
)
|
||||
|
||||
def write_constantData(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
cdata_ext = CDataExt_Struct(
|
||||
|
@ -283,12 +284,12 @@ class SkelCurveLimbArrayResource(CDataResource):
|
|||
)
|
||||
|
||||
def write_limb_element(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
elem_cdata_ext = (
|
||||
|
@ -328,12 +329,12 @@ class CurveSkeletonHeaderResource(CDataResource):
|
|||
)
|
||||
|
||||
def write_limbs(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
cdata_ext = CDataExt_Struct(
|
||||
|
|
|
@ -17,6 +17,7 @@ from ..extase.cdata_resources import (
|
|||
CDataExt_Value,
|
||||
CDataExt_Struct,
|
||||
CDataExt_Array,
|
||||
CDataExtWriteContext,
|
||||
cdata_ext_Vec3s,
|
||||
)
|
||||
|
||||
|
@ -25,10 +26,11 @@ from . import dlist_resources
|
|||
|
||||
class StandardLimbResource(CDataResource):
|
||||
def write_limb_index(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
f.write(line_prefix)
|
||||
f = wctx.f
|
||||
f.write(wctx.line_prefix)
|
||||
if resource.skeleton_resource is None:
|
||||
f.write(f"{v}")
|
||||
else:
|
||||
|
@ -109,12 +111,12 @@ class LimbsArrayResourceABC(CDataArrayResource):
|
|||
c_limb_type: str
|
||||
|
||||
def write_limb_element(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
elem_cdata_ext = CDataExt_Value("I").set_write(write_limb_element)
|
||||
|
@ -239,19 +241,19 @@ class SkeletonResourceABC(SkeletonResourceBaseABC):
|
|||
)
|
||||
|
||||
def write_segment(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
def write_limbCount(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
f.write(line_prefix)
|
||||
f.write(
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(
|
||||
memory_context.get_c_expression_length_at_segmented(
|
||||
resource.get_skeleton_header_cdata_unpacked()["segment"]
|
||||
)
|
||||
|
|
|
@ -11,6 +11,7 @@ from ..extase.cdata_resources import (
|
|||
CDataArrayResource,
|
||||
CDataExt_Value,
|
||||
CDataExt_Struct,
|
||||
CDataExtWriteContext,
|
||||
cdata_ext_Vec3s,
|
||||
)
|
||||
|
||||
|
@ -85,21 +86,21 @@ class SkinLimbModifArrayResource(CDataArrayResource):
|
|||
skin_vertices_res.set_length(v["transformCount"])
|
||||
|
||||
def write_skinVertices(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
def write_limbTransformations(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
elem_cdata_ext = CDataExt_Struct(
|
||||
|
@ -140,12 +141,12 @@ class SkinAnimatedLimbDataResource(CDataResource):
|
|||
skin_vertices_res.set_length(resource.cdata_unpacked["limbModifCount"])
|
||||
|
||||
def write_limbModifications(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
cdata_ext = CDataExt_Struct(
|
||||
|
@ -196,15 +197,15 @@ class SkinLimbResource(CDataResource):
|
|||
dlist_resources.report_gfx_segmented(resource, memory_context, address)
|
||||
|
||||
def write_segment(
|
||||
resource, memory_context: "MemoryContext", v, f: io.TextIOBase, line_prefix
|
||||
resource, memory_context: "MemoryContext", v, wctx: CDataExtWriteContext
|
||||
):
|
||||
assert isinstance(v, int)
|
||||
address = v
|
||||
f.write(line_prefix)
|
||||
wctx.f.write(wctx.line_prefix)
|
||||
if address == 0:
|
||||
f.write("NULL")
|
||||
wctx.f.write("NULL")
|
||||
else:
|
||||
f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
wctx.f.write(memory_context.get_c_reference_at_segmented(address))
|
||||
return True
|
||||
|
||||
cdata_ext = CDataExt_Struct(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue