You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
6.0 KiB
167 lines
6.0 KiB
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: $RCSfile: vtkAnimationCue.h,v $
|
|
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
// .NAME vtkAnimationCue - a seqin an animation.
|
|
// .SECTION Description
|
|
// vtkAnimationCue and vtkAnimationScene provide the framework to support
|
|
// animations in VTK. vtkAnimationCue represents an entity that changes/
|
|
// animates with time, while vtkAnimationScene represents scene or setup
|
|
// for the animation, which consists on individual cues or other scenes.
|
|
//
|
|
// A cue has three states: UNINITIALIZED, ACTIVE and INACTIVE.
|
|
// UNINITIALIZED represents an point in time before the start time of the cue.
|
|
// The cue is in ACTIVE state at a point in time between start time and end time
|
|
// for the cue. While, beyond the end time, it is in INACTIVE state.
|
|
// When the cue enters the ACTIVE state, StartAnimationCueEvent is fired. This
|
|
// event may be handled to initialize the entity to be animated.
|
|
// When the cue leaves the ACTIVE state, EndAnimationCueEvent is fired, which
|
|
// can be handled to cleanup after having run the animation.
|
|
// For every request to render during the ACTIVE state, AnimationCueTickEvent is
|
|
// fired, which must be handled to perform the actual animation.
|
|
// .SECTION See Also
|
|
// vtkAnimationScene
|
|
|
|
#ifndef __vtkAnimationCue_h
|
|
#define __vtkAnimationCue_h
|
|
|
|
#include "vtkObject.h"
|
|
|
|
class VTK_COMMON_EXPORT vtkAnimationCue: public vtkObject
|
|
{
|
|
public:
|
|
vtkTypeRevisionMacro(vtkAnimationCue,vtkObject);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
static vtkAnimationCue* New();
|
|
|
|
//BTX
|
|
// Structure passed on every event invocation.
|
|
// Depending upon the cue time mode, these times are either
|
|
// normalized [0,1] or relative to the scene that contains the cue.
|
|
class AnimationCueInfo
|
|
{
|
|
public:
|
|
double StartTime;
|
|
double EndTime;
|
|
double AnimationTime;// valid only on AnimationCueTickEvent
|
|
double DeltaTime; // valid only on AnimationCueTickEvent
|
|
};
|
|
//ETX
|
|
|
|
// Description:
|
|
// Get/Set the time mode. In Normalized mode, the start and end
|
|
// times of the cue are normalized [0,1] with respect to the start and
|
|
// end times of the container scene. In Relative mode the start and end
|
|
// time of the cue are specified in offset seconds relative to the
|
|
// start time of the container scene.
|
|
virtual void SetTimeMode(int mode);
|
|
vtkGetMacro(TimeMode, int);
|
|
void SetTimeModeToRelative()
|
|
{ this->SetTimeMode(TIMEMODE_RELATIVE); }
|
|
void SetTimeModeToNormalized()
|
|
{ this->SetTimeMode(TIMEMODE_NORMALIZED); }
|
|
|
|
// Description:
|
|
// Get/Set the Start time for this cue.
|
|
// When the current time is >= StartTime, the Cue is in
|
|
// ACTIVE state. if Current time i < StartTime, the Cue is in
|
|
// UNINITIALIZED state. Whenever the cue enters the ACTIVE state from
|
|
// an INACTIVE state, it triggers the StartEvent.
|
|
// The Start time is in seconds relative to the start of the
|
|
// container Scene (when in Relative time mode) or is normalized
|
|
// over the span of the container Scene (when in Normalized time mode).
|
|
vtkSetMacro(StartTime, double);
|
|
vtkGetMacro(StartTime, double);
|
|
|
|
// Description:
|
|
// Get/Set the End time for this cue.
|
|
// When the current time is > EndTime, the Cue is in
|
|
// INACTIVE state. Whenever the cue leaves an ACTIVE state to enter
|
|
// INACTIVE state, the EndEvent is triggered.
|
|
// The End time is in seconds relative to the start of the
|
|
// container Scene (when in Relative time mode) or is normalized
|
|
// over the span of the container Scene (when in Normalized time mode).
|
|
vtkSetMacro(EndTime, double);
|
|
vtkGetMacro(EndTime, double);
|
|
|
|
// Description:
|
|
// Indicates a tick or point in time in the animation.
|
|
// Triggers a Tick event if currenttime >= StartTime and
|
|
// currenttime <= EndTime.
|
|
// Whenever the state of the cue changes,
|
|
// either StartEvent or EndEvent is triggerred depending upon
|
|
// whether the cue entered Active state or quit active state respectively.
|
|
// The current time is relative to the start of the container Scene
|
|
// (when in Relative time mode) or is normalized
|
|
// over the span of the container Scene (when in Normalized time mode).
|
|
// deltatime is the time since last call to Tick. deltatime also can be in seconds
|
|
// relative to the start of the container Scene or normalized depending upon the
|
|
// cue's Time mode.
|
|
// For the first call to Tick
|
|
// after a call to Initialize(), the deltatime is 0;
|
|
virtual void Tick(double currenttime, double deltatime);
|
|
|
|
// Description:
|
|
// Called when the playing of the scene begins.
|
|
// This will set the Cue to UNINITIALIZED state.
|
|
virtual void Initialize();
|
|
|
|
// Description:
|
|
// Called when the scene reaches the end.
|
|
// If the cue state is ACTIVE when this method is called, this will
|
|
// trigger a EndAnimationCueEvent.
|
|
virtual void Finalize();
|
|
|
|
//BTX
|
|
enum TimeCodes
|
|
{
|
|
TIMEMODE_NORMALIZED=0,
|
|
TIMEMODE_RELATIVE=1
|
|
};
|
|
//ETX
|
|
protected:
|
|
vtkAnimationCue();
|
|
~vtkAnimationCue();
|
|
//BTX
|
|
enum {
|
|
UNINITIALIZED=0,
|
|
INACTIVE,
|
|
ACTIVE
|
|
};
|
|
//ETX
|
|
double StartTime;
|
|
double EndTime;
|
|
int TimeMode;
|
|
|
|
// Description:
|
|
// Current state of the Cue.
|
|
int CueState;
|
|
|
|
// Description:
|
|
// These are the internal methods that actually trigger they
|
|
// corresponding events. Subclasses can override these to
|
|
// do extra processing at start/end or on tick.
|
|
virtual void StartCueInternal();
|
|
virtual void TickInternal(double currenttime, double deltatime);
|
|
virtual void EndCueInternal();
|
|
|
|
private:
|
|
vtkAnimationCue(const vtkAnimationCue&); // Not implemented.
|
|
void operator=(const vtkAnimationCue&); // Not implemented.
|
|
};
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|