public static float4x4 Parse4x3( string _Source )
{
string[] Terms = _Source.Split( ';' );
if ( Terms.Length != 12 )
throw new Exception( "Source string must have 12 terms!" );
float4x4 Result = new float4x4();
Result.m[0,0] = float.Parse( Terms[3 * 0 + 0] );
Result.m[0,1] = float.Parse( Terms[3 * 0 + 1] );
Result.m[0,2] = float.Parse( Terms[3 * 0 + 2] );
Result.m[0,3] = 0.0f;
Result.m[1,0] = float.Parse( Terms[3 * 1 + 0] );
Result.m[1,1] = float.Parse( Terms[3 * 1 + 1] );
Result.m[1,2] = float.Parse( Terms[3 * 1 + 2] );
Result.m[1,3] = 0.0f;
Result.m[2,0] = float.Parse( Terms[3 * 2 + 0] );
Result.m[2,1] = float.Parse( Terms[3 * 2 + 1] );
Result.m[2,2] = float.Parse( Terms[3 * 2 + 2] );
Result.m[2,3] = 0.0f;
Result.m[3,0] = float.Parse( Terms[3 * 3 + 0] );
Result.m[3,1] = float.Parse( Terms[3 * 3 + 1] );
Result.m[3,2] = float.Parse( Terms[3 * 3 + 2] );
Result.m[3,3] = 1.0f;
return Result;
}