/// <summary> /// Set position,rotation and scale from the transform matrix /// This does not support mirroring, so every component of scale has to be > 0 /// </summary> /// <param name="transform"></param> public void SetPropertiesFromMatrix(Matrix4x4 transform) { position = transform.Translation; // extract scale and create a rotation matrix Vector3 cx = transform.Col(0); Vector3 cy = transform.Col(1); Vector3 cz = transform.Col(2); scale.x = cx.Length; scale.y = cy.Length; scale.z = cz.Length; Matrix4x4 rotationMatrix = Matrix4x4.Identity(); rotationMatrix.SetCol(0, cx/scale.x); rotationMatrix.SetCol(1, cy/scale.y); rotationMatrix.SetCol(2, cz/scale.z); rotation.FromMatrix(rotationMatrix); }