1
0

fix: fix BMap export function implementation bug

This commit is contained in:
2026-02-07 22:23:17 +08:00
parent 705af2aa3f
commit b9d42c73f7
4 changed files with 26 additions and 19 deletions

View File

@@ -1,3 +1,8 @@
## ======== Personal ========
# Remove I set environment variables for personal testing.
launchSettings.json
## ======== Visual Studio ========
## Ignore Visual Studio temporary files, build results, and ## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons. ## files generated by popular Visual Studio add-ons.
## ##

View File

@@ -10,16 +10,16 @@ namespace BMapSharpTest.TestSuits {
public static void Test(BMFileReader reader) { public static void Test(BMFileReader reader) {
Console.WriteLine("===== Groups ====="); Console.WriteLine("===== Groups =====");
TestGroup(reader); TestGroup(reader);
//Console.WriteLine("===== 3dObjects ====="); Console.WriteLine("===== 3dObjects =====");
//Test3dObject(reader); Test3dObject(reader);
//Console.WriteLine("===== Meshes ====="); Console.WriteLine("===== Meshes =====");
//TestMesh(reader); TestMesh(reader);
//Console.WriteLine("===== Materials ====="); Console.WriteLine("===== Materials =====");
//TestMaterial(reader); TestMaterial(reader);
//Console.WriteLine("===== Textures ====="); Console.WriteLine("===== Textures =====");
//TestTexture(reader); TestTexture(reader);
//Console.WriteLine("===== Target Lights ====="); Console.WriteLine("===== Target Lights =====");
//TestTargetLight(reader); TestTargetLight(reader);
Console.WriteLine("===== Target Cameras ====="); Console.WriteLine("===== Target Cameras =====");
TestTargetCamera(reader); TestTargetCamera(reader);
Console.WriteLine("===== END ====="); Console.WriteLine("===== END =====");
@@ -134,7 +134,7 @@ namespace BMapSharpTest.TestSuits {
Console.WriteLine($"Fov: {cam.GetFov()}"); Console.WriteLine($"Fov: {cam.GetFov()}");
cam.GetAspectRatio(out var width, out var height); cam.GetAspectRatio(out var width, out var height);
Console.WriteLine($"Aspect Ratio: {width} x {height}"); Console.WriteLine($"Aspect Ratio: {width}:{height}");
} }
} }
} }

View File

@@ -1107,7 +1107,7 @@ bool BMCamera_SetFrontPlane(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCm
bool BMCamera_GetBackPlane(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val)) { bool BMCamera_GetBackPlane(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val)) {
auto obj = CheckCKCamera(bmfile, objid); auto obj = CheckCKCamera(bmfile, objid);
if (obj == nullptr) return false; if (obj == nullptr) return false;
BMPARAM_OUT_ASSIGN(out_val, obj->GetFrontPlane()); BMPARAM_OUT_ASSIGN(out_val, obj->GetBackPlane());
return true; return true;
} }
bool BMCamera_SetBackPlane(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val)) { bool BMCamera_SetBackPlane(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val)) {
@@ -1119,7 +1119,7 @@ bool BMCamera_SetBackPlane(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo
bool BMCamera_GetFov(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val)) { bool BMCamera_GetFov(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val)) {
auto obj = CheckCKCamera(bmfile, objid); auto obj = CheckCKCamera(bmfile, objid);
if (obj == nullptr) return false; if (obj == nullptr) return false;
BMPARAM_OUT_ASSIGN(out_val, obj->GetFrontPlane()); BMPARAM_OUT_ASSIGN(out_val, obj->GetFov());
return true; return true;
} }
bool BMCamera_SetFov(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val)) { bool BMCamera_SetFov(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val)) {

View File

@@ -178,13 +178,15 @@ namespace BMap {
// BMFile only provide limited type visiting, we must make sure it provided ID also is existed in out stored list. // BMFile only provide limited type visiting, we must make sure it provided ID also is existed in out stored list.
// so we check its type here. if type is not matched, we reset it to nullptr. // so we check its type here. if type is not matched, we reset it to nullptr.
if (obj != nullptr) { if (obj != nullptr) {
using LibCmo::CK2::CK_CLASSID;
switch (obj->GetClassID()) { switch (obj->GetClassID()) {
case LibCmo::CK2::CK_CLASSID::CKCID_GROUP: case CK_CLASSID::CKCID_GROUP:
case LibCmo::CK2::CK_CLASSID::CKCID_3DOBJECT: case CK_CLASSID::CKCID_3DOBJECT:
case LibCmo::CK2::CK_CLASSID::CKCID_MESH: case CK_CLASSID::CKCID_MESH:
case LibCmo::CK2::CK_CLASSID::CKCID_MATERIAL: case CK_CLASSID::CKCID_MATERIAL:
case LibCmo::CK2::CK_CLASSID::CKCID_TEXTURE: case CK_CLASSID::CKCID_TEXTURE:
case LibCmo::CK2::CK_CLASSID::CKCID_TARGETLIGHT: case CK_CLASSID::CKCID_TARGETLIGHT:
case CK_CLASSID::CKCID_TARGETCAMERA:
break; // okey. do nothing break; // okey. do nothing
default: default:
// this object should not be exposed to outside, reset it to nullptr // this object should not be exposed to outside, reset it to nullptr