mirror of https://github.com/AxioDL/metaforce.git
Various CWorldTransManager bug fixes
This commit is contained in:
parent
dc0bb55390
commit
302d897e10
|
@ -172,6 +172,8 @@ void ViewManager::ParticleView::draw(boo::IGraphicsCommandQueue *gfxQ)
|
||||||
m_vm.m_moviePlayer->Update(1.f / 60.f);
|
m_vm.m_moviePlayer->Update(1.f / 60.f);
|
||||||
m_vm.m_moviePlayer->DrawFrame();
|
m_vm.m_moviePlayer->DrawFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_GameState->GetWorldTransitionManager()->Update(1.f / 60.f);
|
||||||
g_GameState->GetWorldTransitionManager()->Draw();
|
g_GameState->GetWorldTransitionManager()->Draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -155,6 +155,10 @@ public:
|
||||||
{
|
{
|
||||||
return *msg.GetParm<CArchMsgParmVoidPtr>();
|
return *msg.GetParm<CArchMsgParmVoidPtr>();
|
||||||
}
|
}
|
||||||
|
static CArchitectureMessage CreateFrameBegin(EArchMsgTarget target, int a)
|
||||||
|
{
|
||||||
|
return CArchitectureMessage(target, EArchMsgType::FrameBegin, new CArchMsgParmInt32(a));
|
||||||
|
}
|
||||||
/* URDE Messages */
|
/* URDE Messages */
|
||||||
static CArchitectureMessage CreateApplicationExit(EArchMsgTarget target)
|
static CArchitectureMessage CreateApplicationExit(EArchMsgTarget target)
|
||||||
{
|
{
|
||||||
|
|
|
@ -36,6 +36,7 @@ class CObjectReference
|
||||||
Unload();
|
Unload();
|
||||||
if (IsLoading())
|
if (IsLoading())
|
||||||
CancelLoad();
|
CancelLoad();
|
||||||
|
if (xC_objectStore)
|
||||||
xC_objectStore->ObjectUnreferenced(x4_objTag);
|
xC_objectStore->ObjectUnreferenced(x4_objTag);
|
||||||
}
|
}
|
||||||
return x0_refCount;
|
return x0_refCount;
|
||||||
|
|
|
@ -289,7 +289,7 @@ void CAnimData::SetAnimation(const CAnimPlaybackParms& parms, bool)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
SAdvancementDeltas CAnimData::DoAdvance(float dt, bool& b1, CRandom16& random, bool b2)
|
SAdvancementDeltas CAnimData::DoAdvance(float dt, bool& b1, CRandom16& random, bool advTree)
|
||||||
{
|
{
|
||||||
b1 = false;
|
b1 = false;
|
||||||
|
|
||||||
|
@ -317,7 +317,7 @@ SAdvancementDeltas CAnimData::DoAdvance(float dt, bool& b1, CRandom16& random, b
|
||||||
b1 = true;
|
b1 = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (b2)
|
if (advTree && x1f8_animRoot)
|
||||||
{
|
{
|
||||||
SetRandomPlaybackRate(random);
|
SetRandomPlaybackRate(random);
|
||||||
CCharAnimTime time(scaleDt);
|
CCharAnimTime time(scaleDt);
|
||||||
|
@ -362,10 +362,10 @@ SAdvancementDeltas CAnimData::DoAdvance(float dt, bool& b1, CRandom16& random, b
|
||||||
}
|
}
|
||||||
|
|
||||||
SAdvancementDeltas CAnimData::Advance(float dt, const zeus::CVector3f& scale,
|
SAdvancementDeltas CAnimData::Advance(float dt, const zeus::CVector3f& scale,
|
||||||
CStateManager& stateMgr, TAreaId aid, bool b1)
|
CStateManager& stateMgr, TAreaId aid, bool advTree)
|
||||||
{
|
{
|
||||||
bool b2;
|
bool b2;
|
||||||
return DoAdvance(dt, b2, *stateMgr.GetActiveRandom(), b1);
|
return DoAdvance(dt, b2, *stateMgr.GetActiveRandom(), advTree);
|
||||||
if (b2)
|
if (b2)
|
||||||
x120_particleDB.SuspendAllActiveEffects(stateMgr);
|
x120_particleDB.SuspendAllActiveEffects(stateMgr);
|
||||||
|
|
||||||
|
@ -379,10 +379,10 @@ SAdvancementDeltas CAnimData::Advance(float dt, const zeus::CVector3f& scale,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SAdvancementDeltas CAnimData::AdvanceIgnoreParticles(float dt, CRandom16& random, bool b1)
|
SAdvancementDeltas CAnimData::AdvanceIgnoreParticles(float dt, CRandom16& random, bool advTree)
|
||||||
{
|
{
|
||||||
bool b2;
|
bool b2;
|
||||||
return DoAdvance(dt, b2, random, b1);
|
return DoAdvance(dt, b2, random, advTree);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CAnimData::AdvanceAnim(CCharAnimTime& time, zeus::CVector3f& offset, zeus::CQuaternion& quat)
|
void CAnimData::AdvanceAnim(CCharAnimTime& time, zeus::CVector3f& offset, zeus::CQuaternion& quat)
|
||||||
|
|
|
@ -203,9 +203,9 @@ public:
|
||||||
void PrimitiveSetToTokenVector(const std::set<CPrimitive>& primSet, std::vector<CToken>& tokensOut);
|
void PrimitiveSetToTokenVector(const std::set<CPrimitive>& primSet, std::vector<CToken>& tokensOut);
|
||||||
void GetAnimationPrimitives(const CAnimPlaybackParms& parms, std::set<CPrimitive>& primsOut) const;
|
void GetAnimationPrimitives(const CAnimPlaybackParms& parms, std::set<CPrimitive>& primsOut) const;
|
||||||
void SetAnimation(const CAnimPlaybackParms& parms, bool);
|
void SetAnimation(const CAnimPlaybackParms& parms, bool);
|
||||||
SAdvancementDeltas DoAdvance(float, bool&, CRandom16&, bool);
|
SAdvancementDeltas DoAdvance(float, bool&, CRandom16&, bool advTree);
|
||||||
SAdvancementDeltas Advance(float, const zeus::CVector3f&, CStateManager& stateMgr, TAreaId aid, bool);
|
SAdvancementDeltas Advance(float, const zeus::CVector3f&, CStateManager& stateMgr, TAreaId aid, bool advTree);
|
||||||
SAdvancementDeltas AdvanceIgnoreParticles(float, CRandom16&, bool);
|
SAdvancementDeltas AdvanceIgnoreParticles(float, CRandom16&, bool advTree);
|
||||||
void AdvanceAnim(CCharAnimTime& time, zeus::CVector3f&, zeus::CQuaternion&);
|
void AdvanceAnim(CCharAnimTime& time, zeus::CVector3f&, zeus::CQuaternion&);
|
||||||
void SetXRayModel(const TLockedToken<CModel>& model, const TLockedToken<CSkinRules>& skinRules);
|
void SetXRayModel(const TLockedToken<CModel>& model, const TLockedToken<CSkinRules>& skinRules);
|
||||||
void SetInfraModel(const TLockedToken<CModel>& model, const TLockedToken<CSkinRules>& skinRules);
|
void SetInfraModel(const TLockedToken<CModel>& model, const TLockedToken<CSkinRules>& skinRules);
|
||||||
|
|
|
@ -235,18 +235,18 @@ zeus::CTransform CModelData::GetLocatorTransform(const std::string& name) const
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
SAdvancementDeltas CModelData::AdvanceAnimationIgnoreParticles(float dt, CRandom16& rand, bool flag)
|
SAdvancementDeltas CModelData::AdvanceAnimationIgnoreParticles(float dt, CRandom16& rand, bool advTree)
|
||||||
{
|
{
|
||||||
if (x10_animData)
|
if (x10_animData)
|
||||||
return x10_animData->AdvanceIgnoreParticles(dt, rand, flag);
|
return x10_animData->AdvanceIgnoreParticles(dt, rand, advTree);
|
||||||
else
|
else
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
SAdvancementDeltas CModelData::AdvanceAnimation(float dt, CStateManager& stateMgr, TAreaId aid, bool flag)
|
SAdvancementDeltas CModelData::AdvanceAnimation(float dt, CStateManager& stateMgr, TAreaId aid, bool advTree)
|
||||||
{
|
{
|
||||||
if (x10_animData)
|
if (x10_animData)
|
||||||
return x10_animData->Advance(dt, x0_particleScale, stateMgr, aid, flag);
|
return x10_animData->Advance(dt, x0_particleScale, stateMgr, aid, advTree);
|
||||||
else
|
else
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
|
@ -119,8 +119,8 @@ public:
|
||||||
zeus::CTransform GetScaledLocatorTransform(const std::string& name) const;
|
zeus::CTransform GetScaledLocatorTransform(const std::string& name) const;
|
||||||
zeus::CTransform GetLocatorTransformDynamic(const std::string& name, const CCharAnimTime* time) const;
|
zeus::CTransform GetLocatorTransformDynamic(const std::string& name, const CCharAnimTime* time) const;
|
||||||
zeus::CTransform GetLocatorTransform(const std::string& name) const;
|
zeus::CTransform GetLocatorTransform(const std::string& name) const;
|
||||||
SAdvancementDeltas AdvanceAnimationIgnoreParticles(float dt, CRandom16&, bool);
|
SAdvancementDeltas AdvanceAnimationIgnoreParticles(float dt, CRandom16&, bool advTree);
|
||||||
SAdvancementDeltas AdvanceAnimation(float dt, CStateManager& stateMgr, TAreaId aid, bool);
|
SAdvancementDeltas AdvanceAnimation(float dt, CStateManager& stateMgr, TAreaId aid, bool advTree);
|
||||||
bool IsAnimating() const;
|
bool IsAnimating() const;
|
||||||
bool IsInFrustum(const zeus::CTransform& xf, const CFrustumPlanes& frustum) const;
|
bool IsInFrustum(const zeus::CTransform& xf, const CFrustumPlanes& frustum) const;
|
||||||
void RenderParticles(const CFrustumPlanes& frustum) const;
|
void RenderParticles(const CFrustumPlanes& frustum) const;
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
namespace urde
|
namespace urde
|
||||||
{
|
{
|
||||||
static logvisor::Module Log("urde::CModelBoo");
|
static logvisor::Module Log("urde::CBooModel");
|
||||||
bool CBooModel::g_DrawingOccluders = false;
|
bool CBooModel::g_DrawingOccluders = false;
|
||||||
|
|
||||||
CBooModel::CBooModel(std::vector<CBooSurface>* surfaces, SShader& shader,
|
CBooModel::CBooModel(std::vector<CBooSurface>* surfaces, SShader& shader,
|
||||||
|
|
|
@ -162,6 +162,13 @@ public:
|
||||||
bool finished = false;
|
bool finished = false;
|
||||||
m_inputGenerator.Update(1.0 / 60.0, m_archQueue);
|
m_inputGenerator.Update(1.0 / 60.0, m_archQueue);
|
||||||
|
|
||||||
|
g_GameState->GetWorldTransitionManager()->TouchModels();
|
||||||
|
int unk = 0;
|
||||||
|
m_archQueue.Push(std::move(MakeMsg::CreateFrameBegin(EArchMsgTarget::Game, unk)));
|
||||||
|
|
||||||
|
m_ioWinManager.PumpMessages(m_archQueue);
|
||||||
|
|
||||||
|
/*
|
||||||
while (m_archQueue)
|
while (m_archQueue)
|
||||||
{
|
{
|
||||||
CArchitectureMessage msg = m_archQueue.Pop();
|
CArchitectureMessage msg = m_archQueue.Pop();
|
||||||
|
@ -178,6 +185,7 @@ public:
|
||||||
m_archQueue.Push(std::move(MakeMsg::CreateApplicationExit(EArchMsgTarget::ArchitectureSupport)));
|
m_archQueue.Push(std::move(MakeMsg::CreateApplicationExit(EArchMsgTarget::ArchitectureSupport)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
return finished;
|
return finished;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -323,15 +323,15 @@ 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);
|
//x4_modelData->x1c_samusModelData = CModelData(samusRes);
|
||||||
|
|
||||||
CAnimPlaybackParms aData(samusRes.GetDefaultAnim(), -1, 1.f, true);
|
//CAnimPlaybackParms aData(samusRes.GetDefaultAnim(), -1, 1.f, true);
|
||||||
x4_modelData->x1c_samusModelData.AnimationData()->SetAnimation(aData, false);
|
//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()));
|
||||||
|
|
||||||
x4_modelData->x14c_beamModel = g_SimplePool->GetObj(modelName.c_str());
|
x4_modelData->x14c_beamModel = g_SimplePool->GetObj(("MP1/TestAnim/" + modelName + ".blend").c_str());
|
||||||
|
|
||||||
TToken<CCharacterFactory> fac = g_CharFactoryBuilder->GetFactory(samusRes);
|
TToken<CCharacterFactory> fac = g_CharFactoryBuilder->GetFactory(samusRes);
|
||||||
const CCharacterInfo& info = fac.GetObj()->GetCharInfo(GetSuitCharIdx());
|
const CCharacterInfo& info = fac.GetObj()->GetCharInfo(GetSuitCharIdx());
|
||||||
|
|
Loading…
Reference in New Issue