4# include <OgreManualObject.h>
5# include <OgreMaterial.h>
8# include <OgreSceneNode.h>
9# include <OgreSubMesh.h>
11# include <fhsim_environment/EnvironmentProvider.h>
19struct FlowPlaneSettings
22 double position[3] = {0.0, 0.0, 0.0};
24 double localX[3] = {1.0, 0.0, 0.0};
26 double localY[3] = {0.0, 1.0, 0.0};
28 double size[2] = {50.0, 50.0};
30 int vertexCounts[2] = {50, 50};
32 double visibleRange[2] = {0.0, 1.0};
34 double colorRange[2] = {0.0, 1.0};
36 double alphaRange[2] = {0.3, 0.6};
40using ComputeFunction = std::function<double(
double T,
const double pos[3])>;
58 FlowPlane(Ogre::Root* ogreRoot,
59 environment::EnvironmentProvider* provider,
60 const FlowPlaneSettings& settings,
61 ComputeFunction computeFunc =
nullptr);
70 FlowPlane(
const FlowPlane&) =
delete;
71 FlowPlane& operator=(
const FlowPlane&) =
delete;
77 void Update(
double T);
85 void SetTransform(
const double position[3],
const double localX[3],
const double localY[3]);
94 void SetComputeFunction(ComputeFunction func);
108 void UpdateVertexPositions();
114 void UpdateOgreNodeOrientation();
117 environment::EnvironmentProvider* m_provider;
119 Ogre::SceneManager* m_sceneMgr;
121 Ogre::SceneNode* m_node;
123 Ogre::MeshPtr m_mesh;
125 Ogre::SubMesh* m_subMesh;
127 int m_vertexCounts[2];
131 double m_position[3];
137 std::vector<std::array<double, 3>> m_vertexWorldPos;
139 ComputeFunction m_computeFunction;
141 Ogre::Entity* m_entity;
148 Ogre::MaterialPtr m_material;
Visualization utilities.
Definition EnvironmentSettings.h:15