mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-27 22:57:45 +00:00
fixed map export legit this time
This commit is contained in:
parent
c7a2023df4
commit
d499d53e5a
1 changed files with 25 additions and 20 deletions
|
@ -258,12 +258,16 @@ int main( int argc, char* argv[] )
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
auto pushVerts = [&]( const PCB_FILE& pcb_file, const std::string& name, const vec3* scale = nullptr, const vec3* rotation = nullptr, const vec3* translation = nullptr )
|
auto pushVerts = [&]( const PCB_FILE& pcb_file, const std::string& name,
|
||||||
|
const vec3* scale = nullptr,
|
||||||
|
const vec3* rotation = nullptr,
|
||||||
|
const vec3* translation = nullptr,
|
||||||
|
const SGB_MODEL_ENTRY* pSgbEntry = nullptr)
|
||||||
{
|
{
|
||||||
char name2[0x100];
|
char name2[0x100];
|
||||||
memset( name2, 0, 0x100 );
|
memset( name2, 0, 0x100 );
|
||||||
sprintf( &name2[0], "%s_%u", &name[0], objCount[name]++ );
|
sprintf( &name2[0], "%s_%u", &name[0], objCount[name]++ );
|
||||||
//fprintf( fp_out, "o %s\n", &name2[0] );
|
fprintf( fp_out, "o %s\n", &name2[0] );
|
||||||
|
|
||||||
uint32_t groupCount = 0;
|
uint32_t groupCount = 0;
|
||||||
for( const auto &entry : pcb_file.entries )
|
for( const auto &entry : pcb_file.entries )
|
||||||
|
@ -274,6 +278,20 @@ int main( int argc, char* argv[] )
|
||||||
|
|
||||||
auto makeTranslation = [&]( vec3& v )
|
auto makeTranslation = [&]( vec3& v )
|
||||||
{
|
{
|
||||||
|
if( pSgbEntry )
|
||||||
|
{
|
||||||
|
v.x *= pSgbEntry->header.scale.x;
|
||||||
|
v.y *= pSgbEntry->header.scale.y;
|
||||||
|
v.z *= pSgbEntry->header.scale.z;
|
||||||
|
|
||||||
|
v = v * matrix4::rotateX( pSgbEntry->header.rotation.x );
|
||||||
|
v = v * matrix4::rotateY( pSgbEntry->header.rotation.y );
|
||||||
|
v = v * matrix4::rotateZ( pSgbEntry->header.rotation.z );
|
||||||
|
|
||||||
|
v.x += pSgbEntry->header.translation.x;
|
||||||
|
v.y += pSgbEntry->header.translation.y;
|
||||||
|
v.z += pSgbEntry->header.translation.z;
|
||||||
|
}
|
||||||
if( scale )
|
if( scale )
|
||||||
{
|
{
|
||||||
v.x *= scale->x;
|
v.x *= scale->x;
|
||||||
|
@ -338,7 +356,7 @@ int main( int argc, char* argv[] )
|
||||||
totalGroups++;
|
totalGroups++;
|
||||||
for( const auto& pEntry : group.entries )
|
for( const auto& pEntry : group.entries )
|
||||||
{
|
{
|
||||||
LGB_GIMMICK_ENTRY* pGimmick = dynamic_cast<LGB_GIMMICK_ENTRY*>( pEntry.get() );
|
auto pGimmick = dynamic_cast<LGB_GIMMICK_ENTRY*>( pEntry.get() );
|
||||||
auto pBgParts = dynamic_cast<LGB_BGPARTS_ENTRY*>( pEntry.get() );
|
auto pBgParts = dynamic_cast<LGB_BGPARTS_ENTRY*>( pEntry.get() );
|
||||||
|
|
||||||
std::string fileName( "" );
|
std::string fileName( "" );
|
||||||
|
@ -346,7 +364,7 @@ int main( int argc, char* argv[] )
|
||||||
totalGroupEntries++;
|
totalGroupEntries++;
|
||||||
|
|
||||||
// write files
|
// write files
|
||||||
auto writeOutput = [&]( const std::string& fileName, const vec3* scale, const vec3* rotation, const vec3* translation ) -> bool
|
auto writeOutput = [&]( const std::string& fileName, const vec3* scale, const vec3* rotation, const vec3* translation, const SGB_MODEL_ENTRY* pModel = nullptr) -> bool
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
const auto& it = pcbFiles.find( fileName );
|
const auto& it = pcbFiles.find( fileName );
|
||||||
|
@ -361,7 +379,7 @@ int main( int argc, char* argv[] )
|
||||||
if( it != pcbFiles.end() )
|
if( it != pcbFiles.end() )
|
||||||
{
|
{
|
||||||
const auto& pcb_file = it->second;
|
const auto& pcb_file = it->second;
|
||||||
pushVerts( pcb_file, fileName, scale, rotation, translation );
|
pushVerts( pcb_file, fileName, scale, rotation, translation, pModel );
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
@ -369,15 +387,8 @@ int main( int argc, char* argv[] )
|
||||||
if( pBgParts )
|
if( pBgParts )
|
||||||
{
|
{
|
||||||
fileName = pBgParts->collisionFileName;
|
fileName = pBgParts->collisionFileName;
|
||||||
|
|
||||||
if( !writeOutput( fileName, &pBgParts->header.scale, &pBgParts->header.rotation, &pBgParts->header.translation ) )
|
|
||||||
{
|
|
||||||
fileName = pBgParts->modelFileName;
|
|
||||||
boost::replace_all( fileName, "bgparts", "collision" );
|
|
||||||
boost::replace_all( fileName, ".mdl", ".pcb" );
|
|
||||||
writeOutput( fileName, &pBgParts->header.scale, &pBgParts->header.rotation, &pBgParts->header.translation );
|
writeOutput( fileName, &pBgParts->header.scale, &pBgParts->header.rotation, &pBgParts->header.translation );
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// gimmick entry
|
// gimmick entry
|
||||||
if( pGimmick )
|
if( pGimmick )
|
||||||
|
@ -401,13 +412,7 @@ int main( int argc, char* argv[] )
|
||||||
{
|
{
|
||||||
auto pModel = dynamic_cast<SGB_MODEL_ENTRY*>( pEntry.get() );
|
auto pModel = dynamic_cast<SGB_MODEL_ENTRY*>( pEntry.get() );
|
||||||
fileName = pModel->collisionFileName;
|
fileName = pModel->collisionFileName;
|
||||||
if( !writeOutput( fileName, &pGimmick->header.scale, &pGimmick->header.rotation, &pGimmick->header.translation ) )
|
writeOutput( fileName, &pGimmick->header.scale, &pGimmick->header.rotation, &pGimmick->header.translation, pModel );
|
||||||
{
|
|
||||||
fileName = pModel->modelFileName;
|
|
||||||
boost::replace_all( fileName, "bgparts", "collision" );
|
|
||||||
boost::replace_all( fileName, ".mdl", ".pcb" );
|
|
||||||
writeOutput( fileName, &pGimmick->header.scale, &pGimmick->header.rotation, &pGimmick->header.translation );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue