mirror of
https://github.com/jmarshall23/DoomRTX.git
synced 2026-08-21 13:10:37 +02:00
Quake 4 integrated with DoomRTX
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
#ifndef _LIPSYNC_H_INC_
|
||||
#define _LIPSYNC_H_INC_
|
||||
|
||||
// Possible TBDs
|
||||
// Auto head swapping from simple to lip sync head
|
||||
// Return time of sound from the speak call for the script to wait
|
||||
// Set emotion directly without encoding it into the string
|
||||
|
||||
class rvViseme
|
||||
{
|
||||
public:
|
||||
rvViseme( void ) {}
|
||||
~rvViseme( void ) { phoneme.Clear(); }
|
||||
|
||||
void Init( idStr &phon, int f, int bt );
|
||||
|
||||
int GetFrame( void ) const { return( frame ); }
|
||||
int GetBlendTime( void ) const { return( blendTime ); }
|
||||
|
||||
private:
|
||||
idStr phoneme;
|
||||
int frame;
|
||||
int blendTime;
|
||||
};
|
||||
|
||||
#define FAS_NEW_VISEME BIT( 0 )
|
||||
#define FAS_NEW_PHRASE BIT( 1 )
|
||||
#define FAS_NEW_EMOTION BIT( 2 )
|
||||
#define FAS_ENDED BIT( 3 )
|
||||
|
||||
class rvLipSyncData
|
||||
{
|
||||
public:
|
||||
rvLipSyncData( const rvDeclLipSync *ls, int time );
|
||||
~rvLipSyncData( void ) {}
|
||||
|
||||
bool Ready( int time ) { return( time >= mNextTokenTime ); }
|
||||
|
||||
int ReadToken( idToken *token ) { return( mLexer.ReadToken( token ) ); }
|
||||
int ExpectTokenString( const char *str ) { return( mLexer.ExpectTokenString( str ) ); }
|
||||
void SetNextTokenTime( int time ) { mNextTokenTime += time; }
|
||||
|
||||
void ClearFlags( void ) { mFlags = 0; }
|
||||
void SetFlags( int flags ) { mFlags |= flags; }
|
||||
bool HasNewPhoneme( void ) const { return( !!( mFlags & FAS_NEW_VISEME ) ); }
|
||||
bool HasNewPhrase( void ) const { return( !!( mFlags & FAS_NEW_PHRASE ) ); }
|
||||
bool HasNewEmotion( void ) const { return( !!( mFlags & FAS_NEW_EMOTION ) ); }
|
||||
bool HasEnded( void ) const { return( !!( mFlags & FAS_ENDED ) ); }
|
||||
|
||||
void SetFrame( int frame );
|
||||
int GetFrame( void ) const { return( mFrame ); }
|
||||
int GetLastFrame( void ) { return( mLastFrame ); }
|
||||
|
||||
void SetBlendTime( int bt ) { mBlendTime = bt; }
|
||||
int GetBlendTime( void ) const { return( mBlendTime ); }
|
||||
|
||||
float GetFrontLerp( void );
|
||||
|
||||
void SetEmotion( idStr &str ) { mEmotion = str; }
|
||||
const idStr &GetEmotion( void ) const { return( mEmotion ); }
|
||||
|
||||
void SetLastPhrase( idStr &str ) { mLastPhrase = str; }
|
||||
const idStr &GetLastPhrase( void ) const { return( mLastPhrase ); }
|
||||
|
||||
private:
|
||||
int mNextTokenTime;
|
||||
int mFlags;
|
||||
int mFrame;
|
||||
int mLastFrame;
|
||||
int mVisemeStartTime;
|
||||
int mBlendTime;
|
||||
idStr mEmotion;
|
||||
idStr mLastPhrase;
|
||||
idLexer mLexer;
|
||||
};
|
||||
|
||||
bool FAS_Init( const char *visemes );
|
||||
void FAS_Shutdown( void );
|
||||
|
||||
void FAS_ExtractViseme( class rvLipSyncData *lsd, int time );
|
||||
class rvLipSyncData *FAS_StartVisemeExtraction( const rvDeclLipSync *ls, int time );
|
||||
void FAS_EndVisemeExtraction( class rvLipSyncData *lsd );
|
||||
|
||||
extern idCVar fas_debug;
|
||||
extern idCVar fas_timeOffset;
|
||||
|
||||
#endif // _LIPSYNC_H_INC_
|
||||
Reference in New Issue
Block a user