2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-14 17:26:09 +00:00

CGuiFrame & Model fixes; CModel::Draw impl; Document CModelFlags bits

This commit is contained in:
2022-03-05 19:26:52 -05:00
parent b3daf4a527
commit 6c3e74b93e
25 changed files with 135 additions and 192 deletions

View File

@@ -56,7 +56,7 @@ int CPlayerVisor::FindCachedInactiveScanTarget(TUniqueId uid) const {
return -1;
}
bool CPlayerVisor::DrawScanObjectIndicators(const CStateManager& mgr) const {
bool CPlayerVisor::DrawScanObjectIndicators(const CStateManager& mgr) {
if (!x124_scanIconNoncritical.IsLoaded() || !x130_scanIconCritical.IsLoaded())
return false;
if (!x114_scanShield.IsLoaded())
@@ -89,7 +89,7 @@ bool CPlayerVisor::DrawScanObjectIndicators(const CStateManager& mgr) const {
if (!act->GetMaterialList().HasMaterial(EMaterialTypes::Scannable))
continue;
const CScannableObjectInfo* scanInfo = act->GetScannableObjectInfo();
const CModel* useModel;
CModel* useModel;
const zeus::CColor* useColor;
const zeus::CColor* useDimColor;
if (scanInfo->IsImportant()) {

View File

@@ -67,7 +67,7 @@ class CPlayerVisor {
int FindEmptyInactiveScanTarget() const;
int FindCachedInactiveScanTarget(TUniqueId uid) const;
bool DrawScanObjectIndicators(const CStateManager& mgr) const;
bool DrawScanObjectIndicators(const CStateManager& mgr);
void UpdateScanObjectIndicators(const CStateManager& mgr, float dt);
void UpdateScanWindow(float dt, const CStateManager& mgr);
EScanWindowState GetDesiredScanWindowState(const CStateManager& mgr) const;

View File

@@ -59,9 +59,7 @@ void CAtomicAlpha::Render(CStateManager& mgr) {
GetTransform() * GetScaledLocatorTransform(bomb.x0_locatorName) *
zeus::CTransform::Scale(
std::min(1.f, std::max(0.f, bomb.x14_scaleTime - x570_bombReappearDelay) / x570_bombReappearDelay));
CModelFlags flags;
flags.x2_flags = 1 | 2;
flags.x4_color = zeus::skWhite;
CModelFlags flags{0, 0, 3, zeus::skWhite};
x690_bombModel.Render(mgr, locatorXf, x90_actorLights.get(), flags);
}
}

View File

@@ -617,9 +617,9 @@ void CRidley::PreRender(CStateManager& mgr, const zeus::CFrustum& frustum) {
CPlayerState::EPlayerVisor r28 = mgr.GetPlayerState()->GetActiveVisor(mgr);
bool atLastMat = GetModelData()->GetNumMaterialSets() == (matSet + 1);
if (r28 == CPlayerState::EPlayerVisor::Thermal && atLastMat) {
xb4_drawFlags.x2_flags |= 0x40;
xb4_drawFlags.x2_flags |= CModelFlagBits::Unknown1;
} else {
xb4_drawFlags.x2_flags &= 0x40;
xb4_drawFlags.x2_flags &= CModelFlagBits::Unknown1;
}
xb4_drawFlags.x1_matSetIdx = matSet;

View File

@@ -108,10 +108,7 @@ void CSeedling::Think(float dt, CStateManager& mgr) {
void CSeedling::Render(CStateManager& mgr) {
if (x400_25_alive && x6bc_spikeData) {
const size_t index = x722_24_renderOnlyClusterA ? 0 : size_t(x722_25_curNeedleCluster);
CModelFlags flags;
flags.x2_flags = 3;
flags.x4_color = zeus::skWhite;
CModelFlags flags{0, 0, 3, zeus::skWhite};
for (const auto& sv : skNeedleLocators[index]) {
x6bc_spikeData->Render(mgr, GetLctrTransform(sv), x90_actorLights.get(), flags);
}