void matrix4_assign_rotation_for_pivot(Matrix4& matrix, const scene::INodePtr& node) { EditablePtr editable = Node_getEditable(node); // If the instance is editable, take the localpivot point into account, otherwise just apply the rotation if (editable != 0) { matrix4_assign_rotation(matrix, node->localToWorld().getMultipliedBy(editable->getLocalPivot())); } else { matrix4_assign_rotation(matrix, node->localToWorld()); } }
inline void matrix4_assign_rotation_for_pivot(Matrix4& matrix, scene::Instance& instance) { Editable* editable = Node_getEditable(instance.path().top()); // If the instance is editable, take the localpivot point into account, otherwise just apply the rotation if (editable != 0) { matrix4_assign_rotation(matrix, matrix4_multiplied_by_matrix4(instance.localToWorld(), editable->getLocalPivot())); } else { matrix4_assign_rotation(matrix, instance.localToWorld()); } }