mirror of https://github.com/AxioDL/metaforce.git
Various bug fixes
This commit is contained in:
parent
56a5cfd115
commit
357a7efa9a
|
@ -401,14 +401,14 @@ struct ActorParameters : BigDNA
|
||||||
UniqueID32 xraySkin;
|
UniqueID32 xraySkin;
|
||||||
UniqueID32 thermalModel;
|
UniqueID32 thermalModel;
|
||||||
UniqueID32 thermalSkin;
|
UniqueID32 thermalSkin;
|
||||||
Value<bool> unknown1;
|
Value<bool> globalTimeProvider;
|
||||||
Value<float> unknown2;
|
Value<float> fadeInTime;
|
||||||
Value<float> unknown3;
|
Value<float> fadeOutTime;
|
||||||
VisorParameters visorParameters;
|
VisorParameters visorParameters;
|
||||||
Value<bool> thermalHeat;
|
Value<bool> thermalHeat;
|
||||||
Value<bool> unknown4;
|
Value<bool> renderUnsorted;
|
||||||
Value<bool> unknown5;
|
Value<bool> noSortThermal;
|
||||||
Value<float> unknown6;
|
Value<float> thermalMag;
|
||||||
|
|
||||||
void addCMDLRigPairs(std::unordered_map<UniqueID32, std::pair<UniqueID32, UniqueID32>>& addTo,
|
void addCMDLRigPairs(std::unordered_map<UniqueID32, std::pair<UniqueID32, UniqueID32>>& addTo,
|
||||||
const UniqueID32& cinf) const
|
const UniqueID32& cinf) const
|
||||||
|
|
|
@ -217,6 +217,7 @@ void CSfxManager::KillAll(ESfxChannels chan)
|
||||||
const CSfxHandle& handle = *it;
|
const CSfxHandle& handle = *it;
|
||||||
handle->Stop();
|
handle->Stop();
|
||||||
handle->Release();
|
handle->Release();
|
||||||
|
handle->Close();
|
||||||
it = chanObj.x48_handles.erase(it);
|
it = chanObj.x48_handles.erase(it);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -248,6 +249,7 @@ void CSfxManager::TurnOffChannel(ESfxChannels chan)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
handle->Stop();
|
handle->Stop();
|
||||||
|
handle->Close();
|
||||||
it = chanObj.x48_handles.erase(it);
|
it = chanObj.x48_handles.erase(it);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -260,6 +262,7 @@ void CSfxManager::TurnOffChannel(ESfxChannels chan)
|
||||||
if (!handle->IsLooped())
|
if (!handle->IsLooped())
|
||||||
{
|
{
|
||||||
handle->Release();
|
handle->Release();
|
||||||
|
handle->Close();
|
||||||
it = chanObj.x48_handles.erase(it);
|
it = chanObj.x48_handles.erase(it);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -393,6 +396,7 @@ void CSfxManager::StopSound(const CSfxHandle& handle)
|
||||||
handle->Stop();
|
handle->Stop();
|
||||||
handle->Release();
|
handle->Release();
|
||||||
CSfxChannel& chanObj = m_channels[int(m_currentChannel)];
|
CSfxChannel& chanObj = m_channels[int(m_currentChannel)];
|
||||||
|
handle->Close();
|
||||||
chanObj.x48_handles.erase(handle);
|
chanObj.x48_handles.erase(handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -500,6 +504,7 @@ void CSfxManager::StopAndRemoveAllEmitters()
|
||||||
const CSfxHandle& handle = *it;
|
const CSfxHandle& handle = *it;
|
||||||
handle->Stop();
|
handle->Stop();
|
||||||
handle->Release();
|
handle->Release();
|
||||||
|
handle->Close();
|
||||||
it = chanObj.x48_handles.erase(it);
|
it = chanObj.x48_handles.erase(it);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -646,6 +651,7 @@ void CSfxManager::Update(float dt)
|
||||||
{
|
{
|
||||||
handle->Stop();
|
handle->Stop();
|
||||||
m_doUpdate = true;
|
m_doUpdate = true;
|
||||||
|
handle->Close();
|
||||||
it = chanObj.x48_handles.erase(it);
|
it = chanObj.x48_handles.erase(it);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -675,6 +681,7 @@ void CSfxManager::Update(float dt)
|
||||||
if (handle->IsPlaying())
|
if (handle->IsPlaying())
|
||||||
{
|
{
|
||||||
handle->Stop();
|
handle->Stop();
|
||||||
|
handle->Close();
|
||||||
chanObj.x48_handles.erase(handle);
|
chanObj.x48_handles.erase(handle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -684,6 +691,7 @@ void CSfxManager::Update(float dt)
|
||||||
if (handle->IsPlaying() && !handle->IsInArea())
|
if (handle->IsPlaying() && !handle->IsInArea())
|
||||||
{
|
{
|
||||||
handle->Stop();
|
handle->Stop();
|
||||||
|
handle->Close();
|
||||||
chanObj.x48_handles.erase(handle);
|
chanObj.x48_handles.erase(handle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -707,6 +715,7 @@ void CSfxManager::Update(float dt)
|
||||||
handle->Stop();
|
handle->Stop();
|
||||||
handle->Release();
|
handle->Release();
|
||||||
m_doUpdate = true;
|
m_doUpdate = true;
|
||||||
|
handle->Close();
|
||||||
it = chanObj.x48_handles.erase(it);
|
it = chanObj.x48_handles.erase(it);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,10 +82,11 @@ public:
|
||||||
bool x14_25_isPlaying:1;
|
bool x14_25_isPlaying:1;
|
||||||
bool x14_26_looped:1;
|
bool x14_26_looped:1;
|
||||||
bool x14_27_inArea:1;
|
bool x14_27_inArea:1;
|
||||||
bool x14_28_available:1;
|
bool x14_28_isReleased:1;
|
||||||
bool x14_29_useAcoustics:1;
|
bool x14_29_useAcoustics:1;
|
||||||
protected:
|
protected:
|
||||||
bool m_isEmitter:1;
|
bool m_isEmitter:1;
|
||||||
|
bool m_isClosed:1;
|
||||||
public:
|
public:
|
||||||
virtual ~CBaseSfxWrapper() = default;
|
virtual ~CBaseSfxWrapper() = default;
|
||||||
virtual void SetActive(bool v) { x14_24_isActive = v; }
|
virtual void SetActive(bool v) { x14_24_isActive = v; }
|
||||||
|
@ -112,15 +113,19 @@ public:
|
||||||
virtual void SetReverb(float rev)=0;
|
virtual void SetReverb(float rev)=0;
|
||||||
bool IsEmitter() const { return m_isEmitter; }
|
bool IsEmitter() const { return m_isEmitter; }
|
||||||
|
|
||||||
void Release() { x14_28_available = true; x4_timeRemaining = 15.f; }
|
void Release() { x14_28_isReleased = true; x4_timeRemaining = 15.f; }
|
||||||
bool Available() const { return x14_28_available; }
|
bool IsReleased() const { return x14_28_isReleased; }
|
||||||
|
|
||||||
|
void Close() { m_isClosed = true; }
|
||||||
|
bool IsClosed() const { return m_isClosed; }
|
||||||
|
|
||||||
float GetTimeRemaining() const { return x4_timeRemaining; }
|
float GetTimeRemaining() const { return x4_timeRemaining; }
|
||||||
void SetTimeRemaining(float t) { x4_timeRemaining = t; }
|
void SetTimeRemaining(float t) { x4_timeRemaining = t; }
|
||||||
|
|
||||||
CBaseSfxWrapper(bool looped, s16 prio, /*const CSfxHandle& handle,*/ bool useAcoustics, TAreaId area)
|
CBaseSfxWrapper(bool looped, s16 prio, /*const CSfxHandle& handle,*/ bool useAcoustics, TAreaId area)
|
||||||
: x8_rank(0), xa_prio(prio), /*xc_handle(handle),*/ x10_area(area), x14_24_isActive(true), x14_25_isPlaying(false),
|
: x8_rank(0), xa_prio(prio), /*xc_handle(handle),*/ x10_area(area), x14_24_isActive(true), x14_25_isPlaying(false),
|
||||||
x14_26_looped(looped), x14_27_inArea(true), x14_28_available(false), x14_29_useAcoustics(useAcoustics) {}
|
x14_26_looped(looped), x14_27_inArea(true), x14_28_isReleased(false), m_isClosed(false),
|
||||||
|
x14_29_useAcoustics(useAcoustics) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class CSfxEmitterWrapper : public CBaseSfxWrapper
|
class CSfxEmitterWrapper : public CBaseSfxWrapper
|
||||||
|
|
|
@ -509,7 +509,7 @@ private:
|
||||||
std::string x60_fileName; // arg1
|
std::string x60_fileName; // arg1
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
u8 dummy = 0;
|
u32 dummy = 0;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
bool x70_24_unclaimed : 1;
|
bool x70_24_unclaimed : 1;
|
||||||
|
|
|
@ -12,7 +12,7 @@ CGameCamera::CGameCamera(TUniqueId uid, bool active, std::string_view name, cons
|
||||||
: CActor(uid, active, name, info, xf, CModelData::CModelDataNull(), CMaterialList(EMaterialTypes::NoStepLogic),
|
: CActor(uid, active, name, info, xf, CModelData::CModelDataNull(), CMaterialList(EMaterialTypes::NoStepLogic),
|
||||||
CActorParameters::None(), kInvalidUniqueId)
|
CActorParameters::None(), kInvalidUniqueId)
|
||||||
, xe8_watchedObject(watchedId)
|
, xe8_watchedObject(watchedId)
|
||||||
, x12c_(xf)
|
, x12c_origXf(xf)
|
||||||
, x15c_currentFov(fovy)
|
, x15c_currentFov(fovy)
|
||||||
, x160_znear(znear)
|
, x160_znear(znear)
|
||||||
, x164_zfar(zfar)
|
, x164_zfar(zfar)
|
||||||
|
@ -20,8 +20,8 @@ CGameCamera::CGameCamera(TUniqueId uid, bool active, std::string_view name, cons
|
||||||
, x16c_controllerIdx(controllerIdx)
|
, x16c_controllerIdx(controllerIdx)
|
||||||
, x170_24_perspDirty(true)
|
, x170_24_perspDirty(true)
|
||||||
, x170_25_disablesInput(disableInput)
|
, x170_25_disablesInput(disableInput)
|
||||||
, x180_(fovy)
|
, x180_perspInterpStartFov(fovy)
|
||||||
, x184_fov(fovy)
|
, x184_perspInterpEndFov(fovy)
|
||||||
{
|
{
|
||||||
|
|
||||||
xe7_29_drawEnabled = false;
|
xe7_29_drawEnabled = false;
|
||||||
|
@ -108,18 +108,19 @@ void CGameCamera::UpdatePerspective(float dt)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (x178_ <= 0.f)
|
if (x178_perspInterpRemTime <= 0.f)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
x178_ -= dt;
|
x178_perspInterpRemTime -= dt;
|
||||||
if (x178_ > 0.f)
|
if (x178_perspInterpRemTime <= 0.f)
|
||||||
{
|
{
|
||||||
x15c_currentFov = x184_fov;
|
x15c_currentFov = x184_perspInterpEndFov;
|
||||||
x170_24_perspDirty = true;
|
x170_24_perspDirty = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
x15c_currentFov = zeus::clamp(0.f, (dt / x17c_), 1.f) + ((x180_ - x184_fov) * x184_fov);
|
x15c_currentFov = zeus::clamp(0.f, (x178_perspInterpRemTime / x17c_perspInterpDur), 1.f) *
|
||||||
|
(x180_perspInterpStartFov - x184_perspInterpEndFov) + x184_perspInterpEndFov;
|
||||||
x170_24_perspDirty = true;
|
x170_24_perspDirty = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -130,16 +131,16 @@ void CGameCamera::SetFovInterpolation(float start, float fov, float time, float
|
||||||
{
|
{
|
||||||
x15c_currentFov = fov;
|
x15c_currentFov = fov;
|
||||||
x170_24_perspDirty = true;
|
x170_24_perspDirty = true;
|
||||||
x184_fov = fov;
|
x184_perspInterpEndFov = fov;
|
||||||
x178_ = x174_delayTime = 0.f;
|
x178_perspInterpRemTime = x174_delayTime = 0.f;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
x174_delayTime = std::max(0.f, delayTime);
|
x174_delayTime = std::max(0.f, delayTime);
|
||||||
x17c_ = time;
|
x17c_perspInterpDur = time;
|
||||||
x178_ = time;
|
x178_perspInterpRemTime = time;
|
||||||
x180_ = start;
|
x180_perspInterpStartFov = start;
|
||||||
x184_fov = fov;
|
x184_perspInterpEndFov = fov;
|
||||||
x15c_currentFov = start;
|
x15c_currentFov = start;
|
||||||
x170_24_perspDirty = true;
|
x170_24_perspDirty = true;
|
||||||
}
|
}
|
||||||
|
@ -147,12 +148,12 @@ void CGameCamera::SetFovInterpolation(float start, float fov, float time, float
|
||||||
|
|
||||||
void CGameCamera::SkipFovInterpolation()
|
void CGameCamera::SkipFovInterpolation()
|
||||||
{
|
{
|
||||||
if (x178_ > 0)
|
if (x178_perspInterpRemTime > 0)
|
||||||
{
|
{
|
||||||
x15c_currentFov = x184_fov;
|
x15c_currentFov = x184_perspInterpEndFov;
|
||||||
x170_24_perspDirty = true;
|
x170_24_perspDirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
x178_ = x174_delayTime = 0.f;
|
x178_perspInterpRemTime = x174_delayTime = 0.f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ class CGameCamera : public CActor
|
||||||
protected:
|
protected:
|
||||||
TUniqueId xe8_watchedObject;
|
TUniqueId xe8_watchedObject;
|
||||||
zeus::CMatrix4f xec_perspectiveMatrix;
|
zeus::CMatrix4f xec_perspectiveMatrix;
|
||||||
zeus::CTransform x12c_;
|
zeus::CTransform x12c_origXf;
|
||||||
float x15c_currentFov;
|
float x15c_currentFov;
|
||||||
float x160_znear;
|
float x160_znear;
|
||||||
float x164_zfar;
|
float x164_zfar;
|
||||||
|
@ -25,10 +25,10 @@ protected:
|
||||||
bool x170_24_perspDirty : 1;
|
bool x170_24_perspDirty : 1;
|
||||||
bool x170_25_disablesInput : 1;
|
bool x170_25_disablesInput : 1;
|
||||||
float x174_delayTime = 0.f;
|
float x174_delayTime = 0.f;
|
||||||
float x178_ = 0.f;
|
float x178_perspInterpRemTime = 0.f;
|
||||||
float x17c_ = 0.f;
|
float x17c_perspInterpDur = 0.f;
|
||||||
float x180_;
|
float x180_perspInterpStartFov;
|
||||||
float x184_fov;
|
float x184_perspInterpEndFov;
|
||||||
public:
|
public:
|
||||||
CGameCamera(TUniqueId, bool active, std::string_view name, const CEntityInfo& info, const zeus::CTransform& xf,
|
CGameCamera(TUniqueId, bool active, std::string_view name, const CEntityInfo& info, const zeus::CTransform& xf,
|
||||||
float fov, float nearz, float farz, float aspect, TUniqueId watchedId, bool disableInput,
|
float fov, float nearz, float farz, float aspect, TUniqueId watchedId, bool disableInput,
|
||||||
|
|
|
@ -2006,7 +2006,7 @@ CFrontEndUI::CFrontEndUI()
|
||||||
|
|
||||||
m->ResetGameState();
|
m->ResetGameState();
|
||||||
g_GameState->SetCurrentWorldId(g_ResFactory->TranslateOriginalToNew(g_DefaultWorldTag.id));
|
g_GameState->SetCurrentWorldId(g_ResFactory->TranslateOriginalToNew(g_DefaultWorldTag.id));
|
||||||
g_GameState->CurrentWorldState().SetAreaId(0);
|
g_GameState->CurrentWorldState().SetAreaId(7);
|
||||||
g_GameState->GameOptions().ResetToDefaults();
|
g_GameState->GameOptions().ResetToDefaults();
|
||||||
g_GameState->WriteBackupBuf();
|
g_GameState->WriteBackupBuf();
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ class CActorParameters
|
||||||
{
|
{
|
||||||
friend class ScriptLoader;
|
friend class ScriptLoader;
|
||||||
friend class CActor;
|
friend class CActor;
|
||||||
|
friend class CScriptActor;
|
||||||
CLightParameters x0_lightParms;
|
CLightParameters x0_lightParms;
|
||||||
CScannableParameters x40_scanParms;
|
CScannableParameters x40_scanParms;
|
||||||
std::pair<CAssetId, CAssetId> x44_xrayAssets = {};
|
std::pair<CAssetId, CAssetId> x44_xrayAssets = {};
|
||||||
|
@ -28,8 +29,8 @@ class CActorParameters
|
||||||
};
|
};
|
||||||
u32 _dummy = 0;
|
u32 _dummy = 0;
|
||||||
};
|
};
|
||||||
float x5c_ = 0.f;
|
float x5c_fadeInTime = 0.f;
|
||||||
float x60_ = 0.f;
|
float x60_fadeOutTime = 0.f;
|
||||||
float x64_thermalMag = 0.f;
|
float x64_thermalMag = 0.f;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -39,7 +40,8 @@ public:
|
||||||
const std::pair<CAssetId, CAssetId>& xrayAssets,
|
const std::pair<CAssetId, CAssetId>& xrayAssets,
|
||||||
const std::pair<CAssetId, CAssetId>& thermalAssets,
|
const std::pair<CAssetId, CAssetId>& thermalAssets,
|
||||||
const CVisorParameters& visorParms, bool globalTimeProvider, bool thermalHeat,
|
const CVisorParameters& visorParms, bool globalTimeProvider, bool thermalHeat,
|
||||||
bool renderUnsorted, bool noSortThermal)
|
bool renderUnsorted, bool noSortThermal,
|
||||||
|
float fadeInTime, float fadeOutTime, float thermalMag)
|
||||||
: x0_lightParms(lightParms)
|
: x0_lightParms(lightParms)
|
||||||
, x40_scanParms(scanParms)
|
, x40_scanParms(scanParms)
|
||||||
, x44_xrayAssets(xrayAssets)
|
, x44_xrayAssets(xrayAssets)
|
||||||
|
@ -49,6 +51,9 @@ public:
|
||||||
, x58_25_thermalHeat(thermalHeat)
|
, x58_25_thermalHeat(thermalHeat)
|
||||||
, x58_26_renderUnsorted(renderUnsorted)
|
, x58_26_renderUnsorted(renderUnsorted)
|
||||||
, x58_27_noSortThermal(noSortThermal)
|
, x58_27_noSortThermal(noSortThermal)
|
||||||
|
, x5c_fadeInTime(fadeInTime)
|
||||||
|
, x60_fadeOutTime(fadeOutTime)
|
||||||
|
, x64_thermalMag(thermalMag)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
CActorParameters Scannable(const CScannableParameters& sParms) const
|
CActorParameters Scannable(const CScannableParameters& sParms) const
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include "CScriptColorModulate.hpp"
|
#include "CScriptColorModulate.hpp"
|
||||||
#include "Character/IAnimReader.hpp"
|
#include "Character/IAnimReader.hpp"
|
||||||
#include "TCastTo.hpp"
|
#include "TCastTo.hpp"
|
||||||
|
#include "CActorParameters.hpp"
|
||||||
|
|
||||||
namespace urde
|
namespace urde
|
||||||
{
|
{
|
||||||
|
@ -20,6 +21,8 @@ CScriptActor::CScriptActor(TUniqueId uid, std::string_view name, const CEntityIn
|
||||||
, x258_initialHealth(hInfo)
|
, x258_initialHealth(hInfo)
|
||||||
, x260_currentHealth(hInfo)
|
, x260_currentHealth(hInfo)
|
||||||
, x268_damageVulnerability(dVuln)
|
, x268_damageVulnerability(dVuln)
|
||||||
|
, x2d0_fadeInTime(actParms.x5c_fadeInTime)
|
||||||
|
, x2d4_fadeOutTime(actParms.x60_fadeOutTime)
|
||||||
, x2d8_shaderIdx(shaderIdx)
|
, x2d8_shaderIdx(shaderIdx)
|
||||||
, x2dc_xrayAlpha(xrayAlpha)
|
, x2dc_xrayAlpha(xrayAlpha)
|
||||||
{
|
{
|
||||||
|
@ -76,11 +79,11 @@ void CScriptActor::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CSta
|
||||||
if (!GetActive())
|
if (!GetActive())
|
||||||
{
|
{
|
||||||
mgr.SendScriptMsg(this, x8_uid, EScriptObjectMessage::Activate);
|
mgr.SendScriptMsg(this, x8_uid, EScriptObjectMessage::Activate);
|
||||||
CScriptColorModulate::FadeInHelper(mgr, x8_uid, x2d0_alphaMax);
|
CScriptColorModulate::FadeInHelper(mgr, x8_uid, x2d0_fadeInTime);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EScriptObjectMessage::Decrement:
|
case EScriptObjectMessage::Decrement:
|
||||||
CScriptColorModulate::FadeOutHelper(mgr, x8_uid, x2d4_alphaMin);
|
CScriptColorModulate::FadeOutHelper(mgr, x8_uid, x2d4_fadeOutTime);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -14,8 +14,8 @@ protected:
|
||||||
CHealthInfo x258_initialHealth;
|
CHealthInfo x258_initialHealth;
|
||||||
CHealthInfo x260_currentHealth;
|
CHealthInfo x260_currentHealth;
|
||||||
CDamageVulnerability x268_damageVulnerability;
|
CDamageVulnerability x268_damageVulnerability;
|
||||||
float x2d0_alphaMax;
|
float x2d0_fadeInTime;
|
||||||
float x2d4_alphaMin;
|
float x2d4_fadeOutTime;
|
||||||
s32 x2d8_shaderIdx;
|
s32 x2d8_shaderIdx;
|
||||||
float x2dc_xrayAlpha;
|
float x2dc_xrayAlpha;
|
||||||
TUniqueId x2e0_triggerId = kInvalidUniqueId;
|
TUniqueId x2e0_triggerId = kInvalidUniqueId;
|
||||||
|
|
|
@ -273,7 +273,7 @@ void CScriptColorModulate::SetTargetFlags(CStateManager& stateMgr, const CModelF
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TUniqueId CScriptColorModulate::FadeOutHelper(CStateManager& mgr, TUniqueId parent, float dt)
|
TUniqueId CScriptColorModulate::FadeOutHelper(CStateManager& mgr, TUniqueId parent, float fadeTime)
|
||||||
{
|
{
|
||||||
TAreaId aId = mgr.GetNextAreaId();
|
TAreaId aId = mgr.GetNextAreaId();
|
||||||
if (const CEntity* ent = mgr.GetObjectById(parent))
|
if (const CEntity* ent = mgr.GetObjectById(parent))
|
||||||
|
@ -281,7 +281,7 @@ TUniqueId CScriptColorModulate::FadeOutHelper(CStateManager& mgr, TUniqueId pare
|
||||||
|
|
||||||
TUniqueId ret = mgr.AllocateUniqueId();
|
TUniqueId ret = mgr.AllocateUniqueId();
|
||||||
CScriptColorModulate* colMod = new CScriptColorModulate(ret, "", CEntityInfo(aId, CEntity::NullConnectionList),
|
CScriptColorModulate* colMod = new CScriptColorModulate(ret, "", CEntityInfo(aId, CEntity::NullConnectionList),
|
||||||
zeus::CColor(1.f, 1.f, 1.f, 0.f), zeus::CColor(1.f, 1.f, 1.f, 1.f), EBlendMode::Alpha, dt, 0.f,
|
zeus::CColor(1.f, 1.f, 1.f, 1.f), zeus::CColor(1.f, 1.f, 1.f, 0.f), EBlendMode::Alpha, fadeTime, 0.f,
|
||||||
false, false, true, true, false, true);
|
false, false, true, true, false, true);
|
||||||
mgr.AddObject(colMod);
|
mgr.AddObject(colMod);
|
||||||
colMod->x34_parent = parent;
|
colMod->x34_parent = parent;
|
||||||
|
@ -293,7 +293,7 @@ TUniqueId CScriptColorModulate::FadeOutHelper(CStateManager& mgr, TUniqueId pare
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
TUniqueId CScriptColorModulate::FadeInHelper(CStateManager& mgr, TUniqueId parent, float dt)
|
TUniqueId CScriptColorModulate::FadeInHelper(CStateManager& mgr, TUniqueId parent, float fadeTime)
|
||||||
{
|
{
|
||||||
TAreaId aId = mgr.GetNextAreaId();
|
TAreaId aId = mgr.GetNextAreaId();
|
||||||
if (const CEntity* ent = mgr.GetObjectById(parent))
|
if (const CEntity* ent = mgr.GetObjectById(parent))
|
||||||
|
@ -301,7 +301,7 @@ TUniqueId CScriptColorModulate::FadeInHelper(CStateManager& mgr, TUniqueId paren
|
||||||
|
|
||||||
TUniqueId ret = mgr.AllocateUniqueId();
|
TUniqueId ret = mgr.AllocateUniqueId();
|
||||||
CScriptColorModulate* colMod = new CScriptColorModulate(ret, "", CEntityInfo(aId, CEntity::NullConnectionList),
|
CScriptColorModulate* colMod = new CScriptColorModulate(ret, "", CEntityInfo(aId, CEntity::NullConnectionList),
|
||||||
zeus::CColor(1.f, 1.f, 1.f, 1.f), zeus::CColor(1.f, 1.f, 1.f, 0.f), EBlendMode::Alpha, dt, 0.f,
|
zeus::CColor(1.f, 1.f, 1.f, 0.f), zeus::CColor(1.f, 1.f, 1.f, 1.f), EBlendMode::Alpha, fadeTime, 0.f,
|
||||||
false, false, true, true, false, true);
|
false, false, true, true, false, true);
|
||||||
mgr.AddObject(colMod);
|
mgr.AddObject(colMod);
|
||||||
colMod->x34_parent = parent;
|
colMod->x34_parent = parent;
|
||||||
|
|
|
@ -62,8 +62,8 @@ public:
|
||||||
void Think(float, CStateManager &);
|
void Think(float, CStateManager &);
|
||||||
CModelFlags CalculateFlags(const zeus::CColor&) const;
|
CModelFlags CalculateFlags(const zeus::CColor&) const;
|
||||||
void SetTargetFlags(CStateManager&, const CModelFlags&);
|
void SetTargetFlags(CStateManager&, const CModelFlags&);
|
||||||
static TUniqueId FadeOutHelper(CStateManager&, TUniqueId, float);
|
static TUniqueId FadeOutHelper(CStateManager& mgr, TUniqueId obj, float fadetime);
|
||||||
static TUniqueId FadeInHelper(CStateManager&, TUniqueId, float);
|
static TUniqueId FadeInHelper(CStateManager& mgr, TUniqueId obj, float fadetime);
|
||||||
void End(CStateManager&);
|
void End(CStateManager&);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -194,7 +194,7 @@ void CScriptSound::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CSta
|
||||||
break;
|
break;
|
||||||
case EScriptObjectMessage::Activate:
|
case EScriptObjectMessage::Activate:
|
||||||
{
|
{
|
||||||
if(GetActive())
|
if (GetActive())
|
||||||
x11c_24_playRequested = true;
|
x11c_24_playRequested = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -210,7 +210,7 @@ void CScriptSound::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CSta
|
||||||
|
|
||||||
void CScriptSound::PlaySound(CStateManager& mgr)
|
void CScriptSound::PlaySound(CStateManager& mgr)
|
||||||
{
|
{
|
||||||
if ((x11d_24_allowDuplicates || !xec_sfxHandle || !xec_sfxHandle->IsPlaying()) && !x11d_25_processedThisFrame)
|
if ((x11d_24_allowDuplicates || !xec_sfxHandle || xec_sfxHandle->IsClosed()) && !x11d_25_processedThisFrame)
|
||||||
{
|
{
|
||||||
x11d_25_processedThisFrame = true;
|
x11d_25_processedThisFrame = true;
|
||||||
if (x11c_26_nonEmitter)
|
if (x11c_26_nonEmitter)
|
||||||
|
|
|
@ -52,8 +52,9 @@ CScriptStreamedMusic::CScriptStreamedMusic(TUniqueId id, const CEntityInfo& info
|
||||||
x45_fileIsDsp(IsDSPFile(fileName)), x46_loop(loop), x47_music(music),
|
x45_fileIsDsp(IsDSPFile(fileName)), x46_loop(loop), x47_music(music),
|
||||||
x48_fadeIn(fadeIn), x4c_fadeOut(fadeOut), x50_volume(volume)
|
x48_fadeIn(fadeIn), x4c_fadeOut(fadeOut), x50_volume(volume)
|
||||||
{
|
{
|
||||||
while (x34_fileName.find("/audio") != std::string::npos)
|
size_t pos;
|
||||||
x34_fileName.replace(x34_fileName.find("/audio"), std::strlen("/audio"), "/Audio");
|
while ((pos = x34_fileName.find("audio/")) != std::string::npos)
|
||||||
|
x34_fileName.replace(pos, 6, "Audio/");
|
||||||
}
|
}
|
||||||
|
|
||||||
void CScriptStreamedMusic::Stop(CStateManager& mgr)
|
void CScriptStreamedMusic::Stop(CStateManager& mgr)
|
||||||
|
|
|
@ -209,17 +209,17 @@ CActorParameters ScriptLoader::LoadActorParameters(CInputStream& in)
|
||||||
CAssetId infraModel = in.readUint32Big();
|
CAssetId infraModel = in.readUint32Big();
|
||||||
CAssetId infraSkin = in.readUint32Big();
|
CAssetId infraSkin = in.readUint32Big();
|
||||||
|
|
||||||
bool b1 = true;
|
bool globalTimeProvider = true;
|
||||||
if (propCount > 7)
|
if (propCount > 7)
|
||||||
b1 = in.readBool();
|
globalTimeProvider = in.readBool();
|
||||||
|
|
||||||
float f1 = 1.f;
|
float fadeInTime = 1.f;
|
||||||
if (propCount > 8)
|
if (propCount > 8)
|
||||||
f1 = in.readFloatBig();
|
fadeInTime = in.readFloatBig();
|
||||||
|
|
||||||
float f2 = 1.f;
|
float fadeOutTime = 1.f;
|
||||||
if (propCount > 9)
|
if (propCount > 9)
|
||||||
f2 = in.readFloatBig();
|
fadeOutTime = in.readFloatBig();
|
||||||
|
|
||||||
CVisorParameters vParms;
|
CVisorParameters vParms;
|
||||||
if (propCount > 6)
|
if (propCount > 6)
|
||||||
|
@ -229,17 +229,17 @@ CActorParameters ScriptLoader::LoadActorParameters(CInputStream& in)
|
||||||
if (propCount > 10)
|
if (propCount > 10)
|
||||||
thermalHeat = in.readBool();
|
thermalHeat = in.readBool();
|
||||||
|
|
||||||
bool b3 = false;
|
bool renderUnsorted = false;
|
||||||
if (propCount > 11)
|
if (propCount > 11)
|
||||||
b3 = in.readBool();
|
renderUnsorted = in.readBool();
|
||||||
|
|
||||||
bool b4 = false;
|
bool noSortThermal = false;
|
||||||
if (propCount > 12)
|
if (propCount > 12)
|
||||||
b4 = in.readBool();
|
noSortThermal = in.readBool();
|
||||||
|
|
||||||
float f3 = 1.f;
|
float thermalMag = 1.f;
|
||||||
if (propCount > 13)
|
if (propCount > 13)
|
||||||
f3 = in.readFloatBig();
|
thermalMag = in.readFloatBig();
|
||||||
|
|
||||||
std::pair<CAssetId, CAssetId> xray = {};
|
std::pair<CAssetId, CAssetId> xray = {};
|
||||||
if (g_ResFactory->GetResourceTypeById(xrayModel))
|
if (g_ResFactory->GetResourceTypeById(xrayModel))
|
||||||
|
@ -249,7 +249,8 @@ CActorParameters ScriptLoader::LoadActorParameters(CInputStream& in)
|
||||||
if (g_ResFactory->GetResourceTypeById(infraModel))
|
if (g_ResFactory->GetResourceTypeById(infraModel))
|
||||||
infra = {infraModel, infraSkin};
|
infra = {infraModel, infraSkin};
|
||||||
|
|
||||||
return CActorParameters(lParms, sParams, xray, infra, vParms, b1, thermalHeat, b3, b4);
|
return CActorParameters(lParms, sParams, xray, infra, vParms, globalTimeProvider, thermalHeat,
|
||||||
|
renderUnsorted, noSortThermal, fadeInTime, fadeOutTime, thermalMag);
|
||||||
}
|
}
|
||||||
return CActorParameters::None();
|
return CActorParameters::None();
|
||||||
}
|
}
|
||||||
|
|
2
hecl
2
hecl
|
@ -1 +1 @@
|
||||||
Subproject commit 7ae053a6ea6a7b8b40e0e40f2daa362d4c227433
|
Subproject commit 788fa73884d56417d6bc70918983c9d9ac8032b4
|
Loading…
Reference in New Issue