[IclipMap_t] More bugfixes
This commit is contained in:
parent
da59feb2d6
commit
cec0db3e4c
@ -257,7 +257,13 @@ namespace Assets
|
|||||||
SaveLogEnter("CollisionBorder");
|
SaveLogEnter("CollisionBorder");
|
||||||
|
|
||||||
buffer->align(Utils::Stream::ALIGN_4);
|
buffer->align(Utils::Stream::ALIGN_4);
|
||||||
buffer->saveArray(&asset->collisionBorders, asset->numCollisionBorders);
|
|
||||||
|
for (int i = 0; i < asset->numCollisionBorders; ++i)
|
||||||
|
{
|
||||||
|
builder->storePointer(&asset->collisionBorders[i]);
|
||||||
|
buffer->save(&asset->collisionBorders[i]);
|
||||||
|
}
|
||||||
|
|
||||||
Utils::Stream::ClearPointer(&dest->collisionBorders);
|
Utils::Stream::ClearPointer(&dest->collisionBorders);
|
||||||
SaveLogExit();
|
SaveLogExit();
|
||||||
}
|
}
|
||||||
@ -268,24 +274,26 @@ namespace Assets
|
|||||||
SaveLogEnter("CollisionPartition");
|
SaveLogEnter("CollisionPartition");
|
||||||
|
|
||||||
buffer->align(Utils::Stream::ALIGN_4);
|
buffer->align(Utils::Stream::ALIGN_4);
|
||||||
Game::CollisionPartition* border = buffer->dest<Game::CollisionPartition>();
|
Game::CollisionPartition* destPartitions = buffer->dest<Game::CollisionPartition>();
|
||||||
buffer->saveArray(asset->collisionPartitions, asset->numCollisionPartitions);
|
buffer->saveArray(asset->collisionPartitions, asset->numCollisionPartitions);
|
||||||
|
|
||||||
for (int i = 0; i < asset->numCollisionPartitions; ++i)
|
for (int i = 0; i < asset->numCollisionPartitions; ++i)
|
||||||
{
|
{
|
||||||
if (border[i].borders)
|
Game::CollisionPartition* destPartition = &destPartitions[i];
|
||||||
|
Game::CollisionPartition* partition = &asset->collisionPartitions[i];
|
||||||
|
|
||||||
|
if (partition->borders)
|
||||||
{
|
{
|
||||||
if (builder->hasPointer(border[i].borders))
|
if (builder->hasPointer(partition->borders))
|
||||||
{
|
{
|
||||||
border[i].borders = builder->getPointer(border[i].borders);
|
destPartition->borders = builder->getPointer(partition->borders);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
buffer->align(Utils::Stream::ALIGN_4);
|
buffer->align(Utils::Stream::ALIGN_4);
|
||||||
builder->storePointer(border[i].borders);
|
builder->storePointer(partition->borders);
|
||||||
|
buffer->save(partition->borders);
|
||||||
buffer->save(border[i].borders);
|
Utils::Stream::ClearPointer(&destPartition->borders);
|
||||||
Utils::Stream::ClearPointer(&border[i].borders);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -324,59 +332,60 @@ namespace Assets
|
|||||||
SaveLogEnter("cbrush_t");
|
SaveLogEnter("cbrush_t");
|
||||||
|
|
||||||
buffer->align(Utils::Stream::ALIGN_128);
|
buffer->align(Utils::Stream::ALIGN_128);
|
||||||
Game::cbrush_t* brushes = buffer->dest<Game::cbrush_t>();
|
Game::cbrush_t* destBrushes = buffer->dest<Game::cbrush_t>();
|
||||||
buffer->saveArray(asset->cBrushes, asset->numCBrushes);
|
buffer->saveArray(asset->cBrushes, asset->numCBrushes);
|
||||||
|
|
||||||
for (short i = 0; i < asset->numCBrushes; ++i)
|
for (short i = 0; i < asset->numCBrushes; ++i)
|
||||||
{
|
{
|
||||||
if (brushes[i].brushSide)
|
Game::cbrush_t* destBrush = &destBrushes[i];
|
||||||
|
Game::cbrush_t* brush = &asset->cBrushes[i];
|
||||||
|
|
||||||
|
if (brush->brushSide)
|
||||||
{
|
{
|
||||||
if (builder->hasPointer(brushes[i].brushSide))
|
if (builder->hasPointer(brush->brushSide))
|
||||||
{
|
{
|
||||||
brushes[i].brushSide = builder->getPointer(brushes[i].brushSide);
|
destBrush->brushSide = builder->getPointer(brush->brushSide);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
AssertSize(Game::cbrushside_t, 8);
|
AssertSize(Game::cbrushside_t, 8);
|
||||||
|
|
||||||
buffer->align(Utils::Stream::ALIGN_4);
|
buffer->align(Utils::Stream::ALIGN_4);
|
||||||
builder->storePointer(brushes[i].brushSide);
|
builder->storePointer(brush->brushSide);
|
||||||
|
|
||||||
Game::cbrushside_t* side = buffer->dest<Game::cbrushside_t>();
|
Game::cbrushside_t* side = buffer->dest<Game::cbrushside_t>();
|
||||||
buffer->save(brushes[i].brushSide);
|
buffer->save(brush->brushSide);
|
||||||
|
|
||||||
if (brushes[i].brushSide->side)
|
if (brush->brushSide->side)
|
||||||
{
|
{
|
||||||
if (builder->hasPointer(brushes[i].brushSide->side))
|
if (builder->hasPointer(brush->brushSide->side))
|
||||||
{
|
{
|
||||||
brushes[i].brushSide->side = builder->getPointer(brushes[i].brushSide->side);
|
side->side = builder->getPointer(brush->brushSide->side);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
buffer->align(Utils::Stream::ALIGN_4);
|
buffer->align(Utils::Stream::ALIGN_4);
|
||||||
builder->storePointer(brushes[i].brushSide->side);
|
builder->storePointer(brush->brushSide->side);
|
||||||
|
buffer->save(brush->brushSide->side);
|
||||||
buffer->save(brushes[i].brushSide->side);
|
|
||||||
Utils::Stream::ClearPointer(&side->side);
|
Utils::Stream::ClearPointer(&side->side);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Utils::Stream::ClearPointer(&brushes[i].brushSide);
|
Utils::Stream::ClearPointer(&destBrush->brushSide);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (brushes[i].brushEdge)
|
if (brush->brushEdge)
|
||||||
{
|
{
|
||||||
if (builder->hasPointer(brushes[i].brushEdge))
|
if (builder->hasPointer(brush->brushEdge))
|
||||||
{
|
{
|
||||||
brushes[i].brushEdge = builder->getPointer(brushes[i].brushEdge);
|
destBrush->brushEdge = builder->getPointer(brush->brushEdge);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
builder->storePointer(brushes[i].brushEdge);
|
builder->storePointer(brush->brushEdge);
|
||||||
|
buffer->save(brush->brushEdge);
|
||||||
buffer->save(brushes[i].brushEdge);
|
Utils::Stream::ClearPointer(&destBrush->brushEdge);
|
||||||
Utils::Stream::ClearPointer(&brushes[i].brushEdge);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -431,25 +440,22 @@ namespace Assets
|
|||||||
Game::DynEntityDef* dynEntDest = buffer->dest<Game::DynEntityDef>();
|
Game::DynEntityDef* dynEntDest = buffer->dest<Game::DynEntityDef>();
|
||||||
buffer->saveArray(asset->dynEntDefList[i], asset->dynEntCount[i]);
|
buffer->saveArray(asset->dynEntDefList[i], asset->dynEntCount[i]);
|
||||||
|
|
||||||
|
Game::DynEntityDef* dynEnt = asset->dynEntDefList[i];
|
||||||
for (int j = 0; j < asset->dynEntCount[i]; ++j)
|
for (int j = 0; j < asset->dynEntCount[i]; ++j)
|
||||||
{
|
{
|
||||||
Game::XModel* m = asset->dynEntDefList[i][j].xModel;
|
if (dynEnt[j].xModel)
|
||||||
Game::FxEffectDef* fx = asset->dynEntDefList[i][j].destroyFx;
|
|
||||||
Game::PhysPreset* p = asset->dynEntDefList[i][j].physPreset;
|
|
||||||
|
|
||||||
if (m)
|
|
||||||
{
|
{
|
||||||
dynEntDest[j].xModel = builder->requireAsset(Game::XAssetType::ASSET_TYPE_XMODEL, m->name).model;
|
dynEntDest[j].xModel = builder->requireAsset(Game::XAssetType::ASSET_TYPE_XMODEL, dynEnt[j].xModel->name).model;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fx)
|
if (dynEnt[j].destroyFx)
|
||||||
{
|
{
|
||||||
dynEntDest[j].destroyFx = builder->requireAsset(Game::XAssetType::ASSET_TYPE_FX, fx->name).fx;
|
dynEntDest[j].destroyFx = builder->requireAsset(Game::XAssetType::ASSET_TYPE_FX, dynEnt[j].destroyFx->name).fx;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (p)
|
if (dynEnt[j].physPreset)
|
||||||
{
|
{
|
||||||
dynEntDest[j].physPreset = builder->requireAsset(Game::XAssetType::ASSET_TYPE_PHYSPRESET, p->name).physPreset;
|
dynEntDest[j].physPreset = builder->requireAsset(Game::XAssetType::ASSET_TYPE_PHYSPRESET, dynEnt[j].physPreset->name).physPreset;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user