00001 // Copyright NVIDIA Corporation 2002-2004 00002 // TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED 00003 // *AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS 00004 // OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY 00005 // AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS 00006 // BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES 00007 // WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, 00008 // BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) 00009 // ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS 00010 // BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES 00011 00012 #pragma once 00013 00015 #include "nvsgcommon.h" 00016 00017 #include "nvsg/Object.h" 00018 00019 namespace nvsg 00020 { 00022 00024 template<typename T> class Animation : public Object 00025 { 00026 public: 00027 //-- Functions specific to Animation -- 00029 /** \returns pointer to the new animation */ 00030 virtual const Animation<T> * clone( void ) const = 0; 00031 00033 00034 virtual size_t getNumberOfFrames( void ) const = 0; 00035 00037 00038 virtual const T & operator[]( size_t i ) const = 0; 00039 00040 //-- Functions reimplemented from Object -- 00041 virtual DataID getDataID( void ) const; 00042 virtual bool isDataShared( void ) const; 00043 00044 protected: 00046 Animation( void ); 00047 00049 virtual ~Animation( void ); 00050 }; 00051 00052 template<typename T> Animation<T>::Animation( void ) 00053 { 00054 __TRACE(); 00055 } 00056 00057 template<typename T> Animation<T>::~Animation( void ) 00058 { 00059 __TRACE(); 00060 } 00061 00062 template<typename T> DataID Animation<T>::getDataID( void ) const 00063 { 00064 __TRACE(); 00065 return( (DataID)this ); 00066 } 00067 00068 template<typename T> bool Animation<T>::isDataShared( void ) const 00069 { 00070 __TRACE(); 00071 return( false ); 00072 } 00073 } // namespace nvsg