mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2025-12-05 07:32:52 +00:00
Fix crash when toggling dynos packs
This commit is contained in:
parent
d73216a899
commit
f2ca0e18fc
4 changed files with 20 additions and 1 deletions
|
|
@ -757,6 +757,7 @@ void DynOS_Anim_Swap(void *aPtr);
|
||||||
|
|
||||||
void DynOS_Tex_Valid(GfxData* aGfxData);
|
void DynOS_Tex_Valid(GfxData* aGfxData);
|
||||||
void DynOS_Tex_Invalid(GfxData* aGfxData);
|
void DynOS_Tex_Invalid(GfxData* aGfxData);
|
||||||
|
void DynOS_Tex_Update();
|
||||||
u8 *DynOS_Tex_ConvertToRGBA32(const u8 *aData, u64 aLength, s32 aFormat, s32 aSize, const u8 *aPalette);
|
u8 *DynOS_Tex_ConvertToRGBA32(const u8 *aData, u64 aLength, s32 aFormat, s32 aSize, const u8 *aPalette);
|
||||||
bool DynOS_Tex_Import(void **aOutput, void *aPtr, s32 aTile, void *aGfxRApi, void **aHashMap, void *aPool, u32 *aPoolPos, u32 aPoolSize);
|
bool DynOS_Tex_Import(void **aOutput, void *aPtr, s32 aTile, void *aGfxRApi, void **aHashMap, void *aPool, u32 *aPoolPos, u32 aPoolSize);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,4 +3,5 @@ extern "C" {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DynOS_Gfx_Update() {
|
void DynOS_Gfx_Update() {
|
||||||
|
DynOS_Tex_Update();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,13 @@ static std::set<DataNode<TexData> *>& DynosValidTextures() {
|
||||||
return sDynosValidTextures;
|
return sDynosValidTextures;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Array<DataNode<TexData> *>& DynosScheduledInvalidTextures() {
|
||||||
|
static Array<DataNode<TexData> *> sDynosScheduledInvalidTextures;
|
||||||
|
return sDynosScheduledInvalidTextures;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool sDynosDumpTextureCache = false;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Conversion
|
// Conversion
|
||||||
//
|
//
|
||||||
|
|
@ -260,9 +267,19 @@ void DynOS_Tex_Valid(GfxData* aGfxData) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DynOS_Tex_Invalid(GfxData* aGfxData) {
|
void DynOS_Tex_Invalid(GfxData* aGfxData) {
|
||||||
|
auto& schedule = DynosScheduledInvalidTextures();
|
||||||
for (auto &_Texture : aGfxData->mTextures) {
|
for (auto &_Texture : aGfxData->mTextures) {
|
||||||
|
schedule.Add(_Texture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DynOS_Tex_Update() {
|
||||||
|
auto& schedule = DynosScheduledInvalidTextures();
|
||||||
|
if (schedule.Count() == 0) { return; }
|
||||||
|
for (auto &_Texture : schedule) {
|
||||||
DynosValidTextures().erase(_Texture);
|
DynosValidTextures().erase(_Texture);
|
||||||
}
|
}
|
||||||
|
schedule.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ function bhv_item_box_loop(obj)
|
||||||
if obj.oItemBoxTouched == 1 then
|
if obj.oItemBoxTouched == 1 then
|
||||||
if obj.oTimer >= itemBoxTimeout then
|
if obj.oTimer >= itemBoxTimeout then
|
||||||
obj.oItemBoxTouched = 0
|
obj.oItemBoxTouched = 0
|
||||||
if get_network_player_smallest_global() == gNetworkPlayers[0] then
|
if network_is_server() then
|
||||||
network_send_object(obj, true)
|
network_send_object(obj, true)
|
||||||
end
|
end
|
||||||
elseif obj.oTimer < 5 then
|
elseif obj.oTimer < 5 then
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue