modules
simulator
include
mvsim
WorldElements
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
32
WorldElementBase
(
World
*
parent
) :
VisualObject
(
parent
),
Simulable
(
parent
) {}
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:
48
using
TClassFactory_worldElements
=
49
ClassFactory<WorldElementBase, World*, const rapidxml::xml_node<char>
*>;
50
51
extern
TClassFactory_worldElements
classFactory_worldElements
;
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