Jet  v1.3.3
physics_animation.h
Go to the documentation of this file.
1 // Copyright (c) 2018 Doyub Kim
2 //
3 // I am making my contributions/submissions to this project solely in my
4 // personal capacity and am not conveying any rights to any intellectual
5 // property of any third parties.
6 
7 #ifndef INCLUDE_JET_PHYSICS_ANIMATION_H_
8 #define INCLUDE_JET_PHYSICS_ANIMATION_H_
9 
10 #include <jet/animation.h>
11 
12 namespace jet {
13 
20 class PhysicsAnimation : public Animation {
21  public:
24 
26  virtual ~PhysicsAnimation();
27 
39 
50  void setIsUsingFixedSubTimeSteps(bool isUsing);
51 
62  unsigned int numberOfFixedSubTimeSteps() const;
63 
74  void setNumberOfFixedSubTimeSteps(unsigned int numberOfSteps);
75 
78 
83 
87  void setCurrentFrame(const Frame& frame);
88 
95  double currentTimeInSeconds() const;
96 
97  protected:
109  virtual void onAdvanceTimeStep(double timeIntervalInSeconds) = 0;
110 
124  virtual unsigned int numberOfSubTimeSteps(
125  double timeIntervalInSeconds) const;
126 
133  virtual void onInitialize();
134 
135  private:
136  Frame _currentFrame;
137  bool _isUsingFixedSubTimeSteps = true;
138  unsigned int _numberOfFixedSubTimeSteps = 1;
139  double _currentTime = 0.0;
140 
141  void onUpdate(const Frame& frame) final;
142 
143  void advanceTimeStep(double timeIntervalInSeconds);
144 
145  void initialize();
146 };
147 
148 typedef std::shared_ptr<PhysicsAnimation> PhysicsAnimationPtr;
149 
150 } // namespace jet
151 
152 #endif // INCLUDE_JET_PHYSICS_ANIMATION_H_
jet::PhysicsAnimationPtr
std::shared_ptr< PhysicsAnimation > PhysicsAnimationPtr
Definition: physics_animation.h:148
animation.h
jet::PhysicsAnimation::setIsUsingFixedSubTimeSteps
void setIsUsingFixedSubTimeSteps(bool isUsing)
Sets true if fixed sub-timestepping is used.
jet::PhysicsAnimation::onInitialize
virtual void onInitialize()
Called at frame 0 to initialize the physics state.
jet::PhysicsAnimation
Abstract base class for physics-based animation.
Definition: physics_animation.h:20
jet::PhysicsAnimation::numberOfSubTimeSteps
virtual unsigned int numberOfSubTimeSteps(double timeIntervalInSeconds) const
Returns the required number of sub-timesteps for given time interval.
jet::PhysicsAnimation::setNumberOfFixedSubTimeSteps
void setNumberOfFixedSubTimeSteps(unsigned int numberOfSteps)
Sets the number of fixed sub-timesteps.
jet::PhysicsAnimation::~PhysicsAnimation
virtual ~PhysicsAnimation()
Destructor.
jet::PhysicsAnimation::currentTimeInSeconds
double currentTimeInSeconds() const
Returns current time in seconds.
jet::PhysicsAnimation::currentFrame
Frame currentFrame() const
Returns current frame.
jet
Definition: advection_solver2.h:18
jet::Animation
Abstract base class for animation-related class.
Definition: animation.h:59
jet::PhysicsAnimation::isUsingFixedSubTimeSteps
bool isUsingFixedSubTimeSteps() const
Returns true if fixed sub-timestepping is used.
jet::Frame
Representation of an animation frame.
Definition: animation.h:21
jet::PhysicsAnimation::onAdvanceTimeStep
virtual void onAdvanceTimeStep(double timeIntervalInSeconds)=0
Called when a single time-step should be advanced.
jet::PhysicsAnimation::numberOfFixedSubTimeSteps
unsigned int numberOfFixedSubTimeSteps() const
Returns the number of fixed sub-timesteps.
jet::PhysicsAnimation::advanceSingleFrame
void advanceSingleFrame()
Advances a single frame.
jet::PhysicsAnimation::PhysicsAnimation
PhysicsAnimation()
Default constructor.
jet::PhysicsAnimation::setCurrentFrame
void setCurrentFrame(const Frame &frame)
Sets current frame cursor (but do not invoke update()).