@@ -42,10 +42,13 @@ _Ty CheckGeneralObject(BMap::BMFile* possible_bmfile, LibCmo::CK2::CK_ID possibl
42
42
43
43
#define CheckCKObject (bmfile, objid ) CheckGeneralObject<LibCmo::CK2::ObjImpls::CKObject*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_OBJECT)
44
44
#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)
46
47
#define CheckCKMesh (bmfile, objid ) CheckGeneralObject<LibCmo::CK2::ObjImpls::CKMesh*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_MESH)
47
48
#define CheckCKMaterial (bmfile, objid ) CheckGeneralObject<LibCmo::CK2::ObjImpls::CKMaterial*>(bmfile, objid, LibCmo::CK2::CK_CLASSID::CKCID_MATERIAL)
48
49
#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)
49
52
50
53
#pragma endregion
51
54
@@ -143,7 +146,7 @@ bool BMFile_Create(
143
146
bool BMFile_Save (
144
147
BMPARAM_IN (BMap::BMFile*, map_file),
145
148
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),
147
150
BMPARAM_IN(bool , use_compress),
148
151
BMPARAM_IN(LibCmo::CKINT, compreess_level)) {
149
152
if (!CheckBMFile (map_file)) return false ;
@@ -234,6 +237,21 @@ bool BMFile_CreateTexture(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CK2::CK
234
237
BMPARAM_OUT_ASSIGN (out_id, bmfile->CreateTexture ());
235
238
return true ;
236
239
}
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
+ }
237
255
238
256
#pragma endregion
239
257
@@ -841,51 +859,51 @@ bool BMMesh_SetMaterialSlot(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCm
841
859
842
860
#pragma endregion
843
861
844
- #pragma region CK3dObject
862
+ #pragma region CK3dEntity
845
863
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);
848
866
if (obj == nullptr ) return false ;
849
867
850
868
BMPARAM_OUT_ASSIGN (out_mat, obj->GetWorldMatrix ());
851
869
return true ;
852
870
}
853
871
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);
856
874
if (obj == nullptr ) return false ;
857
875
858
876
obj->SetWorldMatrix (mat);
859
877
return true ;
860
878
}
861
879
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);
864
882
if (obj == nullptr ) return false ;
865
883
866
884
BMPARAM_OUT_ASSIGN (out_meshid, SafeGetID (obj->GetCurrentMesh ()));
867
885
return true ;
868
886
}
869
887
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);
872
890
auto meshobj = CheckCKMesh (bmfile, meshid);
873
891
if (obj == nullptr /* || meshobj == nullptr*/ ) return false ; // allow nullptr assign
874
892
875
893
obj->SetCurrentMesh (meshobj);
876
894
return true ;
877
895
}
878
896
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);
881
899
if (obj == nullptr ) return false ;
882
900
883
901
BMPARAM_OUT_ASSIGN (out_isVisible, obj->IsVisible ());
884
902
return true ;
885
903
}
886
904
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);
889
907
if (obj == nullptr ) return false ;
890
908
891
909
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
894
912
895
913
#pragma endregion
896
914
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
0 commit comments