port 2V2-d.2: Granny runtime on libgr2, main character model animates
Implement the Granny SDK 2.11 API the client uses on top of libgr2 (platform/EterGrnLib/GrannyRuntime.cpp, shim granny.h declared from the SDK header): file sections, type-definition vertex conversion, material textures by Usage, mesh/bone bindings, deformer, control clock/loop/ease and weighted SRT sampling. Port EterGrnLib (LODController, Material, Mesh, Model, ModelInstance*, Motion, Thing, ThingInstance, Util) plus EterLib GrpObjectInstance/GrpCollisionObject/CollisionData verbatim and drop their platform skeletons and pending stand-ins; register the gr2 resource factory; vertex/index buffers are CPU-side until the 2V2-e render adapter. app.UpdateGame/RenderGame now run 40250's bodies, reaching the CPythonApplication members through their singletons (the platform has no app object); CPythonGraphic joins GameSingletons in member order, and GetMousePosition reads the host cursor. port.login_flow asserts the main instance's PART_MAIN model has meshes, its diffuse image loaded and the WAIT motion moves the bones between frames; offline and live pass, port_gate macos PASS. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
5266b00c6e
commit
668f48d6ec
@@ -125,6 +125,15 @@ struct File::Impl {
|
||||
|
||||
// granny_transform (68B) → 行主序 4x4(BuildCompositeTransform4x4 语义)
|
||||
void transform_to_composite(Ref tf, Mat4& out, uint32_t& flags) const;
|
||||
void read_transform(Ref tf, Transform& out) const; // 68B → SRT 分量
|
||||
|
||||
// granny_material 图:按对象 Ref 去重,缺的追加到 mats_out(子材质 / 只经 mesh 可达的材质)。
|
||||
// 返回 FileInfo::materials 索引;无效 / 递归太深 = -1。
|
||||
int32_t intern_material(Ref mat_obj, Ref mat_type, int depth = 0);
|
||||
std::vector<Material>* mats_out = nullptr;
|
||||
std::vector<Ref> mat_refs; // 与 *mats_out 平行
|
||||
// ExtendedData(VariantRef = {type ptr; object ptr})里取名为 name 的 Int32。
|
||||
bool extended_i32(Ref variant_slot, const char* name, int32_t& out);
|
||||
|
||||
std::vector<Skeleton> skels_cache; // self-check 复用
|
||||
std::vector<Ref> skel_refs; // 与 skels_cache 平行:各 skeleton 对象的 Ref(model 关联用)
|
||||
|
||||
Reference in New Issue
Block a user