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());
	}
}