this is madness!
This commit is contained in:
parent
b42456e432
commit
332011cdd1
@ -224,6 +224,11 @@ namespace Components
|
|||||||
|
|
||||||
void AssetHandler::ModifyAsset(Game::XAssetType type, Game::XAssetHeader asset, const std::string& name)
|
void AssetHandler::ModifyAsset(Game::XAssetType type, Game::XAssetHeader asset, const std::string& name)
|
||||||
{
|
{
|
||||||
|
if (name == "impacts/distant_grain"s)
|
||||||
|
{
|
||||||
|
printf("");
|
||||||
|
}
|
||||||
|
|
||||||
Logger::Print("LOADED {}: {}\n", Game::DB_GetXAssetTypeName(type), name);
|
Logger::Print("LOADED {}: {}\n", Game::DB_GetXAssetTypeName(type), name);
|
||||||
if (type == Game::ASSET_TYPE_MATERIAL && (name == "gfx_distortion_knife_trail" || name == "gfx_distortion_heat_far" || name == "gfx_distortion_ring_light" || name == "gfx_distortion_heat") && asset.material->info.sortKey >= 43)
|
if (type == Game::ASSET_TYPE_MATERIAL && (name == "gfx_distortion_knife_trail" || name == "gfx_distortion_heat_far" || name == "gfx_distortion_ring_light" || name == "gfx_distortion_heat") && asset.material->info.sortKey >= 43)
|
||||||
{
|
{
|
||||||
|
@ -3807,7 +3807,7 @@ namespace Components
|
|||||||
{
|
{
|
||||||
if (elem->elemType == FxElemType_461::FX_ELEM_TYPE_TRAIL)
|
if (elem->elemType == FxElemType_461::FX_ELEM_TYPE_TRAIL)
|
||||||
{
|
{
|
||||||
if (extended)
|
if (extended->trailDef)
|
||||||
{
|
{
|
||||||
extended->trailDef = reinterpret_cast<Game::FxTrailDef*>(Game::DB_AllocStreamPos(3));
|
extended->trailDef = reinterpret_cast<Game::FxTrailDef*>(Game::DB_AllocStreamPos(3));
|
||||||
|
|
||||||
@ -3832,7 +3832,7 @@ namespace Components
|
|||||||
{
|
{
|
||||||
static_assert(sizeof(Game::FxSparkFountainDef) == 0x34);
|
static_assert(sizeof(Game::FxSparkFountainDef) == 0x34);
|
||||||
|
|
||||||
if (extended)
|
if (extended->sparkFountainDef)
|
||||||
{
|
{
|
||||||
extended->sparkFountainDef = reinterpret_cast<Game::FxSparkFountainDef*>(Game::DB_AllocStreamPos(3));
|
extended->sparkFountainDef = reinterpret_cast<Game::FxSparkFountainDef*>(Game::DB_AllocStreamPos(3));
|
||||||
Game::Load_Stream(true, extended->sparkFountainDef, sizeof(Game::FxSparkFountainDef));
|
Game::Load_Stream(true, extended->sparkFountainDef, sizeof(Game::FxSparkFountainDef));
|
||||||
@ -3840,7 +3840,7 @@ namespace Components
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (extended)
|
if (extended->unknownDef)
|
||||||
{
|
{
|
||||||
extended->unknownDef = Game::DB_AllocStreamPos(0);
|
extended->unknownDef = Game::DB_AllocStreamPos(0);
|
||||||
Game::Load_Stream(true, extended->unknownDef, 1);
|
Game::Load_Stream(true, extended->unknownDef, 1);
|
||||||
@ -3850,9 +3850,15 @@ namespace Components
|
|||||||
|
|
||||||
void Load_FxElemDef_461(FxElemDef_461* def)
|
void Load_FxElemDef_461(FxElemDef_461* def)
|
||||||
{
|
{
|
||||||
|
const auto fx = **Game::varFxEffectDefHandle;
|
||||||
|
if (fx->name == "impacts/brickimpact_em2"s)
|
||||||
|
{
|
||||||
|
printf("");
|
||||||
|
}
|
||||||
|
|
||||||
static auto varFxElemDef = reinterpret_cast<Game::FxElemDef**>(0x0112B018);
|
static auto varFxElemDef = reinterpret_cast<Game::FxElemDef**>(0x0112B018);
|
||||||
|
|
||||||
Game::Load_Stream(false, def, sizeof(FxElemDef_461));
|
//Game::Load_Stream(false, def, sizeof(FxElemDef_461));
|
||||||
|
|
||||||
static_assert(sizeof(Game::FxElemDef) < sizeof(FxElemDef_461));
|
static_assert(sizeof(Game::FxElemDef) < sizeof(FxElemDef_461));
|
||||||
std::memcpy(*varFxElemDef, def, sizeof(Game::FxElemDef));
|
std::memcpy(*varFxElemDef, def, sizeof(Game::FxElemDef));
|
||||||
@ -3866,9 +3872,30 @@ namespace Components
|
|||||||
{
|
{
|
||||||
static_assert(sizeof(Game::FxElemVelStateSample) == 96);
|
static_assert(sizeof(Game::FxElemVelStateSample) == 96);
|
||||||
|
|
||||||
|
const auto intervalCount = iw4_def->velIntervalCount;
|
||||||
|
const auto size = 32 * (3 * intervalCount + 3);
|
||||||
|
|
||||||
iw4_def->velSamples = reinterpret_cast<Game::FxElemVelStateSample*>(Game::DB_AllocStreamPos(3));
|
iw4_def->velSamples = reinterpret_cast<Game::FxElemVelStateSample*>(Game::DB_AllocStreamPos(3));
|
||||||
|
|
||||||
|
#if true
|
||||||
|
|
||||||
|
if (size)
|
||||||
|
{
|
||||||
|
if (*Game::g_streamPosIndex == 2)
|
||||||
|
{
|
||||||
|
memset(iw4_def->velSamples, 0, 32 * (3 * intervalCount + 3));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Game::DB_ReadXFile(iw4_def->velSamples, 32 * (3 * intervalCount + 3));
|
||||||
|
}
|
||||||
|
|
||||||
|
*Game::g_streamPos += size;
|
||||||
|
}
|
||||||
|
#else
|
||||||
auto varFxElemVelStateSample = iw4_def->velSamples;
|
auto varFxElemVelStateSample = iw4_def->velSamples;
|
||||||
Game::Load_Stream(true, varFxElemVelStateSample, sizeof(Game::FxElemVelStateSample) * (iw4_def->velIntervalCount + 1));
|
Game::Load_Stream(true, varFxElemVelStateSample, sizeof(Game::FxElemVelStateSample) * (iw4_def->velIntervalCount + 1));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (iw4_def->visSamples)
|
if (iw4_def->visSamples)
|
||||||
@ -3876,8 +3903,26 @@ namespace Components
|
|||||||
static_assert(sizeof(Game::FxElemVisStateSample) == 48);
|
static_assert(sizeof(Game::FxElemVisStateSample) == 48);
|
||||||
|
|
||||||
iw4_def->visSamples = reinterpret_cast<Game::FxElemVisStateSample*>(Game::DB_AllocStreamPos(3));
|
iw4_def->visSamples = reinterpret_cast<Game::FxElemVisStateSample*>(Game::DB_AllocStreamPos(3));
|
||||||
|
|
||||||
|
#if true
|
||||||
|
const auto size = (iw4_def->visStateIntervalCount + 1) << 6;
|
||||||
|
if (size)
|
||||||
|
{
|
||||||
|
if (*Game::g_streamPosIndex == 2)
|
||||||
|
{
|
||||||
|
memset(iw4_def->visSamples, 0, size);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Game::DB_ReadXFile(iw4_def->visSamples, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
*Game::g_streamPos += size;
|
||||||
|
}
|
||||||
|
#else
|
||||||
auto varFxElemVisStateSample = iw4_def->visSamples;
|
auto varFxElemVisStateSample = iw4_def->visSamples;
|
||||||
Game::Load_Stream(true, varFxElemVisStateSample, sizeof(Game::FxElemVisStateSample) * (iw4_def->visStateIntervalCount + 1));
|
Game::Load_Stream(true, varFxElemVisStateSample, sizeof(Game::FxElemVisStateSample) * (iw4_def->visStateIntervalCount + 1));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3887,6 +3932,14 @@ namespace Components
|
|||||||
// Load_FxElemDefVisuals
|
// Load_FxElemDefVisuals
|
||||||
Utils::Hook::Call<void(int)>(0x417F90)(0);
|
Utils::Hook::Call<void(int)>(0x417F90)(0);
|
||||||
|
|
||||||
|
if (fx->name == "impacts/brickimpact"s)
|
||||||
|
{
|
||||||
|
if (iw4_def->visuals.instance.effectDef.handle->name == "impacts/distant_grain"s)
|
||||||
|
{
|
||||||
|
printf("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static auto varFxEffectDefRef = reinterpret_cast<Game::FxEffectDefRef**>(0x112ABA8);
|
static auto varFxEffectDefRef = reinterpret_cast<Game::FxEffectDefRef**>(0x112ABA8);
|
||||||
|
|
||||||
*varFxEffectDefRef = &iw4_def->effectOnImpact;
|
*varFxEffectDefRef = &iw4_def->effectOnImpact;
|
||||||
@ -3902,7 +3955,7 @@ namespace Components
|
|||||||
Game::Load_XString(false);
|
Game::Load_XString(false);
|
||||||
|
|
||||||
|
|
||||||
static auto varFxElemExtendedDefPtr = reinterpret_cast<Game::FxElemExtendedDefPtr**>(0x45AEDE);
|
static auto varFxElemExtendedDefPtr = reinterpret_cast<Game::FxElemExtendedDefPtr**>(0x112B324);
|
||||||
|
|
||||||
*varFxElemExtendedDefPtr = &iw4_def->extended;
|
*varFxElemExtendedDefPtr = &iw4_def->extended;
|
||||||
Load_FxElemExtendedPtr_461(&def->extended, def);
|
Load_FxElemExtendedPtr_461(&def->extended, def);
|
||||||
@ -3936,7 +3989,6 @@ namespace Components
|
|||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
const auto ptr = static_cast<int>(reinterpret_cast<intptr_t>(elems));
|
const auto ptr = static_cast<int>(reinterpret_cast<intptr_t>(elems));
|
||||||
AssetHandler::Relocate(reinterpret_cast<void*>(ptr + (260 * i)), reinterpret_cast<void*>(ptr + (252 * i)), 252);
|
|
||||||
Load_FxElemDef_461(&elems[i]);
|
Load_FxElemDef_461(&elems[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user