15#ifndef OSGPARTICLE_DOMAINOPERATOR
16#define OSGPARTICLE_DOMAINOPERATOR
133 inline void ignore(
const std::string& func );
153 domain.
r1 = (v2 - v1).length();
174 domain.
plane.
set(corner, corner+w, corner+h);
217 float det = w.
z()*u.
x()*v.
y() - w.
z()*u.
y()*v.
x() - u.
z()*w.
x()*v.
y() -
218 u.
x()*v.
z()*w.
y() + v.
z()*w.
x()*u.
y() + u.
z()*v.
x()*w.
y();
221 s1.
set( v.
y()*w.
z() - v.
z()*w.
y(), v.
z()*w.
x() - v.
x()*w.
z(), v.
x()*w.
y() - v.
y()*w.
x() );
223 s2.
set( u.
y()*w.
z() - u.
z()*w.
y(), u.
z()*w.
x() - u.
x()*w.
z(), u.
x()*w.
y() - u.
y()*w.
x() );
#define OSG_NOTICE
Definition Notify:86
Vec3f Vec3
Definition Vec3:21
The osgParticle library is a NodeKit that extends the core scene graph to support particle effects.
Definition AccelOperator:27
Copy Op(erator) used to control whether shallow or deep copy is used during copy construction and clo...
Definition CopyOp:41
@ SHALLOW_COPY
Definition CopyOp:47
A plane class.
Definition Plane:34
void set(const Plane &pl)
Definition Plane:105
value_type & z()
Definition Vec3f:82
void set(value_type x, value_type y, value_type z)
Definition Vec3f:67
value_type & y()
Definition Vec3f:81
value_type & x()
Definition Vec3f:80
virtual void handlePlane(const Domain &, Particle *, double)
Definition DomainOperator:127
void addSphereDomain(const osg::Vec3 &c, float r)
Add a sphere domain.
Definition DomainOperator:186
const Domain & getDomain(unsigned int i) const
Get a domain object directly, used by the .osg wrappers and serializers.
Definition DomainOperator:98
META_Object(osgParticle, DomainOperator)
void addRectangleDomain(const osg::Vec3 &corner, const osg::Vec3 &w, const osg::Vec3 &h)
Add a rectangle domain.
Definition DomainOperator:168
virtual void handleRectangle(const Domain &, Particle *, double)
Definition DomainOperator:126
DomainOperator(const DomainOperator ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
Definition DomainOperator:64
virtual void handleTriangle(const Domain &, Particle *, double)
Definition DomainOperator:125
void addBoxDomain(const osg::Vec3 &min, const osg::Vec3 &max)
Add a box domain.
Definition DomainOperator:194
void removeDomain(unsigned int i)
Remove a domain at specific index.
Definition DomainOperator:101
void addPointDomain(const osg::Vec3 &p)
Add a point domain.
Definition DomainOperator:141
void operate(Particle *P, double dt)
Apply the acceleration to a particle. Do not call this method manually.
virtual void handlePoint(const Domain &, Particle *, double)
Definition DomainOperator:123
void ignore(const std::string &func)
Definition DomainOperator:227
void addTriangleDomain(const osg::Vec3 &v1, const osg::Vec3 &v2, const osg::Vec3 &v3)
Add a triangle domain.
Definition DomainOperator:157
void addDiskDomain(const osg::Vec3 &c, const osg::Vec3 &n, float r1, float r2=0.0f)
Add a disk domain.
Definition DomainOperator:202
DomainOperator()
Definition DomainOperator:60
void beginOperate(Program *prg)
Perform some initializations. Do not call this method manually.
void addLineSegmentDomain(const osg::Vec3 &v1, const osg::Vec3 &v2)
Add a line segment domain.
Definition DomainOperator:148
unsigned int getNumDomains() const
Get number of domains.
Definition DomainOperator:108
virtual ~DomainOperator()
Definition DomainOperator:120
virtual void handleDisk(const Domain &, Particle *, double)
Definition DomainOperator:130
std::vector< Domain > _backupDomains
Definition DomainOperator:136
DomainOperator & operator=(const DomainOperator &)
Definition DomainOperator:121
virtual void handleBox(const Domain &, Particle *, double)
Definition DomainOperator:129
void endOperate()
Perform some post-operations. Do not call this method manually.
void removeAllDomains()
Remove all existing domains.
Definition DomainOperator:105
std::vector< Domain > _domains
Definition DomainOperator:135
virtual void handleSphere(const Domain &, Particle *, double)
Definition DomainOperator:128
void addDomain(const Domain &domain)
Add a domain object directly, used by the .osg wrappers and serializers.
Definition DomainOperator:95
void computeNewBasis(const osg::Vec3 &, const osg::Vec3 &, osg::Vec3 &, osg::Vec3 &)
Definition DomainOperator:213
void addPlaneDomain(const osg::Plane &plane)
Add a plane domain.
Definition DomainOperator:179
virtual void handleLineSegment(const Domain &, Particle *, double)
Definition DomainOperator:124
Definition DomainOperator:34
osg::Vec3 s2
Definition DomainOperator:54
osg::Vec3 v3
Definition DomainOperator:52
osg::Vec3 v2
Definition DomainOperator:51
Domain(Type t)
Definition DomainOperator:48
Type type
Definition DomainOperator:57
osg::Vec3 s1
Definition DomainOperator:53
float r1
Definition DomainOperator:55
osg::Vec3 v1
Definition DomainOperator:50
float r2
Definition DomainOperator:56
osg::Plane plane
Definition DomainOperator:49
Type
Definition DomainOperator:36
@ UNDEFINED_DOMAIN
Definition DomainOperator:37
@ DISK_DOMAIN
Definition DomainOperator:45
@ SPHERE_DOMAIN
Definition DomainOperator:43
@ POINT_DOMAIN
Definition DomainOperator:38
@ LINE_DOMAIN
Definition DomainOperator:39
@ TRI_DOMAIN
Definition DomainOperator:40
@ RECT_DOMAIN
Definition DomainOperator:41
@ PLANE_DOMAIN
Definition DomainOperator:42
@ BOX_DOMAIN
Definition DomainOperator:44
virtual const char * className() const
return the name of the object's class type.
Definition Operator:41
Operator()
Definition Operator:92
Implementation of a particle.
Definition Particle:47
An abstract ParticleProcessor descendant for modifying particles "on the fly" during the cull travers...
Definition Program:36
#define OSGPARTICLE_EXPORT
Definition Export:40