Skip to content

Commit 6bb2421

Browse files
committed
feat: add CKLight into BMap.
- add CKLight support in BMap. - move the implementation of BMFile into CPP file from HPP file. - swap the order of the implementation of BMFile and BMMeshTransition to correspond with the order of their declaration. - add document for some member functions of BMFile.
1 parent ead22d1 commit 6bb2421

File tree

4 files changed

+525
-233
lines changed

4 files changed

+525
-233
lines changed

BMap/BMExports.cpp

Lines changed: 161 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,13 @@ _Ty CheckGeneralObject(BMap::BMFile* possible_bmfile, LibCmo::CK2::CK_ID possibl
4242

4343
#define CheckCKObject(bmfile, objid) CheckGeneralObject<LibCmo::CK2::ObjImpls::CKObject*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_OBJECT)
4444
#define CheckCKGroup(bmfile, objid) CheckGeneralObject<LibCmo::CK2::ObjImpls::CKGroup*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_GROUP)
45-
#define CheckCK3dObject(bmfile, objid) CheckGeneralObject<LibCmo::CK2::ObjImpls::CK3dObject*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_3DOBJECT)
45+
#define CheckCK3dEntity(bmfile, objid) CheckGeneralObject<LibCmo::CK2::ObjImpls::CK3dObject*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_3DENTITY)
46+
#define CheckCK3dObject(bmfile, objid) CheckGeneralObject<LibCmo::CK2::ObjImpls::CK3dEntity*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_3DOBJECT)
4647
#define CheckCKMesh(bmfile, objid) CheckGeneralObject<LibCmo::CK2::ObjImpls::CKMesh*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_MESH)
4748
#define CheckCKMaterial(bmfile, objid) CheckGeneralObject<LibCmo::CK2::ObjImpls::CKMaterial*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_MATERIAL)
4849
#define CheckCKTexture(bmfile, objid) CheckGeneralObject<LibCmo::CK2::ObjImpls::CKTexture*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_TEXTURE)
50+
#define CheckCKLight(bmfile, objid) CheckGeneralObject<LibCmo::CK2::ObjImpls::CKLight*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_LIGHT)
51+
#define CheckCKTargetLight(bmfile, objid) CheckGeneralObject<LibCmo::CK2::ObjImpls::CKTargetLight*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_TARGETLIGHT)
4952

5053
#pragma endregion
5154

@@ -143,7 +146,7 @@ bool BMFile_Create(
143146
bool BMFile_Save(
144147
BMPARAM_IN(BMap::BMFile*, map_file),
145148
BMPARAM_IN(LibCmo::CKSTRING, file_name),
146-
BMPARAM_IN(LibCmo::CK2::CK_TEXTURE_SAVEOPTIONS, texture_save_opt),
149+
BMPARAM_IN(LibCmo::CK2::CK_TEXTURE_SAVEOPTIONS, texture_save_opt),
147150
BMPARAM_IN(bool, use_compress),
148151
BMPARAM_IN(LibCmo::CKINT, compreess_level)) {
149152
if (!CheckBMFile(map_file)) return false;
@@ -234,6 +237,21 @@ bool BMFile_CreateTexture(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CK2::CK
234237
BMPARAM_OUT_ASSIGN(out_id, bmfile->CreateTexture());
235238
return true;
236239
}
240+
bool BMFile_GetTargetLightCount(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CKDWORD, out_count)) {
241+
if (!CheckBMFile(bmfile)) return false;
242+
BMPARAM_OUT_ASSIGN(out_count, bmfile->GetTargetLightCount());
243+
return true;
244+
}
245+
bool BMFile_GetTargetLight(BMPARAM_FILE_DECL(bmfile), BMPARAM_IN(LibCmo::CKDWORD, idx), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id)) {
246+
if (!CheckBMFile(bmfile)) return false;
247+
BMPARAM_OUT_ASSIGN(out_id, bmfile->GetTargetLight(idx));
248+
return true;
249+
}
250+
bool BMFile_CreateTargetLight(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id)) {
251+
if (!CheckBMFile(bmfile)) return false;
252+
BMPARAM_OUT_ASSIGN(out_id, bmfile->CreateTargetLight());
253+
return true;
254+
}
237255

238256
#pragma endregion
239257

@@ -841,51 +859,51 @@ bool BMMesh_SetMaterialSlot(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCm
841859

842860
#pragma endregion
843861

844-
#pragma region CK3dObject
862+
#pragma region CK3dEntity
845863

846-
bool BM3dObject_GetWorldMatrix(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VxMatrix, out_mat)) {
847-
auto obj = CheckCK3dObject(bmfile, objid);
864+
bool BM3dEntity_GetWorldMatrix(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VxMatrix, out_mat)) {
865+
auto obj = CheckCK3dEntity(bmfile, objid);
848866
if (obj == nullptr) return false;
849867

850868
BMPARAM_OUT_ASSIGN(out_mat, obj->GetWorldMatrix());
851869
return true;
852870
}
853871

