feat: add camera support for BMap
This commit is contained in:
@@ -51,9 +51,13 @@ T CheckGenericObject(BMap::BMFile* possible_bmfile, LibCmo::CK2::CK_ID possible_
|
|||||||
#define CheckCKTexture(bmfile, objid) CheckGenericObject<LibCmo::CK2::ObjImpls::CKTexture*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_TEXTURE)
|
#define CheckCKTexture(bmfile, objid) CheckGenericObject<LibCmo::CK2::ObjImpls::CKTexture*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_TEXTURE)
|
||||||
#define CheckCKLight(bmfile, objid) CheckGenericObject<LibCmo::CK2::ObjImpls::CKLight*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_LIGHT)
|
#define CheckCKLight(bmfile, objid) CheckGenericObject<LibCmo::CK2::ObjImpls::CKLight*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_LIGHT)
|
||||||
#define CheckCKTargetLight(bmfile, objid) CheckGenericObject<LibCmo::CK2::ObjImpls::CKTargetLight*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_TARGETLIGHT)
|
#define CheckCKTargetLight(bmfile, objid) CheckGenericObject<LibCmo::CK2::ObjImpls::CKTargetLight*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_TARGETLIGHT)
|
||||||
|
#define CheckCKCamera(bmfile, objid) CheckGenericObject<LibCmo::CK2::ObjImpls::CKCamera*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_CAMERA)
|
||||||
|
#define CheckCKTargetCamera(bmfile, objid) CheckGenericObject<LibCmo::CK2::ObjImpls::CKTargetCamera*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_TARGETCAMERA)
|
||||||
|
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
|
||||||
#pragma region Module Init & Dispose
|
#pragma region Module Init & Dispose
|
||||||
|
|
||||||
bool BMInit() {
|
bool BMInit() {
|
||||||
@@ -254,6 +258,21 @@ bool BMFile_CreateTargetLight(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CK2
|
|||||||
BMPARAM_OUT_ASSIGN(out_id, bmfile->CreateTargetLight());
|
BMPARAM_OUT_ASSIGN(out_id, bmfile->CreateTargetLight());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
bool BMFile_GetTargetCameraCount(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CKDWORD, out_count)) {
|
||||||
|
if (!CheckBMFile(bmfile)) return false;
|
||||||
|
BMPARAM_OUT_ASSIGN(out_count, bmfile->GetTargetCameraCount());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
bool BMFile_GetTargetCamera(BMPARAM_FILE_DECL(bmfile), BMPARAM_IN(LibCmo::CKDWORD, idx), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id)) {
|
||||||
|
if (!CheckBMFile(bmfile)) return false;
|
||||||
|
BMPARAM_OUT_ASSIGN(out_id, bmfile->GetTargetCamera(idx));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
bool BMFile_CreateTargetCamera(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id)) {
|
||||||
|
if (!CheckBMFile(bmfile)) return false;
|
||||||
|
BMPARAM_OUT_ASSIGN(out_id, bmfile->CreateTargetCamera());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
||||||
@@ -1042,3 +1061,98 @@ bool BMLight_SetFalloffShape(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibC
|
|||||||
// nothing
|
// nothing
|
||||||
|
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
||||||
|
#pragma region CKCamera
|
||||||
|
|
||||||
|
bool BMCamera_GetProjectionType(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CK2::CK_CAMERA_PROJECTION, out_val)) {
|
||||||
|
auto obj = CheckCKCamera(bmfile, objid);
|
||||||
|
if (obj == nullptr) return false;
|
||||||
|
|
||||||
|
BMPARAM_OUT_ASSIGN(out_val, obj->GetProjectionType());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
bool BMCamera_SetProjectionType(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CK2::CK_CAMERA_PROJECTION, val)) {
|
||||||
|
auto obj = CheckCKCamera(bmfile, objid);
|
||||||
|
if (obj == nullptr) return false;
|
||||||
|
|
||||||
|
obj->SetProjectionType(val);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BMCamera_GetOrthographicZoom(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val)) {
|
||||||
|
auto obj = CheckCKCamera(bmfile, objid);
|
||||||
|
if (obj == nullptr) return false;
|
||||||
|
BMPARAM_OUT_ASSIGN(out_val, obj->GetOrthographicZoom());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
bool BMCamera_SetOrthographicZoom(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val)) {
|
||||||
|
auto obj = CheckCKCamera(bmfile, objid);
|
||||||
|
if (obj == nullptr) return false;
|
||||||
|
obj->SetOrthographicZoom(val);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BMCamera_GetFrontPlane(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val)) {
|
||||||
|
auto obj = CheckCKCamera(bmfile, objid);
|
||||||
|
if (obj == nullptr) return false;
|
||||||
|
BMPARAM_OUT_ASSIGN(out_val, obj->GetFrontPlane());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
bool BMCamera_SetFrontPlane(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val)) {
|
||||||
|
auto obj = CheckCKCamera(bmfile, objid);
|
||||||
|
if (obj == nullptr) return false;
|
||||||
|
obj->SetFrontPlane(val);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
bool BMCamera_GetBackPlane(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val)) {
|
||||||
|
auto obj = CheckCKCamera(bmfile, objid);
|
||||||
|
if (obj == nullptr) return false;
|
||||||
|
BMPARAM_OUT_ASSIGN(out_val, obj->GetFrontPlane());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
bool BMCamera_SetBackPlane(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val)) {
|
||||||
|
auto obj = CheckCKCamera(bmfile, objid);
|
||||||
|
if (obj == nullptr) return false;
|
||||||
|
obj->SetBackPlane(val);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
bool BMCamera_GetFov(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val)) {
|
||||||
|
auto obj = CheckCKCamera(bmfile, objid);
|
||||||
|
if (obj == nullptr) return false;
|
||||||
|
BMPARAM_OUT_ASSIGN(out_val, obj->GetFrontPlane());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
bool BMCamera_SetFov(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val)) {
|
||||||
|
auto obj = CheckCKCamera(bmfile, objid);
|
||||||
|
if (obj == nullptr) return false;
|
||||||
|
obj->SetFov(val);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BMCamera_GetAspectRatio(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKDWORD, out_width), BMPARAM_OUT(LibCmo::CKDWORD, out_height)) {
|
||||||
|
auto obj = CheckCKCamera(bmfile, objid);
|
||||||
|
if (obj == nullptr) return false;
|
||||||
|
|
||||||
|
LibCmo::CKDWORD cache_width, cache_height;
|
||||||
|
obj->GetAspectRatio(cache_width, cache_height);
|
||||||
|
BMPARAM_OUT_ASSIGN(out_width, cache_width);
|
||||||
|
BMPARAM_OUT_ASSIGN(out_height, cache_height);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
bool BMCamera_SetAspectRatio(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKDWORD, width), BMPARAM_IN(LibCmo::CKDWORD, height)) {
|
||||||
|
auto obj = CheckCKCamera(bmfile, objid);
|
||||||
|
if (obj == nullptr) return false;
|
||||||
|
obj->SetAspectRatio(width, height);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma endregion
|
||||||
|
|
||||||
|
#pragma region CKTargetCamera
|
||||||
|
|
||||||
|
// nothing
|
||||||
|
|
||||||
|
#pragma endregion
|
||||||
|
|
||||||
|
// clang-format on
|
||||||
|
|||||||
@@ -104,6 +104,8 @@ bool some_interface_func(BMPARAM_OUT(Type_t, param_name)) {
|
|||||||
|
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
|
||||||
#pragma region Init / Dispose
|
#pragma region Init / Dispose
|
||||||
|
|
||||||
BMAP_EXPORT bool BMInit();
|
BMAP_EXPORT bool BMInit();
|
||||||
@@ -159,6 +161,9 @@ BMAP_EXPORT bool BMFile_CreateTexture(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(Lib
|
|||||||
BMAP_EXPORT bool BMFile_GetTargetLightCount(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CKDWORD, out_count));
|
BMAP_EXPORT bool BMFile_GetTargetLightCount(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CKDWORD, out_count));
|
||||||
BMAP_EXPORT bool BMFile_GetTargetLight(BMPARAM_FILE_DECL(bmfile), BMPARAM_IN(LibCmo::CKDWORD, idx), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id));
|
BMAP_EXPORT bool BMFile_GetTargetLight(BMPARAM_FILE_DECL(bmfile), BMPARAM_IN(LibCmo::CKDWORD, idx), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id));
|
||||||
BMAP_EXPORT bool BMFile_CreateTargetLight(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id));
|
BMAP_EXPORT bool BMFile_CreateTargetLight(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id));
|
||||||
|
BMAP_EXPORT bool BMFile_GetTargetCameraCount(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CKDWORD, out_count));
|
||||||
|
BMAP_EXPORT bool BMFile_GetTargetCamera(BMPARAM_FILE_DECL(bmfile), BMPARAM_IN(LibCmo::CKDWORD, idx), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id));
|
||||||
|
BMAP_EXPORT bool BMFile_CreateTargetCamera(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id));
|
||||||
|
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
||||||
@@ -339,3 +344,31 @@ BMAP_EXPORT bool BMLight_SetFalloffShape(BMPARAM_OBJECT_DECL(bmfile, objid), BMP
|
|||||||
// nothing
|
// nothing
|
||||||
|
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
||||||
|
#pragma region CKCamera
|
||||||
|
|
||||||
|
BMAP_EXPORT bool BMCamera_GetProjectionType(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CK2::CK_CAMERA_PROJECTION, out_val));
|
||||||
|
BMAP_EXPORT bool BMCamera_SetProjectionType(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CK2::CK_CAMERA_PROJECTION, val));
|
||||||
|
|
||||||
|
BMAP_EXPORT bool BMCamera_GetOrthographicZoom(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val));
|
||||||
|
BMAP_EXPORT bool BMCamera_SetOrthographicZoom(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val));
|
||||||
|
|
||||||
|
BMAP_EXPORT bool BMCamera_GetFrontPlane(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val));
|
||||||
|
BMAP_EXPORT bool BMCamera_SetFrontPlane(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val));
|
||||||
|
BMAP_EXPORT bool BMCamera_GetBackPlane(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val));
|
||||||
|
BMAP_EXPORT bool BMCamera_SetBackPlane(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val));
|
||||||
|
BMAP_EXPORT bool BMCamera_GetFov(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val));
|
||||||
|
BMAP_EXPORT bool BMCamera_SetFov(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val));
|
||||||
|
|
||||||
|
BMAP_EXPORT bool BMCamera_GetAspectRatio(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKDWORD, out_width), BMPARAM_OUT(LibCmo::CKDWORD, out_height));
|
||||||
|
BMAP_EXPORT bool BMCamera_SetAspectRatio(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKDWORD, width), BMPARAM_IN(LibCmo::CKDWORD, height));
|
||||||
|
|
||||||
|
#pragma endregion
|
||||||
|
|
||||||
|
#pragma region CKTargetCamera
|
||||||
|
|
||||||
|
// nothing
|
||||||
|
|
||||||
|
#pragma endregion
|
||||||
|
|
||||||
|
// clang-format on
|
||||||
|
|||||||
@@ -11,9 +11,7 @@ namespace BMap {
|
|||||||
// check whether callback is nullptr.
|
// check whether callback is nullptr.
|
||||||
m_IsInitError = m_IsInitError || (raw_callback == nullptr);
|
m_IsInitError = m_IsInitError || (raw_callback == nullptr);
|
||||||
if (raw_callback != nullptr) {
|
if (raw_callback != nullptr) {
|
||||||
m_Context->SetOutputCallback([raw_callback](LibCmo::CKSTRING strl) -> void {
|
m_Context->SetOutputCallback([raw_callback](LibCmo::CKSTRING strl) -> void { raw_callback(strl); });
|
||||||
raw_callback(strl);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// set temp folder and texture folder
|
// set temp folder and texture folder
|
||||||
@@ -89,28 +87,33 @@ namespace BMap {
|
|||||||
m_ObjMaterials.clear();
|
m_ObjMaterials.clear();
|
||||||
m_ObjTextures.clear();
|
m_ObjTextures.clear();
|
||||||
m_ObjTargetLights.clear();
|
m_ObjTargetLights.clear();
|
||||||
|
m_ObjTargetCameras.clear();
|
||||||
for (const auto& fileobj : reader.GetFileObjects()) {
|
for (const auto& fileobj : reader.GetFileObjects()) {
|
||||||
if (fileobj.ObjPtr == nullptr) continue;
|
if (fileobj.ObjPtr == nullptr) continue;
|
||||||
|
|
||||||
|
using LibCmo::CK2::CK_CLASSID;
|
||||||
switch (fileobj.ObjectCid) {
|
switch (fileobj.ObjectCid) {
|
||||||
case LibCmo::CK2::CK_CLASSID::CKCID_GROUP:
|
case CK_CLASSID::CKCID_GROUP:
|
||||||
m_ObjGroups.emplace_back(fileobj.CreatedObjectId);
|
m_ObjGroups.emplace_back(fileobj.CreatedObjectId);
|
||||||
break;
|
break;
|
||||||
case LibCmo::CK2::CK_CLASSID::CKCID_3DOBJECT:
|
case CK_CLASSID::CKCID_3DOBJECT:
|
||||||
m_Obj3dObjects.emplace_back(fileobj.CreatedObjectId);
|
m_Obj3dObjects.emplace_back(fileobj.CreatedObjectId);
|
||||||
break;
|
break;
|
||||||
case LibCmo::CK2::CK_CLASSID::CKCID_MESH:
|
case CK_CLASSID::CKCID_MESH:
|
||||||
m_ObjMeshes.emplace_back(fileobj.CreatedObjectId);
|
m_ObjMeshes.emplace_back(fileobj.CreatedObjectId);
|
||||||
break;
|
break;
|
||||||
case LibCmo::CK2::CK_CLASSID::CKCID_MATERIAL:
|
case CK_CLASSID::CKCID_MATERIAL:
|
||||||
m_ObjMaterials.emplace_back(fileobj.CreatedObjectId);
|
m_ObjMaterials.emplace_back(fileobj.CreatedObjectId);
|
||||||
break;
|
break;
|
||||||
case LibCmo::CK2::CK_CLASSID::CKCID_TEXTURE:
|
case CK_CLASSID::CKCID_TEXTURE:
|
||||||
m_ObjTextures.emplace_back(fileobj.CreatedObjectId);
|
m_ObjTextures.emplace_back(fileobj.CreatedObjectId);
|
||||||
break;
|
break;
|
||||||
case LibCmo::CK2::CK_CLASSID::CKCID_TARGETLIGHT:
|
case CK_CLASSID::CKCID_TARGETLIGHT:
|
||||||
m_ObjTargetLights.emplace_back(fileobj.CreatedObjectId);
|
m_ObjTargetLights.emplace_back(fileobj.CreatedObjectId);
|
||||||
break;
|
break;
|
||||||
|
case CK_CLASSID::CKCID_TARGETCAMERA:
|
||||||
|
m_ObjTargetCameras.emplace_back(fileobj.CreatedObjectId);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break; // skip unknow objects
|
break; // skip unknow objects
|
||||||
}
|
}
|
||||||
@@ -145,6 +148,9 @@ namespace BMap {
|
|||||||
for (const auto& id : m_ObjTargetLights) {
|
for (const auto& id : m_ObjTargetLights) {
|
||||||
writer.AddSavedObject(m_Context->GetObject(id));
|
writer.AddSavedObject(m_Context->GetObject(id));
|
||||||
}
|
}
|
||||||
|
for (const auto& id : m_ObjTargetCameras) {
|
||||||
|
writer.AddSavedObject(m_Context->GetObject(id));
|
||||||
|
}
|
||||||
|
|
||||||
// set global texture save mode
|
// set global texture save mode
|
||||||
m_Context->SetGlobalImagesSaveOptions(texture_save_opt);
|
m_Context->SetGlobalImagesSaveOptions(texture_save_opt);
|
||||||
@@ -238,6 +244,9 @@ namespace BMap {
|
|||||||
LibCmo::CKDWORD BMFile::GetTargetLightCount() { return CommonGetObjectCount(m_ObjTargetLights); }
|
LibCmo::CKDWORD BMFile::GetTargetLightCount() { return CommonGetObjectCount(m_ObjTargetLights); }
|
||||||
LibCmo::CK2::CK_ID BMFile::GetTargetLight(LibCmo::CKDWORD idx) { return CommonGetObject(m_ObjTargetLights, idx); }
|
LibCmo::CK2::CK_ID BMFile::GetTargetLight(LibCmo::CKDWORD idx) { return CommonGetObject(m_ObjTargetLights, idx); }
|
||||||
LibCmo::CK2::CK_ID BMFile::CreateTargetLight() { return CommonCreateObject(m_ObjTargetLights, LibCmo::CK2::CK_CLASSID::CKCID_TARGETLIGHT); }
|
LibCmo::CK2::CK_ID BMFile::CreateTargetLight() { return CommonCreateObject(m_ObjTargetLights, LibCmo::CK2::CK_CLASSID::CKCID_TARGETLIGHT); }
|
||||||
|
LibCmo::CKDWORD BMFile::GetTargetCameraCount() { return CommonGetObjectCount(m_ObjTargetCameras); }
|
||||||
|
LibCmo::CK2::CK_ID BMFile::GetTargetCamera(LibCmo::CKDWORD idx) { return CommonGetObject(m_ObjTargetCameras, idx); }
|
||||||
|
LibCmo::CK2::CK_ID BMFile::CreateTargetCamera() { return CommonCreateObject(m_ObjTargetCameras, LibCmo::CK2::CK_CLASSID::CKCID_TARGETCAMERA); }
|
||||||
|
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
||||||
|
|||||||
@@ -126,6 +126,9 @@ namespace BMap {
|
|||||||
LibCmo::CKDWORD GetTargetLightCount();
|
LibCmo::CKDWORD GetTargetLightCount();
|
||||||
LibCmo::CK2::CK_ID GetTargetLight(LibCmo::CKDWORD idx);
|
LibCmo::CK2::CK_ID GetTargetLight(LibCmo::CKDWORD idx);
|
||||||
LibCmo::CK2::CK_ID CreateTargetLight();
|
LibCmo::CK2::CK_ID CreateTargetLight();
|
||||||
|
LibCmo::CKDWORD GetTargetCameraCount();
|
||||||
|
LibCmo::CK2::CK_ID GetTargetCamera(LibCmo::CKDWORD idx);
|
||||||
|
LibCmo::CK2::CK_ID CreateTargetCamera();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
LibCmo::CK2::CKContext* m_Context;
|
LibCmo::CK2::CKContext* m_Context;
|
||||||
@@ -136,6 +139,7 @@ namespace BMap {
|
|||||||
std::vector<LibCmo::CK2::CK_ID> m_ObjMaterials;
|
std::vector<LibCmo::CK2::CK_ID> m_ObjMaterials;
|
||||||
std::vector<LibCmo::CK2::CK_ID> m_ObjTextures;
|
std::vector<LibCmo::CK2::CK_ID> m_ObjTextures;
|
||||||
std::vector<LibCmo::CK2::CK_ID> m_ObjTargetLights;
|
std::vector<LibCmo::CK2::CK_ID> m_ObjTargetLights;
|
||||||
|
std::vector<LibCmo::CK2::CK_ID> m_ObjTargetCameras;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ namespace BMapInspector::Rule {
|
|||||||
// No, this is not rail texture, throw error.
|
// No, this is not rail texture, throw error.
|
||||||
reporter.FormatError(
|
reporter.FormatError(
|
||||||
YYC1,
|
YYC1,
|
||||||
u8R"(Object "%s" is grouped into Phys_FloorRails, but its texture "%s" (referred by mesh %s and material %s) seems not the rail texture. This will cause some parts of this object be smooth unexpectly.)",
|
u8R"(Object "%s" is grouped into Phys_FloorRails, but its texture "%s" (referred by mesh "%s" and material "%s") seems not the rail texture. This will cause some parts of this object be smooth unexpectly.)",
|
||||||
Shared::RenderObjectName(group_3dobject),
|
Shared::RenderObjectName(group_3dobject),
|
||||||
Shared::RenderObjectName(texture),
|
Shared::RenderObjectName(texture),
|
||||||
Shared::RenderObjectName(mesh),
|
Shared::RenderObjectName(mesh),
|
||||||
|
|||||||
Reference in New Issue
Block a user