Ym2413a: Here are two files of a new feature I've wrote.

It's called Character Scaling and has been in DDR since the 1st mix.
What it does is read the dancing character's "character.ini" file and uses
attributes stored there to adjust height, width and depth of the 3D object
and animation bones thus adjusting the size of the character on screen.
This commit is contained in:
Andrew Arsenault
2004-10-16 10:29:56 +00:00
parent 2c40b80080
commit b3f472ae8c
2 changed files with 52 additions and 1 deletions
+27
View File
@@ -195,6 +195,26 @@ bool msAnimation::LoadMilkshapeAsciiBones( CString sAniName, CString sPath )
msAnimation &Animation = *this;
//Ym2413a Added: Start
//Bone scaling loader.
static float fXScale = 1;
static float fYScale = 1;
static float fZScale = 1;
if( sAniName == "default" ){
IniFile ini;
if( ini.ReadFile( sDir+"character.ini" ) )
{
if ( !ini.GetValue( "Attributes", "ScaleX", fXScale ) ) {
fXScale = 1; }
if ( !ini.GetValue( "Attributes", "ScaleY", fYScale ) ) {
fYScale = 1; }
if ( !ini.GetValue( "Attributes", "ScaleZ", fZScale ) ) {
fZScale = 1; }
}
}
//Ym2413a Added: End
bool bLoaded = false;
while( f.GetLine( sLine ) > 0 )
{
@@ -270,6 +290,13 @@ bool msAnimation::LoadMilkshapeAsciiBones( CString sAniName, CString sPath )
if (sscanf (sLine, "%f %f %f %f", &fTime, &Position[0], &Position[1], &Position[2]) != 4)
THROW;
//Ym2413a Added: Start
//Perform rescaling of bone vectors.
Position[0] = Position[0]*fXScale;
Position[1] = Position[1]*fYScale;
Position[2] = Position[2]*fZScale;
//Ym2413a Added: End
msPositionKey key;
key.fTime = fTime;
key.Position = RageVector3( Position[0], Position[1], Position[2] );
+25 -1
View File
@@ -4,7 +4,7 @@
#include "RageFile.h"
#include "RageMath.h"
#include "RageDisplay.h"
#include "IniFile.h" // Added by Ym2413a, needed for code changes.
RageModelGeometry::RageModelGeometry ()
{
@@ -87,6 +87,24 @@ void RageModelGeometry::LoadMilkshapeAscii( CString sPath )
RageVec3ClearBounds( m_vMins, m_vMaxs );
//Ym2413a Added: Start
//Vector scaling loader.
float fXScale; fXScale = 1;
float fYScale; fYScale = 1;
float fZScale; fZScale = 1;
IniFile ini;
if( ini.ReadFile( sDir+"character.ini" ) )
{
if ( !ini.GetValue( "Attributes", "ScaleX", fXScale ) ) {
fXScale = 1; }
if ( !ini.GetValue( "Attributes", "ScaleY", fYScale ) ) {
fYScale = 1; }
if ( !ini.GetValue( "Attributes", "ScaleZ", fZScale ) ) {
fZScale = 1; }
}
//Ym2413a Added: End
while( f.GetLine( sLine ) > 0 )
{
iLineNum++;
@@ -159,6 +177,12 @@ void RageModelGeometry::LoadMilkshapeAscii( CString sPath )
{
THROW
}
//Ym2413a Added: Start
//Perform rescaling of model vectors.
v.p[0] = v.p[0]*fXScale;
v.p[1] = v.p[1]*fYScale;
v.p[2] = v.p[2]*fZScale;
//Ym2413a Added: End
// vertex.nFlags = nFlags;
v.bone = (uint8_t) nIndex;