854-
bool BM3dObject_SetWorldMatrix(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VxMatrix, mat)) {
855-
auto obj = CheckCK3dObject(bmfile, objid);
872+
bool BM3dEntity_SetWorldMatrix(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VxMatrix, mat)) {
873+
auto obj = CheckCK3dEntity(bmfile, objid);
856874
if (obj == nullptr) return false;
857875

858876
obj->SetWorldMatrix(mat);
859877
return true;
860878
}
861879

862-
bool BM3dObject_GetCurrentMesh(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_meshid)) {
863-
auto obj = CheckCK3dObject(bmfile, objid);
880+
bool BM3dEntity_GetCurrentMesh(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_meshid)) {
881+
auto obj = CheckCK3dEntity(bmfile, objid);
864882
if (obj == nullptr) return false;
865883

866884
BMPARAM_OUT_ASSIGN(out_meshid, SafeGetID(obj->GetCurrentMesh()));
867885
return true;
868886
}
869887

870-
bool BM3dObject_SetCurrentMesh(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CK2::CK_ID, meshid)) {
871-
auto obj = CheckCK3dObject(bmfile, objid);
888+
bool BM3dEntity_SetCurrentMesh(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CK2::CK_ID, meshid)) {
889+
auto obj = CheckCK3dEntity(bmfile, objid);
872890
auto meshobj = CheckCKMesh(bmfile, meshid);
873891
if (obj == nullptr /*|| meshobj == nullptr*/) return false; //allow nullptr assign
874892

875893
obj->SetCurrentMesh(meshobj);
876894
return true;
877895
}
878896

