Each SceneNode has two bounding boxes: localBoundingBox and WorldBoundingBox.
The localBoundingBox is in local coordinates (not affected by the parent's transformations) and is transformed by the SceneNode's transformation. Because localBoundingBox is protected, you need to call the GetLocalBoundingBox method to get its value (note that this method takes an updateIfDirty parameter that is true by default).
The WorldBoundingBox is in world coordinates and is transformed by the parent's transformations and the transformation on this SceneNode.
See the related help topics:
https://www.ab4d.com/help/SharpEngine/ht...ingBox.htm
https://www.ab4d.com/help/SharpEngine/ht...ingBox.htm
https://www.ab4d.com/help/SharpEngine/ht...ingBox.htm
Note that the online help info text should also be available through IntelliSense.
When you change a transformation on a SceneNode, then the LocalBoundingBox is immediately changed.
To update the WorldBoundingBox you need to call SceneNode.Update method.
But if the transformation is changed on the parent's GroupNode, then you need to call GroupNode.Update to update the WorldBoundingBox on the child nodes.
You can also always call the Scene.Update method - this will update the WorldBoundingBox on all "dirty" SceneNodes (SceneNode's DirtyFlags indicate that WorldBoundingBox needs to be updated).
If the mesh is changed in MeshModelNode, then you need to call Mesh.Update and MeshModelNode.Update to get the updated WorldBoundingBox.
The Scene.UpdateSceneNodeWorldMatrixData method is used by the effects - the method get the current value of the WorldBoundingBox and updates the GpuBuffer that stores the world matrices data for the GPU - see
https://www.ab4d.com/help/SharpEngine/ht...ixData.htm