mirror of
https://forgejo.xatacraft.ru/Sunshine/mkxp-sunshine.git
synced 2026-08-19 13:29:54 +00:00
Anti-lag script fix for edge case
This fix makes it such that even if a character sprite is offscreen it will still update its camera position, to prevent issues when a character sprite teleports offscreen (but their sprite does not because it doesn't update).
This commit is contained in:
parent
31d90b8a66
commit
390cc74889
2 changed files with 24 additions and 13 deletions
|
|
@ -94,6 +94,15 @@ class Sprite_Character
|
|||
end
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Frame Update Fast (only position)
|
||||
#--------------------------------------------------------------------------
|
||||
def update_fast
|
||||
# Set sprite coordinates
|
||||
self.x = @character.screen_x
|
||||
self.y = @character.screen_y
|
||||
self.z = @character.screen_z(@ch)
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Sprite attribute wrapper
|
||||
#--------------------------------------------------------------------------
|
||||
def self.sprite_attr(*args)
|
||||
|
|
|
|||
|
|
@ -242,21 +242,23 @@ class Spriteset_Map
|
|||
@fog.tone = $game_map.fog_tone
|
||||
# Update character sprites
|
||||
@character_sprites.each do |sprite|
|
||||
if !sprite.character.is_a?(Game_Event)
|
||||
sprite.update
|
||||
elsif
|
||||
if !sprite.character.is_a?(Game_Event)
|
||||
sprite.update
|
||||
elsif
|
||||
|
||||
# this is just a check to make sure the sprite is onscreen for game events
|
||||
# based on its current width and height
|
||||
# no point in updating the sprite if offscreen
|
||||
# this greatly increases performance on larger maps
|
||||
# this is just a check to make sure the sprite is onscreen for game events
|
||||
# based on its current width and height
|
||||
# no point in updating the sprite if offscreen
|
||||
# this greatly increases performance on larger maps
|
||||
|
||||
((sprite.character.real_x + (sprite.ox*4) > $game_map.display_x - 128) &&
|
||||
(sprite.character.real_x - (sprite.ox*4) < $game_map.display_x + (21 * 128)) &&
|
||||
(sprite.character.real_y + (sprite.oy*4) > ($game_map.display_y) - 128) &&
|
||||
(sprite.character.real_y - (sprite.oy*4) < ($game_map.display_y) + (17 * 128)))
|
||||
sprite.update
|
||||
end
|
||||
((sprite.character.real_x + (sprite.ox*4) > $game_map.display_x - 128) &&
|
||||
(sprite.character.real_x - (sprite.ox*4) < $game_map.display_x + (21 * 128)) &&
|
||||
(sprite.character.real_y + (sprite.oy*4) > ($game_map.display_y) - 128) &&
|
||||
(sprite.character.real_y - (sprite.oy*4) < ($game_map.display_y) + (17 * 128)))
|
||||
sprite.update
|
||||
else
|
||||
sprite.update_fast
|
||||
end
|
||||
end
|
||||
# Update footprints
|
||||
@footprint_sprites.delete_if do |sprite|
|
||||
|
|
|
|||
Loading…
Reference in a new issue