|
virtual | ~Ogre2Scene () |
| Destructor. More...
|
|
virtual math::Color | AmbientLight () const override |
| Get the scene ambient light color. More...
|
|
virtual void | Clear () override |
| Remove and destroy all objects from the scene graph. This does not completely destroy scene resources, so new objects can be created and added to the scene afterwards. More...
|
|
virtual void | Destroy () override |
| Completely destroy the scene an all its resources. Continued use of this scene after its destruction will result in undefined behavior. More...
|
|
virtual RenderEngine * | Engine () const override |
| Get the creating render-engine of the scene. More...
|
|
virtual void | Fini () override |
|
virtual Ogre::SceneManager * | OgreSceneManager () const |
| Get a pointer to the ogre scene manager. More...
|
|
virtual void | PreRender () override |
| Prepare scene for rendering. The scene will flushing any scene changes by traversing scene-graph, calling PreRender on all objects. More...
|
|
virtual VisualPtr | RootVisual () const override |
| Get root Visual node. All nodes that are desired to be rendered in a scene should be added to this Visual or one of its ancestors in the scene-graph. Nodes created by this Scene will not be added to the scene by default. More...
|
|
virtual void | SetAmbientLight (const math::Color &_color) override |
| Set the scene ambient light color. More...
|
|
virtual | ~BaseScene () |
|
virtual math::Color | BackgroundColor () const override |
| Get the scene background color. More...
|
|
virtual ArrowVisualPtr | CreateArrowVisual () override |
| Create new arrow visual. A unique ID and name will automatically be assigned to the visual. More...
|
|
virtual ArrowVisualPtr | CreateArrowVisual (unsigned int _id) override |
| Create new arrow visual with the given ID. A unique name will automatically be assigned to the visual. If the given ID is already in use, NULL will be returned. More...
|
|
virtual ArrowVisualPtr | CreateArrowVisual (const std::string &_name) override |
| Create new arrow visual with the given name. A unique ID will automatically be assigned to the visual. If the given name is already in use, NULL will be returned. More...
|
|
virtual ArrowVisualPtr | CreateArrowVisual (unsigned int _id, const std::string &_name) override |
| Create new arrow visual with the given name. If either the given ID or name is already in use, NULL will be returned. More...
|
|
virtual AxisVisualPtr | CreateAxisVisual () override |
| Create new axis visual. A unique ID and name will automatically be assigned to the visual. More...
|
|
virtual AxisVisualPtr | CreateAxisVisual (unsigned int _id) override |
| Create new axis visual with the given ID. A unique name will automatically be assigned to the visual. If the given ID is already in use, NULL will be returned. More...
|
|
virtual AxisVisualPtr | CreateAxisVisual (const std::string &_name) override |
| Create new axis visual with the given name. A unique ID will automatically be assigned to the visual. If the given name is already in use, NULL will be returned. More...
|
|
virtual AxisVisualPtr | CreateAxisVisual (unsigned int _id, const std::string &_name) override |
| Create new axis visual with the given name. If either the given ID or name is already in use, NULL will be returned. More...
|
|
virtual GeometryPtr | CreateBox () override |
| Create new box geometry. More...
|
|
virtual CameraPtr | CreateCamera () override |
| Create new camera. A unique ID and name will automatically be assigned to the camera. More...
|
|
virtual CameraPtr | CreateCamera (unsigned int _id) override |
| Create new camera with the given ID. A unique name will automatically be assigned to the camera. If the given ID is already in use, NULL will be returned. More...
|
|
virtual CameraPtr | CreateCamera (const std::string &_name) override |
| Create new camera with the given name. A unique ID will automatically be assigned to the camera. If the given name is already in use, NULL will be returned. More...
|
|
virtual CameraPtr | CreateCamera (unsigned int _id, const std::string &_name) override |
| Create new camera with the given name. If either the given ID or name is already in use, NULL will be returned. More...
|
|
virtual GeometryPtr | CreateCone () override |
| Create new cone geometry. More...
|
|
virtual GeometryPtr | CreateCylinder () override |
| Create new cylinder geometry. More...
|
|
virtual DepthCameraPtr | CreateDepthCamera () override |
| Create new depth camera. A unique ID and name will automatically be assigned to the camera. More...
|
|
virtual DepthCameraPtr | CreateDepthCamera (const unsigned int _id) override |
| Create new depth camera with the given ID. A unique name will automatically be assigned to the camera. If the given ID is already in use, NULL will be returned. More...
|
|
virtual DepthCameraPtr | CreateDepthCamera (const std::string &_name) override |
| Create new depth camera with the given name. A unique ID will automatically be assigned to the camera. If the given name is already in use, NULL will be returned. More...
|
|
virtual DepthCameraPtr | CreateDepthCamera (const unsigned int _id, const std::string &_name) override |
| Create new depth camera with the given name. If either the given ID or name is already in use, NULL will be returned. More...
|
|
virtual DirectionalLightPtr | CreateDirectionalLight () override |
| Create new directional light. A unique ID and name will automatically be assigned to the light. More...
|
|
virtual DirectionalLightPtr | CreateDirectionalLight (unsigned int _id) override |
| Create new directional light with the given ID. A unique name will automatically be assigned to the light. If the given ID is already in use, NULL will be returned. More...
|
|
virtual DirectionalLightPtr | CreateDirectionalLight (const std::string &_name) override |
| Create new directional light with the given name. A unique ID will automatically be assigned to the light. If the given name is already in use, NULL will be returned. More...
|
|
virtual DirectionalLightPtr | CreateDirectionalLight (unsigned int _id, const std::string &_name) override |
| Create new directional light with the given name. If either the given ID or name is already in use, NULL will be returned. More...
|
|
virtual GizmoVisualPtr | CreateGizmoVisual () override |
| Create new gizmo visual. A unique ID and name will automatically be assigned to the visual. More...
|
|
virtual GizmoVisualPtr | CreateGizmoVisual (unsigned int _id) override |
| Create new gizmo visual with the given ID. A unique name will automatically be assigned to the visual. If the given ID is already in use, NULL will be returned. More...
|
|
virtual GizmoVisualPtr | CreateGizmoVisual (const std::string &_name) override |
| Create new gizmo visual with the given name. A unique ID will automatically be assigned to the visual. If the given name is already in use, NULL will be returned. More...
|
|
virtual GizmoVisualPtr | CreateGizmoVisual (unsigned int _id, const std::string &_name) override |
| Create new gizmo visual with the given name. If either the given ID or name is already in use, NULL will be returned. More...
|
|
virtual GpuRaysPtr | CreateGpuRays () override |
| Create new gpu rays caster. A unique ID and name will automatically be assigned to the gpu rays caster. More...
|
|
virtual GpuRaysPtr | CreateGpuRays (const unsigned int _id) override |
| Create new gpu rays caster with the given ID. A unique name will automatically be assigned to the gpu rays caster. If the given ID is already in use, NULL will be returned. More...
|
|
virtual GpuRaysPtr | CreateGpuRays (const std::string &_name) override |
| Create new gpu rays caster with the given name. A unique ID will automatically be assigned to the gpu rays caster. If the given name is already in use, NULL will be returned. More...
|
|
virtual GpuRaysPtr | CreateGpuRays (const unsigned int _id, const std::string &_name) override |
| Create new gpu rays caster with the given name. If either the given ID or name is already in use, NULL will be returned. More...
|
|
virtual GridPtr | CreateGrid () override |
| Create new grid geometry. More...
|
|
virtual LidarVisualPtr | CreateLidarVisual () override |
| Create new lidar visual. A unique ID and name will automatically be assigned to the lidar visual. More...
|
|
virtual LidarVisualPtr | CreateLidarVisual (unsigned int _id) override |
| Create new lidar visual with the given ID. A unique name will automatically be assigned to the lidar visual. If the given ID is already in use, NULL will be returned. More...
|
|
virtual LidarVisualPtr | CreateLidarVisual (const std::string &_name) override |
| Create new lidar visual with the given name. A unique ID will automatically be assigned to the lidar visual. If the given name is already in use, NULL will be returned. More...
|
|
virtual LidarVisualPtr | CreateLidarVisual (unsigned int _id, const std::string &_name) override |
| Create new lidar visual with the given name. If either the given ID or name is already in use, NULL will be returned. More...
|
|
virtual MarkerPtr | CreateMarker () override |
| Create new marker geometry. More...
|
|
virtual MaterialPtr | CreateMaterial (const std::string &_name="") override |
| Create new material with the given name. Created material will have default properties. More...
|
|
virtual MaterialPtr | CreateMaterial (const common::Material &_material) override |
| Create new material from the reference common::Material. More...
|
|
virtual MeshPtr | CreateMesh (const std::string &_meshName) override |
| Create new mesh geomerty. The rendering::Mesh will be created from a common::Mesh retrieved from common::MeshManager using the given mesh name. If no mesh exists by this name, NULL will be returned. All sub-meshes will be loaded into the created mesh, uncentered. More...
|
|
virtual MeshPtr | CreateMesh (const common::Mesh *_mesh) override |
| Create new mesh geomerty. The rendering::Mesh will be created from the given common::Mesh. All sub-meshes will be loaded into this created mesh, uncentered. More...
|
|
virtual MeshPtr | CreateMesh (const MeshDescriptor &_desc) override |
| Create new mesh geometry. The rendering::Mesh will be created from the given common::Mesh specified in the MeshDescriptor. Sub-meshes will be loaded and centered according to the descriptor. More...
|
|
virtual ParticleEmitterPtr | CreateParticleEmitter () override |
| Create new particle emitter. A unique ID and name will automatically be assigned to the visual. More...
|
|
virtual ParticleEmitterPtr | CreateParticleEmitter (unsigned int _id) override |
| Create new particle emitter with the given ID. A unique name will automatically be assigned to the visual. If the given ID is already in use, NULL will be returned. More...
|
|
virtual ParticleEmitterPtr | CreateParticleEmitter (const std::string &_name) override |
| Create new particle emitter with the given name. A unique ID will automatically be assigned to the visual. If the given name is already in use, NULL will be returned. More...
|
|
virtual ParticleEmitterPtr | CreateParticleEmitter (unsigned int _id, const std::string &_name) override |
| Create new particle emitter with the given name. If either the given ID or name is already in use, NULL will be returned. More...
|
|
virtual GeometryPtr | CreatePlane () override |
| Create new plane geometry. More...
|
|
virtual PointLightPtr | CreatePointLight () override |
| Create new point light. A unique ID and name will automatically be assigned to the light. More...
|
|
virtual PointLightPtr | CreatePointLight (unsigned int _id) override |
| Create new point light with the given ID. A unique name will automatically be assigned to the light. If the given ID is already in use, NULL will be returned. More...
|
|
virtual PointLightPtr | CreatePointLight (const std::string &_name) override |
| Create new point light with the given name. A unique ID will automatically be assigned to the light. If the given name is already in use, NULL will be returned. More...
|
|
virtual PointLightPtr | CreatePointLight (unsigned int _id, const std::string &_name) override |
| Create new point light with the given name. If either the given ID or name is already in use, NULL will be returned. More...
|
|
virtual RayQueryPtr | CreateRayQuery () override |
| Create new ray query. More...
|
|
virtual RenderTexturePtr | CreateRenderTexture () override |
| Create new render texture. More...
|
|
virtual RenderWindowPtr | CreateRenderWindow () override |
| Create new render window. This feature is render engine dependent. If the engine does not support attaching to a windowing system then it should behave as a a render texture. More...
|
|
virtual GeometryPtr | CreateSphere () override |
| Create new sphere geometry. More...
|
|
virtual SpotLightPtr | CreateSpotLight () override |
| Create new spotlight. A unique ID and name will automatically be assigned to the light. More...
|
|
virtual SpotLightPtr | CreateSpotLight (unsigned int _id) override |
| Create new spotlight with the given ID. A unique name will automatically be assigned to the light. If the given ID is already in use, NULL will be returned. More...
|
|
virtual SpotLightPtr | CreateSpotLight (const std::string &_name) override |
| Create new spotlight with the given name. A unique ID will automatically be assigned to the light. If the given name is already in use, NULL will be returned. More...
|
|
virtual SpotLightPtr | CreateSpotLight (unsigned int _id, const std::string &_name) override |
| Create new spotlight with the given name. If either the given ID or name is already in use, NULL will be returned. More...
|
|
virtual TextPtr | CreateText () override |
| Create new text geometry. More...
|
|
virtual ThermalCameraPtr | CreateThermalCamera () override |
| Create new thermal camera. A unique ID and name will automatically be assigned to the camera. More...
|
|
virtual ThermalCameraPtr | CreateThermalCamera (const unsigned int _id) override |
| Create new thermal camera with the given ID. A unique name will automatically be assigned to the camera. If the given ID is already in use, NULL will be returned. More...
|
|
virtual ThermalCameraPtr | CreateThermalCamera (const std::string &_name) override |
| Create new thermal camera with the given name. A unique ID will automatically be assigned to the camera. If the given name is already in use, NULL will be returned. More...
|
|
virtual ThermalCameraPtr | CreateThermalCamera (const unsigned int _id, const std::string &_name) override |
| Create new thermal camera with the given name. If either the given ID or name is already in use, NULL will be returned. More...
|
|
virtual VisualPtr | CreateVisual () override |
| Create new visual. A unique ID and name will automatically be assigned to the visual. More...
|
|
virtual VisualPtr | CreateVisual (unsigned int _id) override |
| Create new visual with the given ID. A unique name will automatically be assigned to the visual. If the given ID is already in use, NULL will be returned. More...
|
|
virtual VisualPtr | CreateVisual (const std::string &_name) override |
| Create new visual with the given name. A unique ID will automatically be assigned to the visual. If the given name is already in use, NULL will be returned. More...
|
|
virtual VisualPtr | CreateVisual (unsigned int _id, const std::string &_name) override |
| Create new visual with the given name. If either the given ID or name is already in use, NULL will be returned. More...
|
|
virtual WireBoxPtr | CreateWireBox () override |
| Create new wire box geometry. More...
|
|
virtual void | DestroyLight (LightPtr _light, bool _recursive=false) override |
| Destroy given light. If the given light is not managed by this scene, no work will be done. Depending on the _recursive argument, this function will either detach all child nodes from the scene graph or recursively destroy them. More...
|
|
virtual void | DestroyLightById (unsigned int _id) override |
| Destroy light with the given id. If no light exists with the given id, no work will be done. All children of the light will consequently be detached from the scene graph, but not destroyed. More...
|
|
virtual void | DestroyLightByIndex (unsigned int _index) override |
| Destroy light at the given index. If no light exists at the given index, no work will be done. All children of the light will consequently be detached from the scene graph, but not destroyed. More...
|
|
virtual void | DestroyLightByName (const std::string &_name) override |
| Destroy light with the given name. If no light exists with the given name, no work will be done. All children of the light will consequently be detached from the scene graph, but not destroyed. More...
|
|
virtual void | DestroyLights () override |
| Destroy all lights manages by this scene. More...
|
|
virtual void | DestroyMaterial (MaterialPtr _material) override |
| Unregister and destroy a material. More...
|
|
virtual void | DestroyMaterials () override |
| Unregister and destroys all registered materials. More...
|
|
virtual void | DestroyNode (NodePtr _node, bool _recursive=false) override |
| Destroy given node. If the given node is not managed by this scene, no work will be done. Depending on the _recursive argument, this function will either detach all child nodes from the scene graph or recursively destroy them. More...
|
|
virtual void | DestroyNodeById (unsigned int _id) override |
| Destroy node with the given id. If no node exists with the given id, no work will be done. All children of the node will consequently be detached from the scene graph, but not destroyed. More...
|
|
virtual void | DestroyNodeByIndex (unsigned int _index) override |
| Destroy node at the given index. If no node exists at the given index, no work will be done. All children of the node will consequently be detached from the scene graph, but not destroyed. More...
|
|
virtual void | DestroyNodeByName (const std::string &_name) override |
| Destroy node with the given name. If no node exists with the given name, no work will be done. All children of the node will consequently be detached from the scene graph, but not destroyed. More...
|
|
virtual void | DestroyNodes () override |
| Destroy all nodes manages by this scene. More...
|
|
virtual void | DestroySensor (SensorPtr _sensor, bool _recursive=false) override |
| Destroy given sensor. If the given sensor is not managed by this scene, no work will be done. Depending on the _recursive argument, this function will either detach all child nodes from the scene graph or recursively destroy them. More...
|
|
virtual void | DestroySensorById (unsigned int _id) override |
| Destroy sensor with the given id. If no sensor exists with the given id, no work will be done. All children of the sensor will consequently be detached from the scene graph, but not destroyed. More...
|
|
virtual void | DestroySensorByIndex (unsigned int _index) override |
| Destroy sensor at the given index. If no sensor exists at the given index, no work will be done. All children of the sensor will consequently be detached from the scene graph, but not destroyed. More...
|
|
virtual void | DestroySensorByName (const std::string &_name) override |
| Destroy sensor with the given name. If no sensor exists with the given name, no work will be done. All children of the sensor will consequently be detached from the scene graph, but not destroyed. More...
|
|
virtual void | DestroySensors () override |
| Destroy all sensors manages by this scene. More...
|
|
virtual void | DestroyVisual (VisualPtr _visual, bool _recursive=false) override |
| Destroy given node. If the given node is not managed by this scene, no work will be done. Depending on the _recursive argument, this function will either detach all child nodes from the scene graph or recursively destroy them. consequently be detached from the scene graph, but not destroyed. More...
|
|
virtual void | DestroyVisualById (unsigned int _id) override |
| Destroy node with the given id. If no node exists with the given id, no work will be done. All children of the node will consequently be detached from the scene graph, but not destroyed. More...
|
|
virtual void | DestroyVisualByIndex (unsigned int _index) override |
| Destroy node at the given index. If no node exists at the given index, no work will be done. All children of the node will consequently be detached from the scene graph, but not destroyed. More...
|
|
virtual void | DestroyVisualByName (const std::string &_name) override |
| Destroy node with the given name. If no node exists with the given name, no work will be done. All children of the node will consequently be detached from the scene graph, but not destroyed. More...
|
|
virtual void | DestroyVisuals () override |
| Destroy all nodes manages by this scene. More...
|
|
virtual std::array< math::Color, 4 > | GradientBackgroundColor () const override |
| Get the scene gradient background color. More...
|
|
virtual bool | HasLight (ConstLightPtr _light) const override |
| Determine if the given light is managed by this Scene. More...
|
|
virtual bool | HasLightId (unsigned int _id) const override |
| Determine if a given light with the given id is managed by this Scene. More...
|
|
virtual bool | HasLightName (const std::string &_name) const override |
| Determine if a given light with the given name is managed by this Scene. More...
|
|
virtual bool | HasNode (ConstNodePtr _node) const override |
| Determine if the given node is managed by this Scene. More...
|
|
virtual bool | HasNodeId (unsigned int _id) const override |
| Determine if a given node with the given id is managed by this Scene. More...
|
|
virtual bool | HasNodeName (const std::string &_name) const override |
| Determine if a given node with the given name is managed by this Scene. More...
|
|
virtual bool | HasSensor (ConstSensorPtr _sensor) const override |
| Determine if the given sensor is managed by this Scene. More...
|
|
virtual bool | HasSensorId (unsigned int _id) const override |
| Determine if a given sensor with the given id is managed by this Scene. More...
|
|
virtual bool | HasSensorName (const std::string &_name) const override |
| Determine if a given sensor with the given name is managed by this Scene. More...
|
|
virtual bool | HasVisual (ConstVisualPtr _visual) const override |
| Determine if the given node is managed by this Scene. More...
|
|
virtual bool | HasVisualId (unsigned int _id) const override |
| Determine if a given node with the given id is managed by this Scene. More...
|
|
virtual bool | HasVisualName (const std::string &_name) const override |
| Determine if a given node with the given name is managed by this Scene. More...
|
|
virtual unsigned int | Id () const override |
| Get the ID of the scene. More...
|
|
virtual void | Init () override |
| Initialize the scene. More...
|
|
virtual bool | IsGradientBackgroundColor () const override |
| Whether the scene has a gradient background or not (solid) More...
|
|
virtual bool | IsInitialized () const override |
| Determine if the scene is initialized. More...
|
|
virtual bool | IsLoaded () const |
|
virtual LightPtr | LightById (unsigned int _id) const override |
| Get light with the given id. If no light exists with the given id, NULL will be returned. More...
|
|
virtual LightPtr | LightByIndex (unsigned int _index) const override |
| Get light at the given index. If no light exists at the given index, NULL will be returned. More...
|
|
virtual LightPtr | LightByName (const std::string &_name) const override |
| Get light with the given name. If no light exists with the given name, NULL will be returned. More...
|
|
virtual unsigned int | LightCount () const override |
| Get the number of lights managed by this scene. Note these lights may not be directly or indirectly attached to the root light. More...
|
|
virtual void | Load () override |
| Load scene-specific resources. More...
|
|
virtual MaterialPtr | Material (const std::string &_name) const override |
| Get material registered under the given name. If no material is registered under the given name, NULL will be returned. More...
|
|
virtual bool | MaterialRegistered (const std::string &_name) const override |
| Determine if a material is registered under the given name. More...
|
|
virtual std::string | Name () const override |
| Get the name of the scene. More...
|
|
virtual NodePtr | NodeById (unsigned int _id) const override |
| Get node with the given id. If no node exists with the given id, NULL will be returned. More...
|
|
virtual NodePtr | NodeByIndex (unsigned int _index) const override |
| Get node at the given index. If no node exists at the given index, NULL will be returned. More...
|
|
virtual NodePtr | NodeByName (const std::string &_name) const override |
| Get node with the given name. If no node exists with the given name, NULL will be returned. More...
|
|
virtual unsigned int | NodeCount () const override |
| Get the number of nodes managed by this scene. Note these nodes may not be directly or indirectly attached to the root node. More...
|
|
virtual void | RegisterMaterial (const std::string &_name, MaterialPtr _material) override |
| Register a new material under the given name. If the name is already in use, no work will be done. More...
|
|
virtual void | RemoveGradientBackgroundColor () override |
| Remove the scene gradient background color. More...
|
|
virtual SensorPtr | SensorById (unsigned int _id) const override |
| Get sensor with the given id. If no sensor exists with the given id, NULL will be returned. More...
|
|
virtual SensorPtr | SensorByIndex (unsigned int _index) const override |
| Get sensor at the given index. If no sensor exists at the given index, NULL will be returned. More...
|
|
virtual SensorPtr | SensorByName (const std::string &_name) const override |
| Get sensor with the given name. If no sensor exists with the given name, NULL will be returned. More...
|
|
virtual unsigned int | SensorCount () const override |
| Get the number of sensors managed by this scene. Note these sensors may not be directly or indirectly attached to the root sensor. More...
|
|
virtual void | SetAmbientLight (double _r, double _g, double _b, double _a=1.0) override |
| Set the scene ambient light color. More...
|
|
virtual void | SetBackgroundColor (double _r, double _g, double _b, double _a=1.0) override |
| Set the scene background color. More...
|
|
virtual void | SetBackgroundColor (const math::Color &_color) override |
| Set the scene background color. More...
|
|
virtual void | SetGradientBackgroundColor (const std::array< math::Color, 4 > &_colors) override |
| Set a custom gradient background color on top of the regular background. Default should be black. More...
|
|
virtual void | SetSimTime (const common::Time &_time) override |
| Set the last simulation update time. More...
|
|
virtual void | SetTime (const std::chrono::steady_clock::duration &_time) override |
| Set the last simulation update time. More...
|
|
virtual common::Time | SimTime () const override |
| Get the last simulation update time. More...
|
|
virtual std::chrono::steady_clock::duration | Time () const override |
| Get the last simulation update time. More...
|
|
virtual void | UnregisterMaterial (const std::string &_name) override |
| Unregister material registered under the given name. If no material is registered under this name, no work will be done. More...
|
|
virtual void | UnregisterMaterials () override |
| Unregister all registered materials. More...
|
|
virtual VisualPtr | VisualAt (const CameraPtr &_camera, const ignition::math::Vector2i &_mousePos) override |
| Get a visual at a mouse position. More...
|
|
virtual VisualPtr | VisualById (unsigned int _id) const override |
| Get node with the given id. If no node exists with the given id, NULL will be returned. More...
|
|
virtual VisualPtr | VisualByIndex (unsigned int _index) const override |
| Get node at the given index. If no node exists at the given index, NULL will be returned. More...
|
|
virtual VisualPtr | VisualByName (const std::string &_name) const override |
| Get node with the given name. If no node exists with the given name, NULL will be returned. More...
|
|
virtual unsigned int | VisualCount () const override |
| Get the number of nodes managed by this scene. Note these nodes may not be directly or indirectly attached to the root node. More...
|
|
T | enable_shared_from_this (T... args) |
|
T | ~enable_shared_from_this (T... args) |
|
T | operator= (T... args) |
|
T | shared_from_this (T... args) |
|
virtual | ~Scene () |
| Deconstructor. More...
|
|