**Quote: **"BUT anything that has to do with Vectors are not going to work."

I haven't looked into DarkDynamix at all, but if it will only interface with DB's internal vector ID's you can add these wrappers:

**dgdk-math.h**
int32_t dbMakeInternalVector4(int32_t internalVectorID);
void dbSetInternalVector4(int32_t internalVectorID, float x, float y, float z, float w);
void dbDeleteInternalVector4(int32_t internalVectorID);
int32_t dbMakeInternalMatrix4(int32_t internalMatrixID);
void dbSetInternalMatrix4(int32_t internalMatrixID, float x1, float x2, float x3, float x4, float y1, float y2, float y3, float y4, float z1, float z2, float z3, float z4, float w1, float w2, float w3, float w4);
int32_t dbGetInternalDXMatrix(int32_t internalMatrixID);
float dbGetInternalMatrix4Element(int32_t internalMatrixID, int32_t element);
void dbDeleteInternalMatrix4(int32_t internalMatrixID);
void dbSetInternalIdentityMatrix(int32_t internalMatrixID);

**dgdk-math.cpp**
typedef int32_t (__cdecl *ProtodbMakeInternalVector4_1)(int32_t internalVectorID);
int32_t dbMakeInternalVector4(int32_t internalVectorID) {
static ProtodbMakeInternalVector4_1 Ptr;
int32_t result = 0;
if (!Ptr && !GDKLoadPtr(&Ptr,"DBProVectorsDebug.dll","?MakeVector4@@YAHH@Z"))
return 0;
if (GDKWaitFunction()) {
result = Ptr(internalVectorID);
GDKCleanupFunctionCall();
}
return result;
}
typedef int32_t (__cdecl *ProtodbMakeInternalMatrix4_1)(int32_t internalMatrixID);
int32_t dbMakeInternalMatrix4(int32_t internalMatrixID) {
static ProtodbMakeInternalMatrix4_1 Ptr;
int32_t result = 0;
if (!Ptr && !GDKLoadPtr(&Ptr,"DBProVectorsDebug.dll","?MakeMatrix@@YAHH@Z"))
return 0;
if (GDKWaitFunction()) {
result = Ptr(internalMatrixID);
GDKCleanupFunctionCall();
}
return result;
}
typedef void (__cdecl *ProtodbSetInternalVector4_5)(int32_t internalVectorID, float x, float y, float z, float w);
void dbSetInternalVector4(int32_t internalVectorID, float x, float y, float z, float w) {
static ProtodbSetInternalVector4_5 Ptr;
if (!Ptr && !GDKLoadPtr(&Ptr,"DBProVectorsDebug.dll","?SetVector4@@YAXHMMMM@Z"))
return;
if (GDKWaitFunction()) {
Ptr(internalVectorID, x, y, z, w);
GDKCleanupFunctionCall();
}
return;
}
typedef void (__cdecl *ProtodbDeleteInternalVector4_1)(int32_t internalVectorID);
void dbDeleteInternalVector4(int32_t internalVectorID) {
static ProtodbDeleteInternalVector4_1 Ptr;
if (!Ptr && !GDKLoadPtr(&Ptr,"DBProVectorsDebug.dll","?DeleteVector4@@YAHH@Z"))
return;
if (GDKWaitFunction()) {
Ptr(internalVectorID);
GDKCleanupFunctionCall();
}
return;
}
typedef int32_t(__cdecl *ProtodbGetInternalDXMatrix_1)(int32_t internalMatrixID);
int32_t dbGetInternalDXMatrix(int32_t internalMatrixID) {
static ProtodbGetInternalDXMatrix_1 Ptr;
int32_t result = 0;
if (!Ptr && !GDKLoadPtr(&Ptr,"DBProVectorsDebug.dll","?GetMatrix@@YA?AUD3DXMATRIX@@H@Z"))
return 0;
if (GDKWaitFunction()) {
result = Ptr(internalMatrixID);
GDKCleanupFunctionCall();
}
return result;
}
typedef void (__cdecl *ProtodbDeleteInternalMatrix4_1)(int32_t internalMatrixID);
void dbDeleteInternalMatrix4(int32_t internalMatrixID) {
static ProtodbDeleteInternalMatrix4_1 Ptr;
if (!Ptr && !GDKLoadPtr(&Ptr,"DBProVectorsDebug.dll","?DeleteMatrix@@YAHH@Z"))
return;
if (GDKWaitFunction()) {
Ptr(internalMatrixID);
GDKCleanupFunctionCall();
}
return;
}
typedef void (__cdecl *ProtodbSetInternalMatrix4_17)(int32_t internalMatrixID, float x1, float x2, float x3, float x4, float y1, float y2, float y3, float y4, float z1, float z2, float z3, float z4, float w1, float w2, float w3, float w4);
void dbSetInternalMatrix4(int32_t internalMatrixID, float x1, float x2, float x3, float x4, float y1, float y2, float y3, float y4, float z1, float z2, float z3, float z4, float w1, float w2, float w3, float w4) {
static ProtodbSetInternalMatrix4_17 Ptr;
if (!Ptr && !GDKLoadPtr(&Ptr, "Matrix1Util_32.dll", "SetMatrix4")) {
MessageBoxA(0, "FÃ¶rstÃ¥s", "", 99);
return;
}
if (GDKWaitFunction()) {
Ptr(internalMatrixID, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, w1, w2, w3, w4);
GDKCleanupFunctionCall();
}
return;
}
typedef int32_t (__cdecl *ProtodbGetInternalMatrix4Element_2)(int32_t internalMatrixID, int32_t element);
float dbGetInternalMatrix4Element(int32_t internalMatrixID, int32_t element) {
static ProtodbGetInternalMatrix4Element_2 Ptr;
float floatValue = 0.0f;
if (!Ptr && !GDKLoadPtr(&Ptr,"DBProVectorsDebug.dll","?GetMatrixElement@@YAKHH@Z"))
return floatValue;
int result = 0;
if (GDKWaitFunction()) {
result = Ptr(internalMatrixID, element);
floatValue = *(const float*)&result;
GDKCleanupFunctionCall();
}
return floatValue;
}
typedef void (__cdecl *ProtodbSetInternalIdentityMatrix_1)(int32_t internalMatrixID);
void dbSetInternalIdentityMatrix(int32_t internalMatrixID) {
static ProtodbSetInternalIdentityMatrix_1 Ptr;
if (!Ptr && !GDKLoadPtr(&Ptr, "DBProVectorsDebug.dll", "?SetIdentityMatrix@@YAXH@Z"))
return;
if (GDKWaitFunction()) {
Ptr(internalMatrixID);
GDKCleanupFunctionCall();
}
return;
}

Nice project by the way Morcilla

*"Why do programmers get Halloween and Christmas mixed up?"* Because Oct(31) = Dec(25)