VEvent.h

Engine/source/Verve/Core/VEvent.h

More...

Classes:

class

Detailed Description

  1
  2//-----------------------------------------------------------------------------
  3// Verve
  4// Copyright (C) 2014 - Violent Tulip
  5//
  6// Permission is hereby granted, free of charge, to any person obtaining a copy
  7// of this software and associated documentation files (the "Software"), to
  8// deal in the Software without restriction, including without limitation the
  9// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 10// sell copies of the Software, and to permit persons to whom the Software is
 11// furnished to do so, subject to the following conditions:
 12//
 13// The above copyright notice and this permission notice shall be included in
 14// all copies or substantial portions of the Software.
 15//
 16// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 17// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 18// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 19// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 20// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 21// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 22// IN THE SOFTWARE.
 23//-----------------------------------------------------------------------------
 24#ifndef _VT_VEVENT_H_
 25#define _VT_VEVENT_H_
 26
 27#ifndef _VT_VOBJECT_H_
 28#include "Verve/Core/VObject.h"
 29#endif
 30
 31//-----------------------------------------------------------------------------
 32class VGroup;
 33class VTrack;
 34//-----------------------------------------------------------------------------
 35
 36class VEvent : public VObject
 37{
 38    typedef VObject Parent;
 39
 40protected:
 41
 42    bool            mIsPlaying;
 43    bool            mTriggered;
 44
 45    S32             mTriggerTime;
 46    S32             mDuration;
 47    
 48public:
 49
 50    VEvent( void );
 51
 52    static  void    initPersistFields( void );
 53
 54    // Controller Methods.
 55
 56    virtual void    onControllerReset( const S32 &pTime, const bool &pForward );
 57    virtual bool    onControllerUpdate( const S32 &pTime, const S32 &pDelta );
 58
 59    // Callback Methods.
 60
 61    virtual void    onTrigger( const S32 &pTime, const S32 &pDelta );
 62    virtual void    onUpdate( const S32 &pTime, const S32 &pDelta );
 63    virtual void    onComplete( const S32 &pTime, const S32 &pDelta );
 64
 65    // Console Declaration.
 66
 67    DECLARE_CONOBJECT( VEvent );
 68
 69public:
 70
 71    // Property Methods.
 72
 73    VGroup         *getGroup( void );
 74    template <class T> inline bool getGroup( T *&pGroup )
 75    {
 76        // Reference Group.
 77        pGroup = dynamic_cast<T*>( getGroup() );
 78        // Validate.
 79        return ( pGroup != NULL );
 80    }
 81
 82    VTrack         *getTrack( void );
 83    template <class T> inline bool getTrack( T *&pTrack )
 84    {
 85        // Reference Track.
 86        pTrack = dynamic_cast<T*>( getTrack() );
 87        // Validate.
 88        return ( pTrack != NULL );
 89    }
 90
 91    VEvent         *getNextEvent( void );
 92    VEvent         *getPreviousEvent( void );
 93
 94    inline bool     isPlaying( void )      { return mIsPlaying;   };
 95    inline S32      getTriggerTime( void ) { return mTriggerTime; };
 96    inline S32      getDuration( void )    { return mDuration;    };
 97
 98    virtual S32     getStartTime( void );
 99    virtual S32     getFinishTime( void );
100
101    virtual void    setTriggerTime( const S32 &pTime );
102    virtual void    setDuration( const S32 &pDuration );
103
104    static  bool    setTriggerTime( void *obj, const char *pArray, const char *data ) { static_cast<VEvent*>( obj )->setTriggerTime( dAtoi( data ) ); return false; };
105    static  bool    setDuration( void *obj, const char *pArray, const char *data )    { static_cast<VEvent*>( obj )->setDuration( dAtoi( data ) );    return false; };
106};
107
108//-----------------------------------------------------------------------------
109
110#endif // _VT_VEVENT_H_
111