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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user