Conscience Core
CscWorldElementParts.h
Go to the documentation of this file.
1 //
2 // CscEnvironnement.hpp
3 // ConscienceRobotManager
4 //
5 // Created by Conscience_Hazar on 05/03/2019.
6 // Copyright © 2019 IliesZaoui. All rights reserved.
7 //
8 
9 #ifndef CscWorldElementParts_h
10 #define CscWorldElementParts_h
11 
12 #include "Axiomes/Csc3dTypes.h"
13 
14 #include "CscCommon.h"
15 #include <map>
16 
17 using namespace conscience_core::axiomes;
18 using std::pair;
19 
21  string name;
22  vector<CscPoint3d *> positions;
23  vector<CscPoint3d *> normals;
24  vector<CscPolygon *> polygons;
25 
31  vector<vector<int>> *geometryTriangleIndices = nullptr;
32 
34  deleteItems(positions);
35  deleteItems(normals);
36  deleteItems(polygons);
37  delete geometryTriangleIndices;
38  }
39 
41  vector<vector<int>> *indicesClone = nullptr;
42  if (geometryTriangleIndices != nullptr) {
43  indicesClone = new vector<vector<int>>(*geometryTriangleIndices);
44  }
45  vector<CscPoint3d *> *positions = vectorCloneDeep(&this->positions);
46  vector<CscPoint3d *> *normals = vectorCloneDeep(&this->normals);
47  vector<CscPolygon *> *polygons = vectorCloneDeep(&this->polygons);
48  auto clone = new CscWorldElementPart{
49  name,
50  *positions,
51  *normals,
52  *polygons,
53  indicesClone};
54 
55  delete positions;
56  delete normals;
57  delete polygons;
58 
59  return clone;
60  }
61 };
62 
64 
65  string name;
70  optional<pair<string, string>> latitudeLongitude;
74  optional<CscPoint3d> euler;
75 
76  CscLocationTag(const string &name, const CscPoint3d &position, optional<pair<string, string>> latLng, optional<CscPoint3d> euler) : name(name), position(position), latitudeLongitude(latLng), euler(euler) {}
77 
78  CscLocationTag *clone() const {
79  return new CscLocationTag(name, position, latitudeLongitude, euler);
80  }
81 };
82 
83 #endif
conscience_core::axiomes::CscPoint3d
The CscPoint3d class represents a point in three-dimensional space. It is primarily used to denote a ...
Definition: Csc3dTypes.h:24
CscWorldElementPart::~CscWorldElementPart
~CscWorldElementPart()
Definition: CscWorldElementParts.h:33
CscWorldElementPart::positions
vector< CscPoint3d * > positions
Definition: CscWorldElementParts.h:22
CscLocationTag
Definition: CscWorldElementParts.h:63
conscience_core::axiomes
Definition: Csc2dTypes.cpp:9
conscience_utils::vectorCloneDeep
vector< T * > * vectorCloneDeep(const vector< T * > *source)
Definition: conscience_util.h:345
CscLocationTag::CscLocationTag
CscLocationTag(const string &name, const CscPoint3d &position, optional< pair< string, string >> latLng, optional< CscPoint3d > euler)
Definition: CscWorldElementParts.h:76
CscLocationTag::name
string name
Definition: CscWorldElementParts.h:65
CscLocationTag::position
CscPoint3d position
Definition: CscWorldElementParts.h:69
CscLocationTag::latitudeLongitude
optional< pair< string, string > > latitudeLongitude
Definition: CscWorldElementParts.h:70
CscWorldElementPart::clone
CscWorldElementPart * clone() const
Definition: CscWorldElementParts.h:40
CscLocationTag::euler
optional< CscPoint3d > euler
Definition: CscWorldElementParts.h:74
CscWorldElementPart::name
string name
Definition: CscWorldElementParts.h:21
CscCommon.h
Csc3dTypes.h
CscLocationTag::clone
CscLocationTag * clone() const
Definition: CscWorldElementParts.h:78
CscWorldElementPart::polygons
vector< CscPolygon * > polygons
Definition: CscWorldElementParts.h:24
deleteItems
#define deleteItems(vectorOfItems)
Definition: conscience_util.h:33
CscWorldElementPart
Definition: CscWorldElementParts.h:20
CscWorldElementPart::normals
vector< CscPoint3d * > normals
Definition: CscWorldElementParts.h:23