Atoms Crowd  4.1.0
ParticleOperator.h
1 #pragma once
2 // ===========================================================================
3 // Copyright (c) 2015 Toolchefs Ltd. All rights reserved.
4 //
5 // Use of this software is subject to the terms of the Toolchefs license
6 // agreement provided at the time of installation or download, or which
7 // otherwise accompanies this software in either electronic or hard copy form.
8 // ===========================================================================
9 
10 #include <AtomsGraph/Ports.h>
11 
12 #include <Atoms/Globals.h>
13 #include <Atoms/Graph/Operator.h>
14 #include <AtomsUtils/Mesh.h>
15 
16 namespace Atoms
17 {
18  class ATOMS_EXPORT ParticleOperator : public Operator
19  {
20  public:
21 
22  NODE_STANDARD_MEMBERS
23 
25 
26  virtual ~ParticleOperator();
27 
28  bool compute(const AtomsGraph::ComputeData* computeData);
29 
30  void reset();
31 
32  private:
33  /*
34  AtomsGraph::PosePort* m_inPose;
35  AtomsGraph::BooleanPort* m_useDirectionFromMetadataPort;
36  AtomsGraph::BooleanPort* m_projectOnUpVectorPlane;
37  AtomsGraph::VectorPort* m_directionPort;
38 
39  AtomsCore::Vector3 m_pelvisPreRotation;
40  AtomsCore::Vector3 m_pelvisPostRotation;
41 
42  bool m_first;
43  */
44 
45  AtomsGraph::PosePort* m_inPose;
46  AtomsGraph::BooleanPort* m_useDirectionFromMetadataPort;
47  AtomsGraph::BooleanPort* m_useOnlyPositionPort;
48  AtomsGraph::VectorPort* m_directionPort;
49 
50  AtomsCore::Vector3 m_pelvisCacheTranslation;
51  AtomsCore::Vector3 m_pelvisCacheVelocity;
52  AtomsCore::Quaternion m_pelvisCacheRotation;
53  AtomsCore::Vector3 m_cacheUpVector;
54  AtomsCore::Vector3 m_cacheDirectionVector;
55 
56  AtomsCore::Quaternion m_upDirRotation;
57  AtomsCore::Vector3 m_previousDirection;
58 
59  bool m_first;
60 
61  public:
62 
63  static const std::string particleOpCacheDirKey;
64  static const std::string particleOpCacheUpKey;
65  };
66 }
AtomsCore::Quaternion
AtomsMath::Quaternion Quaternion
Quaternion class.
Definition: AtomsMath.h:67
Atoms::ParticleOperator
Definition: ParticleOperator.h:19
AtomsCore::Vector3
AtomsMath::Vector3 Vector3
Vector3 class.
Definition: AtomsMath.h:57
AtomsGraph::PortTemplate
Generic node port class.
Definition: PortTemplate.h:24
Atoms
Atoms namespace.
Definition: Agent.h:28
Atoms::ParticleOperator::compute
bool compute(const AtomsGraph::ComputeData *computeData)
Compute function.
Atoms::Operator
Operator node.
Definition: Operator.h:26
Atoms::ParticleOperator::reset
void reset()
Operator reset function.
AtomsGraph::ComputeData
Definition: Node.h:21