Class
List
Hierarchy
Links
SDF Website
Report Documentation Issues
src
sdformat
include
sdf
ParticleEmitter.hh
Go to the documentation of this file.
1
/*
2
* Copyright 2021 Open Source Robotics Foundation
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*
16
*/
17
#ifndef SDF_PARTICLE_EMITTER_HH_
18
#define SDF_PARTICLE_EMITTER_HH_
19
20
#include <memory>
21
#include <string>
22
23
#include <gz/math/Pose3.hh>
24
#include <gz/math/Vector3.hh>
25
#include "
sdf/Material.hh
"
26
#include "
sdf/SemanticPose.hh
"
27
#include "
sdf/Types.hh
"
28
#include "
sdf/sdf_config.h
"
29
#include "
sdf/system_util.hh
"
30
31
namespace
sdf
32
{
33
// Inline bracket to help doxygen filtering.
34
inline
namespace
SDF_VERSION_NAMESPACE {
35
// Forward declarations.
36
struct
PoseRelativeToGraph;
37
40
// Developer note: Make sure to update emitterTypeStrs in the source
41
// file when changing this enum.
42
enum class
ParticleEmitterType
43
{
45
POINT
= 0,
46
48
BOX
= 1,
49
51
CYLINDER
= 2,
52
54
ELLIPSOID
= 3,
55
};
56
60
class
SDFORMAT_VISIBLE
ParticleEmitter
61
{
63
public
:
ParticleEmitter
();
64
71
public
:
Errors
Load(
ElementPtr
_sdf);
72
77
public
: std::string Name()
const
;
78
83
public
:
void
SetName(
const
std::string &_name);
84
89
public
:
ParticleEmitterType
Type()
const
;
90
93
public
:
void
SetType(
const
ParticleEmitterType
_type);
94
101
public
:
bool
SetType(
const
std::string &_typeStr);
102
105
public
: std::string TypeStr()
const
;
106
110
public
:
bool
Emitting()
const
;
111
115
public
:
void
SetEmitting(
bool
_emitting);
116
120
public
:
double
Duration()
const
;
121
125
public
:
void
SetDuration(
double
_duration);
126
130
public
:
double
Lifetime()
const
;
131
136
public
:
void
SetLifetime(
double
_duration);
137
140
public
:
double
Rate()
const
;
141
145
public
:
void
SetRate(
double
_rate);
146
150
public
:
double
ScaleRate()
const
;
151
156
public
:
void
SetScaleRate(
double
_scaleRate);
157
160
public
:
double
MinVelocity()
const
;
161
165
public
:
void
SetMinVelocity(
double
_vel);
166
169
public
:
double
MaxVelocity()
const
;
170
174
public
:
void
SetMaxVelocity(
double
_vel);
175
177
// Default value is (1, 1, 1).
178
// Note that the interpretation of the emitter area varies
179
// depending on the emmiter type:
180
// - point: The area is ignored.
181
// - box: The area is interpreted as width X height X depth.
182
// - cylinder: The area is interpreted as the bounding box of the
183
// cylinder. The cylinder is oriented along the Z-axis.
184
// - ellipsoid: The area is interpreted as the bounding box of an
185
// ellipsoid shaped area, i.e. a sphere or
186
// squashed-sphere area. The parameters are again
187
// identical to EM_BOX, except that the dimensions
188
// describe the widest points along each of the axes.
190
public
: gz::math::Vector3d Size()
const
;
191
197
public
:
void
SetSize(
const
gz::math::Vector3d &_size);
198
201
public
: gz::math::Vector3d ParticleSize()
const
;
202
207
public
:
void
SetParticleSize(
const
gz::math::Vector3d &_size);
208
215
public
: gz::math::Color ColorStart()
const
;
216
220
public
:
void
SetColorStart(
const
gz::math::Color &_colorStart);
221
228
public
: gz::math::Color ColorEnd()
const
;
229
233
public
:
void
SetColorEnd(
const
gz::math::Color &_colorEnd);
234
243
public
: std::string ColorRangeImage()
const
;
244
248
public
:
void
SetColorRangeImage(
const
std::string &_image);
249
252
public
: std::string Topic()
const
;
253
256
public
:
void
SetTopic(
const
std::string &_topic);
257
262
public
:
float
ScatterRatio()
const
;
263
267
public
:
void
SetScatterRatio(
float
_ratio);
268
273
public
:
const
gz::math::Pose3d &RawPose()
const
;
274
278
public
:
void
SetRawPose(
const
gz::math::Pose3d &_pose);
279
284
public
:
const
std::string &PoseRelativeTo()
const
;
285
290
public
:
void
SetPoseRelativeTo(
const
std::string &_frame);
291
294
public
:
sdf::SemanticPose
SemanticPose
()
const
;
295
299
public
:
sdf::ElementPtr
Element
()
const
;
300
305
public
:
const
sdf::Material
*
Material
()
const
;
306
309
public
:
void
SetMaterial(
const
sdf::Material
&_material);
310
313
public
:
const
std::string &FilePath()
const
;
314
317
public
:
void
SetFilePath(
const
std::string &_filePath);
318
324
public
:
sdf::ElementPtr
ToElement()
const
;
325
332
public
:
sdf::ElementPtr
ToElement(
sdf::Errors
&_errors)
const
;
333
338
private
:
void
SetXmlParentName(
const
std::string &_xmlParentName);
339
344
private
:
void
SetPoseRelativeToGraph(
345
sdf::ScopedGraph<PoseRelativeToGraph>
_graph);
346
350
friend
class
Link
;
351
353
GZ_UTILS_IMPL_PTR(dataPtr)
354
};
355
}
356
}
357
#endif
Material.hh
sdf::SDF_VERSION_NAMESPACE::Link
Definition:
Link.hh:48
sdf::SDF_VERSION_NAMESPACE::ParticleEmitterType::POINT
@ POINT
A point emitter.
sdf
namespace for Simulation Description Format parser
Definition:
Actor.hh:34
sdf::SDF_VERSION_NAMESPACE::ParticleEmitter
A description of a particle emitter, which can be attached to a link.
Definition:
ParticleEmitter.hh:60
sdf::SDF_VERSION_NAMESPACE::Material
This class contains visual material properties.
Definition:
Material.hh:46
Types.hh
SemanticPose.hh
sdf_config.h
sdf::SDF_VERSION_NAMESPACE::ParticleEmitterType::ELLIPSOID
@ ELLIPSOID
An ellipsoid emitter.
SDFORMAT_VISIBLE
#define SDFORMAT_VISIBLE
Definition:
system_util.hh:25
sdf::SDF_VERSION_NAMESPACE::ParticleEmitterType
ParticleEmitterType
Definition:
ParticleEmitter.hh:42
sdf::SDF_VERSION_NAMESPACE::Element
class GZ_SDFORMAT_VISIBLE Element
Definition:
Element.hh:51
sdf::SDF_VERSION_NAMESPACE::ParticleEmitterType::BOX
@ BOX
A box emitter.
sdf::SDF_VERSION_NAMESPACE::SemanticPose
SemanticPose is a data structure that can be used by different DOM objects to resolve poses on a Pose...
Definition:
SemanticPose.hh:54
sdf::SDF_VERSION_NAMESPACE::Errors
std::vector< Error > Errors
A vector of Error.
Definition:
Types.hh:80
sdf::SDF_VERSION_NAMESPACE::ScopedGraph
Definition:
Collision.hh:40
sdf::SDF_VERSION_NAMESPACE::ParticleEmitterType::CYLINDER
@ CYLINDER
A cylinder emitter.
system_util.hh
sdf::SDF_VERSION_NAMESPACE::ElementPtr
std::shared_ptr< Element > ElementPtr
Definition:
Element.hh:55