mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-22 14:23:44 -07:00
Merge branch 'develop' into states-extra
This commit is contained in:
commit
b4f480ba47
14 changed files with 47 additions and 37 deletions
|
@ -106,7 +106,7 @@ void Console::Draw() {
|
||||||
if (!this->opened) return;
|
if (!this->opened) return;
|
||||||
|
|
||||||
ImGui::SetNextWindowSize(ImVec2(520, 600), ImGuiCond_FirstUseEver);
|
ImGui::SetNextWindowSize(ImVec2(520, 600), ImGuiCond_FirstUseEver);
|
||||||
ImGui::Begin("Console", nullptr);
|
ImGui::Begin("Console", nullptr, ImGuiWindowFlags_NoFocusOnAppearing);
|
||||||
const ImVec2 pos = ImGui::GetWindowPos();
|
const ImVec2 pos = ImGui::GetWindowPos();
|
||||||
const ImVec2 size = ImGui::GetWindowSize();
|
const ImVec2 size = ImGui::GetWindowSize();
|
||||||
|
|
||||||
|
|
|
@ -257,7 +257,7 @@ namespace SohImGui {
|
||||||
|
|
||||||
void LoadTexture(const std::string& name, const std::string& path) {
|
void LoadTexture(const std::string& name, const std::string& path) {
|
||||||
GfxRenderingAPI* api = gfx_get_current_rendering_api();
|
GfxRenderingAPI* api = gfx_get_current_rendering_api();
|
||||||
const auto res = GlobalCtx2::GetInstance()->GetResourceManager()->LoadFile(normalize(path));
|
const auto res = GlobalCtx2::GetInstance()->GetResourceManager()->LoadFile(path);
|
||||||
|
|
||||||
const auto asset = new GameAsset{ api->new_texture() };
|
const auto asset = new GameAsset{ api->new_texture() };
|
||||||
uint8_t* img_data = stbi_load_from_memory(reinterpret_cast<const stbi_uc*>(res->buffer.get()), res->dwBufferSize, &asset->width, &asset->height, nullptr, 4);
|
uint8_t* img_data = stbi_load_from_memory(reinterpret_cast<const stbi_uc*>(res->buffer.get()), res->dwBufferSize, &asset->width, &asset->height, nullptr, 4);
|
||||||
|
@ -277,7 +277,7 @@ namespace SohImGui {
|
||||||
|
|
||||||
void LoadResource(const std::string& name, const std::string& path, const ImVec4& tint) {
|
void LoadResource(const std::string& name, const std::string& path, const ImVec4& tint) {
|
||||||
GfxRenderingAPI* api = gfx_get_current_rendering_api();
|
GfxRenderingAPI* api = gfx_get_current_rendering_api();
|
||||||
const auto res = static_cast<Ship::Texture*>(GlobalCtx2::GetInstance()->GetResourceManager()->LoadResource(normalize(path)).get());
|
const auto res = static_cast<Ship::Texture*>(GlobalCtx2::GetInstance()->GetResourceManager()->LoadResource(path).get());
|
||||||
|
|
||||||
std::vector<uint8_t> texBuffer;
|
std::vector<uint8_t> texBuffer;
|
||||||
texBuffer.reserve(res->width * res->height * 4);
|
texBuffer.reserve(res->width * res->height * 4);
|
||||||
|
@ -417,6 +417,15 @@ namespace SohImGui {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EnhancementButton(std::string text, std::string cvarName)
|
||||||
|
{
|
||||||
|
bool val = (bool)CVar_GetS32(cvarName.c_str(), 0);
|
||||||
|
if (ImGui::Button(text.c_str())) {
|
||||||
|
CVar_SetS32(cvarName.c_str(), !val);
|
||||||
|
needs_save = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void EnhancementSliderInt(std::string text, std::string id, std::string cvarName, int min, int max, std::string format)
|
void EnhancementSliderInt(std::string text, std::string id, std::string cvarName, int min, int max, std::string format)
|
||||||
{
|
{
|
||||||
int val = CVar_GetS32(cvarName.c_str(), 0);
|
int val = CVar_GetS32(cvarName.c_str(), 0);
|
||||||
|
@ -661,6 +670,7 @@ namespace SohImGui {
|
||||||
|
|
||||||
EnhancementCheckbox("Animated Link in Pause Menu", "gPauseLiveLink");
|
EnhancementCheckbox("Animated Link in Pause Menu", "gPauseLiveLink");
|
||||||
EnhancementCheckbox("Enable 3D Dropped items", "gNewDrops");
|
EnhancementCheckbox("Enable 3D Dropped items", "gNewDrops");
|
||||||
|
EnhancementCheckbox("Faster Block Push", "gFasterBlockPush");
|
||||||
EnhancementCheckbox("Dynamic Wallet Icon", "gDynamicWalletIcon");
|
EnhancementCheckbox("Dynamic Wallet Icon", "gDynamicWalletIcon");
|
||||||
EnhancementCheckbox("Always show dungeon entrances", "gAlwaysShowDungeonMinimapIcon");
|
EnhancementCheckbox("Always show dungeon entrances", "gAlwaysShowDungeonMinimapIcon");
|
||||||
|
|
||||||
|
@ -725,10 +735,11 @@ namespace SohImGui {
|
||||||
|
|
||||||
if (ImGui::BeginMenu("Developer Tools"))
|
if (ImGui::BeginMenu("Developer Tools"))
|
||||||
{
|
{
|
||||||
|
EnhancementCheckbox("OoT Debug Mode", "gDebugEnabled");
|
||||||
|
ImGui::Separator();
|
||||||
EnhancementCheckbox("Stats", "gStatsEnabled");
|
EnhancementCheckbox("Stats", "gStatsEnabled");
|
||||||
EnhancementCheckbox("Console", "gConsoleEnabled");
|
EnhancementCheckbox("Console", "gConsoleEnabled");
|
||||||
console->opened = CVar_GetS32("gConsoleEnabled", 0);
|
console->opened = CVar_GetS32("gConsoleEnabled", 0);
|
||||||
EnhancementCheckbox("OoT Debug Mode", "gDebugEnabled");
|
|
||||||
|
|
||||||
ImGui::EndMenu();
|
ImGui::EndMenu();
|
||||||
}
|
}
|
||||||
|
@ -745,6 +756,7 @@ namespace SohImGui {
|
||||||
}
|
}
|
||||||
ImGui::EndMenu();
|
ImGui::EndMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::EndMenuBar();
|
ImGui::EndMenuBar();
|
||||||
|
@ -755,7 +767,7 @@ namespace SohImGui {
|
||||||
if (CVar_GetS32("gStatsEnabled", 0)) {
|
if (CVar_GetS32("gStatsEnabled", 0)) {
|
||||||
const float framerate = ImGui::GetIO().Framerate;
|
const float framerate = ImGui::GetIO().Framerate;
|
||||||
ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0, 0, 0, 0));
|
ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0, 0, 0, 0));
|
||||||
ImGui::Begin("Debug Stats", nullptr, ImGuiWindowFlags_None);
|
ImGui::Begin("Debug Stats", nullptr, ImGuiWindowFlags_NoFocusOnAppearing);
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
ImGui::Text("Platform: Windows");
|
ImGui::Text("Platform: Windows");
|
||||||
|
@ -921,13 +933,12 @@ namespace SohImGui {
|
||||||
|
|
||||||
ImTextureID GetTextureByID(int id) {
|
ImTextureID GetTextureByID(int id) {
|
||||||
#ifdef ENABLE_DX11
|
#ifdef ENABLE_DX11
|
||||||
if (impl.backend == Backend::DX11)
|
if (impl.backend == Backend::DX11)
|
||||||
{
|
{
|
||||||
ImTextureID gfx_d3d11_get_texture_by_id(int id);
|
ImTextureID gfx_d3d11_get_texture_by_id(int id);
|
||||||
return gfx_d3d11_get_texture_by_id(id);
|
return gfx_d3d11_get_texture_by_id(id);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
return reinterpret_cast<ImTextureID>(id);
|
|
||||||
#endif
|
#endif
|
||||||
|
return reinterpret_cast<ImTextureID>(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,7 @@ namespace Ship {
|
||||||
if (raw_path == nullptr) return;
|
if (raw_path == nullptr) return;
|
||||||
|
|
||||||
const auto api = BIND_PTR("gfx_api", GfxRenderingAPI*);
|
const auto api = BIND_PTR("gfx_api", GfxRenderingAPI*);
|
||||||
const auto path = normalize(raw_path) + ".png";
|
const auto path = std::string(raw_path) + ".png";
|
||||||
const auto node = BIND_PTR("node", TextureCacheNode**);
|
const auto node = BIND_PTR("node", TextureCacheNode**);
|
||||||
const auto fmt = BIND_VAR("fmt", uint32_t*);
|
const auto fmt = BIND_VAR("fmt", uint32_t*);
|
||||||
const auto siz = BIND_VAR("siz", uint32_t*);
|
const auto siz = BIND_VAR("siz", uint32_t*);
|
||||||
|
|
|
@ -36,15 +36,6 @@ namespace Ship {
|
||||||
void Hook_InvalidateTexture(HookEvent event);
|
void Hook_InvalidateTexture(HookEvent event);
|
||||||
};
|
};
|
||||||
|
|
||||||
inline std::string normalize(std::string path) {
|
|
||||||
#ifdef _WIN32
|
|
||||||
std::ranges::replace(path, '/', '\\');
|
|
||||||
#else
|
|
||||||
std::replace(path.begin(), path.end(), '\\', '/');
|
|
||||||
#endif
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void GrayOutTexture(uint8_t* data, int width, int height) {
|
inline void GrayOutTexture(uint8_t* data, int width, int height) {
|
||||||
for (int x = 0; x < width * height * 4; x += 4) {
|
for (int x = 0; x < width * height * 4; x += 4) {
|
||||||
|
|
||||||
|
|
|
@ -2405,6 +2405,7 @@ void Heaps_Alloc(void);
|
||||||
void Heaps_Free(void);
|
void Heaps_Free(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
#undef this
|
||||||
};
|
};
|
||||||
#undef this
|
#undef this
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -97,7 +97,7 @@ void DrawColViewerWindow(bool& open) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::SetNextWindowSize(ImVec2(520, 600), ImGuiCond_FirstUseEver);
|
ImGui::SetNextWindowSize(ImVec2(520, 600), ImGuiCond_FirstUseEver);
|
||||||
if (!ImGui::Begin("Collision Viewer", &open)) {
|
if (!ImGui::Begin("Collision Viewer", &open, ImGuiWindowFlags_NoFocusOnAppearing)) {
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1540,7 +1540,7 @@ void DrawSaveEditor(bool& open) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::SetNextWindowSize(ImVec2(520, 600), ImGuiCond_FirstUseEver);
|
ImGui::SetNextWindowSize(ImVec2(520, 600), ImGuiCond_FirstUseEver);
|
||||||
if (!ImGui::Begin("Save Editor", &open)) {
|
if (!ImGui::Begin("Save Editor", &open, ImGuiWindowFlags_NoFocusOnAppearing)) {
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -192,7 +192,12 @@ void BgHakaGate_StatueTurn(BgHakaGate* this, GlobalContext* globalCtx) {
|
||||||
s16 turnAngle;
|
s16 turnAngle;
|
||||||
|
|
||||||
this->vTurnRateDeg10++;
|
this->vTurnRateDeg10++;
|
||||||
this->vTurnRateDeg10 = CLAMP_MAX(this->vTurnRateDeg10, 5);
|
if (CVar_GetS32("gFasterBlockPush", 0) != 0) {
|
||||||
|
this->vTurnRateDeg10 = 10;
|
||||||
|
CLAMP_MAX(this->vTurnRateDeg10, 5);
|
||||||
|
} else {
|
||||||
|
this->vTurnRateDeg10 = CLAMP_MAX(this->vTurnRateDeg10, 5);
|
||||||
|
}
|
||||||
turnFinished = Math_StepToS(&this->vTurnAngleDeg10, 600, this->vTurnRateDeg10);
|
turnFinished = Math_StepToS(&this->vTurnAngleDeg10, 600, this->vTurnRateDeg10);
|
||||||
turnAngle = this->vTurnAngleDeg10 * this->vTurnDirection;
|
turnAngle = this->vTurnAngleDeg10 * this->vTurnDirection;
|
||||||
this->dyna.actor.shape.rot.y = (this->vRotYDeg10 + turnAngle) * 0.1f * (0x10000 / 360.0f);
|
this->dyna.actor.shape.rot.y = (this->vRotYDeg10 + turnAngle) * 0.1f * (0x10000 / 360.0f);
|
||||||
|
@ -212,7 +217,7 @@ void BgHakaGate_StatueTurn(BgHakaGate* this, GlobalContext* globalCtx) {
|
||||||
this->vRotYDeg10 = (this->vRotYDeg10 + turnAngle) % 3600;
|
this->vRotYDeg10 = (this->vRotYDeg10 + turnAngle) % 3600;
|
||||||
this->vTurnRateDeg10 = 0;
|
this->vTurnRateDeg10 = 0;
|
||||||
this->vTurnAngleDeg10 = 0;
|
this->vTurnAngleDeg10 = 0;
|
||||||
this->vTimer = 5;
|
this->vTimer = CVar_GetS32("gFasterBlockPush", 0) != 0 ? 2 : 5;
|
||||||
this->actionFunc = BgHakaGate_StatueIdle;
|
this->actionFunc = BgHakaGate_StatueIdle;
|
||||||
this->dyna.unk_150 = 0.0f;
|
this->dyna.unk_150 = 0.0f;
|
||||||
}
|
}
|
||||||
|
|
|
@ -137,7 +137,7 @@ void func_8088B268(BgHidanRock* this, GlobalContext* globalCtx) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this->dyna.actor.speedXZ += 0.05f;
|
this->dyna.actor.speedXZ += CVar_GetS32("gFasterBlockPush", 0) != 0 ? 0.5f : 0.05f;
|
||||||
this->dyna.actor.speedXZ = CLAMP_MAX(this->dyna.actor.speedXZ, 2.0f);
|
this->dyna.actor.speedXZ = CLAMP_MAX(this->dyna.actor.speedXZ, 2.0f);
|
||||||
|
|
||||||
if (D_8088BFC0 > 0.0f) {
|
if (D_8088BFC0 > 0.0f) {
|
||||||
|
@ -156,7 +156,7 @@ void func_8088B268(BgHidanRock* this, GlobalContext* globalCtx) {
|
||||||
this->dyna.actor.home.pos.z = this->dyna.actor.world.pos.z;
|
this->dyna.actor.home.pos.z = this->dyna.actor.world.pos.z;
|
||||||
D_8088BFC0 = 0.0f;
|
D_8088BFC0 = 0.0f;
|
||||||
this->dyna.actor.speedXZ = 0.0f;
|
this->dyna.actor.speedXZ = 0.0f;
|
||||||
this->timer = 5;
|
this->timer = CVar_GetS32("gFasterBlockPush", 0) != 0 ? 2 : 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
func_8002F974(&this->dyna.actor, NA_SE_EV_ROCK_SLIDE - SFX_FLAG);
|
func_8002F974(&this->dyna.actor, NA_SE_EV_ROCK_SLIDE - SFX_FLAG);
|
||||||
|
|
|
@ -444,7 +444,7 @@ void func_80896950(BgJyaCobra* this, GlobalContext* globalCtx) {
|
||||||
|
|
||||||
if (this->dyna.unk_150 > 0.001f) {
|
if (this->dyna.unk_150 > 0.001f) {
|
||||||
this->unk_168++;
|
this->unk_168++;
|
||||||
if (this->unk_168 >= 15) {
|
if (this->unk_168 >= CVar_GetS32("gFasterBlockPush", 0) != 0 ? 5 : 15) {
|
||||||
func_808969F8(this, globalCtx);
|
func_808969F8(this, globalCtx);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -484,9 +484,11 @@ void func_808969F8(BgJyaCobra* this, GlobalContext* globalCtx) {
|
||||||
void func_80896ABC(BgJyaCobra* this, GlobalContext* globalCtx) {
|
void func_80896ABC(BgJyaCobra* this, GlobalContext* globalCtx) {
|
||||||
s16 temp_v0;
|
s16 temp_v0;
|
||||||
Player* player = GET_PLAYER(globalCtx);
|
Player* player = GET_PLAYER(globalCtx);
|
||||||
|
if (CVar_GetS32("gFasterBlockPush", 0) != 0)
|
||||||
|
this->unk_16E = 150.0f;
|
||||||
|
|
||||||
temp_v0 = (s16)((this->unk_16C * 0x2000) + this->dyna.actor.home.rot.y) - this->dyna.actor.world.rot.y;
|
temp_v0 = (s16)((this->unk_16C * 0x2000) + this->dyna.actor.home.rot.y) - this->dyna.actor.world.rot.y;
|
||||||
if (ABS(temp_v0) < 7424) {
|
if (ABS(temp_v0) < CVar_GetS32("gFasterBlockPush", 0) != 0 ? 3712 : 7424) {
|
||||||
Math_StepToS(&this->unk_16E, 106, 4);
|
Math_StepToS(&this->unk_16E, 106, 4);
|
||||||
} else {
|
} else {
|
||||||
Math_StepToS(&this->unk_16E, 21, 10);
|
Math_StepToS(&this->unk_16E, 21, 10);
|
||||||
|
|
|
@ -94,7 +94,7 @@ void BgMoriKaitenkabe_Wait(BgMoriKaitenkabe* this, GlobalContext* globalCtx) {
|
||||||
|
|
||||||
if (this->dyna.unk_150 > 0.001f) {
|
if (this->dyna.unk_150 > 0.001f) {
|
||||||
this->timer++;
|
this->timer++;
|
||||||
if ((this->timer > 28) && !Player_InCsMode(globalCtx)) {
|
if ((this->timer > CVar_GetS32("gFasterBlockPush", 0) != 0 ? 14 : 28) && !Player_InCsMode(globalCtx)) {
|
||||||
BgMoriKaitenkabe_SetupRotate(this);
|
BgMoriKaitenkabe_SetupRotate(this);
|
||||||
func_8002DF54(globalCtx, &this->dyna.actor, 8);
|
func_8002DF54(globalCtx, &this->dyna.actor, 8);
|
||||||
Math_Vec3f_Copy(&this->lockedPlayerPos, &player->actor.world.pos);
|
Math_Vec3f_Copy(&this->lockedPlayerPos, &player->actor.world.pos);
|
||||||
|
@ -118,7 +118,7 @@ void BgMoriKaitenkabe_Wait(BgMoriKaitenkabe* this, GlobalContext* globalCtx) {
|
||||||
|
|
||||||
void BgMoriKaitenkabe_SetupRotate(BgMoriKaitenkabe* this) {
|
void BgMoriKaitenkabe_SetupRotate(BgMoriKaitenkabe* this) {
|
||||||
this->actionFunc = BgMoriKaitenkabe_Rotate;
|
this->actionFunc = BgMoriKaitenkabe_Rotate;
|
||||||
this->rotSpeed = 0.0f;
|
this->rotSpeed = CVar_GetS32("gFasterBlockPush", 0) != 0 ? 0.5f : 0.0f;
|
||||||
this->rotYdeg = 0.0f;
|
this->rotYdeg = 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -388,7 +388,7 @@ void BgPoEvent_BlockPush(BgPoEvent* this, GlobalContext* globalCtx) {
|
||||||
s32 blockStop;
|
s32 blockStop;
|
||||||
Player* player = GET_PLAYER(globalCtx);
|
Player* player = GET_PLAYER(globalCtx);
|
||||||
|
|
||||||
this->dyna.actor.speedXZ += 0.1f;
|
this->dyna.actor.speedXZ += CVar_GetS32("gFasterBlockPush", 0) != 0 ? 0.5f : 0.1f;
|
||||||
this->dyna.actor.speedXZ = CLAMP_MAX(this->dyna.actor.speedXZ, 2.0f);
|
this->dyna.actor.speedXZ = CLAMP_MAX(this->dyna.actor.speedXZ, 2.0f);
|
||||||
blockStop = Math_StepToF(&sBgPoEventblockPushDist, 20.0f, this->dyna.actor.speedXZ);
|
blockStop = Math_StepToF(&sBgPoEventblockPushDist, 20.0f, this->dyna.actor.speedXZ);
|
||||||
displacement = this->direction * sBgPoEventblockPushDist;
|
displacement = this->direction * sBgPoEventblockPushDist;
|
||||||
|
|
|
@ -260,7 +260,7 @@ void func_808B4194(BgSpot15Rrbox* this, GlobalContext* globalCtx) {
|
||||||
s32 approxFResult;
|
s32 approxFResult;
|
||||||
Actor* actor = &this->dyna.actor;
|
Actor* actor = &this->dyna.actor;
|
||||||
|
|
||||||
this->unk_174 += 0.5f;
|
this->unk_174 += CVar_GetS32("gFasterBlockPush", 0) != 0 ? 1.0f : 0.5f;
|
||||||
|
|
||||||
this->unk_174 = CLAMP_MAX(this->unk_174, 2.0f);
|
this->unk_174 = CLAMP_MAX(this->unk_174, 2.0f);
|
||||||
|
|
||||||
|
@ -294,7 +294,7 @@ void func_808B4194(BgSpot15Rrbox* this, GlobalContext* globalCtx) {
|
||||||
this->dyna.unk_150 = 0.0f;
|
this->dyna.unk_150 = 0.0f;
|
||||||
this->unk_178 = 0.0f;
|
this->unk_178 = 0.0f;
|
||||||
this->unk_174 = 0.0f;
|
this->unk_174 = 0.0f;
|
||||||
this->unk_168 = 10;
|
this->unk_168 = CVar_GetS32("gFasterBlockPush", 0) != 0 ? 3 : 10;
|
||||||
func_808B4084(this, globalCtx);
|
func_808B4084(this, globalCtx);
|
||||||
}
|
}
|
||||||
Audio_PlayActorSound2(actor, NA_SE_EV_ROCK_SLIDE - SFX_FLAG);
|
Audio_PlayActorSound2(actor, NA_SE_EV_ROCK_SLIDE - SFX_FLAG);
|
||||||
|
|
|
@ -558,7 +558,7 @@ void ObjOshihiki_Push(ObjOshihiki* this, GlobalContext* globalCtx) {
|
||||||
f32 pushDistSigned;
|
f32 pushDistSigned;
|
||||||
s32 stopFlag;
|
s32 stopFlag;
|
||||||
|
|
||||||
this->pushSpeed += 0.5f;
|
this->pushSpeed += CVar_GetS32("gFasterBlockPush", 0) != 0 ? 1.0f : 0.5f;
|
||||||
this->stateFlags |= PUSHBLOCK_PUSH;
|
this->stateFlags |= PUSHBLOCK_PUSH;
|
||||||
this->pushSpeed = CLAMP_MAX(this->pushSpeed, 2.0f);
|
this->pushSpeed = CLAMP_MAX(this->pushSpeed, 2.0f);
|
||||||
stopFlag = Math_StepToF(&this->pushDist, 20.0f, this->pushSpeed);
|
stopFlag = Math_StepToF(&this->pushDist, 20.0f, this->pushSpeed);
|
||||||
|
@ -586,7 +586,7 @@ void ObjOshihiki_Push(ObjOshihiki* this, GlobalContext* globalCtx) {
|
||||||
this->dyna.unk_150 = 0.0f;
|
this->dyna.unk_150 = 0.0f;
|
||||||
this->pushDist = 0.0f;
|
this->pushDist = 0.0f;
|
||||||
this->pushSpeed = 0.0f;
|
this->pushSpeed = 0.0f;
|
||||||
this->timer = 10;
|
this->timer = CVar_GetS32("gFasterBlockPush", 0) != 0 ? 3 : 10;
|
||||||
if (this->floorBgIds[this->highestFloor] == BGCHECK_SCENE) {
|
if (this->floorBgIds[this->highestFloor] == BGCHECK_SCENE) {
|
||||||
ObjOshihiki_SetupOnScene(this, globalCtx);
|
ObjOshihiki_SetupOnScene(this, globalCtx);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue