Hi everyone,
I've decided to release some of my useful code libraries as a collection of DBPro plugins. This first release contains a pointer-based mathematics plugin. It contains 8 commandsets for manipulating Vector2, Vector3, Vector4, Matrix4, Quaternion, Plane, Frustum, and ViewPort structures. In addition to being considerably faster than DBPro's native vector library, the resources used by this plugin work with jGfx's Shader_ commandset.
Update Nov-20-2018:
==========================
Bug fixes (2):
----------------------------------
- Fixed typo causing crash in pMat4_Delete
- Fixed typo causing matrix scale values to be incorrectly interpreted (effected multiple commands)
New Commands (1):
----------------------------------
pVec3_VertexTBN pVec3ResultT, pVec3ResultB, pVec3ResultN, pVec3Pos1, pVec2UV1, pVec3Pos2, pVec2UV2, pVec3Pos3, pVec2UV3
New Examples (1):
----------------------------------
- Added an example showing how to use the pVec3_VertexTBN to calculate and store tangent vectors in an object's vertexdata.
JGTools_pMath Commands (432 total):
pVec2_MakeNew==() || (X#, Y#)
pVec2_Delete==pVec
pVec2_Set==pVec, X#, Y#
pVec2_SetX==pVec, X#
pVec2_SetY==pVec, Y#
pVec2_GetX==(pVec)
pVec2_GetY==(pVec)
pVec2_SetElement==pVec, Index, fVal#
pVec2_GetElement==(pVec, Index)
pVec2_Copy==pVecDest, pVecSrc
pVec2_IsEqual==(pVecA, pVecB)
pVec2_Minimize==pVecResult, pVecA, pVecB
pVec2_Maximize==pVecResult, pVecA, pVecB
pVec2_Add==pVecResult, pVecL, pVecR
pVec2_Sub==pVecResult, pVecL, pVecR
pVec2_Mul==pVecResult, pVecL, pVecR
pVec2_Div==pVecResult, pVecL, pVecR
pVec2_AddScalar==pVecResult, pVec, fVal#
pVec2_SubScalar==pVecResult, pVec, fVal#
pVec2_MulScalar==pVecResult, pVec, fVal#
pVec2_DivScalar==pVecResult, pVec, fVal#
pVec2_AddValue==pVecResult, pVec, X#, Y#
pVec2_SubValue==pVecResult, pVec, X#, Y#
pVec2_MulValue==pVecResult, pVec, X#, Y#
pVec2_DivValue==pVecResult, pVec, X#, Y#
pVec2_ScalarSub==pVecResult, fVal#, pVec
pVec2_ScalarDiv==pVecResult, fVal#, pVec
pVec2_ValueSub==pVecResult, X#, Y#, pVec
pVec2_ValueDiv==pVecResult, X#, Y#, pVec
pVec2_Dot==(pVecA, pVecB)
pVec2_CCW==(pVecA, pVecB)
pVec2_Perp==pVecResult, pVec
pVec2_GetAngleBetween==(pVecA, pVecB)
pVec2_Reflect==pVecResult, pVecDir, pVecSurfNorm
pVec2_Refract==pVecResult, pVecDir, pVecSurfNorm, fETA#
pVec2_Inverse==pVecResult, pVec
pVec2_Invert==pVecResult, pVec
pVec2_MirrorPoint==pVecResult, pVec, pVecPoint
pVec2_Transform==pVecResult, pVec, pMat4
pVec2_TransformCoord==pVecResult, pVec, pMat4
pVec2_TransformNormal==pVecResult, pVec, pMat4
pVec2_DegToRad==pVecResult, pVec
pVec2_RadToDeg==pVecResult, pVec
pVec2_RadToAxis==pVec, AngRadians#
pVec2_DegToAxis==pVec, AngDegrees#
pVec2_AxisToRad==(pVec)
pVec2_AxisToDeg==(pVec)
pVec2_WrapDegrees==pVecResult, pVec
pVec2_WrapRadians==pVecResult, pVec
pVec2_Normalize==pVecResult, pVec
pVec2_ScaleToLength==pVecResult, pVec, Length#
pVec2_Length==(pVec)
pVec2_LengthSq==(pVec)
pVec2_LengthManhatten==(pVecA)
pVec2_Dist==(pVecA, pVecB)
pVec2_DistSq==(pVecA, pVecB)
pVec2_DistManhatten==(pVecA, pVecB)
pVec2_Lerp==pVecResult, pVecA, pVecB, Alpha#
pVec2_NLerp==pVecResult, pVecA, pVecB, Alpha#
pVec2_SLerp==pVecResult, pVecA, pVecB, Alpha#
pVec2_Cerp==pVecResult, pVecA, pVecB, Alpha#
pVec2_BiLerp==pVecResult, pVecTL, pVecTR, pVecBL, pVecBR, AlphaX#, AlphaY#
pVec2_BiCerp==pVecResult, pVecTL, pVecTR, pVecBL, pVecBR, AlphaX#, AlphaY#
pVec2_CatmullRom==pVecResult, pVecA, pVecB, pVecC, pVecD, Alpha#
pVec2_Hermite==pVecResult, pVecA, pVecB, pVecC, pVecD, Alpha#
pVec2_Cubic==pVecResult, pVecA, pVecB, pVecC, pVecD, Alpha#
pVec2_Bezier==pVecResult, pVecA, pVecB, pVecC, pVecD, Alpha#
pVec2_BaryCentric==pVecResult, pVecA, pVecB, pVecC, fF#, fG#
pVec2_BaryCentricWeights==pVec3Result, pVec, pVecVtxA, pVecVtxB, pVecVtxC
pVec2_WeightedAvg3==pVec2Result, pVecA, pVecB, pVecC, pVec3Weights
pVec2_GetClosestPointOnLineSeg==pVecResult, pVecPoint, pVecLineSrc, pVecLineDest
pVec2_GetDistFromLineSeg==(pVecPoint, pVecLineSrc, pVecLineDest)
pVec3_MakeNew==() || (X#, Y#, Z#)
pVec3_Delete==pVec
pVec3_Set==pVec, X#, Y#, Z#
pVec3_SetX==pVec, X#
pVec3_SetY==pVec, Y#
pVec3_SetZ==pVec, Z#
pVec3_GetX==(pVec)
pVec3_GetY==(pVec)
pVec3_GetZ==(pVec)
pVec3_SetElement==pVec, Index, fVal#
pVec3_GetElement==(pVec, Index)
pVec3_Copy==pVecDest, pVecSrc
pVec3_IsEqual==(pVecA, pVecB)
pVec3_Minimize==pVecResult, pVecA, pVecB
pVec3_Maximize==pVecResult, pVecA, pVecB
pVec3_Add==pVecResult, pVecL, pVecR
pVec3_Sub==pVecResult, pVecL, pVecR
pVec3_Mul==pVecResult, pVecL, pVecR
pVec3_Div==pVecResult, pVecL, pVecR
pVec3_AddScalar==pVecResult, pVec, fVal#
pVec3_SubScalar==pVecResult, pVec, fVal#
pVec3_MulScalar==pVecResult, pVec, fVal#
pVec3_DivScalar==pVecResult, pVec, fVal#
pVec3_AddValue==pVecResult, pVec, X#, Y#, Z#
pVec3_SubValue==pVecResult, pVec, X#, Y#, Z#
pVec3_MulValue==pVecResult, pVec, X#, Y#, Z#
pVec3_DivValue==pVecResult, pVec, X#, Y#, Z#
pVec3_ScalarSub==pVecResult, fVal#, pVec
pVec3_ScalarDiv==pVecResult, fVal#, pVec
pVec3_ValueSub==pVecResult, X#, Y#, Z#, pVec
pVec3_ValueDiv==pVecResult, X#, Y#, Z#, pVec
pVec3_Dot==(pVecA, pVecB)
pVec3_Cross==pVecResult, pVecL, pVecR
pVec3_Perp==pVecResult, pVec
pVec3_GetAngleBetween==(pVecA, pVecB)
pVec3_Reflect==pVecResult, pVecDir, pVecSurfNorm
pVec3_ReflectPlane==pVecResult, pVecDir, pPlane
pVec3_Refract==pVecResult, pVecDir, pVecSurfNorm, fETA#
pVec3_Inverse==pVecResult, pVec
pVec3_Invert==pVecResult, pVec
pVec3_MirrorPoint==pVecResult, pVec, pVecPoint
pVec3_Length==(pVec)
pVec3_LengthSq==(pVec)
pVec3_LengthManhatten==(pVecA)
pVec3_Dist==(pVecA, pVecB)
pVec3_DistSq==(pVecA, pVecB)
pVec3_DistManhatten==(pVecA, pVecB)
pVec3_Transform==pVecResult, pVec, pMat4
pVec3_TransformCoord==pVecResult, pVec, pMat4
pVec3_TransformNormal==pVecResult, pVec, pMat4
pVec3_TransformQuat==pVecResult, pVec, pQuat
pVec3_Project==pVecResult, pVec, pViewPort, pMatProj, pMatView [, pMatWorld ]
pVec3_UnProject==pVecResult, pVec, pViewPort, pMatProj, pMatView [, pMatWorld ]
pVec3_ProjectCamera==pVecResult, pVec, CameraID [, pMatWorld ]
pVec3_UnProjectCamera==pVecResult, pVec, CameraID [, pMatWorld ]
pVec3_DegToRad==pVecResult, pVec || pVecResult, AngDegX#, AngDegY#, AngDegZ#
pVec3_RadToDeg==pVecResult, pVec || pVecResult, AngRadX#, AngRadY#, AngRadZ#
pVec3_RadToAxis==pVecResult, pVec || pVecResult, AngRadX#, AngRadY#
pVec3_DegToAxis==pVecResult, pVec || pVecResult, AngDegX#, AngDegY#
pVec3_AxisToRad==pVecResult, pVec
pVec3_AxisToDeg==pVecResult, pVec
pVec3_WrapDegrees==pVecResult, pVec
pVec3_WrapRadians==pVecResult, pVec
pVec3_Normalize==pVecResult, pVec
pVec3_ScaleToLength==pVecResult, pVec, Length#
pVec3_Lerp==pVecResult, pVecA, pVecB, Alpha#
pVec3_NLerp==pVecResult, pVecA, pVecB, Alpha#
pVec3_SLerp==pVecResult, pVecA, pVecB, Alpha#
pVec3_Cerp==pVecResult, pVecA, pVecB, Alpha#
pVec3_BiLerp==pVecResult, pVecTL, pVecTR, pVecBL, pVecBR, AlphaX#, AlphaY#
pVec3_BiCerp==pVecResult, pVecTL, pVecTR, pVecBL, pVecBR, AlphaX#, AlphaY#
pVec3_CatmullRom==pVecResult, pVecA, pVecB, pVecC, pVecD, Alpha#
pVec3_Hermite==pVecResult, pVecA, pVecB, pVecC, pVecD, Alpha#
pVec3_Cubic==pVecResult, pVecA, pVecB, pVecC, pVecD, Alpha#
pVec3_Bezier==pVecResult, pVecA, pVecB, pVecC, pVecD, Alpha#
pVec3_BaryCentric==pVecResult, pVecA, pVecB, pVecC, fF#, fG#
pVec3_BaryCentricWeights==pVec3Result, pVec, pVecVtxA, pVecVtxB, pVecVtxC
pVec3_WeightedAvg3==pVec3Result, pVecA, pVecB, pVecC, pVec3Weights
pVec3_GetObjectPosition==pVec, ObjectID
pVec3_SetObjectPosition==pVec, ObjectID
pVec3_GetObjectRotation==pVec, ObjectID
pVec3_SetObjectRotation==pVec, ObjectID
pVec3_GetObjectScale==pVec, ObjectID
pVec3_SetObjectScale==pVec, ObjectID
pVec3_GetCameraRight==pVec, CameraID
pVec3_GetCameraUp==pVec, CameraID
pVec3_GetCameraLook==pVec, CameraID
pVec3_GetCameraPosition==pVec, CameraID
pVec3_GetClosestPointOnLineSeg==pVecResult, pVecPoint, pVecLineSrc, pVecLineDest
pVec3_GetDistFromLineSeg==(pVecPoint, pVecLineSrc, pVecLineDest)
pVec3_VertexTBN==pVec3ResultT, pVec3ResultB, pVec3ResultN, pVec3Pos1, pVec2UV1, pVec3Pos2, pVec2UV2, pVec3Pos3, pVec2UV3
pVec4_MakeNew==() || (X#, Y#, Z#, W#)
pVec4_Delete==pVec
pVec4_Set==pVec, X#, Y#, Z#, W#
pVec4_SetX==pVec, X#
pVec4_SetY==pVec, Y#
pVec4_SetZ==pVec, Z#
pVec4_SetW==pVec, W#
pVec4_GetX==(pVec)
pVec4_GetY==(pVec)
pVec4_GetZ==(pVec)
pVec4_GetW==(pVec)
pVec4_SetElement==pVec, Index, fVal#
pVec4_GetElement==(pVec, Index)
pVec4_Copy==pVecDest, pVecSrc
pVec4_IsEqual==(pVecA, pVecB)
pVec4_Minimize==pVecResult, pVecA, pVecB
pVec4_Maximize==pVecResult, pVecA, pVecB
pVec4_Add==pVecResult, pVecL, pVecR
pVec4_Sub==pVecResult, pVecL, pVecR
pVec4_Mul==pVecResult, pVecL, pVecR
pVec4_Div==pVecResult, pVecL, pVecR
pVec4_AddScalar==pVecResult, pVec, fVal#
pVec4_SubScalar==pVecResult, pVec, fVal#
pVec4_MulScalar==pVecResult, pVec, fVal#
pVec4_DivScalar==pVecResult, pVec, fVal#
pVec4_AddValue==pVecResult, pVec, X#, Y#, Z#, W#
pVec4_SubValue==pVecResult, pVec, X#, Y#, Z#, W#
pVec4_MulValue==pVecResult, pVec, X#, Y#, Z#, W#
pVec4_DivValue==pVecResult, pVec, X#, Y#, Z#, W#
pVec4_ScalarSub==pVecResult, fVal#, pVec
pVec4_ScalarDiv==pVecResult, fVal#, pVec
pVec4_ValueSub==pVecResult, X#, Y#, Z#, W#, pVec
pVec4_ValueDiv==pVecResult, X#, Y#, Z#, W#, pVec
pVec4_Dot==(pVecA, pVecB)
pVec4_GetAngleBetween==(pVecA, pVecB)
pVec4_Reflect==pVecResult, pVecDir, pVecSurfNorm
pVec4_Refract==pVecResult, pVecDir, pVecSurfNorm, fETA#
pVec4_Inverse==pVecResult, pVec
pVec4_Invert==pVecResult, pVec
pVec4_MirrorPoint==pVecResult, pVec, pVecPoint
pVec4_Length==(pVec)
pVec4_LengthSq==(pVec)
pVec4_LengthManhatten==(pVecA)
pVec4_Dist==(pVecA, pVecB)
pVec4_DistSq==(pVecA, pVecB)
pVec4_DistManhatten==(pVecA, pVecB)
pVec4_Transform==pVecResult, pVec, pMat4
pVec4_DegToRad==pVecResult, pVec
pVec4_RadToDeg==pVecResult, pVec
pVec4_WrapDegrees==pVecResult, pVec
pVec4_WrapRadians==pVecResult, pVec
pVec4_Normalize==pVecResult, pVec
pVec4_ScaleToLength==pVecResult, pVec, Length#
pVec4_Lerp==pVecResult, pVecA, pVecB, Alpha#
pVec4_NLerp==pVecResult, pVecA, pVecB, Alpha#
pVec4_SLerp==pVecResult, pVecA, pVecB, Alpha#
pVec4_Cerp==pVecResult, pVecA, pVecB, Alpha#
pVec4_BiLerp==pVecResult, pVecTL, pVecTR, pVecBL, pVecBR, AlphaX#, AlphaY#
pVec4_BiCerp==pVecResult, pVecTL, pVecTR, pVecBL, pVecBR, AlphaX#, AlphaY#
pVec4_Cubic==pVecResult, pVecA, pVecB, pVecC, pVecD, Alpha#
pVec4_CatmullRom==pVecResult, pVecA, pVecB, pVecC, pVecD, Alpha#
pVec4_Hermite==pVecResult, pVecA, pVecB, pVecC, pVecD, Alpha#
pVec4_Bezier==pVecResult, pVecA, pVecB, pVecC, pVecD, Alpha#
pVec4_BaryCentric==pVecResult, pVecA, pVecB, pVecC, F#, G#
pVec4_BaryCentricWeights==pVec3Result, pVec, pVecVtxA, pVecVtxB, pVecVtxC
pVec4_WeightedAvg3==pVec4Result, pVecA, pVecB, pVecC, pVec3Weights
pMat4_MakeNew==() || (m11#, m12#, m13#, m14#, m21#, m22#, m23#, m24#, m31#, m32#, m33#, m34#, m41#, m42#, m43#, m44#)
pMat4_Delete==pMat
pMat4_Set==pMat4, m11#, m12#, m13#, m14#, m21#, m22#, m23#, m24#, m31#, m32#, m33#, m34#, m41#, m42#, m43#, m44#
pMat4_SetElement==pMat, Row, Col, fVal#
pMat4_GetElement==(pMat, Row, Col)
pMat4_SetElementIndex==pMat, Index, fVal#
pMat4_GetElementIndex==(pMat, Index)
pMat4_Copy==pMatDest, pMatSrc
pMat4_IsIdentity==(pMat)
pMat4_Identity==pMat
pMat4_Scaling==pMat, X#, Y#, Z#
pMat4_RotationX==pMat, AngRadX#
pMat4_RotationY==pMat, AngRadY#
pMat4_RotationZ==pMat, AngRadZ#
pMat4_RotationXYZ==pMat, AngRadX#, AngRadY#, AngRadZ# || pMat, pVecAngRad
pMat4_RotationYPR==pMat, YawRad#, PitchRad#, RollRad#
pMat4_RotationAxis==pMat, AxisX#, AxisY#, AxisZ#, AngRad#
pMat4_RotationAxisVec==pMat, pVecAxis, AngRad#
pMat4_FromBasis==pMat, Vec3Row1, Vec3Row2, Vec3Row3
pMat4_Translation==pMat, X#, Y#, Z#
pMat4_Affine==pMat, fScale, vecRotCenter, quatRot, vecTranslation
pMat4_Affine2D==pMat, fScale, vecRotCenter, AngRad#, vecTranslation
pMat4_PerspectiveLH==pMat, Near#, Far#, Width#, Height#
pMat4_PerspectiveFOVLH==pMat, Near#, Far#, FOV#, Aspect#
pMat4_OrthoLH==pMat, Near#, Far#, Width#, Height#, Zoom#
pMat4_PerspectiveOffCenterLH==pMat, Left#, Right#, Bottom#, Top#, ZNear#, ZFar#
pMat4_OrthoOffCenterLH==pMat, Left#, Right#, Bottom#, Top#, ZNear#, ZFar#
pMat4_LookAtLH==pMat, VecEyePos, VecAt, VecUp
pMat4_PerspectiveRH==pMat, Near#, Far#, Width#, Height#
pMat4_PerspectiveFOVRH==pMat, Near#, Far#, FOV#, Aspect#
pMat4_OrthoRH==pMat, Near#, Far#, Width#, Height#, Zoom#
pMat4_PerspectiveOffCenterRH==pMat, Left#, Right#, Bottom#, Top#, ZNear#, ZFar#
pMat4_OrthoOffCenterRH==pMat, Left#, Right#, Bottom#, Top#, ZNear#, ZFar#
pMat4_LookAtRH==pMat, VecEyePos, VecAt, VecUp
pMat4_ScaleLocal==pMatResult, pMat, X#, Y#, Z#
pMat4_ScaleGlobal==pMatResult, pMat, X#, Y#, Z#
pMat4_SetScale==pMatResult, pMat, X#, Y#, Z#
pMat4_RemoveScaling==pMatResult, pMat
pMat4_GetScaleX==(pMat)
pMat4_GetScaleY==(pMat)
pMat4_GetScaleZ==(pMat)
pMat4_GetScaleVec==pVecResult, pMat
pMat4_RotateX==pMatResult, pMat, AngRadX#
pMat4_RotateY==pMatResult, pMat, AngRadY#
pMat4_RotateZ==pMatResult, pMat, AngRadZ#
pMat4_RotateXYZ==pMatResult, pMat, AngRadX#, AngRadY#, AngRadZ#
pMat4_RotateLocalX==pMatResult, pMat, AngRadX#
pMat4_RotateLocalY==pMatResult, pMat, AngRadY#
pMat4_RotateLocalZ==pMatResult, pMat, AngRadZ#
pMat4_RotateLocalXYZ==pMatResult, pMat, AngRadX#, AngRadY#, AngRadZ#
pMat4_RotateAxis==pMatResult, pMat, AxisX#, AxisY#, AxisZ#, AngRad#
pMat4_RotateAxisVec==pMatResult, pMat, pVecAxis, AngRad#
pMat4_RotateLocalAxis==pMatResult, pMat, AxisX#, AxisY#, AxisZ#, AngRad#
pMat4_RotateLocalAxisVec==pMatResult, pMat, pVecAxis, AngRad#
pMat4_MoveRight==pMatResult, pMat, Dist#
pMat4_MoveUp==pMatResult, pMat, Dist#
pMat4_MoveForward==pMatResult, pMat, Dist#
pMat4_SetTranslation==pMatResult, pMat, X#, Y#, Z#
pMat4_GetTranslationX==(pMat)
pMat4_GetTranslationY==(pMat)
pMat4_GetTranslationZ==(pMat)
pMat4_GetTranslationVec==pVecResult, pMat
pMat4_GetLookVec==pVec, pMat [, bNormalize ]
pMat4_GetUpVec==pVec, pMat [, bNormalize ]
pMat4_GetRightVec==pVec, pMat [, bNormalize ]
pMat4_GetObjectWorld==pMat, ObjectID [, LimbID ]
pMat4_SetObjectWorld==pMat, ObjectID
pMat4_GetObjectScale==pMat, ObjectID
pMat4_SetObjectScale==pMat, ObjectID
pMat4_GetObjectRotation==pMat, ObjectID
pMat4_SetObjectRotation==pMat, ObjectID
pMat4_GetObjectTranslation==pMat, ObjectID
pMat4_SetObjectTranslation==pMat, ObjectID
pMat4_GetObjectTransforms==pMat, ObjectID, bScale, bRotation, bTranslation
pMat4_GetCameraView==pMat, CameraID
pMat4_GetCameraProjection==pMat, CameraID
pMat4_SetCameraProjection==pMat, CameraID
pMat4_GetCameraViewProj==pMat, CameraID
pMat4_Transpose==pMatResult, pMat
pMat4_Determinant==(pMat)
pMat4_Inverse==pMatResult, pMat || (pMatResult, pMat)
pMat4_InverseTranspose==pMatResult, pMat
pMat4_Mul==pMatResult, pMatL, pMatR
pMat4_MulTranspose==pMatResult, pMatL, pMatR
pMat4_Decompose==pVecScale, pQuatRot, pVecTranslation, pMat
pMat4_FromQuat==pMat, pQuat
pMat4_GetEulerDeg==pVecResult, pMat
pMat4_GetEulerRad==pVecResult, pMat
pMat4_Lerp==pMatResult, pMatA, pMatB, Alpha#
pMat4_NLerp==pMatResult, pMatA, pMatB, Alpha#
pMat4_SLerp==pMatResult, pMatA, pMatB, Alpha#
pQuat_MakeNew==() || (X#, Y#, Z#, W#)
pQuat_Delete==pQuat
pQuat_Set==pQuat, X#, Y#, Z#, W#
pQuat_GetX==(pQuat)
pQuat_GetY==(pQuat)
pQuat_GetZ==(pQuat)
pQuat_GetW==(pQuat)
pQuat_Copy==pQuatDest, pQuatSrc
pQuat_IsIdentity==(pQuat)
pQuat_Identity==pQuat
pQuat_RotationX==pQuat, AngRadX#
pQuat_RotationY==pQuat, AngRadY#
pQuat_RotationZ==pQuat, AngRadZ#
pQuat_RotationXYZ==pQuat, AngRadX#, AngRadY#, AngRadZ# || pQuat, pVecAngRad
pQuat_RotationYPR==pQuat, YawRad#, PitchRad#, RollRad#
pQuat_RotationAxis==pQuat, AxisX#, AxisY#, AxisZ#, AngRad#
pQuat_RotationAxisVec==pQuat, pVecAxis, AngRad#
pQuat_Conjugate==pQuatResult, pQuat
pQuat_Inverse==pQuatResult, pQuat
pQuat_Dot==(pQuatA, pQuatB)
pQuat_Log==pQuatResult, pQuat
pQuat_Exp==pQuatResult, pQuat
pQuat_Mul==pQuatResult, pQuatL, pQuatR
pQuat_RotateX==pQuatResult, pQuat, AngRadX#
pQuat_RotateY==pQuatResult, pQuat, AngRadY#
pQuat_RotateZ==pQuatResult, pQuat, AngRadZ#
pQuat_RotateXYZ==pQuatResult, pQuat, AngRadX#, AngRadY#, AngRadZ#
pQuat_RotateLocalX==pQuatResult, pQuat, AngRadX#
pQuat_RotateLocalY==pQuatResult, pQuat, AngRadY#
pQuat_RotateLocalZ==pQuatResult, pQuat, AngRadZ#
pQuat_RotateLocalXYZ==pQuatResult, pQuat, AngRadX#, AngRadY#, AngRadZ#
pQuat_RotateAxis==pQuatResult, pQuat, AxisX#, AxisY#, AxisZ#, AngRad#
pQuat_RotateAxisVec==pQuatResult, pQuat, pVecAxis, AngRad#
pQuat_RotateLocalAxis==pQuatResult, pQuat, AxisX#, AxisY#, AxisZ#, AngRad#
pQuat_RotateLocalAxisVec==pQuatResult, pQuat, pVecAxis, AngRad#
pQuat_Normalize==pQuatResult, pQuat
pQuat_Magnitude==(pQuat)
pQuat_MagnitudeSq==(pQuat)
pQuat_Lerp==pQuatResult, pQuatA, pQuatB, Alpha#
pQuat_NLerp==pQuatResult, pQuatA, pQuatB, Alpha#
pQuat_SLerp==pQuatResult, pQuatA, pQuatB, Alpha#
pQuat_SquadSetup==pQuatResultA, pQuatResultB, pQuatResultC, pQuat0, pQuat1, pQuat2, pQuat3
pQuat_Squad==pQuatResult, pQuatA, pQuatB, pQuatC, Alpha#
pQuat_BaryCentric==pQuatResult, pQuatA, pQuatB, pQuatC, F#, G#
pQuat_GetObjectRotation==pQuat, ObjectID
pQuat_SetObjectRotation==pQuat, ObjectID
pQuat_FromMat4==pQuat, pMat
pQuat_GetEulerRad==pVec3Result, pQuat
pQuat_GetEulerDeg==pVec3Result, pQuat
pQuat_GetAxis==pVec4Result, pQuat || (pVec3Result, pQuat)
pPlane_MakeNew==() || (A#, B#, C#, D#)
pPlane_Delete==pPlane
pPlane_Set==pPlane, A#, B#, C#, D#
pPlane_GetA==(pPlane)
pPlane_GetB==(pPlane)
pPlane_GetC==(pPlane)
pPlane_GetD==(pPlane)
pPlane_Copy==pPlaneDest, pPlaneSrc
pPlane_IsEqual==(pPlaneA, pPlaneB)
pPlane_FromPointNormal==pPlane, pVecPos, pVecNorm
pPlane_FromPoints==pPlane, pVecPosA, pVecPosB, pVecPosC
pPlane_Normalize==pPlaneResult, pPlane
pPlane_Length==(pPlane)
pPlane_LengthSq==(pPlane)
pPlane_Dot==(pPlaneA, pPlaneB)
pPlane_DotCoord==(pPlane, pVec)
pPlane_DotNormal==(pPlane, pVec)
pPlane_Inverse==pPlaneResult, pPlane
pPlane_Transform==pPlaneResult, pPlane, pMat
pPlane_IntersectLine==(pVecResult, pPlane, pVecPosA, pVecPosB)
pPlane_IntersectLineSeg==(pVecResult, pPlane, pVecPosA, pVecPosB)
pPlane_RayCast==(pVec4ResultPos, pVecResultNorm, pPlane, pVecRayOrig, pVecRayDir)
pFrustum_MakeNew==()
pFrustum_Delete==pFrust
pFrustum_Copy==pFrustDest, pFrustSrc
pFrustum_SetPlanes==pFrust, pPlaneRight, pPlaneLeft, pPlaneBottom, pPlaneTop, pPlaneFar, pPlaneNear
pFrustum_SetRightPlane==pFrust, pPlane
pFrustum_SetLeftPlane==pFrust, pPlane
pFrustum_SetBottomPlane==pFrust, pPlane
pFrustum_SetTopPlane==pFrust, pPlane
pFrustum_SetNearPlane==pFrust, pPlane
pFrustum_SetFarPlane==pFrust, pPlane
pFrustum_ExtractVP==pFrust, pMatVP
pFrustum_ExtractCamera==pFrust, CameraID
pFrustum_Normalize==pFrust
pFrustum_TestPoint==(pFrust, PosX#, PosY#, PosZ#)
pFrustum_TestSphere==(pFrust, PosX#, PosY#, PosZ#, Radius#)
pFrustum_TestSphereEx==(pFrust, PosX#, PosY#, PosZ#, Radius#)
pFrustum_TestAABB==(pFrust, MinX#, MinY#, MinZ#, MaxX#, MaxY#, MaxZ#)
pFrustum_TestAABC==(pFrust, PosX#, PosY#, PosZ#, Size#)
pFrustum_IntersectSphere==(pFrust, PosX#, PosY#, PosZ#, Radius#)
pFrustum_IntersectAABB==(pFrust, MinX#, MinY#, MinZ#, MaxX#, MaxY#, MaxZ#)
pFrustum_IntersectAABC==(pFrust, PosX#, PosY#, PosZ#, Size#)
pFrustum_PointDepth==(pFrust, PosX#, PosY#, PosZ#)
pFrustum_SphereDepth==(pFrust, PosX#, PosY#, PosZ#, Radius#)
pViewPort_MakeNew==() || (X, Y, Width, Height, MinZ#, MaxZ#)
pViewPort_Delete==pViewPort
pViewPort_Copy==pViewPortDest, pViewPortSrc
pViewPort_Set==pViewPort, X, Y, Width, Height, MinZ#, MaxZ#
pViewPort_GetWidth==(pViewPort)
pViewPort_GetHeight==(pViewPort)
pViewPort_GetLeft==(pViewPort)
pViewPort_GetRight==(pViewPort)
pViewPort_GetTop==(pViewPort)
pViewPort_GetBottom==(pViewPort)
pViewPort_GetMinZ==(pViewPort)
pViewPort_GetMaxZ==(pViewPort)
pViewPort_GetCamera2D==pViewPort, CameraID
pViewPort_SetCamera2D==pViewPort, CameraID
pViewPort_GetCamera3D==pViewPort, CameraID
pViewPort_SetCamera3D==pViewPort, CameraID
pViewPort_TestPoint==(pViewPort, Px, Py)
Download contains dll, keywords file, and a few examples. The plugin does not yet have any help files, but in the meantime I'm hoping most of the commands will be self-explanitory. All comments, questions, and suggestions are always welcome.