Refactored SceneNode to use unique_ptr