MVSim
Lightweight simulator for 2.5D vehicles and robots
HorizontalPlane.h
1 /*+-------------------------------------------------------------------------+
2  | MultiVehicle simulator (libmvsim) |
3  | |
4  | Copyright (C) 2014-2026 Jose Luis Blanco Claraco |
5  | Copyright (C) 2017 Borys Tymchenko (Odessa Polytechnic University) |
6  | Distributed under 3-clause BSD License |
7  | See COPYING |
8  +-------------------------------------------------------------------------+ */
9 
10 #pragma once
11 
12 #include <mrpt/img/TColor.h>
13 #include <mrpt/opengl/CSetOfObjects.h>
14 #include <mrpt/opengl/CSetOfTexturedTriangles.h>
15 #include <mrpt/opengl/CTexturedPlane.h>
16 #include <mvsim/WorldElements/WorldElementBase.h>
17 
18 namespace mvsim
19 {
24 {
25  DECLARES_REGISTER_WORLD_ELEMENT(HorizontalPlane)
26  public:
27  HorizontalPlane(World* parent, const rapidxml::xml_node<char>* root);
28  virtual ~HorizontalPlane();
29 
30  virtual void loadConfigFrom(const rapidxml::xml_node<char>* root) override;
31  // ------- Interface with "World" ------
32  void simul_pre_timestep(const TSimulContext& context) override;
33  void simul_post_timestep(const TSimulContext& context) override;
34 
35  std::optional<float> getElevationAt(const mrpt::math::TPoint2D& worldXY) const override;
36 
37  protected:
38  virtual void internalGuiUpdate(
39  const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& viz,
40  const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& physical, bool childrenOnly) override;
41 
42  float x_min_ = -10, x_max_ = 10, y_min_ = -10, y_max_ = 10;
43  mrpt::img::TColor color_ = {0xa0, 0xa0, 0xa0, 0xff};
44  bool enableShadows_ = true;
45 
47  std::string textureFileName_;
48  double textureSizeX_ = 1.0;
49  double textureSizeY_ = 1.0;
50 
51  float z_ = .0f;
52  std::string cull_faces_ = "NONE";
53 
54  mrpt::opengl::CTexturedPlane::Ptr gl_plane_;
55  mrpt::opengl::CSetOfTexturedTriangles::Ptr gl_plane_text_;
56  mrpt::opengl::CSetOfObjects::Ptr glGroup_;
57 };
58 } // namespace mvsim
Definition: HorizontalPlane.h:24
void simul_post_timestep(const TSimulContext &context) override
void simul_pre_timestep(const TSimulContext &context) override
std::string textureFileName_
Definition: HorizontalPlane.h:47
Definition: WorldElementBase.h:28
Definition: World.h:132
Definition: basic_types.h:58