AoMEngineLibrary.AMP.GrnMax.GetTransformPRS C# (CSharp) Method

GetTransformPRS() private method

private GetTransformPRS ( string nameM3, Vector3D &pos, Quaternion &rot, Matrix3x3 &scale ) : void
nameM3 string
pos Vector3D
rot Quaternion
scale Matrix3x3
return void
        private void GetTransformPRS(string nameM3, out Vector3D pos, out Quaternion rot, out Matrix3x3 scale)
        {
            Maxscript.Command("bRot = inverse({0}.rotation)", nameM3);
            Maxscript.Command("boneScTransMat = {0} * inverse({0}.rotation as matrix3)", nameM3);
            Maxscript.Command("{0} = inverse({0}.rotation as matrix3) * {0}", nameM3);
            Maxscript.Command("bPos = {0}.position", nameM3);

            pos = new Vector3D(
                    Maxscript.QueryFloat("bPos.x"),
                    Maxscript.QueryFloat("bPos.y"),
                    Maxscript.QueryFloat("bPos.z"));
            rot = new Quaternion(
                Maxscript.QueryFloat("bRot.w"),
                Maxscript.QueryFloat("bRot.x"),
                Maxscript.QueryFloat("bRot.y"),
                Maxscript.QueryFloat("bRot.z"));
            scale = new Matrix3x3();
            scale.A1 = Maxscript.QueryFloat("boneScTransMat.row1.x");
            scale.A2 = Maxscript.QueryFloat("boneScTransMat.row1.y");
            scale.A3 = Maxscript.QueryFloat("boneScTransMat.row1.z");
            scale.B1 = Maxscript.QueryFloat("boneScTransMat.row2.x");
            scale.B2 = Maxscript.QueryFloat("boneScTransMat.row2.y");
            scale.B3 = Maxscript.QueryFloat("boneScTransMat.row2.z");
            scale.C1 = Maxscript.QueryFloat("boneScTransMat.row3.x");
            scale.C2 = Maxscript.QueryFloat("boneScTransMat.row3.y");
            scale.C3 = Maxscript.QueryFloat("boneScTransMat.row3.z");
        }