879-
bool BM3dObject_GetVisibility(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(bool, out_isVisible)) {
880-
auto obj = CheckCK3dObject(bmfile, objid);
897+
bool BM3dEntity_GetVisibility(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(bool, out_isVisible)) {
898+
auto obj = CheckCK3dEntity(bmfile, objid);
881899
if (obj == nullptr) return false;
882900

883901
BMPARAM_OUT_ASSIGN(out_isVisible, obj->IsVisible());
884902
return true;
885903
}
886904

887-
bool BM3dObject_SetVisibility(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(bool, is_visible)) {
888-
auto obj = CheckCK3dObject(bmfile, objid);
905+
bool BM3dEntity_SetVisibility(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(bool, is_visible)) {
906+
auto obj = CheckCK3dEntity(bmfile, objid);
889907
if (obj == nullptr) return false;
890908

891909
obj->Show(is_visible ? LibCmo::CK2::CK_OBJECT_SHOWOPTION::CKSHOW : LibCmo::CK2::CK_OBJECT_SHOWOPTION::CKHIDE);
@@ -894,3 +912,131 @@ bool BM3dObject_SetVisibility(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(boo
894912

895913
#pragma endregion
896914

915+
#pragma region CK3dObject
916+
917+
//nothing
918+
919+
#pragma endregion
920+
921+
#pragma region CKLight
922+
923+
bool BMLight_GetType(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VXLIGHT_TYPE, out_val)) {
924+
auto obj = CheckCKLight(bmfile, objid);
925+
if (obj == nullptr) return false;
926+
BMPARAM_OUT_ASSIGN(out_val, obj->GetType());
927+
return true;
928+
}
929+
bool BMLight_SetType(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VXLIGHT_TYPE, val)) {
930+
auto obj = CheckCKLight(bmfile, objid);
931+
if (obj == nullptr) return false;
932+
obj->SetType(val);
933+
return true;
934+
}
935+
936+
bool BMLight_GetColor(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VxColor, out_val)) {
937+
auto obj = CheckCKLight(bmfile, objid);
938+
if (obj == nullptr) return false;
939+
BMPARAM_OUT_ASSIGN(out_val, obj->GetColor());
940+
return true;
941+
}
942+
bool BMLight_SetColor(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VxColor, col)) {
943+
auto obj = CheckCKLight(bmfile, objid);
944+
if (obj == nullptr) return false;
945+
obj->SetColor(col);
946+
return true;
947+
}
948+
949+
bool BMLight_GetConstantAttenuation(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val)) {
950+
auto obj = CheckCKLight(bmfile, objid);
951+
if (obj == nullptr) return false;
952+
BMPARAM_OUT_ASSIGN(out_val, obj->GetConstantAttenuation());
953+
return true;
954+
}
955+
bool BMLight_SetConstantAttenuation(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val)) {
956+
auto obj = CheckCKLight(bmfile, objid);
957+
if (obj == nullptr) return false;
958+
obj->SetConstantAttenuation(val);
959+
return true;
960+
}
961+
bool BMLight_GetLinearAttenuation(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val)) {
962+
auto obj = CheckCKLight(bmfile, objid);
963+
if (obj == nullptr) return false;
964+
BMPARAM_OUT_ASSIGN(out_val, obj->GetLinearAttenuation());
965+
return true;
966+
}
967+
bool BMLight_SetLinearAttenuation(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val)) {
968+
auto obj = CheckCKLight(bmfile, objid);
969+
if (obj == nullptr) return false;
970+
obj->SetLinearAttenuation(val);
971+
return true;
972+
}
973+
bool BMLight_GetQuadraticAttenuation(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val)) {
974+
auto obj = CheckCKLight(bmfile, objid);
975+
if (obj == nullptr) return false;
976+
BMPARAM_OUT_ASSIGN(out_val, obj->GetQuadraticAttenuation());
977+
return true;
978+
}
979+
bool BMLight_SetQuadraticAttenuation(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val)) {
980+
auto obj = CheckCKLight(bmfile, objid);
981+
if (obj == nullptr) return false;
982+
obj->SetQuadraticAttenuation(val);
983+
return true;
984+
}
985+
986+
bool BMLight_GetRange(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val)) {
987+
auto obj = CheckCKLight(bmfile, objid);
988+
if (obj == nullptr) return false;
989+
BMPARAM_OUT_ASSIGN(out_val, obj->GetRange());
990+
return true;
991+
}
992+
bool BMLight_SetRange(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val)) {
993+
auto obj = CheckCKLight(bmfile, objid);
994+
if (obj == nullptr) return false;
995+
obj->SetRange(val);
996+
return true;
997+
}
998+
999+
bool BMLight_GetHotSpot(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val)) {
1000+
auto obj = CheckCKLight(bmfile, objid);
1001+
if (obj == nullptr) return false;
1002+
BMPARAM_OUT_ASSIGN(out_val, obj->GetHotSpot());
1003+
return true;
1004+
}
1005+
bool BMLight_SetHotSpot(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val)) {
1006+
auto obj = CheckCKLight(bmfile, objid);
1007+
if (obj == nullptr) return false;
1008+
obj->SetHotSpot(val);
1009+
return true;
1010+
}
1011+
bool BMLight_GetFalloff(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val)) {
1012+
auto obj = CheckCKLight(bmfile, objid);
1013+
if (obj == nullptr) return false;
1014+
BMPARAM_OUT_ASSIGN(out_val, obj->GetFalloff());
1015+
return true;
1016+
}
1017+
bool BMLight_SetFalloff(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val)) {
1018+
auto obj = CheckCKLight(bmfile, objid);
1019+
if (obj == nullptr) return false;
1020+
obj->SetFalloff(val);
1021+
return true;
1022+
}
1023+
bool BMLight_GetFalloffShape(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val)) {
1024+
auto obj = CheckCKLight(bmfile, objid);
1025+
if (obj == nullptr) return false;
1026+
BMPARAM_OUT_ASSIGN(out_val, obj->GetFalloffShape());
1027+
return true;
1028+
}
1029+
bool BMLight_SetFalloffShape(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val)) {
1030+
auto obj = CheckCKLight(bmfile, objid);
1031+
if (obj == nullptr) return false;
1032+
obj->SetFalloffShape(val);
1033+
return true;
1034+
}
1035+
1036+
#pragma endregion
1037+
1038+
#pragma region CKTargetLight
1039+
1040+
// nothing
1041+
1042+
#pragma endregion

BMap/BMExports.hpp

Lines changed: 52 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ Each CK_ID also should be used with its corresponding BMFile*, because each BMfi
5151
// Do nothing and hope for the best?
5252
#define BMAP_RAW_EXPORT
5353
#define BMAP_RAW_IMPORT
54-
#pragma error "Unknown dynamic link import/export semantics."
54+
#error "Unknown dynamic link import/export semantics."
5555
#endif
5656

