Team Fortress 2 Source Code as on 22/4/2020
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.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $Workfile: $
// $NoKeywords: $
//=============================================================================//
#ifndef C_JIGGLEBONES_H
#define C_JIGGLEBONES_H
#ifdef _WIN32
#pragma once
#endif
#include "studio.h"
#include "utlvector.h"
#include "utllinkedlist.h"
//-----------------------------------------------------------------------------
/**
* JiggleData is the instance-specific data for a jiggle bone */ struct JiggleData { void Init( int initBone, float currenttime, const Vector &initBasePos, const Vector &initTipPos ) { bone = initBone;
lastUpdate = currenttime;
basePos = initBasePos; baseLastPos = basePos; baseVel.Init(); baseAccel.Init();
tipPos = initTipPos; tipVel.Init(); tipAccel.Init();
lastLeft = Vector( 0, 0, 0 );
lastBoingPos = initBasePos; boingDir = Vector( 0.0f, 0.0f, 1.0f ); boingVelDir.Init(); boingSpeed = 0.0f; boingTime = 0.0f; }
int bone;
float lastUpdate; // based on gpGlobals->realtime
Vector basePos; // position of the base of the jiggle bone
Vector baseLastPos; Vector baseVel; Vector baseAccel;
Vector tipPos; // position of the tip of the jiggle bone
Vector tipVel; Vector tipAccel; Vector lastLeft; // previous up vector
Vector lastBoingPos; // position of base of jiggle bone last update for tracking velocity
Vector boingDir; // current direction along which the boing effect is occurring
Vector boingVelDir; // current estimation of jiggle bone unit velocity vector for boing effect
float boingSpeed; // current estimation of jiggle bone speed for boing effect
float boingTime; int useGoalMatrixCount; // Count of times we need to fast draw using goal matrix.
int useJiggleBoneCount; // Count of times we need to draw using real jiggly bones.
};
class CJiggleBones { public: JiggleData * GetJiggleData( int bone, float currenttime, const Vector &initBasePos, const Vector &initTipPos ); void BuildJiggleTransformations( int boneIndex, float currentime, const mstudiojigglebone_t *jiggleParams, const matrix3x4_t &goalMX, matrix3x4_t &boneMX );
CUtlLinkedList< JiggleData > m_jiggleBoneState; };
extern void DevMsgRT( PRINTF_FORMAT_STRING char const* pMsg, ... );
#endif // C_BASEANIMATING_H
|