update BMap.
- BMMeshConverter now use CK_ID as CKMaterial references. - Add CKObject, CKGroup visitor.
This commit is contained in:
		| @ -116,9 +116,9 @@ LibCmo::CK2::CK_ID BMFile_GetGroup(BMap::BMFile* bmfile, LibCmo::CKDWORD idx) { | ||||
| 	if (!CheckBMFile(bmfile)) return 0; | ||||
| 	return bmfile->GetGroup(idx); | ||||
| } | ||||
| LibCmo::CK2::CK_ID BMFile_CreateGroup(BMap::BMFile* bmfile, LibCmo::CKSTRING name) { | ||||
| LibCmo::CK2::CK_ID BMFile_CreateGroup(BMap::BMFile* bmfile) { | ||||
| 	if (!CheckBMFile(bmfile)) return 0; | ||||
| 	return bmfile->CreateGroup(name); | ||||
| 	return bmfile->CreateGroup(); | ||||
| } | ||||
| LibCmo::CKDWORD BMFile_Get3dObjectCount(BMap::BMFile* bmfile) { | ||||
| 	if (!CheckBMFile(bmfile)) return 0; | ||||
| @ -128,9 +128,9 @@ LibCmo::CK2::CK_ID BMFile_Get3dObject(BMap::BMFile* bmfile, LibCmo::CKDWORD idx) | ||||
| 	if (!CheckBMFile(bmfile)) return 0; | ||||
| 	return bmfile->Get3dObject(idx); | ||||
| } | ||||
| LibCmo::CK2::CK_ID BMFile_Create3dObject(BMap::BMFile* bmfile, LibCmo::CKSTRING name) { | ||||
| LibCmo::CK2::CK_ID BMFile_Create3dObject(BMap::BMFile* bmfile) { | ||||
| 	if (!CheckBMFile(bmfile)) return 0; | ||||
| 	return bmfile->Create3dObject(name); | ||||
| 	return bmfile->Create3dObject(); | ||||
| } | ||||
| LibCmo::CKDWORD BMFile_GetMeshCount(BMap::BMFile* bmfile) { | ||||
| 	if (!CheckBMFile(bmfile)) return 0; | ||||
| @ -140,9 +140,9 @@ LibCmo::CK2::CK_ID BMFile_GetMesh(BMap::BMFile* bmfile, LibCmo::CKDWORD idx) { | ||||
| 	if (!CheckBMFile(bmfile)) return 0; | ||||
| 	return bmfile->GetMesh(idx); | ||||
| } | ||||
| LibCmo::CK2::CK_ID BMFile_CreateMesh(BMap::BMFile* bmfile, LibCmo::CKSTRING name) { | ||||
| LibCmo::CK2::CK_ID BMFile_CreateMesh(BMap::BMFile* bmfile) { | ||||
| 	if (!CheckBMFile(bmfile)) return 0; | ||||
| 	return bmfile->CreateMesh(name); | ||||
| 	return bmfile->CreateMesh(); | ||||
| } | ||||
| LibCmo::CKDWORD BMFile_GetMaterialCount(BMap::BMFile* bmfile) { | ||||
| 	if (!CheckBMFile(bmfile)) return 0; | ||||
| @ -152,9 +152,9 @@ LibCmo::CK2::CK_ID BMFile_GetMaterial(BMap::BMFile* bmfile, LibCmo::CKDWORD idx) | ||||
| 	if (!CheckBMFile(bmfile)) return 0; | ||||
| 	return bmfile->GetMaterial(idx); | ||||
| } | ||||
| LibCmo::CK2::CK_ID BMFile_CreateMaterial(BMap::BMFile* bmfile, LibCmo::CKSTRING name) { | ||||
| LibCmo::CK2::CK_ID BMFile_CreateMaterial(BMap::BMFile* bmfile) { | ||||
| 	if (!CheckBMFile(bmfile)) return 0; | ||||
| 	return bmfile->CreateMaterial(name); | ||||
| 	return bmfile->CreateMaterial(); | ||||
| } | ||||
| LibCmo::CKDWORD BMFile_GetTextureCount(BMap::BMFile* bmfile) { | ||||
| 	if (!CheckBMFile(bmfile)) return 0; | ||||
| @ -164,9 +164,9 @@ LibCmo::CK2::CK_ID BMFile_GetTexture(BMap::BMFile* bmfile, LibCmo::CKDWORD idx) | ||||
| 	if (!CheckBMFile(bmfile)) return 0; | ||||
| 	return bmfile->GetTexture(idx); | ||||
| } | ||||
| LibCmo::CK2::CK_ID BMFile_CreateTexture(BMap::BMFile* bmfile, LibCmo::CKSTRING name) { | ||||
| LibCmo::CK2::CK_ID BMFile_CreateTexture(BMap::BMFile* bmfile) { | ||||
| 	if (!CheckBMFile(bmfile)) return 0; | ||||
| 	return bmfile->CreateTexture(name); | ||||
| 	return bmfile->CreateTexture(); | ||||
| } | ||||
|  | ||||
| #pragma endregion | ||||
| @ -218,7 +218,7 @@ bool BMMeshTrans_PrepareMtlSlotCount(BMap::BMMeshTransition* trans, LibCmo::CKDW | ||||
| 	if (!CheckBMMeshTrans(trans)) return false; | ||||
| 	return trans->PrepareMtlSlotCount(count); | ||||
| } | ||||
| LibCmo::CK2::ObjImpls::CKMaterial** BMMeshTrans_PrepareMtlSlot(BMap::BMMeshTransition* trans) { | ||||
| LibCmo::CK2::CK_ID* BMMeshTrans_PrepareMtlSlot(BMap::BMMeshTransition* trans) { | ||||
| 	if (!CheckBMMeshTrans(trans)) return nullptr; | ||||
| 	return trans->PrepareMtlSlot(); | ||||
| } | ||||
| @ -249,3 +249,63 @@ bool BMMeshTrans_Parse(BMap::BMMeshTransition* trans, LibCmo::CK2::ObjImpls::CKM | ||||
|  | ||||
| #pragma endregion | ||||
|  | ||||
| #pragma region CKObject | ||||
|  | ||||
| LibCmo::CKSTRING BMCKObject_GetName(BMap::BMFile* bmfile, LibCmo::CK2::CK_ID objid) { | ||||
| 	auto obj = CheckCKObject<LibCmo::CK2::ObjImpls::CKObject*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_OBJECT); | ||||
| 	if (obj == nullptr) return nullptr; | ||||
| 	return obj->GetName(); | ||||
| } | ||||
|  | ||||
| bool BMCKObject_SetName(BMap::BMFile* bmfile, LibCmo::CK2::CK_ID objid, LibCmo::CKSTRING name) { | ||||
| 	auto obj = CheckCKObject<LibCmo::CK2::ObjImpls::CKObject*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_OBJECT); | ||||
| 	if (obj == nullptr) return false; | ||||
| 	obj->SetName(name); | ||||
| 	return true; | ||||
| } | ||||
|  | ||||
| #pragma endregion | ||||
|  | ||||
| #pragma region CKGroup | ||||
|  | ||||
| bool BMCKGroup_AddObject(BMap::BMFile* bmfile, LibCmo::CK2::CK_ID objid, LibCmo::CK2::CK_ID memberid) { | ||||
| 	auto obj = CheckCKObject<LibCmo::CK2::ObjImpls::CKGroup*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_GROUP); | ||||
| 	auto memberobj = CheckCKObject<LibCmo::CK2::ObjImpls::CK3dObject*>(bmfile, memberid, LibCmo::CK2::CK_CLASSID::CKCID_3DOBJECT); | ||||
| 	if (obj == nullptr || memberobj == nullptr) return false; | ||||
| 	 | ||||
| 	return obj->AddObject(memberobj) == LibCmo::CK2::CKERROR::CKERR_OK; | ||||
| } | ||||
|  | ||||
| LibCmo::CKDWORD BMCKGroup_GetObjectCount(BMap::BMFile* bmfile, LibCmo::CK2::CK_ID objid) { | ||||
| 	auto obj = CheckCKObject<LibCmo::CK2::ObjImpls::CKGroup*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_GROUP); | ||||
| 	if (obj == nullptr) return false; | ||||
| 	return obj->GetObjectCount(); | ||||
| } | ||||
|  | ||||
| LibCmo::CK2::CK_ID BMCKGroup_GetObject(BMap::BMFile* bmfile, LibCmo::CK2::CK_ID objid, LibCmo::CKDWORD pos) { | ||||
| 	auto obj = CheckCKObject<LibCmo::CK2::ObjImpls::CKGroup*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_GROUP); | ||||
| 	if (obj == nullptr) return 0; | ||||
| 	 | ||||
| 	auto cache = obj->GetObject(pos); | ||||
| 	if (cache == nullptr) return 0; | ||||
| 	return cache->GetID(); | ||||
| } | ||||
|  | ||||
| #pragma endregion | ||||
|  | ||||
| #pragma region CKTexture | ||||
|  | ||||
| #pragma endregion | ||||
|  | ||||
| #pragma region CKMaterial | ||||
|  | ||||
| #pragma endregion | ||||
|  | ||||
| #pragma region CKMesh | ||||
|  | ||||
| #pragma endregion | ||||
|  | ||||
| #pragma region CK3dObject | ||||
|  | ||||
| #pragma endregion | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user