mirror of https://github.com/AxioDL/metaforce.git
Scan visor fixes
This commit is contained in:
parent
81d2276458
commit
1c977e8021
|
@ -11,8 +11,8 @@ struct ITweakTargeting : public ITweak
|
||||||
virtual float GetCurrLockOnEnterDuration() const=0;
|
virtual float GetCurrLockOnEnterDuration() const=0;
|
||||||
virtual float GetCurrLockOnSwitchDuration() const=0;
|
virtual float GetCurrLockOnSwitchDuration() const=0;
|
||||||
virtual float GetLockConfirmScale() const=0;
|
virtual float GetLockConfirmScale() const=0;
|
||||||
virtual float GetNextLockOnExitDuration() const=0;
|
|
||||||
virtual float GetNextLockOnEnterDuration() const=0;
|
virtual float GetNextLockOnEnterDuration() const=0;
|
||||||
|
virtual float GetNextLockOnExitDuration() const=0;
|
||||||
virtual float GetNextLockOnSwitchDuration() const=0;
|
virtual float GetNextLockOnSwitchDuration() const=0;
|
||||||
virtual float GetSeekerScale() const=0;
|
virtual float GetSeekerScale() const=0;
|
||||||
virtual float GetSeekerAngleSpeed() const=0;
|
virtual float GetSeekerAngleSpeed() const=0;
|
||||||
|
|
|
@ -185,7 +185,7 @@ struct CTweakGui final : ITweakGui
|
||||||
Value<float> x364_;
|
Value<float> x364_;
|
||||||
|
|
||||||
CTweakGui() = default;
|
CTweakGui() = default;
|
||||||
CTweakGui(athena::io::IStreamReader& r) { this->read(r); }
|
CTweakGui(athena::io::IStreamReader& r) { this->read(r); FixupValues(); }
|
||||||
|
|
||||||
float GetMapAlphaInterpolant() const { return x8_mapAlphaInterp; }
|
float GetMapAlphaInterpolant() const { return x8_mapAlphaInterp; }
|
||||||
float GetPauseBlurFactor() const { return xc_pauseBlurFactor; }
|
float GetPauseBlurFactor() const { return xc_pauseBlurFactor; }
|
||||||
|
|
|
@ -13,8 +13,8 @@ struct CTweakTargeting final : public ITweakTargeting
|
||||||
Value<float> xc_currLockOnEnterDuration;
|
Value<float> xc_currLockOnEnterDuration;
|
||||||
Value<float> x10_currLockOnSwitchDuration;
|
Value<float> x10_currLockOnSwitchDuration;
|
||||||
Value<float> x14_lockConfirmScale;
|
Value<float> x14_lockConfirmScale;
|
||||||
Value<float> x18_nextLockOnExitDuration;
|
Value<float> x18_nextLockOnEnterDuration;
|
||||||
Value<float> x1c_nextLockOnEnterDuration;
|
Value<float> x1c_nextLockOnExitDuration;
|
||||||
Value<float> x20_nextLockOnSwitchDuration;
|
Value<float> x20_nextLockOnSwitchDuration;
|
||||||
Value<float> x24_seekerScale;
|
Value<float> x24_seekerScale;
|
||||||
Value<float> x28_seekerAngleSpeed;
|
Value<float> x28_seekerAngleSpeed;
|
||||||
|
@ -157,8 +157,8 @@ struct CTweakTargeting final : public ITweakTargeting
|
||||||
float GetCurrLockOnEnterDuration() const { return xc_currLockOnEnterDuration; }
|
float GetCurrLockOnEnterDuration() const { return xc_currLockOnEnterDuration; }
|
||||||
float GetCurrLockOnSwitchDuration() const { return x10_currLockOnSwitchDuration; }
|
float GetCurrLockOnSwitchDuration() const { return x10_currLockOnSwitchDuration; }
|
||||||
float GetLockConfirmScale() const { return x14_lockConfirmScale; }
|
float GetLockConfirmScale() const { return x14_lockConfirmScale; }
|
||||||
float GetNextLockOnExitDuration() const { return x18_nextLockOnExitDuration; }
|
float GetNextLockOnEnterDuration() const { return x18_nextLockOnEnterDuration; }
|
||||||
float GetNextLockOnEnterDuration() const { return x1c_nextLockOnEnterDuration; }
|
float GetNextLockOnExitDuration() const { return x1c_nextLockOnExitDuration; }
|
||||||
float GetNextLockOnSwitchDuration() const { return x20_nextLockOnSwitchDuration; }
|
float GetNextLockOnSwitchDuration() const { return x20_nextLockOnSwitchDuration; }
|
||||||
float GetSeekerScale() const { return x24_seekerScale; }
|
float GetSeekerScale() const { return x24_seekerScale; }
|
||||||
float GetSeekerAngleSpeed() const { return x28_seekerAngleSpeed; }
|
float GetSeekerAngleSpeed() const { return x28_seekerAngleSpeed; }
|
||||||
|
|
|
@ -299,7 +299,7 @@ bool ViewManager::proc()
|
||||||
gfxQ->execute();
|
gfxQ->execute();
|
||||||
if (g_ResFactory)
|
if (g_ResFactory)
|
||||||
g_ResFactory->AsyncIdle();
|
g_ResFactory->AsyncIdle();
|
||||||
if (!m_skipWait && hecl::com_developer->toBoolean())
|
if (!m_skipWait || !hecl::com_developer->toBoolean())
|
||||||
m_mainWindow->waitForRetrace(m_voiceEngine.get());
|
m_mainWindow->waitForRetrace(m_voiceEngine.get());
|
||||||
CBooModel::ClearModelUniformCounters();
|
CBooModel::ClearModelUniformCounters();
|
||||||
CGraphics::TickRenderTimings();
|
CGraphics::TickRenderTimings();
|
||||||
|
|
|
@ -326,6 +326,8 @@ void CNESEmulator::DeinitializeEmulator()
|
||||||
|
|
||||||
CNESEmulator::~CNESEmulator()
|
CNESEmulator::~CNESEmulator()
|
||||||
{
|
{
|
||||||
|
if (m_dvdReq)
|
||||||
|
m_dvdReq->PostCancelRequest();
|
||||||
if (EmulatorInst)
|
if (EmulatorInst)
|
||||||
DeinitializeEmulator();
|
DeinitializeEmulator();
|
||||||
if (emuNesROM)
|
if (emuNesROM)
|
||||||
|
|
|
@ -15,6 +15,12 @@ CPakFile::CPakFile(std::string_view filename, bool buildDepList, bool worldPak)
|
||||||
x28_27_stashedInARAM = false;
|
x28_27_stashedInARAM = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CPakFile::~CPakFile()
|
||||||
|
{
|
||||||
|
if (x30_dvdReq)
|
||||||
|
x30_dvdReq->PostCancelRequest();
|
||||||
|
}
|
||||||
|
|
||||||
const SObjectTag* CPakFile::GetResIdByName(std::string_view name) const
|
const SObjectTag* CPakFile::GetResIdByName(std::string_view name) const
|
||||||
{
|
{
|
||||||
for (const std::pair<std::string, SObjectTag>& p : x54_nameList)
|
for (const std::pair<std::string, SObjectTag>& p : x54_nameList)
|
||||||
|
|
|
@ -70,6 +70,7 @@ private:
|
||||||
void Warmup();
|
void Warmup();
|
||||||
public:
|
public:
|
||||||
CPakFile(std::string_view filename, bool buildDepList, bool worldPak);
|
CPakFile(std::string_view filename, bool buildDepList, bool worldPak);
|
||||||
|
~CPakFile();
|
||||||
const std::vector<std::pair<std::string, SObjectTag>>& GetNameList() const { return x54_nameList; }
|
const std::vector<std::pair<std::string, SObjectTag>>& GetNameList() const { return x54_nameList; }
|
||||||
const std::vector<CAssetId>& GetDepList() const { return x64_depList; }
|
const std::vector<CAssetId>& GetDepList() const { return x64_depList; }
|
||||||
const SObjectTag* GetResIdByName(std::string_view name) const;
|
const SObjectTag* GetResIdByName(std::string_view name) const;
|
||||||
|
|
|
@ -38,8 +38,9 @@ CFactoryFnReturn CResFactory::BuildSync(const SObjectTag& tag, const CVParamTran
|
||||||
|
|
||||||
bool CResFactory::PumpResource(SLoadingData& data)
|
bool CResFactory::PumpResource(SLoadingData& data)
|
||||||
{
|
{
|
||||||
if (data.x8_dvdReq->IsComplete())
|
if (data.x8_dvdReq && data.x8_dvdReq->IsComplete())
|
||||||
{
|
{
|
||||||
|
data.x8_dvdReq.reset();
|
||||||
*data.xc_targetPtr =
|
*data.xc_targetPtr =
|
||||||
x5c_factoryMgr.MakeObjectFromMemory(data.x0_tag, std::move(data.x10_loadBuffer),
|
x5c_factoryMgr.MakeObjectFromMemory(data.x0_tag, std::move(data.x10_loadBuffer),
|
||||||
data.x14_resSize, data.m_compressed, data.x18_cvXfer,
|
data.x14_resSize, data.m_compressed, data.x18_cvXfer,
|
||||||
|
@ -109,6 +110,7 @@ void CResFactory::CancelBuild(const SObjectTag& tag)
|
||||||
auto search = m_loadMap.find(tag);
|
auto search = m_loadMap.find(tag);
|
||||||
if (search != m_loadMap.end())
|
if (search != m_loadMap.end())
|
||||||
{
|
{
|
||||||
|
if (search->second->x8_dvdReq)
|
||||||
search->second->x8_dvdReq->PostCancelRequest();
|
search->second->x8_dvdReq->PostCancelRequest();
|
||||||
m_loadList.erase(search->second);
|
m_loadList.erase(search->second);
|
||||||
m_loadMap.erase(search);
|
m_loadMap.erase(search);
|
||||||
|
|
|
@ -24,7 +24,8 @@ hecl::UniformBufferPool<CLineRenderer::SDrawUniform> CLineRenderer::s_uniformPoo
|
||||||
|
|
||||||
CLineRenderer::CLineRenderer(boo::IGraphicsDataFactory::Context& ctx,
|
CLineRenderer::CLineRenderer(boo::IGraphicsDataFactory::Context& ctx,
|
||||||
EPrimitiveMode mode, u32 maxVerts,
|
EPrimitiveMode mode, u32 maxVerts,
|
||||||
const boo::ObjToken<boo::ITexture>& texture, bool additive)
|
const boo::ObjToken<boo::ITexture>& texture,
|
||||||
|
bool additive, bool zTest)
|
||||||
: m_mode(mode), m_maxVerts(maxVerts)
|
: m_mode(mode), m_maxVerts(maxVerts)
|
||||||
{
|
{
|
||||||
if (maxVerts < 2)
|
if (maxVerts < 2)
|
||||||
|
@ -55,11 +56,12 @@ CLineRenderer::CLineRenderer(boo::IGraphicsDataFactory::Context& ctx,
|
||||||
|
|
||||||
m_uniformBuf = s_uniformPool.allocateBlock(CGraphics::g_BooFactory);
|
m_uniformBuf = s_uniformPool.allocateBlock(CGraphics::g_BooFactory);
|
||||||
|
|
||||||
CLineRendererShaders::BuildShaderDataBinding(ctx, *this, texture, additive);
|
CLineRendererShaders::BuildShaderDataBinding(ctx, *this, texture, additive, zTest);
|
||||||
}
|
}
|
||||||
|
|
||||||
CLineRenderer::CLineRenderer(EPrimitiveMode mode, u32 maxVerts,
|
CLineRenderer::CLineRenderer(EPrimitiveMode mode, u32 maxVerts,
|
||||||
const boo::ObjToken<boo::ITexture>& texture, bool additive)
|
const boo::ObjToken<boo::ITexture>& texture,
|
||||||
|
bool additive, bool zTest)
|
||||||
: m_mode(mode), m_maxVerts(maxVerts)
|
: m_mode(mode), m_maxVerts(maxVerts)
|
||||||
{
|
{
|
||||||
if (maxVerts < 2)
|
if (maxVerts < 2)
|
||||||
|
@ -90,9 +92,9 @@ CLineRenderer::CLineRenderer(EPrimitiveMode mode, u32 maxVerts,
|
||||||
|
|
||||||
m_uniformBuf = s_uniformPool.allocateBlock(CGraphics::g_BooFactory);
|
m_uniformBuf = s_uniformPool.allocateBlock(CGraphics::g_BooFactory);
|
||||||
|
|
||||||
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx) -> bool
|
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
|
||||||
{
|
{
|
||||||
CLineRendererShaders::BuildShaderDataBinding(ctx, *this, texture, additive);
|
CLineRendererShaders::BuildShaderDataBinding(ctx, *this, texture, additive, zTest);
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,8 +73,10 @@ public:
|
||||||
boo::ObjToken<boo::IShaderDataBinding> m_shaderBind;
|
boo::ObjToken<boo::IShaderDataBinding> m_shaderBind;
|
||||||
|
|
||||||
CLineRenderer(boo::IGraphicsDataFactory::Context& ctx,
|
CLineRenderer(boo::IGraphicsDataFactory::Context& ctx,
|
||||||
EPrimitiveMode mode, u32 maxVerts, const boo::ObjToken<boo::ITexture>& texture, bool additive);
|
EPrimitiveMode mode, u32 maxVerts, const boo::ObjToken<boo::ITexture>& texture,
|
||||||
CLineRenderer(EPrimitiveMode mode, u32 maxVerts, const boo::ObjToken<boo::ITexture>& texture, bool additive);
|
bool additive, bool zTest = false);
|
||||||
|
CLineRenderer(EPrimitiveMode mode, u32 maxVerts, const boo::ObjToken<boo::ITexture>& texture,
|
||||||
|
bool additive, bool zTest = false);
|
||||||
CLineRenderer(CLineRenderer&&) = default;
|
CLineRenderer(CLineRenderer&&) = default;
|
||||||
|
|
||||||
void Reset();
|
void Reset();
|
||||||
|
|
|
@ -9,6 +9,12 @@ boo::ObjToken<boo::IShaderPipeline> CLineRendererShaders::m_texAdditive;
|
||||||
boo::ObjToken<boo::IShaderPipeline> CLineRendererShaders::m_noTexAlpha;
|
boo::ObjToken<boo::IShaderPipeline> CLineRendererShaders::m_noTexAlpha;
|
||||||
boo::ObjToken<boo::IShaderPipeline> CLineRendererShaders::m_noTexAdditive;
|
boo::ObjToken<boo::IShaderPipeline> CLineRendererShaders::m_noTexAdditive;
|
||||||
|
|
||||||
|
boo::ObjToken<boo::IShaderPipeline> CLineRendererShaders::m_texAlphaZ;
|
||||||
|
boo::ObjToken<boo::IShaderPipeline> CLineRendererShaders::m_texAdditiveZ;
|
||||||
|
|
||||||
|
boo::ObjToken<boo::IShaderPipeline> CLineRendererShaders::m_noTexAlphaZ;
|
||||||
|
boo::ObjToken<boo::IShaderPipeline> CLineRendererShaders::m_noTexAdditiveZ;
|
||||||
|
|
||||||
boo::ObjToken<boo::IVertexFormat> CLineRendererShaders::m_texVtxFmt;
|
boo::ObjToken<boo::IVertexFormat> CLineRendererShaders::m_texVtxFmt;
|
||||||
boo::ObjToken<boo::IVertexFormat> CLineRendererShaders::m_noTexVtxFmt;
|
boo::ObjToken<boo::IVertexFormat> CLineRendererShaders::m_noTexVtxFmt;
|
||||||
|
|
||||||
|
@ -57,6 +63,10 @@ void CLineRendererShaders::Shutdown()
|
||||||
m_texAdditive.reset();
|
m_texAdditive.reset();
|
||||||
m_noTexAlpha.reset();
|
m_noTexAlpha.reset();
|
||||||
m_noTexAdditive.reset();
|
m_noTexAdditive.reset();
|
||||||
|
m_texAlphaZ.reset();
|
||||||
|
m_texAdditiveZ.reset();
|
||||||
|
m_noTexAlphaZ.reset();
|
||||||
|
m_noTexAdditiveZ.reset();
|
||||||
m_texVtxFmt.reset();
|
m_texVtxFmt.reset();
|
||||||
m_noTexVtxFmt.reset();
|
m_noTexVtxFmt.reset();
|
||||||
}
|
}
|
||||||
|
@ -64,9 +74,28 @@ void CLineRendererShaders::Shutdown()
|
||||||
void CLineRendererShaders::BuildShaderDataBinding(boo::IGraphicsDataFactory::Context& ctx,
|
void CLineRendererShaders::BuildShaderDataBinding(boo::IGraphicsDataFactory::Context& ctx,
|
||||||
CLineRenderer& renderer,
|
CLineRenderer& renderer,
|
||||||
const boo::ObjToken<boo::ITexture>& texture,
|
const boo::ObjToken<boo::ITexture>& texture,
|
||||||
bool additive)
|
bool additive, bool zTest)
|
||||||
{
|
{
|
||||||
boo::ObjToken<boo::IShaderPipeline> pipeline;
|
boo::ObjToken<boo::IShaderPipeline> pipeline;
|
||||||
|
if (zTest)
|
||||||
|
{
|
||||||
|
if (texture)
|
||||||
|
{
|
||||||
|
if (additive)
|
||||||
|
pipeline = m_texAdditiveZ;
|
||||||
|
else
|
||||||
|
pipeline = m_texAlphaZ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (additive)
|
||||||
|
pipeline = m_noTexAdditiveZ;
|
||||||
|
else
|
||||||
|
pipeline = m_noTexAlphaZ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
if (texture)
|
if (texture)
|
||||||
{
|
{
|
||||||
if (additive)
|
if (additive)
|
||||||
|
@ -81,6 +110,7 @@ void CLineRendererShaders::BuildShaderDataBinding(boo::IGraphicsDataFactory::Con
|
||||||
else
|
else
|
||||||
pipeline = m_noTexAlpha;
|
pipeline = m_noTexAlpha;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
m_bindFactory->BuildShaderDataBinding(ctx, renderer, pipeline, texture);
|
m_bindFactory->BuildShaderDataBinding(ctx, renderer, pipeline, texture);
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,12 @@ private:
|
||||||
static boo::ObjToken<boo::IShaderPipeline> m_noTexAlpha;
|
static boo::ObjToken<boo::IShaderPipeline> m_noTexAlpha;
|
||||||
static boo::ObjToken<boo::IShaderPipeline> m_noTexAdditive;
|
static boo::ObjToken<boo::IShaderPipeline> m_noTexAdditive;
|
||||||
|
|
||||||
|
static boo::ObjToken<boo::IShaderPipeline> m_texAlphaZ;
|
||||||
|
static boo::ObjToken<boo::IShaderPipeline> m_texAdditiveZ;
|
||||||
|
|
||||||
|
static boo::ObjToken<boo::IShaderPipeline> m_noTexAlphaZ;
|
||||||
|
static boo::ObjToken<boo::IShaderPipeline> m_noTexAdditiveZ;
|
||||||
|
|
||||||
static boo::ObjToken<boo::IVertexFormat> m_texVtxFmt;
|
static boo::ObjToken<boo::IVertexFormat> m_texVtxFmt;
|
||||||
static boo::ObjToken<boo::IVertexFormat> m_noTexVtxFmt;
|
static boo::ObjToken<boo::IVertexFormat> m_noTexVtxFmt;
|
||||||
|
|
||||||
|
@ -52,7 +58,7 @@ public:
|
||||||
static void Initialize();
|
static void Initialize();
|
||||||
static void Shutdown();
|
static void Shutdown();
|
||||||
static void BuildShaderDataBinding(boo::IGraphicsDataFactory::Context& ctx, CLineRenderer& renderer,
|
static void BuildShaderDataBinding(boo::IGraphicsDataFactory::Context& ctx, CLineRenderer& renderer,
|
||||||
const boo::ObjToken<boo::ITexture>& texture, bool additive);
|
const boo::ObjToken<boo::ITexture>& texture, bool additive, bool zTest);
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -160,6 +160,23 @@ CLineRendererShaders::IDataBindingFactory* CLineRendererShaders::Initialize(boo:
|
||||||
boo::Primitive::TriStrips, boo::ZTest::None,
|
boo::Primitive::TriStrips, boo::ZTest::None,
|
||||||
false, true, false, boo::CullMode::None);
|
false, true, false, boo::CullMode::None);
|
||||||
|
|
||||||
|
m_texAlphaZ = ctx.newShaderPipeline(VS_GLSL_TEX, FS_GLSL_TEX, 1, TexNames, 1, UniNames,
|
||||||
|
boo::BlendFactor::SrcAlpha, boo::BlendFactor::InvSrcAlpha,
|
||||||
|
boo::Primitive::TriStrips, boo::ZTest::LEqual,
|
||||||
|
false, true, false, boo::CullMode::None);
|
||||||
|
m_texAdditiveZ = ctx.newShaderPipeline(VS_GLSL_TEX, FS_GLSL_TEX, 1, TexNames, 1, UniNames,
|
||||||
|
boo::BlendFactor::SrcAlpha, boo::BlendFactor::One,
|
||||||
|
boo::Primitive::TriStrips, boo::ZTest::LEqual,
|
||||||
|
false, true, false, boo::CullMode::None);
|
||||||
|
m_noTexAlphaZ = ctx.newShaderPipeline(VS_GLSL_NOTEX, FS_GLSL_NOTEX, 0, nullptr, 1, UniNames,
|
||||||
|
boo::BlendFactor::SrcAlpha, boo::BlendFactor::InvSrcAlpha,
|
||||||
|
boo::Primitive::TriStrips, boo::ZTest::LEqual,
|
||||||
|
false, true, false, boo::CullMode::None);
|
||||||
|
m_noTexAdditiveZ = ctx.newShaderPipeline(VS_GLSL_NOTEX, FS_GLSL_NOTEX, 0, nullptr, 1, UniNames,
|
||||||
|
boo::BlendFactor::SrcAlpha, boo::BlendFactor::One,
|
||||||
|
boo::Primitive::TriStrips, boo::ZTest::LEqual,
|
||||||
|
false, true, false, boo::CullMode::None);
|
||||||
|
|
||||||
return new struct OGLLineDataBindingFactory;
|
return new struct OGLLineDataBindingFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -235,6 +252,23 @@ CLineRendererShaders::IDataBindingFactory* CLineRendererShaders::Initialize(boo:
|
||||||
boo::Primitive::TriStrips, boo::ZTest::None,
|
boo::Primitive::TriStrips, boo::ZTest::None,
|
||||||
false, true, false, boo::CullMode::None);
|
false, true, false, boo::CullMode::None);
|
||||||
|
|
||||||
|
m_texAlphaZ = ctx.newShaderPipeline(VS_GLSL_TEX, FS_GLSL_TEX, m_texVtxFmt,
|
||||||
|
boo::BlendFactor::SrcAlpha, boo::BlendFactor::InvSrcAlpha,
|
||||||
|
boo::Primitive::TriStrips, boo::ZTest::LEqual,
|
||||||
|
false, true, false, boo::CullMode::None);
|
||||||
|
m_texAdditiveZ = ctx.newShaderPipeline(VS_GLSL_TEX, FS_GLSL_TEX, m_texVtxFmt,
|
||||||
|
boo::BlendFactor::SrcAlpha, boo::BlendFactor::One,
|
||||||
|
boo::Primitive::TriStrips, boo::ZTest::LEqual,
|
||||||
|
false, true, false, boo::CullMode::None);
|
||||||
|
m_noTexAlphaZ = ctx.newShaderPipeline(VS_GLSL_NOTEX, FS_GLSL_NOTEX, m_noTexVtxFmt,
|
||||||
|
boo::BlendFactor::SrcAlpha, boo::BlendFactor::InvSrcAlpha,
|
||||||
|
boo::Primitive::TriStrips, boo::ZTest::LEqual,
|
||||||
|
false, true, false, boo::CullMode::None);
|
||||||
|
m_noTexAdditiveZ = ctx.newShaderPipeline(VS_GLSL_NOTEX, FS_GLSL_NOTEX, m_noTexVtxFmt,
|
||||||
|
boo::BlendFactor::SrcAlpha, boo::BlendFactor::One,
|
||||||
|
boo::Primitive::TriStrips, boo::ZTest::LEqual,
|
||||||
|
false, true, false, boo::CullMode::None);
|
||||||
|
|
||||||
return new struct VulkanLineDataBindingFactory;
|
return new struct VulkanLineDataBindingFactory;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -161,6 +161,27 @@ CLineRendererShaders::IDataBindingFactory* CLineRendererShaders::Initialize(boo:
|
||||||
boo::Primitive::TriStrips, boo::ZTest::None,
|
boo::Primitive::TriStrips, boo::ZTest::None,
|
||||||
false, true, false, boo::CullMode::None);
|
false, true, false, boo::CullMode::None);
|
||||||
|
|
||||||
|
m_texAlphaZ = ctx.newShaderPipeline(VS_HLSL_TEX, FS_HLSL_TEX, nullptr, nullptr,
|
||||||
|
nullptr, m_texVtxFmt,
|
||||||
|
boo::BlendFactor::SrcAlpha, boo::BlendFactor::InvSrcAlpha,
|
||||||
|
boo::Primitive::TriStrips, boo::ZTest::LEqual,
|
||||||
|
false, true, false, boo::CullMode::None);
|
||||||
|
m_texAdditiveZ = ctx.newShaderPipeline(VS_HLSL_TEX, FS_HLSL_TEX, nullptr, nullptr,
|
||||||
|
nullptr, m_texVtxFmt,
|
||||||
|
boo::BlendFactor::SrcAlpha, boo::BlendFactor::One,
|
||||||
|
boo::Primitive::TriStrips, boo::ZTest::LEqual,
|
||||||
|
false, true, false, boo::CullMode::None);
|
||||||
|
m_noTexAlphaZ = ctx.newShaderPipeline(VS_HLSL_NOTEX, FS_HLSL_NOTEX, nullptr, nullptr,
|
||||||
|
nullptr, m_noTexVtxFmt,
|
||||||
|
boo::BlendFactor::SrcAlpha, boo::BlendFactor::InvSrcAlpha,
|
||||||
|
boo::Primitive::TriStrips, boo::ZTest::LEqual,
|
||||||
|
false, true, false, boo::CullMode::None);
|
||||||
|
m_noTexAdditiveZ = ctx.newShaderPipeline(VS_HLSL_NOTEX, FS_HLSL_NOTEX, nullptr, nullptr,
|
||||||
|
nullptr, m_noTexVtxFmt,
|
||||||
|
boo::BlendFactor::SrcAlpha, boo::BlendFactor::One,
|
||||||
|
boo::Primitive::TriStrips, boo::ZTest::LEqual,
|
||||||
|
false, true, false, boo::CullMode::None);
|
||||||
|
|
||||||
return new struct HLSLLineDataBindingFactory;
|
return new struct HLSLLineDataBindingFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -173,6 +173,23 @@ CLineRendererShaders::IDataBindingFactory* CLineRendererShaders::Initialize(boo:
|
||||||
boo::Primitive::TriStrips, boo::ZTest::None,
|
boo::Primitive::TriStrips, boo::ZTest::None,
|
||||||
false, true, false, boo::CullMode::None);
|
false, true, false, boo::CullMode::None);
|
||||||
|
|
||||||
|
m_texAlphaZ = ctx.newShaderPipeline(VS_METAL_TEX, FS_METAL_TEX, nullptr, nullptr, m_texVtxFmt,
|
||||||
|
boo::BlendFactor::SrcAlpha, boo::BlendFactor::InvSrcAlpha,
|
||||||
|
boo::Primitive::TriStrips, boo::ZTest::LEqual,
|
||||||
|
false, true, false, boo::CullMode::None);
|
||||||
|
m_texAdditiveZ = ctx.newShaderPipeline(VS_METAL_TEX, FS_METAL_TEX, nullptr, nullptr, m_texVtxFmt,
|
||||||
|
boo::BlendFactor::SrcAlpha, boo::BlendFactor::One,
|
||||||
|
boo::Primitive::TriStrips, boo::ZTest::LEqual,
|
||||||
|
false, true, false, boo::CullMode::None);
|
||||||
|
m_noTexAlphaZ = ctx.newShaderPipeline(VS_METAL_NOTEX, FS_METAL_NOTEX, nullptr, nullptr, m_noTexVtxFmt,
|
||||||
|
boo::BlendFactor::SrcAlpha, boo::BlendFactor::InvSrcAlpha,
|
||||||
|
boo::Primitive::TriStrips, boo::ZTest::LEqual,
|
||||||
|
false, true, false, boo::CullMode::None);
|
||||||
|
m_noTexAdditiveZ = ctx.newShaderPipeline(VS_METAL_NOTEX, FS_METAL_NOTEX, nullptr, nullptr, m_noTexVtxFmt,
|
||||||
|
boo::BlendFactor::SrcAlpha, boo::BlendFactor::One,
|
||||||
|
boo::Primitive::TriStrips, boo::ZTest::LEqual,
|
||||||
|
false, true, false, boo::CullMode::None);
|
||||||
|
|
||||||
return new struct MetalLineDataBindingFactory;
|
return new struct MetalLineDataBindingFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -59,9 +59,9 @@ CCompoundTargetReticle::SScanReticuleRenderer::SScanReticuleRenderer()
|
||||||
{
|
{
|
||||||
for (int i=0 ; i<2 ; ++i)
|
for (int i=0 ; i<2 ; ++i)
|
||||||
{
|
{
|
||||||
m_lineRenderers[i].emplace(ctx, CLineRenderer::EPrimitiveMode::Lines, 8, nullptr, true);
|
m_lineRenderers[i].emplace(ctx, CLineRenderer::EPrimitiveMode::Lines, 8, nullptr, true, true);
|
||||||
for (int j=0 ; j<4 ; ++j)
|
for (int j=0 ; j<4 ; ++j)
|
||||||
m_stripRenderers[i][j].emplace(ctx, CLineRenderer::EPrimitiveMode::LineStrip, 4, nullptr, true);
|
m_stripRenderers[i][j].emplace(ctx, CLineRenderer::EPrimitiveMode::LineStrip, 4, nullptr, true, true);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
@ -415,13 +415,13 @@ void CCompoundTargetReticle::UpdateNextLockOnGroup(float dt, const CStateManager
|
||||||
nextTargetId = mgr.GetPlayer().GetOrbitTargetId();
|
nextTargetId = mgr.GetPlayer().GetOrbitTargetId();
|
||||||
if (nextTargetId != xf2_nextTargetId)
|
if (nextTargetId != xf2_nextTargetId)
|
||||||
{
|
{
|
||||||
if (xf2_nextTargetId == kInvalidUniqueId)
|
if (nextTargetId == kInvalidUniqueId)
|
||||||
{
|
{
|
||||||
x194_nextGroupA = x174_nextGroupInterp;
|
x194_nextGroupA = x174_nextGroupInterp;
|
||||||
x1b4_nextGroupB = CTargetReticleRenderState(kInvalidUniqueId, 1.f,
|
x1b4_nextGroupB = CTargetReticleRenderState(kInvalidUniqueId, 1.f,
|
||||||
(x20_prevState == EReticleState::XRay || x20_prevState == EReticleState::Thermal) ?
|
(x20_prevState == EReticleState::XRay || x20_prevState == EReticleState::Thermal) ?
|
||||||
x100_laggingTargetPos : xf4_targetPos, 0.f, 1.f, true);
|
x100_laggingTargetPos : xf4_targetPos, 0.f, 1.f, true);
|
||||||
x1d4_nextGroupDur = x1d8_nextGroupTimer = g_tweakTargeting->GetNextLockOnEnterDuration();
|
x1d4_nextGroupDur = x1d8_nextGroupTimer = g_tweakTargeting->GetNextLockOnExitDuration();
|
||||||
xf2_nextTargetId = nextTargetId;
|
xf2_nextTargetId = nextTargetId;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -430,7 +430,7 @@ void CCompoundTargetReticle::UpdateNextLockOnGroup(float dt, const CStateManager
|
||||||
x1b4_nextGroupB = CTargetReticleRenderState(nextTargetId, 1.f, zeus::CVector3f::skZero, 1.f,
|
x1b4_nextGroupB = CTargetReticleRenderState(nextTargetId, 1.f, zeus::CVector3f::skZero, 1.f,
|
||||||
IsGrappleTarget(nextTargetId, mgr) ? g_tweakTargeting->GetGrappleMinClampScale() : 1.f, true);
|
IsGrappleTarget(nextTargetId, mgr) ? g_tweakTargeting->GetGrappleMinClampScale() : 1.f, true);
|
||||||
x1d4_nextGroupDur = x1d8_nextGroupTimer = xf2_nextTargetId == kInvalidUniqueId ?
|
x1d4_nextGroupDur = x1d8_nextGroupTimer = xf2_nextTargetId == kInvalidUniqueId ?
|
||||||
g_tweakTargeting->GetNextLockOnExitDuration() :
|
g_tweakTargeting->GetNextLockOnEnterDuration() :
|
||||||
g_tweakTargeting->GetNextLockOnSwitchDuration();
|
g_tweakTargeting->GetNextLockOnSwitchDuration();
|
||||||
xf2_nextTargetId = nextTargetId;
|
xf2_nextTargetId = nextTargetId;
|
||||||
}
|
}
|
||||||
|
|
|
@ -199,6 +199,7 @@ void CHudDecoInterfaceScan::SetFrameColorValue(float v)
|
||||||
void CHudDecoInterfaceScan::InitializeFlatFrame()
|
void CHudDecoInterfaceScan::InitializeFlatFrame()
|
||||||
{
|
{
|
||||||
x10_loadedScanHudFlat = x4_scanHudFlat.GetObj();
|
x10_loadedScanHudFlat = x4_scanHudFlat.GetObj();
|
||||||
|
x10_loadedScanHudFlat->SetMaxAspect(1.33f);
|
||||||
x10_loadedScanHudFlat->GetFrameCamera()->SetO2WTransform(zeus::CTransform::Translate(x20c_camPos));
|
x10_loadedScanHudFlat->GetFrameCamera()->SetO2WTransform(zeus::CTransform::Translate(x20c_camPos));
|
||||||
x258_flat_basewidget_scanguage = x10_loadedScanHudFlat->FindWidget("basewidget_scanguage");
|
x258_flat_basewidget_scanguage = x10_loadedScanHudFlat->FindWidget("basewidget_scanguage");
|
||||||
x258_flat_basewidget_scanguage->SetVisibility(false, ETraversalMode::Children);
|
x258_flat_basewidget_scanguage->SetVisibility(false, ETraversalMode::Children);
|
||||||
|
|
|
@ -109,6 +109,8 @@ class CRasterFont
|
||||||
if (chr == xc_glyphs[i].first)
|
if (chr == xc_glyphs[i].first)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
if (i == xc_glyphs.size())
|
||||||
|
return nullptr;
|
||||||
return &xc_glyphs[i].second;
|
return &xc_glyphs[i].second;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -81,6 +81,7 @@ CScanDisplay::CScanDisplay(const CGuiFrame& selHud)
|
||||||
x0_dataDot = g_SimplePool->GetObj("TXTR_DataDot");
|
x0_dataDot = g_SimplePool->GetObj("TXTR_DataDot");
|
||||||
for (int i=0 ; i<4 ; ++i)
|
for (int i=0 ; i<4 ; ++i)
|
||||||
xbc_dataDots.emplace_back(x0_dataDot);
|
xbc_dataDots.emplace_back(x0_dataDot);
|
||||||
|
x170_paneStates.resize(4);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CScanDisplay::ProcessInput(const CFinalInput& input)
|
void CScanDisplay::ProcessInput(const CFinalInput& input)
|
||||||
|
@ -340,10 +341,13 @@ void CScanDisplay::Update(float dt, float scanningTime)
|
||||||
if (x1b4_scanComplete || x14_scannableInfo->GetCategory() == 0)
|
if (x1b4_scanComplete || x14_scannableInfo->GetCategory() == 0)
|
||||||
{
|
{
|
||||||
xc_state = EScanState::ViewingScan;
|
xc_state = EScanState::ViewingScan;
|
||||||
|
x1b0_aPulse = x1a4_xAlpha = 1.f;
|
||||||
CSfxManager::SfxStart(1417, 1.f, 0.f, false, 0x7f, false, kInvalidAreaId);
|
CSfxManager::SfxStart(1417, 1.f, 0.f, false, 0x7f, false, kInvalidAreaId);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
xc_state = EScanState::DownloadComplete;
|
||||||
|
x1b0_aPulse = x1a4_xAlpha = 1.f;
|
||||||
xa8_message->TextSupport().SetText(std::u16string(g_MainStringTable->GetString(29)) +
|
xa8_message->TextSupport().SetText(std::u16string(g_MainStringTable->GetString(29)) +
|
||||||
g_MainStringTable->GetString(x14_scannableInfo->GetCategory() + 30) +
|
g_MainStringTable->GetString(x14_scannableInfo->GetCategory() + 30) +
|
||||||
g_MainStringTable->GetString(30));
|
g_MainStringTable->GetString(30));
|
||||||
|
|
|
@ -36,6 +36,12 @@ CGBASupport::CGBASupport()
|
||||||
x30_dvdReq = AsyncRead(x2c_buffer.get(), x28_fileSize);
|
x30_dvdReq = AsyncRead(x2c_buffer.get(), x28_fileSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CGBASupport::~CGBASupport()
|
||||||
|
{
|
||||||
|
if (x30_dvdReq)
|
||||||
|
x30_dvdReq->PostCancelRequest();
|
||||||
|
}
|
||||||
|
|
||||||
u8 CGBASupport::CalculateFusionJBusChecksum(const u8* data, size_t len)
|
u8 CGBASupport::CalculateFusionJBusChecksum(const u8* data, size_t len)
|
||||||
{
|
{
|
||||||
u32 sum = -1;
|
u32 sum = -1;
|
||||||
|
|
|
@ -40,6 +40,7 @@ public:
|
||||||
static void GlobalPoll();
|
static void GlobalPoll();
|
||||||
|
|
||||||
CGBASupport();
|
CGBASupport();
|
||||||
|
~CGBASupport();
|
||||||
bool PollResponse();
|
bool PollResponse();
|
||||||
void Update(float dt);
|
void Update(float dt);
|
||||||
bool IsReady();
|
bool IsReady();
|
||||||
|
|
|
@ -29,6 +29,12 @@ CPauseScreen::CPauseScreen(ESubScreen subscreen,
|
||||||
x7c_screens.resize(2);
|
x7c_screens.resize(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CPauseScreen::~CPauseScreen()
|
||||||
|
{
|
||||||
|
if (x60_loadTok)
|
||||||
|
x60_loadTok->PostCancelRequest();
|
||||||
|
}
|
||||||
|
|
||||||
std::unique_ptr<CPauseScreenBase> CPauseScreen::BuildPauseSubScreen(ESubScreen subscreen,
|
std::unique_ptr<CPauseScreenBase> CPauseScreen::BuildPauseSubScreen(ESubScreen subscreen,
|
||||||
const CStateManager& mgr,
|
const CStateManager& mgr,
|
||||||
CGuiFrame& frame) const
|
CGuiFrame& frame) const
|
||||||
|
|
|
@ -64,6 +64,7 @@ private:
|
||||||
void TransitionComplete();
|
void TransitionComplete();
|
||||||
public:
|
public:
|
||||||
CPauseScreen(ESubScreen subscreen, const CDependencyGroup& suitDgrp, const CDependencyGroup& ballDgrp);
|
CPauseScreen(ESubScreen subscreen, const CDependencyGroup& suitDgrp, const CDependencyGroup& ballDgrp);
|
||||||
|
~CPauseScreen();
|
||||||
void ProcessControllerInput(const CStateManager& mgr, const CFinalInput& input);
|
void ProcessControllerInput(const CStateManager& mgr, const CFinalInput& input);
|
||||||
void Update(float dt, const CStateManager& mgr, CRandom16& rand, CArchitectureQueue& archQueue);
|
void Update(float dt, const CStateManager& mgr, CRandom16& rand, CArchitectureQueue& archQueue);
|
||||||
void PreDraw();
|
void PreDraw();
|
||||||
|
|
|
@ -495,6 +495,9 @@ CGameArea::CGameArea(CAssetId mreaId)
|
||||||
|
|
||||||
CGameArea::~CGameArea()
|
CGameArea::~CGameArea()
|
||||||
{
|
{
|
||||||
|
for (auto& lt : xf8_loadTransactions)
|
||||||
|
lt->PostCancelRequest();
|
||||||
|
|
||||||
if (xf0_24_postConstructed)
|
if (xf0_24_postConstructed)
|
||||||
RemoveStaticGeometry();
|
RemoveStaticGeometry();
|
||||||
else
|
else
|
||||||
|
|
|
@ -4674,7 +4674,7 @@ TUniqueId CPlayer::FindBestOrbitableObject(const std::vector<TUniqueId>& ids,
|
||||||
mgr.GetPlayerState()->GetCurrentVisor() != CPlayerState::EPlayerVisor::Scan)
|
mgr.GetPlayerState()->GetCurrentVisor() != CPlayerState::EPlayerVisor::Scan)
|
||||||
{
|
{
|
||||||
rstl::reserved_vector<TUniqueId, 1024> nearList;
|
rstl::reserved_vector<TUniqueId, 1024> nearList;
|
||||||
TUniqueId bestId = kInvalidUniqueId;
|
TUniqueId idOut = kInvalidUniqueId;
|
||||||
eyeToOrbit.normalize();
|
eyeToOrbit.normalize();
|
||||||
mgr.BuildNearList(nearList, eyePos, eyeToOrbit, eyeToOrbitMag,
|
mgr.BuildNearList(nearList, eyePos, eyeToOrbit, eyeToOrbitMag,
|
||||||
OccluderFilter, act.GetPtr());
|
OccluderFilter, act.GetPtr());
|
||||||
|
@ -4708,7 +4708,7 @@ TUniqueId CPlayer::FindBestOrbitableObject(const std::vector<TUniqueId>& ids,
|
||||||
|
|
||||||
eyeToOrbit.normalize();
|
eyeToOrbit.normalize();
|
||||||
CRayCastResult result =
|
CRayCastResult result =
|
||||||
mgr.RayWorldIntersection(bestId, eyePos, eyeToOrbit, eyeToOrbitMag,
|
mgr.RayWorldIntersection(idOut, eyePos, eyeToOrbit, eyeToOrbitMag,
|
||||||
LineOfSightFilter, nearList);
|
LineOfSightFilter, nearList);
|
||||||
if (result.IsInvalid())
|
if (result.IsInvalid())
|
||||||
{
|
{
|
||||||
|
@ -4730,7 +4730,7 @@ TUniqueId CPlayer::FindBestOrbitableObject(const std::vector<TUniqueId>& ids,
|
||||||
if (posInBoxMagSq < minPosInBoxMagSq)
|
if (posInBoxMagSq < minPosInBoxMagSq)
|
||||||
{
|
{
|
||||||
rstl::reserved_vector<TUniqueId, 1024> nearList;
|
rstl::reserved_vector<TUniqueId, 1024> nearList;
|
||||||
TUniqueId bestId = kInvalidUniqueId;
|
TUniqueId idOut = kInvalidUniqueId;
|
||||||
eyeToOrbit.normalize();
|
eyeToOrbit.normalize();
|
||||||
mgr.BuildNearList(nearList, eyePos, eyeToOrbit, eyeToOrbitMag,
|
mgr.BuildNearList(nearList, eyePos, eyeToOrbit, eyeToOrbitMag,
|
||||||
OccluderFilter, act.GetPtr());
|
OccluderFilter, act.GetPtr());
|
||||||
|
@ -4765,7 +4765,7 @@ TUniqueId CPlayer::FindBestOrbitableObject(const std::vector<TUniqueId>& ids,
|
||||||
|
|
||||||
eyeToOrbit.normalize();
|
eyeToOrbit.normalize();
|
||||||
CRayCastResult result =
|
CRayCastResult result =
|
||||||
mgr.RayWorldIntersection(bestId, eyePos, eyeToOrbit, eyeToOrbitMag,
|
mgr.RayWorldIntersection(idOut, eyePos, eyeToOrbit, eyeToOrbitMag,
|
||||||
LineOfSightFilter, nearList);
|
LineOfSightFilter, nearList);
|
||||||
if (result.IsInvalid())
|
if (result.IsInvalid())
|
||||||
{
|
{
|
||||||
|
@ -4960,6 +4960,8 @@ void CPlayer::UpdateOrbitInput(const CFinalInput& input, CStateManager& mgr)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
#else
|
||||||
|
m_deferredOrbitObject = ControlMapper::GetPressInput(ControlMapper::ECommands::OrbitObject, input);
|
||||||
#endif
|
#endif
|
||||||
if (ControlMapper::GetPressInput(ControlMapper::ECommands::OrbitFar, input))
|
if (ControlMapper::GetPressInput(ControlMapper::ECommands::OrbitFar, input))
|
||||||
OrbitPoint(EPlayerOrbitType::Far, mgr);
|
OrbitPoint(EPlayerOrbitType::Far, mgr);
|
||||||
|
@ -4996,8 +4998,9 @@ void CPlayer::UpdateOrbitInput(const CFinalInput& input, CStateManager& mgr)
|
||||||
UpdateOrbitSelection(input, mgr);
|
UpdateOrbitSelection(input, mgr);
|
||||||
break;
|
break;
|
||||||
case EPlayerOrbitState::OrbitPoint:
|
case EPlayerOrbitState::OrbitPoint:
|
||||||
if (ControlMapper::GetPressInput(ControlMapper::ECommands::OrbitObject, input))
|
if (ControlMapper::GetPressInput(ControlMapper::ECommands::OrbitObject, input) || m_deferredOrbitObject)
|
||||||
{
|
{
|
||||||
|
m_deferredOrbitObject = false;
|
||||||
SetOrbitTargetId(FindOrbitTargetId(mgr), mgr);
|
SetOrbitTargetId(FindOrbitTargetId(mgr), mgr);
|
||||||
if (x310_orbitTargetId != kInvalidUniqueId)
|
if (x310_orbitTargetId != kInvalidUniqueId)
|
||||||
{
|
{
|
||||||
|
@ -5033,8 +5036,9 @@ void CPlayer::UpdateOrbitInput(const CFinalInput& input, CStateManager& mgr)
|
||||||
UpdateOrbitPosition(g_tweakPlayer->GetOrbitNormalDistance(int(x308_orbitType)), mgr);
|
UpdateOrbitPosition(g_tweakPlayer->GetOrbitNormalDistance(int(x308_orbitType)), mgr);
|
||||||
break;
|
break;
|
||||||
case EPlayerOrbitState::OrbitCarcass:
|
case EPlayerOrbitState::OrbitCarcass:
|
||||||
if (ControlMapper::GetPressInput(ControlMapper::ECommands::OrbitObject, input))
|
if (ControlMapper::GetPressInput(ControlMapper::ECommands::OrbitObject, input) || m_deferredOrbitObject)
|
||||||
{
|
{
|
||||||
|
m_deferredOrbitObject = false;
|
||||||
SetOrbitTargetId(FindOrbitTargetId(mgr), mgr);
|
SetOrbitTargetId(FindOrbitTargetId(mgr), mgr);
|
||||||
if (x310_orbitTargetId != kInvalidUniqueId)
|
if (x310_orbitTargetId != kInvalidUniqueId)
|
||||||
{
|
{
|
||||||
|
@ -5063,6 +5067,8 @@ void CPlayer::UpdateOrbitInput(const CFinalInput& input, CStateManager& mgr)
|
||||||
{
|
{
|
||||||
switch (x304_orbitState)
|
switch (x304_orbitState)
|
||||||
{
|
{
|
||||||
|
case EPlayerOrbitState::NoOrbit:
|
||||||
|
break;
|
||||||
case EPlayerOrbitState::OrbitObject:
|
case EPlayerOrbitState::OrbitObject:
|
||||||
if (TCastToConstPtr<CScriptGrapplePoint> point = mgr.GetObjectById(x310_orbitTargetId))
|
if (TCastToConstPtr<CScriptGrapplePoint> point = mgr.GetObjectById(x310_orbitTargetId))
|
||||||
BreakGrapple(EPlayerOrbitRequest::Default, mgr);
|
BreakGrapple(EPlayerOrbitRequest::Default, mgr);
|
||||||
|
|
|
@ -241,6 +241,7 @@ private:
|
||||||
EPlayerZoneType x334_orbitType = EPlayerZoneType::Ellipse;
|
EPlayerZoneType x334_orbitType = EPlayerZoneType::Ellipse;
|
||||||
u32 x338_ = 1;
|
u32 x338_ = 1;
|
||||||
TUniqueId x33c_orbitNextTargetId = kInvalidUniqueId;
|
TUniqueId x33c_orbitNextTargetId = kInvalidUniqueId;
|
||||||
|
bool m_deferredOrbitObject = false;
|
||||||
float x340_ = 0.f;
|
float x340_ = 0.f;
|
||||||
std::vector<TUniqueId> x344_nearbyOrbitObjects;
|
std::vector<TUniqueId> x344_nearbyOrbitObjects;
|
||||||
std::vector<TUniqueId> x354_onScreenOrbitObjects;
|
std::vector<TUniqueId> x354_onScreenOrbitObjects;
|
||||||
|
|
|
@ -25,6 +25,12 @@ CDummyWorld::CDummyWorld(CAssetId mlvlId, bool loadMap) : x4_loadMap(loadMap), x
|
||||||
x30_loadToken = g_ResFactory->LoadResourceAsync(tag, x34_loadBuf.get());
|
x30_loadToken = g_ResFactory->LoadResourceAsync(tag, x34_loadBuf.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CDummyWorld::~CDummyWorld()
|
||||||
|
{
|
||||||
|
if (x30_loadToken)
|
||||||
|
x30_loadToken->PostCancelRequest();
|
||||||
|
}
|
||||||
|
|
||||||
CAssetId CDummyWorld::IGetWorldAssetId() const { return xc_mlvlId; }
|
CAssetId CDummyWorld::IGetWorldAssetId() const { return xc_mlvlId; }
|
||||||
|
|
||||||
CAssetId CDummyWorld::IGetStringTableAssetId() const { return x10_strgId; }
|
CAssetId CDummyWorld::IGetStringTableAssetId() const { return x10_strgId; }
|
||||||
|
|
|
@ -56,6 +56,7 @@ class CDummyWorld : public IWorld
|
||||||
TAreaId x3c_curAreaId = kInvalidAreaId;
|
TAreaId x3c_curAreaId = kInvalidAreaId;
|
||||||
public:
|
public:
|
||||||
CDummyWorld(CAssetId mlvlId, bool loadMap);
|
CDummyWorld(CAssetId mlvlId, bool loadMap);
|
||||||
|
~CDummyWorld();
|
||||||
CAssetId IGetWorldAssetId() const;
|
CAssetId IGetWorldAssetId() const;
|
||||||
CAssetId IGetStringTableAssetId() const;
|
CAssetId IGetStringTableAssetId() const;
|
||||||
CAssetId IGetSaveWorldAssetId() const;
|
CAssetId IGetSaveWorldAssetId() const;
|
||||||
|
|
Loading…
Reference in New Issue