|
| | AIS_Animation (const TCollection_AsciiString &theAnimationName) |
| | Creates empty animation.
|
| |
| | ~AIS_Animation () override |
| | Destruct object, clear arguments.
|
| |
| const TCollection_AsciiString & | Name () const |
| | Animation name.
|
| |
| double | StartPts () const |
| |
| void | SetStartPts (const double thePtsStart) |
| | Sets time limits for animation in the animation timeline.
|
| |
| double | Duration () const |
| |
| void | UpdateTotalDuration () |
| | Update total duration considering all animations on timeline.
|
| |
| bool | HasOwnDuration () const |
| | Return true if duration is defined.
|
| |
| double | OwnDuration () const |
| |
| void | SetOwnDuration (const double theDuration) |
| | Defines duration of the animation.
|
| |
| void | Add (const occ::handle< AIS_Animation > &theAnimation) |
| | Add single animation to the timeline.
|
| |
| void | Clear () |
| | Clear animation timeline - remove all animations from it.
|
| |
| occ::handle< AIS_Animation > | Find (const TCollection_AsciiString &theAnimationName) const |
| | Return the child animation with the given name.
|
| |
| bool | Remove (const occ::handle< AIS_Animation > &theAnimation) |
| | Remove the child animation.
|
| |
| bool | Replace (const occ::handle< AIS_Animation > &theAnimationOld, const occ::handle< AIS_Animation > &theAnimationNew) |
| | Replace the child animation.
|
| |
| void | CopyFrom (const occ::handle< AIS_Animation > &theOther) |
| | Clears own children and then copy child animations from another object. Copy also Start Time and Duration values.
|
| |
| const NCollection_Sequence< occ::handle< AIS_Animation > > & | Children () const |
| | Return sequence of child animations.
|
| |
| virtual void | StartTimer (const double theStartPts, const double thePlaySpeed, const bool theToUpdate, const bool theToStopTimer=false) |
| | Start animation with internally defined timer instance. Calls Start() internally.
|
| |
| virtual double | UpdateTimer () |
| | Update single frame of animation, update timer state.
|
| |
| double | ElapsedTime () const |
| | Return elapsed time.
|
| |
| const occ::handle< Media_Timer > & | Timer () const |
| | Return playback timer.
|
| |
| void | SetTimer (const occ::handle< Media_Timer > &theTimer) |
| | Set playback timer.
|
| |
| virtual void | Start (const bool theToUpdate) |
| | Start animation. This method changes status of the animation to Started. This status defines whether animation is to be performed in the timeline or not.
|
| |
| virtual void | Pause () |
| | Pause the process timeline.
|
| |
| virtual void | Stop () |
| | Stop animation. This method changed status of the animation to Stopped. This status shows that animation will not be performed in the timeline or it is finished.
|
| |
| bool | IsStopped () |
| | Check if animation is to be performed in the animation timeline.
|
| |
| virtual bool | Update (const double thePts) |
| | Update single frame of animation, update timer state.
|
| |
Public Member Functions inherited from Standard_Transient |
| | Standard_Transient () |
| | Empty constructor.
|
| |
| | Standard_Transient (const Standard_Transient &) |
| | Copy constructor – does nothing.
|
| |
| Standard_Transient & | operator= (const Standard_Transient &) |
| | Assignment operator, needed to avoid copying reference counter.
|
| |
| virtual | ~Standard_Transient ()=default |
| | Destructor must be virtual.
|
| |
| virtual const opencascade::handle< Standard_Type > & | DynamicType () const |
| | Returns a type descriptor about this object.
|
| |
| bool | IsInstance (const opencascade::handle< Standard_Type > &theType) const |
| | Returns a true value if this is an instance of Type.
|
| |
| bool | IsInstance (const char *const theTypeName) const |
| | Returns a true value if this is an instance of TypeName.
|
| |
| bool | IsKind (const opencascade::handle< Standard_Type > &theType) const |
| | Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
|
| |
| bool | IsKind (const char *const theTypeName) const |
| | Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
|
| |
| Standard_Transient * | This () const |
| | Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero.
|
| |
| int | GetRefCount () const noexcept |
| | Get the reference counter of this object.
|
| |
| void | IncrementRefCounter () noexcept |
| | Increments the reference counter of this object. Uses relaxed memory ordering since incrementing only requires atomicity, not synchronization with other memory operations.
|
| |
| int | DecrementRefCounter () noexcept |
| | Decrements the reference counter of this object; returns the decremented value. Uses release ordering for the decrement to ensure all writes to the object are visible before the count reaches zero. An acquire fence is added only when the count reaches zero, ensuring proper synchronization before deletion. This is more efficient than using acq_rel for every decrement.
|
| |
| virtual void | Delete () const |
| | Memory deallocator for transient classes.
|
| |
Class represents a basic animation class. AIS_Animation can be used as:
- Animation Implementor Sub-classes should override method AIS_Animation::update() to perform specific animation. AIS package provides limited number of such animation atoms - classes AIS_AnimationObject and AIS_AnimationCamera, which could be enough for defining a simple animation. In general case, application is expected defining own AIS_Animation sub-classes implementing application-specific animation logic (e.g. another interpolation or another kind of transformations - like color transition and others). The basic conception of AIS_Animation::update() is defining an exact scene state for the current presentation timestamp, providing a smooth and continuous animation well defined at any time step and in any direction. So that a time difference between two sequential drawn Viewer frames can vary from frame to frame without visual artifacts, increasing rendering framerate would not lead to animation being executed too fast and low framerate (on slow hardware) would not lead to animation played longer than defined duration. Hence, implementation should avoid usage of incremental step logic or should apply it very carefully.
- Animation Container AIS_Animation (no sub-classing) can be used to aggregate a sequence of Animation items (children). Each children should be defined with its own duration and start time (presentation timestamp). It is possible defining collection of nested AIS_Animation items, so that within each container level children define start playback time relative to its holder.
- Animation playback Controller It is suggested that application would define a single AIS_Animation instance (optional sub-classing) for controlling animation playback as whole. Such controller should be filled in by other AIS_Animation as children objects, and will be managed by application by calling StartTimer(), UpdateTimer() and IsStopped() methods.
Note, that AIS_Animation::StartTimer() defines a timer calculating an elapsed time, not a multimedia timer executing Viewer updates at specific intervals! Application should avoid using implicit and immediate Viewer updates to ensure that AIS_Animation::UpdateTimer() is called before each redrawing of a Viewer content. Redrawing logic should be also managed at application level for managing a smooth animation (by defining a multimedia timer provided by used GUI framework executing updates at desired framerate, or as continuous redraws in loop).