mirror of https://github.com/AxioDL/metaforce.git
CToken usage fixes in CWorldTransManager; better model instances
This commit is contained in:
parent
f4ea728a61
commit
0d08d4a40e
|
@ -32,7 +32,7 @@ void ViewManager::BuildTestPART(urde::IObjectStore& objStore)
|
||||||
SObjectTag samusCharSet = m_projManager.TagFromPath(_S("MP1/Shared/ANCS_77289A4A.blend"));
|
SObjectTag samusCharSet = m_projManager.TagFromPath(_S("MP1/Shared/ANCS_77289A4A.blend"));
|
||||||
SObjectTag platModel = m_projManager.TagFromPath(_S("MP1/Shared/CMDL_6FA561D0.blend"));
|
SObjectTag platModel = m_projManager.TagFromPath(_S("MP1/Shared/CMDL_6FA561D0.blend"));
|
||||||
SObjectTag bgModel = m_projManager.TagFromPath(_S("MP1/Shared/CMDL_BC34D54C.blend"));
|
SObjectTag bgModel = m_projManager.TagFromPath(_S("MP1/Shared/CMDL_BC34D54C.blend"));
|
||||||
CAnimRes samusAnimRes(samusCharSet.id, 2, zeus::CVector3f::skOne, 0, true);
|
CAnimRes samusAnimRes(samusCharSet.id, 2, zeus::CVector3f{2.f, 2.f, 2.f}, 0, true);
|
||||||
g_GameState->GetWorldTransitionManager()->EnableTransition(samusAnimRes,
|
g_GameState->GetWorldTransitionManager()->EnableTransition(samusAnimRes,
|
||||||
platModel.id, zeus::CVector3f::skOne,
|
platModel.id, zeus::CVector3f::skOne,
|
||||||
bgModel.id, zeus::CVector3f::skOne, false);
|
bgModel.id, zeus::CVector3f::skOne, false);
|
||||||
|
|
|
@ -254,16 +254,18 @@ bool CBooModel::TryLockTextures() const
|
||||||
allLoad = false;
|
allLoad = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (allLoad)
|
|
||||||
const_cast<CBooModel*>(this)->BuildGfxToken();
|
|
||||||
|
|
||||||
const_cast<CBooModel*>(this)->x40_24_texturesLoaded = allLoad;
|
const_cast<CBooModel*>(this)->x40_24_texturesLoaded = allLoad;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!m_gfxToken && x40_24_texturesLoaded)
|
||||||
|
const_cast<CBooModel*>(this)->BuildGfxToken();
|
||||||
|
|
||||||
return x40_24_texturesLoaded;
|
return x40_24_texturesLoaded;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBooModel::UnlockTextures() const
|
void CBooModel::UnlockTextures() const
|
||||||
{
|
{
|
||||||
|
const_cast<boo::GraphicsDataToken&>(m_gfxToken).doDestroy();
|
||||||
for (TCachedToken<CTexture>& tex : const_cast<std::vector<TCachedToken<CTexture>>&>(x1c_textures))
|
for (TCachedToken<CTexture>& tex : const_cast<std::vector<TCachedToken<CTexture>>&>(x1c_textures))
|
||||||
tex.Unlock();
|
tex.Unlock();
|
||||||
const_cast<CBooModel*>(this)->x40_24_texturesLoaded = false;
|
const_cast<CBooModel*>(this)->x40_24_texturesLoaded = false;
|
||||||
|
|
|
@ -49,24 +49,16 @@ void CTweaks::RegisterTweaks()
|
||||||
|
|
||||||
void CTweaks::RegisterResourceTweaks()
|
void CTweaks::RegisterResourceTweaks()
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
CResFactory& factory = *dynamic_cast<CResFactory*>(g_ResFactory);
|
|
||||||
CResLoader& loader = factory.GetLoader();
|
|
||||||
std::unique_ptr<CInputStream> strm;
|
|
||||||
strm.reset(loader.LoadNewResourceSync(IDFromFactory(factory, "GunRes")));
|
|
||||||
g_tweakGunRes = new DataSpec::DNAMP1::CTweakGunRes(*strm);
|
|
||||||
strm.reset(loader.LoadNewResourceSync(IDFromFactory(factory, "PlayerRes"), nullptr));
|
|
||||||
g_tweakPlayerRes = new DataSpec::DNAMP1::CTweakPlayerRes(*strm);
|
|
||||||
#else
|
|
||||||
ProjectResourceFactoryMP1& factory = ProjectManager::g_SharedManager->resourceFactoryMP1();
|
ProjectResourceFactoryMP1& factory = ProjectManager::g_SharedManager->resourceFactoryMP1();
|
||||||
std::unique_ptr<CInputStream> strm;
|
std::experimental::optional<CMemoryInStream> strm;
|
||||||
|
|
||||||
SObjectTag tag = factory.ProjectResourceFactoryBase::TagFromPath(_S("MP1/Tweaks/GunRes.yaml"));
|
SObjectTag tag = factory.ProjectResourceFactoryBase::TagFromPath(_S("MP1/Tweaks/GunRes.yaml"));
|
||||||
strm.reset(new CMemoryInStream(factory.LoadResourceSync(tag).release(), factory.ResourceSize(tag)));
|
strm.emplace(factory.LoadResourceSync(tag).release(), factory.ResourceSize(tag));
|
||||||
g_tweakGunRes = new DataSpec::DNAMP1::CTweakGunRes(*strm);
|
g_tweakGunRes = new DataSpec::DNAMP1::CTweakGunRes(*strm);
|
||||||
|
|
||||||
tag = factory.ProjectResourceFactoryBase::TagFromPath(_S("MP1/Tweaks/PlayerRes.yaml"));
|
tag = factory.ProjectResourceFactoryBase::TagFromPath(_S("MP1/Tweaks/PlayerRes.yaml"));
|
||||||
strm.reset(new CMemoryInStream(factory.LoadResourceSync(tag).release(), factory.ResourceSize(tag)));
|
strm.emplace(factory.LoadResourceSync(tag).release(), factory.ResourceSize(tag));
|
||||||
g_tweakPlayerRes = new DataSpec::DNAMP1::CTweakPlayerRes(*strm);
|
g_tweakPlayerRes = new DataSpec::DNAMP1::CTweakPlayerRes(*strm);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -157,16 +157,20 @@ void CWorldTransManager::DrawAllModels()
|
||||||
CModelFlags flags = {};
|
CModelFlags flags = {};
|
||||||
flags.m_extendedShaderIdx = 1;
|
flags.m_extendedShaderIdx = 1;
|
||||||
|
|
||||||
if (!x4_modelData->x100_bgModelData.IsNull())
|
if (!x4_modelData->x100_bgModelData[0].IsNull())
|
||||||
{
|
{
|
||||||
zeus::CTransform xf0 = zeus::CTransform::Translate(0.f, 0.f, -(2.f * x1c_bgHeight - x18_bgOffset));
|
zeus::CTransform xf0 = zeus::CTransform::Translate(0.f, 0.f, -(2.f * x1c_bgHeight - x18_bgOffset));
|
||||||
x4_modelData->x100_bgModelData.Render(CModelData::EWhichModel::Normal, xf0, &lights, flags);
|
x4_modelData->x100_bgModelData[0].Render(CModelData::EWhichModel::Normal, xf0, &lights, flags);
|
||||||
|
}
|
||||||
|
if (!x4_modelData->x100_bgModelData[1].IsNull())
|
||||||
|
{
|
||||||
zeus::CTransform xf1 = zeus::CTransform::Translate(0.f, 0.f, x18_bgOffset - x1c_bgHeight);
|
zeus::CTransform xf1 = zeus::CTransform::Translate(0.f, 0.f, x18_bgOffset - x1c_bgHeight);
|
||||||
x4_modelData->x100_bgModelData.Render(CModelData::EWhichModel::Normal, xf1, &lights, flags);
|
x4_modelData->x100_bgModelData[1].Render(CModelData::EWhichModel::Normal, xf1, &lights, flags);
|
||||||
|
}
|
||||||
|
if (!x4_modelData->x100_bgModelData[2].IsNull())
|
||||||
|
{
|
||||||
zeus::CTransform xf2 = zeus::CTransform::Translate(0.f, 0.f, x18_bgOffset);
|
zeus::CTransform xf2 = zeus::CTransform::Translate(0.f, 0.f, x18_bgOffset);
|
||||||
x4_modelData->x100_bgModelData.Render(CModelData::EWhichModel::Normal, xf2, &lights, flags);
|
x4_modelData->x100_bgModelData[2].Render(CModelData::EWhichModel::Normal, xf2, &lights, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!x4_modelData->xb4_platformModelData.IsNull())
|
if (!x4_modelData->xb4_platformModelData.IsNull())
|
||||||
|
@ -277,14 +281,16 @@ void CWorldTransManager::TouchModels()
|
||||||
if (!x4_modelData)
|
if (!x4_modelData)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (x4_modelData->x14c_beamModel.IsLoaded() &&
|
if (x4_modelData->x68_beamModelData.IsNull() &&
|
||||||
|
x4_modelData->x14c_beamModel.IsLoaded() &&
|
||||||
x4_modelData->x14c_beamModel.GetObj())
|
x4_modelData->x14c_beamModel.GetObj())
|
||||||
{
|
{
|
||||||
x4_modelData->x68_beamModelData = CStaticRes(x4_modelData->x14c_beamModel.GetObjectTag()->id,
|
x4_modelData->x68_beamModelData = CStaticRes(x4_modelData->x14c_beamModel.GetObjectTag()->id,
|
||||||
x4_modelData->x0_samusRes.GetScale());
|
x4_modelData->x0_samusRes.GetScale());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (x4_modelData->x158_suitModel.IsLoaded() &&
|
if (x4_modelData->x1c_samusModelData.IsNull() &&
|
||||||
|
x4_modelData->x158_suitModel.IsLoaded() &&
|
||||||
x4_modelData->x158_suitModel.GetObj() &&
|
x4_modelData->x158_suitModel.GetObj() &&
|
||||||
x4_modelData->x164_suitSkin.IsLoaded() &&
|
x4_modelData->x164_suitSkin.IsLoaded() &&
|
||||||
x4_modelData->x164_suitSkin.GetObj())
|
x4_modelData->x164_suitSkin.GetObj())
|
||||||
|
@ -304,8 +310,12 @@ void CWorldTransManager::TouchModels()
|
||||||
if (!x4_modelData->xb4_platformModelData.IsNull())
|
if (!x4_modelData->xb4_platformModelData.IsNull())
|
||||||
x4_modelData->xb4_platformModelData.Touch(CModelData::EWhichModel::Normal, 0);
|
x4_modelData->xb4_platformModelData.Touch(CModelData::EWhichModel::Normal, 0);
|
||||||
|
|
||||||
if (!x4_modelData->x100_bgModelData.IsNull())
|
if (!x4_modelData->x100_bgModelData[0].IsNull())
|
||||||
x4_modelData->x100_bgModelData.Touch(CModelData::EWhichModel::Normal, 0);
|
x4_modelData->x100_bgModelData[0].Touch(CModelData::EWhichModel::Normal, 0);
|
||||||
|
if (!x4_modelData->x100_bgModelData[1].IsNull())
|
||||||
|
x4_modelData->x100_bgModelData[1].Touch(CModelData::EWhichModel::Normal, 0);
|
||||||
|
if (!x4_modelData->x100_bgModelData[2].IsNull())
|
||||||
|
x4_modelData->x100_bgModelData[2].Touch(CModelData::EWhichModel::Normal, 0);
|
||||||
|
|
||||||
if (!x4_modelData->x68_beamModelData.IsNull())
|
if (!x4_modelData->x68_beamModelData.IsNull())
|
||||||
x4_modelData->x68_beamModelData.Touch(CModelData::EWhichModel::Normal, 0);
|
x4_modelData->x68_beamModelData.Touch(CModelData::EWhichModel::Normal, 0);
|
||||||
|
@ -323,11 +333,6 @@ void CWorldTransManager::EnableTransition(const CAnimRes& samusRes,
|
||||||
x8_textData.reset();
|
x8_textData.reset();
|
||||||
x20_random.SetSeed(99);
|
x20_random.SetSeed(99);
|
||||||
|
|
||||||
//x4_modelData->x1c_samusModelData = CModelData(samusRes);
|
|
||||||
|
|
||||||
//CAnimPlaybackParms aData(samusRes.GetDefaultAnim(), -1, 1.f, true);
|
|
||||||
//x4_modelData->x1c_samusModelData.AnimationData()->SetAnimation(aData, false);
|
|
||||||
|
|
||||||
const std::string& modelName = g_tweakPlayerRes->GetBeamCineModel(
|
const std::string& modelName = g_tweakPlayerRes->GetBeamCineModel(
|
||||||
DataSpec::ITweakPlayerRes::EBeamId(g_GameState->GetPlayerState()->GetCurrentBeam()));
|
DataSpec::ITweakPlayerRes::EBeamId(g_GameState->GetPlayerState()->GetCurrentBeam()));
|
||||||
|
|
||||||
|
@ -346,9 +351,9 @@ void CWorldTransManager::EnableTransition(const CAnimRes& samusRes,
|
||||||
|
|
||||||
if (bgRes != -1)
|
if (bgRes != -1)
|
||||||
{
|
{
|
||||||
x4_modelData->x100_bgModelData = CStaticRes(bgRes, bgScale);
|
x4_modelData->x100_bgModelData[0] = CStaticRes(bgRes, bgScale);
|
||||||
x4_modelData->x100_bgModelData.Touch(CModelData::EWhichModel::Normal, 0);
|
x4_modelData->x100_bgModelData[0].Touch(CModelData::EWhichModel::Normal, 0);
|
||||||
zeus::CAABox bounds = x4_modelData->x100_bgModelData.GetBounds();
|
zeus::CAABox bounds = x4_modelData->x100_bgModelData[0].GetBounds();
|
||||||
x1c_bgHeight = (bounds.max.z - bounds.min.z) * bgScale.z;
|
x1c_bgHeight = (bounds.max.z - bounds.min.z) * bgScale.z;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -31,7 +31,7 @@ public:
|
||||||
CModelData x1c_samusModelData;
|
CModelData x1c_samusModelData;
|
||||||
CModelData x68_beamModelData;
|
CModelData x68_beamModelData;
|
||||||
CModelData xb4_platformModelData;
|
CModelData xb4_platformModelData;
|
||||||
CModelData x100_bgModelData;
|
CModelData x100_bgModelData[3];
|
||||||
TLockedToken<CModel> x14c_beamModel;
|
TLockedToken<CModel> x14c_beamModel;
|
||||||
TLockedToken<CModel> x158_suitModel;
|
TLockedToken<CModel> x158_suitModel;
|
||||||
TLockedToken<CSkinRules> x164_suitSkin;
|
TLockedToken<CSkinRules> x164_suitSkin;
|
||||||
|
|
Loading…
Reference in New Issue