WorldElementBase.h
Go to the documentation of this file.
1 /*+-------------------------------------------------------------------------+
2  | MultiVehicle simulator (libmvsim) |
3  | |
4  | Copyright (C) 2014-2024 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 <mvsim/ClassFactory.h>
13 #include <mvsim/Simulable.h>
14 #include <mvsim/VisualObject.h>
15 
16 namespace mvsim
17 {
27 class WorldElementBase : public VisualObject, public Simulable
28 {
29  public:
30  using Ptr = std::shared_ptr<WorldElementBase>;
31 
33  virtual ~WorldElementBase() {}
39  static Ptr factory(
40  World* parent, const rapidxml::xml_node<char>* xml_node, const char* class_name = nullptr);
41 
42  virtual void loadConfigFrom(const rapidxml::xml_node<char>* root) = 0;
43 
44  protected:
45 };
46 
47 // Class factory:
50 
52 
53 #define DECLARES_REGISTER_WORLD_ELEMENT(CLASS_NAME) \
54  DECLARES_REGISTER_CLASS2(CLASS_NAME, WorldElementBase, World*, const rapidxml::xml_node<char>*)
55 
56 #define REGISTER_WORLD_ELEMENT(TEXTUAL_NAME, CLASS_NAME) \
57  REGISTER_CLASS2( \
58  TClassFactory_worldElements, classFactory_worldElements, TEXTUAL_NAME, CLASS_NAME)
59 } // namespace mvsim
mvsim::VisualObject::parent
World * parent()
Definition: VisualObject.h:51
mvsim
Definition: Client.h:21
mvsim::WorldElementBase::factory
static Ptr factory(World *parent, const rapidxml::xml_node< char > *xml_node, const char *class_name=nullptr)
Definition: WorldElementBase.cpp:49
Simulable.h
mvsim::TClassFactory_worldElements
ClassFactory< WorldElementBase, World *, const rapidxml::xml_node< char > * > TClassFactory_worldElements
Definition: WorldElementBase.h:49
mvsim::Simulable::Ptr
std::shared_ptr< Simulable > Ptr
Definition: Simulable.h:42
mvsim::World
Definition: World.h:82
mvsim::WorldElementBase::~WorldElementBase
virtual ~WorldElementBase()
Definition: WorldElementBase.h:33
mvsim::classFactory_worldElements
TClassFactory_worldElements classFactory_worldElements
Definition: WorldElementBase.cpp:28
rapidxml::xml_node< char >
mvsim::Simulable
Definition: Simulable.h:39
mvsim::WorldElementBase::Ptr
std::shared_ptr< WorldElementBase > Ptr
Definition: WorldElementBase.h:30
mvsim::ClassFactory
Definition: ClassFactory.h:25
VisualObject.h
mvsim::WorldElementBase::loadConfigFrom
virtual void loadConfigFrom(const rapidxml::xml_node< char > *root)=0
mvsim::WorldElementBase::WorldElementBase
WorldElementBase(World *parent)
Definition: WorldElementBase.h:32
mvsim::VisualObject
Definition: VisualObject.h:35
mvsim::WorldElementBase
Definition: WorldElementBase.h:27
ClassFactory.h


mvsim
Author(s):
autogenerated on Wed May 28 2025 02:13:08