Code for all children: thisnode.getworldOrientation().ToRotationMatrix(thisnoderotmatrix) 'get the nodes rotation matrix and put it in thisnoderotmatrix. Local newrot:TMatrix3 = thisnoderotmatrix.add(rotateby) 'multiply thisnoderotmatrix with the matrix we want to ratate with. neworientation.FromRotationMatrix(newrot) 'convert this matrix to a quat. neworientation.normalise() 'Normalise the orientation quat to prevent floating issues that end up breaking the objects matrix. thisnode.setOrientation(neworientation) 'Set the orientation. code for main node: node.getworldOrientation().ToRotationMatrix(thisnoderotmatrix) 'get the nodes rotation matrix and put it in thisnoderotmatrix. Local newrot:TMatrix3 = thisnoderotmatrix.add(rotateby) 'multiply thisnoderotmatrix with the matrix we want to ratate with. neworientation.FromRotationMatrix(newrot) 'convert this matrix to a quat. neworientation.normalise() 'Normalise the orientation quat to prevent floating issues that end up breaking the objects matrix. node.setOrientation(neworientation) 'Set the orientation.