5757
// Choosee import or export command according to special macro.
@@ -81,7 +81,9 @@ Each CK_ID also should be used with its corresponding BMFile*, because each BMfi
8181
/** Declare an input parameter */
8282
#define BMPARAM_IN(_t, _name) _t _name
8383
/**
84+
@brief
8485
Declare an output parameter.
86+
@details
8587
A pointer will be added automatically for caller receive it.
8688
See BMPARAM_OUT_ASSIGN and BMPARAM_OUT_VAL to know how to use output param in function body.
8789
@remark
@@ -91,8 +93,8 @@ bool some_interface_func(BMPARAM_OUT(Type_t, param_name)) {
9193
BMPARAM_OUT_ASSIGN(param_name, some_value); // assign to out param.
9294
return BMPARAM_OUT_VAL(param_name) != other_value; // use out param value.
9395
}
94-
@see BMPARAM_OUT_ASSIGN, BMPARAM_OUT_VAL
9596
```
97+
@see BMPARAM_OUT_ASSIGN, BMPARAM_OUT_VAL
9698
*/
9799
#define BMPARAM_OUT(_t, _name) _t* _name
98100
/** Assign value for out param in function body. */
@@ -154,6 +156,9 @@ BMAP_EXPORT bool BMFile_CreateMaterial(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(Li
154156
BMAP_EXPORT bool BMFile_GetTextureCount(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CKDWORD, out_count));
155157
BMAP_EXPORT bool BMFile_GetTexture(BMPARAM_FILE_DECL(bmfile), BMPARAM_IN(LibCmo::CKDWORD, idx), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id));
156158
BMAP_EXPORT bool BMFile_CreateTexture(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id));
159+
BMAP_EXPORT bool BMFile_GetTargetLightCount(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CKDWORD, out_count));
160+
BMAP_EXPORT bool BMFile_GetTargetLight(BMPARAM_FILE_DECL(bmfile), BMPARAM_IN(LibCmo::CKDWORD, idx), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id));
161+
BMAP_EXPORT bool BMFile_CreateTargetLight(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id));
157162

158163
#pragma endregion
159164

@@ -285,13 +290,52 @@ BMAP_EXPORT bool BMMesh_SetMaterialSlot(BMPARAM_OBJECT_DECL(bmfile, objid), BMPA
285290

286291
#pragma endregion
287292

293+
#pragma region CK3dEntity
294+
295+
BMAP_EXPORT bool BM3dEntity_GetWorldMatrix(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VxMatrix, out_mat));
296+
BMAP_EXPORT bool BM3dEntity_SetWorldMatrix(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VxMatrix, mat));
297+
BMAP_EXPORT bool BM3dEntity_GetCurrentMesh(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_meshid));
298+
BMAP_EXPORT bool BM3dEntity_SetCurrentMesh(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CK2::CK_ID, meshid));
299+
BMAP_EXPORT bool BM3dEntity_GetVisibility(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(bool, out_isVisible));
300+
BMAP_EXPORT bool BM3dEntity_SetVisibility(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(bool, is_visible));
301+
302+
#pragma endregion
303+
288304
#pragma region CK3dObject
289305

290-
BMAP_EXPORT bool BM3dObject_GetWorldMatrix(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VxMatrix, out_mat));
291-
BMAP_EXPORT bool BM3dObject_SetWorldMatrix(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VxMatrix, mat));
292-
BMAP_EXPORT bool BM3dObject_GetCurrentMesh(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_meshid));
293-
BMAP_EXPORT bool BM3dObject_SetCurrentMesh(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CK2::CK_ID, meshid));
294-
BMAP_EXPORT bool BM3dObject_GetVisibility(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(bool, out_isVisible));
295-
BMAP_EXPORT bool BM3dObject_SetVisibility(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(bool, is_visible));
306+
// nothing
307+
308+
#pragma endregion
309+
310+
#pragma region CKLight
311+
312+
BMAP_EXPORT bool BMLight_GetType(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VXLIGHT_TYPE, out_val));
313+
BMAP_EXPORT bool BMLight_SetType(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VXLIGHT_TYPE, val));
314+
315+
BMAP_EXPORT bool BMLight_GetColor(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VxColor, out_val));
316+
BMAP_EXPORT bool BMLight_SetColor(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VxColor, col));
317+
318+
BMAP_EXPORT bool BMLight_GetConstantAttenuation(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val));
319+
BMAP_EXPORT bool BMLight_SetConstantAttenuation(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val));
320+
BMAP_EXPORT bool BMLight_GetLinearAttenuation(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val));
321+
BMAP_EXPORT bool BMLight_SetLinearAttenuation(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val));
322+
BMAP_EXPORT bool BMLight_GetQuadraticAttenuation(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val));
323+
BMAP_EXPORT bool BMLight_SetQuadraticAttenuation(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val));
324+
325+
BMAP_EXPORT bool BMLight_GetRange(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val));
326+
BMAP_EXPORT bool BMLight_SetRange(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val));
327+
328+
BMAP_EXPORT bool BMLight_GetHotSpot(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val));
329+
BMAP_EXPORT bool BMLight_SetHotSpot(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val));
330+
BMAP_EXPORT bool BMLight_GetFalloff(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val));
331+
BMAP_EXPORT bool BMLight_SetFalloff(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val));
332+
BMAP_EXPORT bool BMLight_GetFalloffShape(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val));
333+
BMAP_EXPORT bool BMLight_SetFalloffShape(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val));
334+
335+
#pragma endregion
336+
337+
#pragma region CKTargetLight
338+
339+
// nothing
296340

297341
#pragma endregion

0 commit comments

Comments
 (0)