// B1 * A4

// B1 = s(1,1,1) r(0,0,0) t(5,5,0)
// A4 = s(1.4,0.8,1) r(0,0,0) t(0,0,0)

//INFO : "Result: s(1.4,0.8,1) r(0,0,0) t(7,4,0)"

var B1 = CreateMatrix4(1,1,1,0,0,0,5,5,0);
var A4 = CreateMatrix4(1.4,0.8,1,0,0,0,0,0,0);

MatrixMultiply(B1, A4);
/*--------------------------------
Create Matrix 4
--------------------------------*/
function CreateMatrix4( inSx, inSy, inSz, inRx, inRy, inRz, inTx, inTy, inTz ){

trans = XSIMath.CreateTransform();

inRx = XSIMath.DegreesToRadians(inRx);
inRy = XSIMath.DegreesToRadians(inRy);
inRz = XSIMath.DegreesToRadians(inRz);

trans.SetScalingFromValues (inSx, inSy, inSz);
trans.SetTranslationFromValues(inTx, inTy, inTz);
trans.SetRotationFromXYZAnglesValues(inRx, inRy, inRz);

var matrix = XSIMath.CreateMatrix4();
trans.GetMatrix4(matrix);

return matrix;
}

/*--------------------------------
Matrix Multiply
--------------------------------*/
function MatrixMultiply(inM1, inM2){

var mTrans = XSIMath.CreateTransform();
var mTrans2 = XSIMath.CreateTransform();

mTrans.SetMatrix4(inM1);
mTrans2.SetMatrix4(inM2)

var resultTrans = XSIMath.CreateTransform();
resultTrans.Mul(mTrans, mTrans2);

// now log SRT values
var scl = XSIMath.CreateVector3();
var trn = XSIMath.CreateVector3();
var rot = XSIMath.CreateVector3();

resultTrans.GetScaling(scl);
resultTrans.GetTranslation (trn);
resultTrans.GetRotationXYZAngles (rot);

rot.x = XSIMath.RadiansToDegrees(rot.x);
rot.y = XSIMath.RadiansToDegrees(rot.y);
rot.z = XSIMath.RadiansToDegrees(rot.z);

logmessage ("Result: "+"s("+scl.x+","+scl.y+","+scl.z+
") r("+rot.x+","+rot.y+","+rot.z+
") t("+trn.x+","+trn.y+","+trn.z+
")");


}
//--------------------------------