mirror of
https://github.com/ninjamuffin99/Funkin.git
synced 2024-11-05 06:14:36 +00:00
custom camera for lerp fix
This commit is contained in:
parent
ba19234176
commit
5891bb7f16
|
@ -71,7 +71,7 @@ class GameOverSubstate extends MusicBeatSubstate
|
||||||
override function update(elapsed:Float)
|
override function update(elapsed:Float)
|
||||||
{
|
{
|
||||||
// makes the lerp non-dependant on the framerate
|
// makes the lerp non-dependant on the framerate
|
||||||
FlxG.camera.followLerp = CoolUtil.camLerpShit(0.01);
|
// FlxG.camera.followLerp = CoolUtil.camLerpShit(0.01);
|
||||||
|
|
||||||
super.update(elapsed);
|
super.update(elapsed);
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@ class GameOverSubstate extends MusicBeatSubstate
|
||||||
|
|
||||||
if (bf.animation.curAnim.name == 'firstDeath' && bf.animation.curAnim.curFrame == 12)
|
if (bf.animation.curAnim.name == 'firstDeath' && bf.animation.curAnim.curFrame == 12)
|
||||||
{
|
{
|
||||||
FlxG.camera.follow(camFollow, LOCKON, CoolUtil.camLerpShit(0.01));
|
FlxG.camera.follow(camFollow, LOCKON, 0.01);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (PlayState.storyWeek)
|
switch (PlayState.storyWeek)
|
||||||
|
|
|
@ -120,6 +120,7 @@ class MainMenuState extends MusicBeatState
|
||||||
menuItem.y = top + spacing * i;
|
menuItem.y = top + spacing * i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FlxG.cameras.reset(new SwagCamera());
|
||||||
FlxG.camera.follow(camFollow, null, 0.06);
|
FlxG.camera.follow(camFollow, null, 0.06);
|
||||||
// FlxG.camera.setScrollBounds(bg.x, bg.x + bg.width, bg.y, bg.y + bg.height * 1.2);
|
// FlxG.camera.setScrollBounds(bg.x, bg.x + bg.width, bg.y, bg.y + bg.height * 1.2);
|
||||||
|
|
||||||
|
@ -249,7 +250,7 @@ class MainMenuState extends MusicBeatState
|
||||||
|
|
||||||
override function update(elapsed:Float)
|
override function update(elapsed:Float)
|
||||||
{
|
{
|
||||||
FlxG.camera.followLerp = CoolUtil.camLerpShit(0.06);
|
// FlxG.camera.followLerp = CoolUtil.camLerpShit(0.06);
|
||||||
|
|
||||||
if (FlxG.sound.music.volume < 0.8)
|
if (FlxG.sound.music.volume < 0.8)
|
||||||
{
|
{
|
||||||
|
|
|
@ -169,7 +169,7 @@ class PlayState extends MusicBeatState
|
||||||
FlxG.sound.cache(Paths.voices(PlayState.SONG.song));
|
FlxG.sound.cache(Paths.voices(PlayState.SONG.song));
|
||||||
|
|
||||||
// var gameCam:FlxCamera = FlxG.camera;
|
// var gameCam:FlxCamera = FlxG.camera;
|
||||||
camGame = new FlxCamera();
|
camGame = new SwagCamera();
|
||||||
camHUD = new FlxCamera();
|
camHUD = new FlxCamera();
|
||||||
camHUD.bgColor.alpha = 0;
|
camHUD.bgColor.alpha = 0;
|
||||||
|
|
||||||
|
@ -1860,7 +1860,7 @@ class PlayState extends MusicBeatState
|
||||||
override public function update(elapsed:Float)
|
override public function update(elapsed:Float)
|
||||||
{
|
{
|
||||||
// makes the lerp non-dependant on the framerate
|
// makes the lerp non-dependant on the framerate
|
||||||
FlxG.camera.followLerp = CoolUtil.camLerpShit(0.04);
|
// FlxG.camera.followLerp = CoolUtil.camLerpShit(0.04);
|
||||||
|
|
||||||
#if !debug
|
#if !debug
|
||||||
perfectMode = false;
|
perfectMode = false;
|
||||||
|
|
101
source/SwagCamera.hx
Normal file
101
source/SwagCamera.hx
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
package;
|
||||||
|
|
||||||
|
import flixel.FlxCamera;
|
||||||
|
import flixel.FlxG;
|
||||||
|
import flixel.FlxSprite;
|
||||||
|
import flixel.math.FlxPoint;
|
||||||
|
|
||||||
|
class SwagCamera extends FlxCamera
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* properly follow framerate
|
||||||
|
* most of this just copied from FlxCamera,
|
||||||
|
* only lines 96 and 97 are changed
|
||||||
|
*/
|
||||||
|
override public function updateFollow():Void
|
||||||
|
{
|
||||||
|
// Either follow the object closely,
|
||||||
|
// or double check our deadzone and update accordingly.
|
||||||
|
if (deadzone == null)
|
||||||
|
{
|
||||||
|
target.getMidpoint(_point);
|
||||||
|
_point.addPoint(targetOffset);
|
||||||
|
focusOn(_point);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var edge:Float;
|
||||||
|
var targetX:Float = target.x + targetOffset.x;
|
||||||
|
var targetY:Float = target.y + targetOffset.y;
|
||||||
|
|
||||||
|
if (style == SCREEN_BY_SCREEN)
|
||||||
|
{
|
||||||
|
if (targetX >= (scroll.x + width))
|
||||||
|
{
|
||||||
|
_scrollTarget.x += width;
|
||||||
|
}
|
||||||
|
else if (targetX < scroll.x)
|
||||||
|
{
|
||||||
|
_scrollTarget.x -= width;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (targetY >= (scroll.y + height))
|
||||||
|
{
|
||||||
|
_scrollTarget.y += height;
|
||||||
|
}
|
||||||
|
else if (targetY < scroll.y)
|
||||||
|
{
|
||||||
|
_scrollTarget.y -= height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
edge = targetX - deadzone.x;
|
||||||
|
if (_scrollTarget.x > edge)
|
||||||
|
{
|
||||||
|
_scrollTarget.x = edge;
|
||||||
|
}
|
||||||
|
edge = targetX + target.width - deadzone.x - deadzone.width;
|
||||||
|
if (_scrollTarget.x < edge)
|
||||||
|
{
|
||||||
|
_scrollTarget.x = edge;
|
||||||
|
}
|
||||||
|
|
||||||
|
edge = targetY - deadzone.y;
|
||||||
|
if (_scrollTarget.y > edge)
|
||||||
|
{
|
||||||
|
_scrollTarget.y = edge;
|
||||||
|
}
|
||||||
|
edge = targetY + target.height - deadzone.y - deadzone.height;
|
||||||
|
if (_scrollTarget.y < edge)
|
||||||
|
{
|
||||||
|
_scrollTarget.y = edge;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((target is FlxSprite))
|
||||||
|
{
|
||||||
|
if (_lastTargetPosition == null)
|
||||||
|
{
|
||||||
|
_lastTargetPosition = FlxPoint.get(target.x, target.y); // Creates this point.
|
||||||
|
}
|
||||||
|
_scrollTarget.x += (target.x - _lastTargetPosition.x) * followLead.x;
|
||||||
|
_scrollTarget.y += (target.y - _lastTargetPosition.y) * followLead.y;
|
||||||
|
|
||||||
|
_lastTargetPosition.x = target.x;
|
||||||
|
_lastTargetPosition.y = target.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (followLerp >= 60 / FlxG.updateFramerate)
|
||||||
|
{
|
||||||
|
scroll.copyFrom(_scrollTarget); // no easing
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// THIS THE PART THAT ACTUALLY MATTERS LOL
|
||||||
|
scroll.x += (_scrollTarget.x - scroll.x) * CoolUtil.camLerpShit(followLerp);
|
||||||
|
scroll.y += (_scrollTarget.y - scroll.y) * CoolUtil.camLerpShit(followLerp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -23,7 +23,7 @@ class PreferencesMenu extends ui.OptionsState.Page
|
||||||
{
|
{
|
||||||
super();
|
super();
|
||||||
|
|
||||||
menuCamera = new FlxCamera();
|
menuCamera = new SwagCamera();
|
||||||
FlxG.cameras.add(menuCamera, false);
|
FlxG.cameras.add(menuCamera, false);
|
||||||
menuCamera.bgColor = 0x0;
|
menuCamera.bgColor = 0x0;
|
||||||
camera = menuCamera;
|
camera = menuCamera;
|
||||||
|
@ -148,7 +148,7 @@ class PreferencesMenu extends ui.OptionsState.Page
|
||||||
{
|
{
|
||||||
super.update(elapsed);
|
super.update(elapsed);
|
||||||
|
|
||||||
menuCamera.followLerp = CoolUtil.camLerpShit(0.05);
|
// menuCamera.followLerp = CoolUtil.camLerpShit(0.05);
|
||||||
|
|
||||||
items.forEach(function(daItem:TextMenuItem)
|
items.forEach(function(daItem:TextMenuItem)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue