/// <summary> /// Create the product of this SceneNode. /// </summary> /// <param name="instance">The instance to get the product.</param> /// <param name="scene">The scene to create the product into.</param> internal void createProduct(SimObjectBase instance, OgreSceneManager scene) { SceneNode node = scene.SceneManager.createSceneNode(instance.Name + Name); node.setPosition(instance.Translation); node.setOrientation(instance.Rotation); SceneNodeElement element = new SceneNodeElement(Name, scene, node, scene.SceneManager.getRootSceneNode()); instance.addElement(element); foreach (MovableObjectDefinition movable in movableObjects.Values) { element.attachObject(movable); } foreach (SceneNodeDefinition child in childNodes.Values) { child.createAsChild(instance, scene, element); } }
/// <summary> /// Function used to create all child scene nodes. This will construct /// the SceneNode a bit differently and add it as a child of element /// instead of the root node. /// </summary> /// <param name="instance">The instance to get the product.</param> /// <param name="scene">The scene to create the product into.</param> /// <param name="parentElement">The element of the parent node.</param> private void createAsChild(SimObjectBase instance, OgreSceneManager scene, SceneNodeElement parentElement) { SceneNode node = scene.SceneManager.createSceneNode(instance.Name + Name); node.setPosition(LocalTranslation); node.setOrientation(LocalRotation); SceneNodeElement element = new SceneNodeElement(Name, scene, node, parentElement.SceneNode); instance.addWeakElement(element); foreach (MovableObjectDefinition movable in movableObjects.Values) { element.attachObject(movable); } foreach (SceneNodeDefinition child in childNodes.Values) { child.createAsChild(instance, scene, element); } parentElement.addChild(element); }
/// <summary> /// Remove a child SceneNodeElement. /// </summary> /// <param name="element">The SceneNodeElement to remove.</param> internal void removeChild(SceneNodeElement element) { children.Remove(element); }
/// <summary> /// Add a child SceneNodeElement. /// </summary> /// <param name="element">The SceneNodeElement to add as a child.</param> internal void addChild(SceneNodeElement element) { children.Add(element); }