Forum Replies Created
-
AuthorPosts
-
https://www.ottodiy.com/ its him!
https://github.com/OttoDIY all the code is there it easy cheap and a damn robot! lol
now you comunicate using com/serial all i need is code to open the port and to grab the out put data and convert to usable m2.
BlitzMax has bah.serial so i might check that as if it works in BM should be able to import the c/c++ code.
One more thing lol
Is there any way to interact with serial/com ports? I have a aduino robot and i wanted to read in from the Sensor to make an old school sonar effect(think das boat) I dont need to wright to my aduino as thats all done in c, I just need to read in the data so i can plot the senser data.
Also how easy is it to port monkey code to m2? as i notice a book on monkey that might be easy enough to use if it easly portable.
Ah cool thanks.
no not changed anything either i can run a deferred demo in blitzmax fine also other demos from github works fine it seems to be poor use of the deferred system in the demo’s i could run it in render doc to look for bottle necks but i would rather not need to i may just create a level in 3dmax and fill it with lights etc and test it unless some one has a large demo
Mark this is as blunt with out being rude as i can..
Drop mobile support it is now just full of unity clones make Blitz3D Next Gen bog stranded basic language but do it in parts windows first get it stable and docs then look to port stop trying to have every system known to man the people that will use it will use it to make easy 3D games you could maybe charge later for ad-dons for mobile but first get some thing selling that’s finished.
Stop trying to reinvent basic it worked just fine before so why and turn it into a hodgepodge of not being basic and not being anything else Blitzmax in my opinion was a good language but still Basic Monkey2 i dont even know what it is standardize the language back to Basic.
You was always good at making the language just work bug free as you could thats were ur success in the first place came from now you need to be good at oop to even use monkey2 and all it feels like is a less capable C#, Monkey2 has no soul its a total contradiction to what Basic stands for.
Mark the world has far evolved now every thing is usable so many books so many tutorials if we wanted a more advanced basic i would not be using it in the first place.
Do your self a fav and make a win only DX/OGL Blitz3D 2.0 go big on the old code in basic when you have it stable then work on mac/linux as you will have an income from the windows build.
Its either that or go work at a software house like every body else left behind by the industry.
BASIC DOES NOT NEED TO BE AS OOP.
i had the same problem with c++ code i had to remove a comment block at the top then it worked fine.
strange how it works.
This is what i wanted to import but all i get are errors as i overload the operators the code is not that advanced but for speed i want to keep it as cpp.
its the math lib i built for my dx framework that i was trying to also bring in but MX2 didnt like directx math so i built one but seems like it dont like my maths also lol.
[/crayon]Monkey1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162[crayon-5cb9a024d247c954823204 inline="true" ]//namespace viEngineSDK {//struct sVector2{float x, y;//sVector2() = default;//sVector2(float p_InputA, float p_InputS){x = p_InputA;y = p_InputS;}//float& operator [](long p_InputK){return ((&x)[p_InputK]);}//const float& operator [](long p_InputK) const{return ((&x)[p_InputK]);}//sVector2& operator +=(const sVector2& p_InputV){x += p_InputV.x;y += p_InputV.y;return (*this);}//sVector2& operator -=(const sVector2& p_InputV){x -= p_InputV.x;y -= p_InputV.y;return (*this);}//sVector2& operator *=(float p_InputT){x *= p_InputT;y *= p_InputT;return (*this);}//sVector2& operator /=(float p_InputT){float f = 1.0F / p_InputT;x *= f;y *= f;return (*this);}//sVector2& operator &=(const sVector2& p_InputV){x *= p_InputV.x;y *= p_InputV.y;return (*this);}};/////////////////////////////////////////////////////////////////////////////////////////////////////////////struct sVector3{float x, y, z;//sVector3() = default;//sVector3(float p_InputA, float p_InputB, float p_InputC){x = p_InputA;y = p_InputB;z = p_InputC;}//float& operator [](int p_InputI){return ((&x)[p_InputI]);}//const float& operator [](int p_InputI) const{return ((&x)[p_InputI]);}//sVector3& operator *=(float p_InputS){x *= p_InputS;y *= p_InputS;z *= p_InputS;return (*this);}//sVector3& operator /=(float p_InputS){p_InputS = 1.0F / p_InputS;x *= p_InputS;y *= p_InputS;z *= p_InputS;return (*this);}//sVector3& operator +=(const sVector3& p_InputV){x += p_InputV.x;y += p_InputV.y;z += p_InputV.z;return (*this);}//sVector3& operator -=(const sVector3& p_InputV){x -= p_InputV.x;y -= p_InputV.y;z -= p_InputV.z;return (*this);}};/////////////////////////////////////////////////////////////////////////////////////////////////////////////struct sVector4{float x, y, z, w;//sVector4() = default;//sVector4(float p_InputA, float p_InputB, float p_InputC, float p_InputD){x = p_InputA;y = p_InputB;z = p_InputC;w = p_InputD;}//float& operator [](int p_InputI){return ((&x)[p_InputI]);}//const float& operator [](int p_InputI) const{return ((&x)[p_InputI]);}//sVector4& operator *=(float p_InputS){x *= p_InputS;y *= p_InputS;z *= p_InputS;w *= p_InputS;return (*this);}//sVector4& operator /=(float p_InputS){p_InputS = 1.0F / p_InputS;x *= p_InputS;y *= p_InputS;z *= p_InputS;w *= p_InputS;return (*this);}//sVector4& operator +=(const sVector4& p_InputV){x += p_InputV.x;y += p_InputV.y;z += p_InputV.z;w += p_InputV.w;return (*this);}//sVector4& operator -=(const sVector4& p_InputV){x -= p_InputV.x;y -= p_InputV.y;z -= p_InputV.z;w -= p_InputV.w;return (*this);}};/////////////////////////////////////////////////////////////////////////////////////////////////////////////struct sPoint2 : sVector2{sPoint2() = default;//sPoint2(float p_InputA, float p_InputS) : sVector2(p_InputA, p_InputS) {}//sPoint2& operator =(const sVector2& p_InputV){x = p_InputV.x;y = p_InputV.y;return (*this);}//sPoint2& operator *=(float p_InputT){x *= p_InputT;y *= p_InputT;return (*this);}//sPoint2& operator /=(float p_InputT){float f = 1.0F / p_InputT;x *= f;y *= f;return (*this);}};/////////////////////////////////////////////////////////////////////////////////////////////////////////////struct sPoint3 : sVector3{sPoint3() = default;//sPoint3(float p_InputA, float p_InputB, float p_InputC) : sVector3(p_InputA, p_InputB, p_InputC) {}//sPoint3& operator =(const sVector3& p_InputV){x = p_InputV.x;y = p_InputV.y;z = p_InputV.z;return (*this);}};/////////////////////////////////////////////////////////////////////////////////////////////////////////////struct sPoint4 : sVector4{sPoint4() = default;//sPoint4(float p_InputA, float p_InputB, float p_InputC, float p_InputD) : sVector4(p_InputA, p_InputB, p_InputC, p_InputD) {}//sPoint4& operator =(const sVector4& p_InputV){x = p_InputV.x;y = p_InputV.y;z = p_InputV.z;w = p_InputV.w;return (*this);}};/////////////////////////////////////////////////////////////////////////////////////////////////////////////struct sMatrix3{private:float n[3][3];public:sMatrix3() = default;//sMatrix3(float p_InputN00, float p_InputN01, float p_InputN02,float p_InputN10, float p_InputN11, float p_InputN12,float p_InputN20, float p_InputN21, float p_InputN22){n[0][0] = p_InputN00; n[0][1] = p_InputN10; n[0][2] = p_InputN20;n[1][0] = p_InputN01; n[1][1] = p_InputN11; n[1][2] = p_InputN21;n[2][0] = p_InputN20; n[2][1] = p_InputN12; n[2][2] = p_InputN22;}//sMatrix3(const sVector3& p_InputA, const sVector3& p_InputB, const sVector3& p_InputC){n[0][0] = p_InputA.x; n[0][1] = p_InputA.y; n[0][2] = p_InputA.z;n[1][0] = p_InputB.x; n[1][1] = p_InputB.y; n[1][2] = p_InputB.z;n[2][0] = p_InputC.x; n[2][1] = p_InputC.y; n[2][2] = p_InputC.z;}//float& operator ()(int p_InputI, int p_InputJ){return (n[p_InputJ][p_InputI]);}//const float& operator ()(int p_InputI, int p_InputJ) const{return (n[p_InputJ][p_InputI]);}//sVector3& operator [](int p_InputJ){return (*reinterpret_cast<sVector3 *>(n[p_InputJ]));}//const sVector3& operator [](int p_InputJ) const{return (*reinterpret_cast<const sVector3 *>(n[p_InputJ]));}};/////////////////////////////////////////////////////////////////////////////////////////////////////////////struct sMatrix4{protected:float n[4][4];public:sMatrix4() = default;//sMatrix4(float p_InputN00, float p_InputN01, float p_InputN02, float p_InputN03,float p_InputN10, float p_InputN11, float p_InputN12, float p_InputN13,float p_InputN20, float p_InputN21, float p_InputN22, float p_InputN23,float p_InputN30, float p_InputN31, float p_InputN32, float p_InputN33){n[0][0] = p_InputN00; n[0][1] = p_InputN10; n[0][2] = p_InputN20; n[0][3] = p_InputN30;n[1][0] = p_InputN01; n[1][1] = p_InputN11; n[1][2] = p_InputN21; n[1][3] = p_InputN31;n[2][0] = p_InputN02; n[2][1] = p_InputN12; n[2][2] = p_InputN22; n[2][3] = p_InputN32;n[3][0] = p_InputN03; n[3][1] = p_InputN13; n[3][2] = p_InputN23; n[3][3] = p_InputN33;}//sMatrix4(const sVector4& p_InputA, const sVector4& p_InputB, const sVector4& p_InputC, const sVector4& p_InputD){n[0][0] = p_InputA.x; n[0][1] = p_InputA.y; n[0][2] = p_InputA.z; n[0][3] = p_InputA.w;n[1][0] = p_InputB.x; n[1][1] = p_InputB.y; n[1][2] = p_InputB.z; n[1][3] = p_InputB.w;n[2][0] = p_InputC.x; n[2][1] = p_InputC.y; n[2][2] = p_InputC.z; n[2][3] = p_InputC.w;n[3][0] = p_InputD.x; n[3][1] = p_InputD.y; n[3][2] = p_InputD.z; n[3][3] = p_InputD.w;}//float& operator ()(int p_InputI, int p_InputJ){return (n[p_InputJ][p_InputI]);}//const float& operator ()(int p_InputI, int p_InputJ) const{return (n[p_InputJ][p_InputI]);}//sVector4& operator [](int p_InputJ){return (*reinterpret_cast<sVector4 *>(n[p_InputJ]));}//const sVector4& operator [](int p_InputJ) const{return (*reinterpret_cast<const sVector4 *>(n[p_InputJ]));}};/////////////////////////////////////////////////////////////////////////////////////////////////////////////struct sTransform4 : sMatrix4{sTransform4() = default;//sTransform4(float p_InputN00, float p_InputN01, float p_InputN02, float p_InputN03,float p_InputN10, float p_InputN11, float p_InputN12, float p_InputN13,float p_InputN20, float p_InputN21, float p_InputN22, float p_InputN23){n[0][0] = p_InputN00; n[0][1] = p_InputN10; n[0][2] = p_InputN20;n[1][0] = p_InputN01; n[1][1] = p_InputN11; n[1][2] = p_InputN21;n[2][0] = p_InputN02; n[2][1] = p_InputN12; n[2][2] = p_InputN22;n[3][0] = p_InputN03; n[3][1] = p_InputN13; n[3][2] = p_InputN23;//n[0][3] = n[1][3] = n[2][3] = 0.0F;n[3][3] = 1.0F;}//sTransform4(const sVector3& p_InputA, const sVector3& p_InputB,const sVector3& p_InputC, const sPoint3& p_InputP){n[0][0] = p_InputA.x; n[0][1] = p_InputA.y; n[0][2] = p_InputA.z;n[1][0] = p_InputB.x; n[1][1] = p_InputB.y; n[1][2] = p_InputB.z;n[2][0] = p_InputC.x; n[2][1] = p_InputC.y; n[2][2] = p_InputC.z;n[3][0] = p_InputP.x; n[3][1] = p_InputP.y; n[3][2] = p_InputP.z;//n[0][3] = n[1][3] = n[2][3] = 0.0F;n[3][3] = 1.0F;}//sVector3& operator [](int p_InputJ){return (*reinterpret_cast<sVector3 *>(n[p_InputJ]));}//const sVector3& operator [](int p_InputJ) const{return (*reinterpret_cast<const sVector3 *>(n[p_InputJ]));}//const sPoint3& viGetTranslation(void) const{return (*reinterpret_cast<const sPoint3 *>(n[3]));}//void viSetTranslation(const sPoint3& p_InputP){n[3][0] = p_InputP.x;n[3][1] = p_InputP.y;n[3][2] = p_InputP.z;}};/////////////////////////////////////////////////////////////////////////////////////////////////////////////struct sQuaternion{float x, y, z, w;//sQuaternion() = default;//sQuaternion(float p_InputA, float p_InputB, float p_InputC, float p_InputS){x = p_InputA; y = p_InputB; z = p_InputC;w = p_InputS;}//sQuaternion(const sVector3& p_InputV, float p_InputS){x = p_InputV.x; y = p_InputV.y; z = p_InputV.z;w = p_InputS;}//sVector3& viGetVectorPart(void){return (reinterpret_cast<sVector3&>(x));}//const sVector3& viGetVectorPart(void) const{return (reinterpret_cast<const sVector3&>(x));}//sMatrix3 viGetRotationMatrix(void);void viSetRotationMatrix(const sMatrix3& p_InputM);};/////////////////////////////////////////////////////////////////////////////////////////////////////////////struct sPlane{float x, y, z, w;//sPlane() = default;//sPlane(float p_InputNX, float p_InputNY, float p_InputNZ, float p_InputD){x = p_InputNX;y = p_InputNY;z = p_InputNZ;w = p_InputD;}//sPlane(const sVector3& p_InputN, float p_InputD){x = p_InputN.x;y = p_InputN.y;z = p_InputN.z;w = p_InputD;}//const sVector3& viGetNormal(void) const{return (reinterpret_cast<const sVector3&>(x));}};/////////////////////////////////////////////////////////////////////////////////////////////////////////////struct sLine{sVector3 direction;sVector3 moment;//sLine() = default;//sLine(float p_InputVX, float p_InputVY, float p_InputVZ, float p_InputMX, float p_InputMY, float p_InputMZ) :direction(p_InputVX, p_InputVY, p_InputVZ), moment(p_InputMX, p_InputMY, p_InputMZ){}//sLine(const sVector3& p_InputV, const sVector3& p_InputM){direction = p_InputV;moment = p_InputM;}};/////////////////////////////////////////////////////////////////////////////////////////////////////////////inline sPoint2 operator -(const sPoint2& p_InputP){return (sPoint2(-p_InputP.x, -p_InputP.y));}//inline sPoint2 operator +(const sPoint2& p_InputP1, const sPoint2& p_InputP2){return (sPoint2(p_InputP1.x + p_InputP2.x, p_InputP1.y + p_InputP2.y));}//inline sPoint2 operator +(const sPoint2& p_InputP, const sVector2& p_InputV){return (sPoint2(p_InputP.x + p_InputV.x, p_InputP.y + p_InputV.y));}//inline sPoint2 operator -(const sPoint2& p_InputP, const sVector2& p_InputV){return (sPoint2(p_InputP.x - p_InputV.x, p_InputP.y - p_InputV.y));}//inline sVector2 operator -(const sPoint2& p_InputP1, const sPoint2& p_InputP2){return (sVector2(p_InputP1.x - p_InputP2.x, p_InputP1.y - p_InputP2.y));}//inline sPoint2 operator *(const sPoint2& p_InputP, float p_InputT){return (sPoint2(p_InputP.x * p_InputT, p_InputP.y * p_InputT));}//inline sPoint2 operator *(float p_InputT, const sPoint2& p_InputP){return (sPoint2(p_InputT * p_InputP.x, p_InputT * p_InputP.y));}//inline sPoint2 operator /(const sPoint2& p_InputP, float p_InputT){float f = 1.0F / p_InputT;return (sPoint2(p_InputP.x * f, p_InputP.y * f));}//inline float viDot(const sVector2& p_InputV1, const sVector2& p_InputV2){return (p_InputV1 * p_InputV2);}//inline sVector2 viProjectOnto(const sVector2& p_InputV1, const sVector2& p_InputV2){return (p_InputV2 * (p_InputV1 * p_InputV2));}//inline float viMagnitude(const sVector2& p_InputV){return (sqrt(p_InputV.x * p_InputV.x + p_InputV.y * p_InputV.y));}//inline sVector2 viNormalize(const sVector2& p_InputV){return (p_InputV / viMagnitude(p_InputV));}//inline float viSquaredMag(const sVector2& p_InputV){return (p_InputV.x * p_InputV.x + p_InputV.y * p_InputV.y);}//inline sVector2 operator -(const sVector2& p_InputV){return (sVector2(-p_InputV.x, -p_InputV.y));}//inline sVector2 operator +(const sVector2& p_InputV1, const sVector2& p_InputV2){return (sVector2(p_InputV1.x + p_InputV2.x, p_InputV1.y + p_InputV2.y));}//inline sVector2 operator -(const sVector2& p_InputV1, const sVector2& p_InputV2){return (sVector2(p_InputV1.x - p_InputV2.x, p_InputV1.y - p_InputV2.y));}//inline sVector2 operator *(const sVector2& p_InputV, float p_InputT){return (sVector2(p_InputV.x * p_InputT, p_InputV.y * p_InputT));}//inline sVector2 operator *(float p_InputT, const sVector2& p_InputV){return (sVector2(p_InputT * p_InputV.x, p_InputT * p_InputV.y));}//inline sVector2 operator /(const sVector2& p_InputV, float p_InputT){float f = 1.0F / p_InputT;return (sVector2(p_InputV.x * f, p_InputV.y * f));}//inline float operator *(const sVector2& p_InputV1, const sVector2& p_InputV2){return (p_InputV1.x * p_InputV2.x + p_InputV1.y * p_InputV2.y);}//inline sVector2 operator &(const sVector2& p_InputV1, const sVector2& p_InputV2){return (sVector2(p_InputV1.x * p_InputV2.x, p_InputV1.y * p_InputV2.y));}//inline bool operator ==(const sVector2& p_InputV1, const sVector2& p_InputV2){return ((p_InputV1.x == p_InputV2.x) && (p_InputV1.y == p_InputV2.y));}//inline bool operator !=(const sVector2& p_InputV1, const sVector2& p_InputV2){return ((p_InputV1.x != p_InputV2.x) || (p_InputV1.y != p_InputV2.y));}//inline sVector3 operator *(const sVector3& p_InputV, float p_InputS){return (sVector3(p_InputV.x * p_InputS, p_InputV.y * p_InputS, p_InputV.z * p_InputS));}//inline sVector3 operator /(const sVector3& p_InputV, float p_InputS){p_InputS = 1.0F / p_InputS;return (sVector3(p_InputV.x * p_InputS, p_InputV.y * p_InputS, p_InputV.z * p_InputS));}//inline sVector3 operator -(const sVector3& p_InputV){return (sVector3(-p_InputV.x, -p_InputV.y, -p_InputV.z));}//inline float viMagnitude(const sVector3& p_InputV){return (sqrt(p_InputV.x * p_InputV.x + p_InputV.y * p_InputV.y + p_InputV.z * p_InputV.z));}//inline sVector3 viNormalize(const sVector3& p_InputV){return (p_InputV / viMagnitude(p_InputV));}//inline sVector3 operator +(const sVector3& p_InputA, const sVector3& p_InputB){return (sVector3(p_InputA.x + p_InputB.x, p_InputA.y + p_InputB.y, p_InputA.z + p_InputB.z));}//inline sVector3 operator -(const sVector3& p_InputA, const sVector3& p_InputB){return (sVector3(p_InputA.x - p_InputB.x, p_InputA.y - p_InputB.y, p_InputA.z - p_InputB.z));}//sMatrix3 operator *(const sMatrix3& p_InputA, const sMatrix3& p_InputB){return (sMatrix3(p_InputA(0, 0) * p_InputB(0, 0) + p_InputA(0, 1) * p_InputB(1, 0) + p_InputA(0, 2) * p_InputB(2, 0),p_InputA(0, 0) * p_InputB(0, 1) + p_InputA(0, 1) * p_InputB(1, 1) + p_InputA(0, 2) * p_InputB(2, 1),p_InputA(0, 0) * p_InputB(0, 2) + p_InputA(0, 1) * p_InputB(1, 2) + p_InputA(0, 2) * p_InputB(2, 2),p_InputA(1, 0) * p_InputB(0, 0) + p_InputA(1, 1) * p_InputB(1, 0) + p_InputA(1, 2) * p_InputB(2, 0),p_InputA(1, 0) * p_InputB(0, 1) + p_InputA(1, 1) * p_InputB(1, 1) + p_InputA(1, 2) * p_InputB(2, 1),p_InputA(1, 0) * p_InputB(0, 2) + p_InputA(1, 1) * p_InputB(1, 2) + p_InputA(1, 2) * p_InputB(2, 2),p_InputA(2, 0) * p_InputB(0, 0) + p_InputA(2, 1) * p_InputB(1, 0) + p_InputA(2, 2) * p_InputB(2, 0),p_InputA(2, 0) * p_InputB(0, 1) + p_InputA(2, 1) * p_InputB(1, 1) + p_InputA(2, 2) * p_InputB(2, 1),p_InputA(2, 0) * p_InputB(0, 2) + p_InputA(2, 1) * p_InputB(1, 2) + p_InputA(2, 2) * p_InputB(2, 2)));}//sVector3 operator *(const sMatrix3& p_InputM, const sVector3& p_InputV){return (sVector3(p_InputM(0, 0) * p_InputV.x + p_InputM(0, 1) * p_InputV.y + p_InputM(0, 2) * p_InputV.z,p_InputM(1, 0) * p_InputV.x + p_InputM(1, 1) * p_InputV.y + p_InputM(1, 2) * p_InputV.z,p_InputM(2, 0) * p_InputV.x + p_InputM(2, 1) * p_InputV.y + p_InputM(2, 2) * p_InputV.z));}//inline float viDot(const sVector3& p_InputA, const sVector3& p_InputB){return (p_InputA.x * p_InputB.x + p_InputA.y * p_InputB.y + p_InputA.z * p_InputB.z);}//inline sVector3 viCross(const sVector3& p_InputA, const sVector3& p_InputB){return (sVector3(p_InputA.y * p_InputB.z - p_InputA.z * p_InputB.y,p_InputA.z * p_InputB.x - p_InputA.x * p_InputB.z,p_InputA.x * p_InputB.y - p_InputA.y * p_InputB.x));}//inline sVector3 viProject(const sVector3& p_InputA, const sVector3& p_InputB){return (p_InputB * (viDot(p_InputA, p_InputB) / viDot(p_InputB, p_InputB)));}//inline sVector3 viReject(const sVector3& p_InputA, const sVector3& p_InputB){return (p_InputA - p_InputB * (viDot(p_InputA, p_InputB) / viDot(p_InputB, p_InputB)));}//float viDeterminant(const sMatrix3& p_InputM){return (p_InputM(0, 0) * (p_InputM(1, 1) * p_InputM(2, 2) - p_InputM(1, 2) * p_InputM(2, 1))+ p_InputM(0, 1) * (p_InputM(1, 2) * p_InputM(2, 0) - p_InputM(1, 0) * p_InputM(2, 2))+ p_InputM(0, 2) * (p_InputM(1, 0) * p_InputM(2, 1) - p_InputM(1, 1) * p_InputM(2, 0)));}//sMatrix3 viInverse(const sMatrix3& p_InputM){const sVector3& a = p_InputM[0];const sVector3& b = p_InputM[1];const sVector3& c = p_InputM[2];sVector3 r0 = viCross(b, c);sVector3 r1 = viCross(c, a);sVector3 r2 = viCross(a, b);float invDet = 1.0F / viDot(r2, c);return (sMatrix3(r0.x * invDet, r0.y * invDet, r0.z * invDet,r1.x * invDet, r1.y * invDet, r1.z * invDet,r2.x * invDet, r2.y * invDet, r2.z * invDet));}//sMatrix4 viInverse(const sMatrix4& p_InputM){const sVector3& a = reinterpret_cast<const sVector3&>(p_InputM[0]);const sVector3& b = reinterpret_cast<const sVector3&>(p_InputM[1]);const sVector3& c = reinterpret_cast<const sVector3&>(p_InputM[2]);const sVector3& d = reinterpret_cast<const sVector3&>(p_InputM[3]);//const float& x = p_InputM(3, 0);const float& y = p_InputM(3, 1);const float& z = p_InputM(3, 2);const float& w = p_InputM(3, 3);//sVector3 s = viCross(a, b);sVector3 t = viCross(c, d);sVector3 u = a * y - b * x;sVector3 v = c * w - d * z;//float invDet = 1.0F / (viDot(s, v) + viDot(t, u));s *= invDet;t *= invDet;u *= invDet;v *= invDet;//sVector3 r0 = viCross(b, v) + t * y;sVector3 r1 = viCross(v, a) - t * x;sVector3 r2 = viCross(d, u) + s * w;sVector3 r3 = viCross(u, c) - s * z;//return (sMatrix4(r0.x, r0.y, r0.z, -viDot(b, t),r1.x, r1.y, r1.z, viDot(a, t),r2.x, r2.y, r2.z, -viDot(d, s),r3.x, r3.y, r3.z, viDot(c, s)));}//sMatrix3 viMakeRotationX(float p_InputT){float c = cos(p_InputT);float s = sin(p_InputT);//return (sMatrix3(1.0F, 0.0F, 0.0F,0.0F, c, -s,0.0F, s, c));}//sMatrix3 viMakeRotationY(float p_InputT){float c = cos(p_InputT);float s = sin(p_InputT);//return (sMatrix3(c, 0.0F, s,0.0F, 1.0F, 0.0F,-s, 0.0F, c));}//sMatrix3 viMakeRotationZ(float p_InputT){float c = cos(p_InputT);float s = sin(p_InputT);//return (sMatrix3(c, -s, 0.0F,s, c, 0.0F,0.0F, 0.0F, 1.0F));}//sMatrix3 viMakeRotation(float p_InputT, const sVector3& p_InputA){float c = cos(p_InputT);float s = sin(p_InputT);float d = 1.0F - c;//float x = p_InputA.x * d;float y = p_InputA.y * d;float z = p_InputA.z * d;float axay = x * p_InputA.y;float axaz = x * p_InputA.z;float ayaz = y * p_InputA.z;//return (sMatrix3(c + x * p_InputA.x, axay - s * p_InputA.z, axaz + s * p_InputA.y,axay + s * p_InputA.z, c + y * p_InputA.y, ayaz - s * p_InputA.x,axaz - s * p_InputA.y, ayaz + s * p_InputA.x, c + z * p_InputA.z));}//sMatrix3 viMakeReflection(const sVector3& p_InputA){float x = p_InputA.x * -2.0F;float y = p_InputA.y * -2.0F;float z = p_InputA.z * -2.0F;float axay = x * p_InputA.y;float axaz = x * p_InputA.z;float ayaz = y * p_InputA.z;//return (sMatrix3(x * p_InputA.x + 1.0F, axay, axaz,axay, y * p_InputA.y + 1.0F, ayaz,axaz, ayaz, z * p_InputA.z + 1.0F));}//sMatrix3 viMakeInvolution(const sVector3& p_InputA){float x = p_InputA.x * 2.0F;float y = p_InputA.y * 2.0F;float z = p_InputA.z * 2.0F;float axay = x * p_InputA.y;float axaz = x * p_InputA.z;float ayaz = y * p_InputA.z;//return (sMatrix3(x * p_InputA.x - 1.0F, axay, axaz,axay, y * p_InputA.y - 1.0F, ayaz,axaz, ayaz, z * p_InputA.z - 1.0F));}//sMatrix3 viMakeScale(float p_InputSX, float p_InputSY, float p_InputSZ){return (sMatrix3(p_InputSX, 0.0F, 0.0F, 0.0F, p_InputSY, 0.0F, 0.0F, 0.0F, p_InputSZ));}//sMatrix3 viMakeScale(float p_InputS, const sVector3& p_InputA){p_InputS -= 1.0F;float x = p_InputA.x * p_InputS;float y = p_InputA.y * p_InputS;float z = p_InputA.z * p_InputS;float axay = x * p_InputA.y;float axaz = x * p_InputA.z;float ayaz = y * p_InputA.z;//return (sMatrix3(x * p_InputA.x + 1.0F, axay, axaz,axay, y * p_InputA.y + 1.0F, ayaz,axaz, ayaz, z * p_InputA.z + 1.0F));}//sMatrix3 viMakeSkew(float p_InputT, const sVector3& p_InputA, const sVector3& p_InputB){p_InputT = tan(p_InputT);float x = p_InputA.x * p_InputT;float y = p_InputA.y * p_InputT;float z = p_InputA.z * p_InputT;//return (sMatrix3(x * p_InputB.x + 1.0F, x * p_InputB.y, x * p_InputB.z,y * p_InputB.x, y * p_InputB.y + 1.0F, y * p_InputB.z,z * p_InputB.x, z * p_InputB.y, z * p_InputB.z + 1.0F));}//inline sPoint3 operator +(const sPoint3& p_InputA, const sVector3& p_InputB){return (sPoint3(p_InputA.x + p_InputB.x, p_InputA.y + p_InputB.y, p_InputA.z + p_InputB.z));}//inline sPoint3 operator -(const sPoint3& p_InputA, const sVector3& p_InputB){return (sPoint3(p_InputA.x - p_InputB.x, p_InputA.y - p_InputB.y, p_InputA.z - p_InputB.z));}//inline sVector3 operator -(const sPoint3& p_InputA, const sPoint3& p_InputB){return (sVector3(p_InputA.x - p_InputB.x, p_InputA.y - p_InputB.y, p_InputA.z - p_InputB.z));}//sTransform4 viInverse(const sTransform4& p_InputH){const sVector3& a = p_InputH[0];const sVector3& b = p_InputH[1];const sVector3& c = p_InputH[2];const sVector3& d = p_InputH[3];//sVector3 s = viCross(a, b);sVector3 t = viCross(c, d);//float invDet = 1.0F / viDot(s, c);//s *= invDet;t *= invDet;sVector3 v = c * invDet;//sVector3 r0 = viCross(b, v);sVector3 r1 = viCross(v, a);//return (sTransform4(r0.x, r0.y, r0.z, -viDot(b, t),r1.x, r1.y, r1.z, viDot(a, t),s.x, s.y, s.z, -viDot(d, s)));}//sTransform4 operator *(const sTransform4& p_InputA, const sTransform4& p_InputB){return (sTransform4(p_InputA(0, 0) * p_InputB(0, 0) + p_InputA(0, 1) * p_InputB(1, 0) + p_InputA(0, 2) * p_InputB(2, 0),p_InputA(0, 0) * p_InputB(0, 1) + p_InputA(0, 1) * p_InputB(1, 1) + p_InputA(0, 2) * p_InputB(2, 1),p_InputA(0, 0) * p_InputB(0, 2) + p_InputA(0, 1) * p_InputB(1, 2) + p_InputA(0, 2) * p_InputB(2, 2),p_InputA(0, 0) * p_InputB(0, 3) + p_InputA(0, 1) * p_InputB(1, 3) + p_InputA(0, 2) * p_InputB(2, 3) + p_InputA(0, 3),p_InputA(1, 0) * p_InputB(0, 0) + p_InputA(1, 1) * p_InputB(1, 0) + p_InputA(1, 2) * p_InputB(2, 0),p_InputA(1, 0) * p_InputB(0, 1) + p_InputA(1, 1) * p_InputB(1, 1) + p_InputA(1, 2) * p_InputB(2, 1),p_InputA(1, 0) * p_InputB(0, 2) + p_InputA(1, 1) * p_InputB(1, 2) + p_InputA(1, 2) * p_InputB(2, 2),p_InputA(1, 0) * p_InputB(0, 3) + p_InputA(1, 1) * p_InputB(1, 3) + p_InputA(1, 2) * p_InputB(2, 3) + p_InputA(1, 3),p_InputA(2, 0) * p_InputB(0, 0) + p_InputA(2, 1) * p_InputB(1, 0) + p_InputA(2, 2) * p_InputB(2, 0),p_InputA(2, 0) * p_InputB(0, 1) + p_InputA(2, 1) * p_InputB(1, 1) + p_InputA(2, 2) * p_InputB(2, 1),p_InputA(2, 0) * p_InputB(0, 2) + p_InputA(2, 1) * p_InputB(1, 2) + p_InputA(2, 2) * p_InputB(2, 2),p_InputA(2, 0) * p_InputB(0, 3) + p_InputA(2, 1) * p_InputB(1, 3) + p_InputA(2, 2) * p_InputB(2, 3) + p_InputA(2, 3)));}//sVector3 operator *(const sTransform4& p_InputH, const sVector3& p_InputV){return (sVector3(p_InputH(0, 0) * p_InputV.x + p_InputH(0, 1) * p_InputV.y + p_InputH(0, 2) * p_InputV.z,p_InputH(1, 0) * p_InputV.x + p_InputH(1, 1) * p_InputV.y + p_InputH(1, 2) * p_InputV.z,p_InputH(2, 0) * p_InputV.x + p_InputH(2, 1) * p_InputV.y + p_InputH(2, 2) * p_InputV.z));}//sPoint3 operator *(const sTransform4& p_InputH, const sPoint3& p_InputP){return (sPoint3(p_InputH(0, 0) * p_InputP.x + p_InputH(0, 1) * p_InputP.y + p_InputH(0, 2) * p_InputP.z + p_InputH(0, 3),p_InputH(1, 0) * p_InputP.x + p_InputH(1, 1) * p_InputP.y + p_InputH(1, 2) * p_InputP.z + p_InputH(1, 3),p_InputH(2, 0) * p_InputP.x + p_InputH(2, 1) * p_InputP.y + p_InputH(2, 2) * p_InputP.z + p_InputH(2, 3)));}//sQuaternion operator *(const sQuaternion& p_InputQ1, const sQuaternion& p_InputQ2){return (sQuaternion(p_InputQ1.w * p_InputQ2.x + p_InputQ1.x * p_InputQ2.w + p_InputQ1.y * p_InputQ2.z - p_InputQ1.z * p_InputQ2.y,p_InputQ1.w * p_InputQ2.y - p_InputQ1.x * p_InputQ2.z + p_InputQ1.y * p_InputQ2.w + p_InputQ1.z * p_InputQ2.x,p_InputQ1.w * p_InputQ2.z + p_InputQ1.x * p_InputQ2.y - p_InputQ1.y * p_InputQ2.x + p_InputQ1.z * p_InputQ2.w,p_InputQ1.w * p_InputQ2.w - p_InputQ1.x * p_InputQ2.x - p_InputQ1.y * p_InputQ2.y - p_InputQ1.z * p_InputQ2.z));}//sVector3 viTransform(const sVector3& p_InputV, const sQuaternion& p_InputQ){const sVector3& b = p_InputQ.viGetVectorPart();float b2 = b.x * b.x + b.y * b.y + b.z * b.z;return (p_InputV * (p_InputQ.w * p_InputQ.w - b2) + b * (viDot(p_InputV, b) * 2.0F)+ viCross(b, p_InputV) * (p_InputQ.w * 2.0F));}//sMatrix3 sQuaternion::viGetRotationMatrix(void){float x2 = x * x;float y2 = y * y;float z2 = z * z;float xy = x * y;float xz = x * z;float yz = y * z;float wx = w * x;float wy = w * y;float wz = w * z;//return (sMatrix3(1.0F - 2.0F * (y2 + z2), 2.0F * (xy - wz), 2.0F * (xz + wy),2.0F * (xy + wz), 1.0F - 2.0F * (x2 + z2), 2.0F * (yz - wx),2.0F * (xz - wy), 2.0F * (yz + wx), 1.0F - 2.0F * (x2 + y2)));}//void sQuaternion::viSetRotationMatrix(const sMatrix3& p_InputM){float m00 = p_InputM(0, 0);float m11 = p_InputM(1, 1);float m22 = p_InputM(2, 2);float sum = m00 + m11 + m22;//if (sum > 0.0F){w = sqrt(sum + 1.0F) * 0.5F;float f = 0.25F / w;//x = (p_InputM(2, 1) - p_InputM(1, 2)) * f;y = (p_InputM(0, 2) - p_InputM(2, 0)) * f;z = (p_InputM(1, 0) - p_InputM(0, 1)) * f;}else if ((m00 > m11) && (m00 > m22)){x = sqrt(m00 - m11 - m22 + 1.0F) * 0.5F;float f = 0.25F / x;//y = (p_InputM(1, 0) + p_InputM(0, 1)) * f;z = (p_InputM(0, 2) + p_InputM(2, 0)) * f;w = (p_InputM(2, 1) - p_InputM(1, 2)) * f;}else if (m11 > m22){y = sqrt(m11 - m00 - m22 + 1.0F) * 0.5F;float f = 0.25F / y;//x = (p_InputM(1, 0) + p_InputM(0, 1)) * f;z = (p_InputM(2, 1) + p_InputM(1, 2)) * f;w = (p_InputM(0, 2) - p_InputM(2, 0)) * f;}else{z = sqrt(m22 - m00 - m11 + 1.0F) * 0.5F;float f = 0.25F / z;//x = (p_InputM(0, 2) + p_InputM(2, 0)) * f;y = (p_InputM(2, 1) + p_InputM(1, 2)) * f;w = (p_InputM(1, 0) - p_InputM(0, 1)) * f;}}//sVector3 operator *(const sVector3& p_InputN, const sTransform4& p_InputH){return (sVector3(p_InputN.x * p_InputH(0, 0) + p_InputN.y * p_InputH(1, 0) + p_InputN.z * p_InputH(2, 0),p_InputN.x * p_InputH(0, 1) + p_InputN.y * p_InputH(1, 1) + p_InputN.z * p_InputH(2, 1),p_InputN.x * p_InputH(0, 2) + p_InputN.y * p_InputH(1, 2) + p_InputN.z * p_InputH(2, 2)));}//float viDistPointLine(const sPoint3& p_InputQ, const sPoint3& p_InputP, const sVector3& p_InputV){sVector3 a = viCross(p_InputQ - p_InputP, p_InputV);return (sqrt(viDot(a, a) / viDot(p_InputV, p_InputV)));}//float viDistLineLine(const sPoint3& p_InputP1, const sVector3& p_InputV1,const sPoint3& p_InputP2, const sVector3& p_InputV2){sVector3 dp = p_InputP2 - p_InputP1;//float v12 = viDot(p_InputV1, p_InputV1);float v22 = viDot(p_InputV2, p_InputV2);float v1v2 = viDot(p_InputV1, p_InputV1);float det = v1v2 * v1v2 - v12 * v22;//if (fabs(det) > FLT_MIN){det = 1.0F / det;//float dpv1 = viDot(dp, p_InputV1);float dpv2 = viDot(dp, p_InputV2);float t1 = (v1v2 * dpv2 - v22 * dpv1) * det;float t2 = (v12 * dpv2 - v1v2 * dpv1) * det;//return (viMagnitude(dp + p_InputV2 * t2 - p_InputV1 * t1));}//sVector3 a = viCross(dp, p_InputV1);return (sqrt(viDot(a, a) / v12));}//float viDot(const sPlane& p_InputF, const sVector3& p_InputV){return (p_InputF.x * p_InputV.x + p_InputF.y * p_InputV.y + p_InputF.z * p_InputV.z);}//float viDot(const sPlane& p_InputF, const sPoint3& p_InputP){return (p_InputF.x * p_InputP.x + p_InputF.y * p_InputP.y + p_InputF.z * p_InputP.z + p_InputF.w);}//sTransform4 viMakeReflection(const sPlane& p_InputF){float x = p_InputF.x * -2.0F;float y = p_InputF.y * -2.0F;float z = p_InputF.z * -2.0F;float nxny = x * p_InputF.y;float nxnz = x * p_InputF.z;float nynz = y * p_InputF.z;//return (sTransform4(x * p_InputF.x + 1.0F, nxny, nxnz, x * p_InputF.w,nxny, y * p_InputF.y + 1.0F, nynz, y * p_InputF.w,nxnz, nynz, z * p_InputF.z + 1.0F, z * p_InputF.w));}//float viIntersectLinePlane(const sPoint3& p_InputP, const sVector3& p_InputV,const sPlane& p_InputF, sPoint3 *p_InputQ){float fv = viDot(p_InputF, p_InputV);//if (fabs(fv) > FLT_MIN){*p_InputQ = p_InputP - p_InputV * (viDot(p_InputF, p_InputP) / fv);return (true);}return (false);}//bool viIntersectThreePlanes(const sPlane& p_InputF1, const sPlane& p_InputF2,const sPlane& p_InputF3, sPoint3 *p_InputP){const sVector3& n1 = p_InputF1.viGetNormal();const sVector3& n2 = p_InputF2.viGetNormal();const sVector3& n3 = p_InputF3.viGetNormal();//sVector3 n1xn2 = viCross(n1, n2);float det = viDot(n1xn2, n3);if (fabs(det) > FLT_MIN){*p_InputP = (viCross(n3, n2) * p_InputF1.w + viCross(n1, n3) * p_InputF2.w- n1xn2 * p_InputF3.w) / det;return (true);}return (false);}//bool viIntersectTwoPlanes(const sPlane& p_InputF1, const sPlane& p_InputF2,sPoint3 *p_InputP, sVector3 *p_InputV){const sVector3& n1 = p_InputF1.viGetNormal();const sVector3& n2 = p_InputF2.viGetNormal();//*p_InputV = viCross(n1, n2);float det = viDot(*p_InputV, *p_InputV);if (fabs(det) > FLT_MIN){*p_InputP = (viCross(*p_InputV, n2) * p_InputF1.w + viCross(n1, *p_InputV) * p_InputF2.w) / det;return (true);}return (false);}//sPlane operator *(const sPlane& p_InputF, const sTransform4& p_InputH){return (sPlane(p_InputF.x * p_InputH(0, 0) + p_InputF.y * p_InputH(1, 0) + p_InputF.z * p_InputH(2, 0),p_InputF.x * p_InputH(0, 1) + p_InputF.y * p_InputH(1, 1) + p_InputF.z * p_InputH(2, 1),p_InputF.x * p_InputH(0, 2) + p_InputF.y * p_InputH(1, 2) + p_InputF.z * p_InputH(2, 2),p_InputF.x * p_InputH(0, 3) + p_InputF.y * p_InputH(1, 3) + p_InputF.z * p_InputH(2, 3) + p_InputF.w));}//sLine viTransform(const sLine& p_InputLine, const sTransform4& p_InputH){sMatrix3 adj(viCross(p_InputH[1], p_InputH[2]), viCross(p_InputH[2], p_InputH[0]), viCross(p_InputH[0], p_InputH[1]));const sPoint3& t = p_InputH.viGetTranslation();//sVector3 v = p_InputH * p_InputLine.direction;sVector3 m = adj * p_InputLine.moment + viCross(t, v);return (sLine(v, m));}//inline sLine operator ^(const sPoint3& p_InputP, const sPoint3& p_InputQ){return (sLine(p_InputQ.x - p_InputP.x, p_InputQ.y - p_InputP.y, p_InputQ.z - p_InputP.z,p_InputP.y * p_InputQ.z - p_InputP.z * p_InputQ.y, p_InputP.z * p_InputQ.x - p_InputP.x * p_InputQ.z, p_InputP.x * p_InputQ.y - p_InputP.y * p_InputQ.x));}//inline sLine operator ^(const sPlane& p_InputF, const sPlane& p_InputG){return (sLine(p_InputF.y * p_InputG.z - p_InputF.z * p_InputG.y,p_InputF.z * p_InputG.x - p_InputF.x * p_InputG.z,p_InputF.x * p_InputG.y - p_InputF.y * p_InputG.x,p_InputG.x * p_InputF.w - p_InputF.x * p_InputG.w,p_InputG.y * p_InputF.w - p_InputF.y * p_InputG.w,p_InputG.z * p_InputF.w - p_InputF.z * p_InputG.w));}//inline sPlane operator ^(const sLine& p_InputL, const sPoint3& p_InputP){return (sPlane(p_InputL.direction.y * p_InputP.z - p_InputL.direction.z * p_InputP.y + p_InputL.moment.x,p_InputL.direction.z * p_InputP.x - p_InputL.direction.x * p_InputP.z + p_InputL.moment.y,p_InputL.direction.x * p_InputP.y - p_InputL.direction.y * p_InputP.x + p_InputL.moment.z,-p_InputL.moment.x * p_InputP.x - p_InputL.moment.y * p_InputP.y - p_InputL.moment.z * p_InputP.z));}//inline sPlane operator ^(const sPoint3& p_InputP, const sLine& p_InputL){return (p_InputL ^ p_InputP);}//inline sVector4 operator ^(const sLine& p_InputL, const sPlane& p_InputF){return (sVector4(p_InputL.moment.y * p_InputF.z - p_InputL.moment.z * p_InputF.y + p_InputL.direction.x * p_InputF.w,p_InputL.moment.z * p_InputF.x - p_InputL.moment.x * p_InputF.z + p_InputL.direction.y * p_InputF.w,p_InputL.moment.x * p_InputF.y - p_InputL.moment.y * p_InputF.x + p_InputL.direction.z * p_InputF.w,-p_InputL.direction.x * p_InputF.x - p_InputL.direction.y * p_InputF.y - p_InputL.direction.z * p_InputF.z));}//inline sVector4 operator ^(const sPlane& p_InputF, const sLine& p_InputL){return (p_InputL ^ p_InputF);}//inline float operator ^(const sLine& p_InputL1, const sLine& p_InputL2){return (-(viDot(p_InputL1.direction, p_InputL2.moment) + viDot(p_InputL2.direction, p_InputL1.moment)));}//inline float operator ^(const sPoint3& p_InputP, const sPlane& p_InputF){return (p_InputP.x * p_InputF.x + p_InputP.y * p_InputF.y + p_InputP.z * p_InputF.z + p_InputF.w);}//inline float operator ^(const sPlane& p_InputF, const sPoint3& p_InputP){}//}/////////////////////////////////////////////////////////////////////////////////////////////////////////////I wanted to reuse as much code from my c++ libs as i can rather than full remakes so the better MX2 supports c++ the easier to bring it in.
Also i now agree with this last statement i will stick with c++ i just wanted a toy to rad stuff and mx2 supposedly supports c++ the docs dont even say what you can or cant do.
Well if that’s the case why even bother being able to use c++? Drop it full stop why bother if it wont fully be compatible.
Partial c++ support is not a great advertisement point.
Go big or go home!ok so far i have got a few things done BUT whats the best way to bring in the operators from cpp to mx2?
i.e.[/crayon]Monkey123456789101112131415161718192021222324252627282930313233343536373839404142434445[crayon-5cb9a02529b00781496938 inline="true" ]struct sMatrix3{private:float n[3][3];public:sMatrix3() = default;//sMatrix3(float p_InputN00, float p_InputN01, float p_InputN02,float p_InputN10, float p_InputN11, float p_InputN12,float p_InputN20, float p_InputN21, float p_InputN22){n[0][0] = p_InputN00; n[0][1] = p_InputN10; n[0][2] = p_InputN20;n[1][0] = p_InputN01; n[1][1] = p_InputN11; n[1][2] = p_InputN21;n[2][0] = p_InputN20; n[2][1] = p_InputN12; n[2][2] = p_InputN22;}//sMatrix3(const sVector3& p_InputA, const sVector3& p_InputB, const sVector3& p_InputC){n[0][0] = p_InputA.x; n[0][1] = p_InputA.y; n[0][2] = p_InputA.z;n[1][0] = p_InputB.x; n[1][1] = p_InputB.y; n[1][2] = p_InputB.z;n[2][0] = p_InputC.x; n[2][1] = p_InputC.y; n[2][2] = p_InputC.z;}//float& operator ()(int p_InputI, int p_InputJ){return (n[p_InputJ][p_InputI]);}//const float& operator ()(int p_InputI, int p_InputJ) const{return (n[p_InputJ][p_InputI]);}//sVector3& operator [](int p_InputJ){return (*reinterpret_cast<sVector3 *>(n[p_InputJ]));}//const sVector3& operator [](int p_InputJ) const{return (*reinterpret_cast<const sVector3 *>(n[p_InputJ]));}};[/crayon]Monkey123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241[crayon-5cb9a02529b09225979818 inline="true" ]'////////////////////////////////////////////////////////////////////////////////////////////////////////////'//'// Damian Yarker 2017'//'//'/////////////////////////////////////////////////////////////////////////////////////////////////////////////#Import "<std>"#Import "<mojo>"'/////////////////////////////////////////////////////////////////////////////////////////////////////////////#Import "Math.h"'/////////////////////////////////////////////////////////////////////////////////////////////////////////////Using std..Using mojo..'/////////////////////////////////////////////////////////////////////////////////////////////////////////////Extern'/////////////////////////////////////////////////////////////////////////////////////////////////////////////Struct sVector2'//Field x:Float, y:Float'//Method New:sVector2()'//Method New:sVector2(p_InputA:Float, p_InputB:Float)'//End Struct'/////////////////////////////////////////////////////////////////////////////////////////////////////////////Struct sVector3'//Field x:float, y:Float, z:Float'//Method New:sVector3()'//Method New:sVector3(p_InputA:Float, p_InputB:Float, p_InputC:Float)'//End Struct'/////////////////////////////////////////////////////////////////////////////////////////////////////////////Struct sVector4'//Field x:float, y:Float, z:Float, w:Float'//Method New:sVector4()'//Method New:sVector4(p_InputA:Float, p_InputB:Float, p_InputC:Float, p_InputW:Float)'//End Struct'/////////////////////////////////////////////////////////////////////////////////////////////////////////////Struct sPoint2'//Method New:sPoint2()'//Method New:sPoint2(p_InputA:Float, p_InputB:Float)'//'//End Struct'/////////////////////////////////////////////////////////////////////////////////////////////////////////////Struct sPoint3'//Method New:sPoint3()'//Method New:sPoint3(p_InputA:Float, p_InputB:Float, p_InputC:Float)'//'//End Struct'/////////////////////////////////////////////////////////////////////////////////////////////////////////////Struct sPoint4'//Method New:sPoint4()'//Method New:sPoint4(p_InputA:Float, p_InputB:Float, p_InputC:Float, p_InputW:Float)'//'//End Struct'/////////////////////////////////////////////////////////////////////////////////////////////////////////////Struct sMatrix3'//Method New:sMatrix3()'//Method New:sMatrix3(p_InputN00:Float, p_InputN01:Float, p_InputN02:float,p_InputN10:Float, p_InputN11:Float, p_InputN12:float,p_InputN20:Float, p_InputN21:Float, p_InputN22:float)'//Method New:sMatrix3(p_InputA:sVector3, p_InputB:sVector3, p_InputC:sVector3)'//End Struct'/////////////////////////////////////////////////////////////////////////////////////////////////////////////Struct sMatrix4'//Method New:sMatrix4()'//Method New:sMatrix4(p_InputN00:Float, p_InputN01:Float, p_InputN02:Float, p_InputN03:Float,p_InputN10:Float, p_InputN11:Float, p_InputN12:Float, p_InputN13:Float,p_InputN20:Float, p_InputN21:Float, p_InputN22:Float, p_InputN23:Float,p_InputN30:Float, p_InputN31:Float, p_InputN32:Float, p_InputN33:Float)'//Method New:sMatrix4(p_InputA:sVector4, p_InputB:sVector4, p_InputC:sVector4, p_InputD:sVector4)'//End Struct'/////////////////////////////////////////////////////////////////////////////////////////////////////////////Struct sTransform4'//Method New:sTransform4()'//Method New:sTransform4(p_InputN00:Float, p_InputN01:Float, p_InputN02:Float, p_InputN03:Float,p_InputN10:Float, p_InputN11:Float, p_InputN12:Float, p_InputN13:Float,p_InputN20:Float, p_InputN21:Float, p_InputN22:Float, p_InputN23:Float)'//Method sTransform4(p_InputA:sVector3, p_InputB:sVector3,p_InputC:sVector3, p_InputP:sVector3)'//Method viGetTranslation:sPoint3(Void)'//Method viSetTranslation:void(p_InputP:sPoint3)'//End Struct'/////////////////////////////////////////////////////////////////////////////////////////////////////////////Struct sQuaternion'//Field x:float, y:Float, z:Float, w:Float'//Method New:sQuaternion()'//Method New:sQuaternion(p_InputA:Float, p_InputB:Float, p_InputC:Float, p_InputS:Float)'//Method New:sQuaternion(p_InputV:sVector3, p_InputS:Float)'//Method viGetVectorPart:sVector3(void)'//Method viGetRotationMatrix:sMatrix3(void)'//Method viSetRotationMatrix:Void(p_InputM:sMatrix3)'//End Struct'/////////////////////////////////////////////////////////////////////////////////////////////////////////////Struct sPlane'//Field x:float, y:Float, z:Float, w:Float'//Method New:sPlane()'//Method New:sPlane(p_InputNX:Float, p_InputNY:Float, p_InputNZ:Float, p_InputD:Float)'//Method New:sPlane(p_InputN:sVector3, p_InputD:Float)'//Method viGetNormal:sVector3(void)'//End Struct'/////////////////////////////////////////////////////////////////////////////////////////////////////////////Struct sLine'//Method New:sLine()'//Method New:sLine(p_InputVX:Float, p_InputVY:Float, p_InputVZ:Float, p_InputMX:Float, p_InputMY:Float, p_InputMZ:Float)'//Method New:sLine(p_InputV:sVector3, p_InputM:sVector3)'//End Struct'/////////////////////////////////////////////////////////////////////////////////////////////////////////////Function viDot:Float(p_InputV1:sVector2, p_InputV2:sVector2)'//Function viProjectOnto:sVector2(p_InputV1:sVector2, p_InputV2:sVector2)'//Function viMagnitude:Float(p_InputV:sVector2)'//Function viNormalize:sVector2(p_InputV:sVector2)'//Function viSquaredMag:Float(p_InputV:sVector2)'//Function viDot:Float(p_InputV1:sVector3, p_InputV2:sVector3)'//Function viCross:sVector3(p_InputA:sVector3, p_InputB:sVector3)'//Function viMagnitude:Float(p_InputV:sVector3)'//Function viNormalize:sVector3(p_InputV:sVector3)'//Function viProject:sVector3(p_InputA:sVector3, p_InputB:sVector3)'//Function viReject:sVector3(p_InputA:sVector3, p_InputB:sVector3)'//Function viDeterminant:Float(p_InputM:sMatrix3)'//Function viInverse:sMatrix3(p_InputM:sMatrix3)'//Function viInverse:sMatrix4(p_InputM:sMatrix4)'//Function viMakeRotationX:sMatrix3(p_InputT:Float)'//Function viMakeRotationY:sMatrix3(p_InputT:Float)'//Function viMakeRotationZ:sMatrix3(p_InputT:Float)'//Function viMakeRotation:sMatrix3(p_InputT:Float, p_InputA:sVector3)'//Function viMakeReflections:sMatrix3(p_InputA:sVector3)'//Function viMakeInvolution:sMatrix3(p_InputA:sVector3)'//Function viMakeScale:sMatrix3(p_InputSX:Float, p_InputSY:Float, p_InputSZ:Float)'//Function viMakeScale:sMatrix3(p_InputS:Float, p_InputA:sVector3)'//Function viMakeSkew:sMatrix3(p_InputT:Float, p_InputA:sVector3, p_InputB:sVector3)'//Function viInverse:sTransform4(p_InputH:sTransform4)'//Function viTransform:sVector3(p_InputV:sVector3, p_InputQ:sQuaternion)'//Function viGetRotationMatrix:sMatrix3(void)'//Function viSetRotationMatrix:void(p_InputM:sMatrix3)'//Function viDistPointLine:Float(p_InputQ:sPoint3, p_InputP:sPoint3, p_InputV:sVector3)'//Function viDistLineLine:Float(p_InputP1:sPoint3, p_InputV1:sVector3, p_InputP2:sPoint3, p_InputV2:sVector3)'//Function viDot:Float(p_InputF:sPlane, p_InputV:sVector3)'//Function viDot:Float(p_InputF:sPlane, p_InputP:sPoint3)'//Function viMakeReflection:sTransform4(p_InputF:sPlane)'//Function viIntersectLinePlane:Float(p_InputP:sPoint3, p_InputV:sVector3, p_InputF:sPlane, p_InputQ:sPoint3)'//Function viIntersectThreePlanes:bool(p_InputF1:sPlane, p_InputF2:sPlane, p_InputF3:sPlane, p_InputP:sPoint3)'//Function viIntersectTwoPlanes:Bool(p_InputF1:sPlane, p_InputF2:sPlane, p_InputP:sPoint3, p_InputV:sVector3)'//Function viTransform:sLine(p_InputLine:sLine, p_InputH:sTransform4)'//PublicFunction Main:Void()New AppInstanceApp.Run()End Functionok i can live with that i spent a damn long time learning the maths to create thee lib so il be damned if i dont get some use out of it.
its using grassmann algebra for matrix3/4, translation, reflection, Quaternions etc
just want to put it to use.
ah ok thought it was me being dumb lol
[/crayon]Monkey123456789[crayon-5cb9a0253a07a464480279 inline="true" ]Method ModVector:Float(value:Float, trueMod:Short)value Mod = trueModIf value < 0 Thenvalue = value + trueModEndifReturn valueEnd Methodgives me these errors
[/crayon]Monkey12345678910111213141516171819202122232425262728[crayon-5cb9a0253a07f904731742 inline="true" ]Mx2cc version 1.1.04***** Building app 'C:/Monkey2-v1.1.04/bananas/Pong/Main.monkey2' *****Parsing...Semanting...Translating...Compiling...Build error: System command 'g++ -I"C:/Monkey2-v1.1.04/modules/" -I"C:/Monkey2-v1.1.04/modules/monkey/native" -I"C:/Monkey2-v1.1.04/bananas/Pong/" -std=c++11 -m32 -I"C:/Monkey2-v1.1.04/modules/freetype/freetype-2.6.3/include/" -I"C:/Monkey2-v1.1.04/modules/openal/openal-soft/include/" -I"C:/Monkey2-v1.1.04/modules/gles20/angle/include/" -I"C:/Monkey2-v1.1.04/modules/sdl2/SDL/include/" -c -o "C:/Monkey2-v1.1.04/bananas/Pong/Main.buildv1.1.04/windows_debug/build/_1src_2Main_0Vector.cpp.o" "C:/Monkey2-v1.1.04/bananas/Pong/Main.buildv1.1.04/windows_debug/src/Main_Vector.cpp"' failed.g++ -I"C:/Monkey2-v1.1.04/modules/" -I"C:/Monkey2-v1.1.04/modules/monkey/native" -I"C:/Monkey2-v1.1.04/bananas/Pong/" -std=c++11 -m32 -I"C:/Monkey2-v1.1.04/modules/freetype/freetype-2.6.3/include/" -I"C:/Monkey2-v1.1.04/modules/openal/openal-soft/include/" -I"C:/Monkey2-v1.1.04/modules/gles20/angle/include/" -I"C:/Monkey2-v1.1.04/modules/sdl2/SDL/include/" -c -o "C:/Monkey2-v1.1.04/bananas/Pong/Main.buildv1.1.04/windows_debug/build/_1src_2Main_0Vector.cpp.o" "C:/Monkey2-v1.1.04/bananas/Pong/Main.buildv1.1.04/windows_debug/src/Main_Vector.cpp"C:/Monkey2-v1.1.04/bananas/Pong/Main.buildv1.1.04/windows_debug/src/Main_Vector.cpp: In member function 'bbFloat t_Library_Vector::m_ModVector(bbFloat, bbShort)':C:/Monkey2-v1.1.04/bananas/Pong/Main.buildv1.1.04/windows_debug/src/Main_Vector.cpp:173:29: error: invalid operands of types 'bbFloat {aka float}' and 'bbFloat {aka float}' to binary 'operator%'l_value%=bbFloat(l_trueMod);^C:/Monkey2-v1.1.04/bananas/Pong/Main.buildv1.1.04/windows_debug/src/Main_Vector.cpp:173:29: error: in evaluation of 'operator%=(bbFloat {aka float}, bbFloat {aka float})'***** Fatal mx2cc error *****Internal mx2cc build erroris there another way to do this as below works in BMX
[/crayon]Monkey1234567[crayon-5cb9a0253ed95774240974 inline="true" ]Function TrueMod:Float(p_Value:Float, p_Mod:Short)p_Value:Mod p_ModIf p_Value < 0 Then p_Value:+p_ModReturn p_ValueEnd Functionhi from the UK
-
AuthorPosts