mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-26 06:29:23 +01:00
[ready] Smooth-ish move rising: revengeance (#47817)
* Smooth movement Squashed commit: [870d550fff] updates a variable name to not shadow a parent variable [65131a9a4b] redundant [7c85f7b87e] override based pulling and pushing [60a9760c4b] unnecessary when it's done via an override [0a67dfb3cb] removes a redundant manual override [7f25104fed] pushing [2bfd9973eb] eh [fca7155245] cast properly [ad4b9ad8ab] compile fix [c28fde4bfb] some wonkiness with pulling fixed [0e028d30b3] buckling fix + finer rounding [8f93df2bbe] dragging + buckling fixes [1541e1ce78] small optimization [bda72345dd] smoother movement fix to dragging being fucky vehicle fix orbiter fix eof newline cleanup comment cleanup stupid hack bunch of tweaks/hacks + 60 fps default oh god potential fix for orbiter issues (in a shitty way) early override for some cases unset orbit multiply instead of add offset no no more timescale scaling and higher multiplier meant to include this in last commit comment * clamp to 6, 1.25 multiplier * (poorly) fixed buckles not always propagating * get rid of some debug prints whoops * fixes an infinite loop * syntax + update savefile instead of interpreting 0 different * uuuh
This commit is contained in:
committed by
Emmett Gaines
parent
5c4bbdb984
commit
798bbd3d99
@@ -28,10 +28,13 @@
|
||||
if(ismovableatom(target))
|
||||
tracker = new(target, CALLBACK(src, .proc/move_react))
|
||||
|
||||
RegisterSignal(parent, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE, .proc/orbiter_glide_size_update)
|
||||
|
||||
/datum/component/orbiter/UnregisterFromParent()
|
||||
var/atom/target = parent
|
||||
target.orbiters = null
|
||||
QDEL_NULL(tracker)
|
||||
UnregisterSignal(parent, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE)
|
||||
|
||||
/datum/component/orbiter/Destroy()
|
||||
var/atom/master = parent
|
||||
@@ -79,6 +82,12 @@
|
||||
orbiter.transform = shift
|
||||
|
||||
orbiter.SpinAnimation(rotation_speed, -1, clockwise, rotation_segments, parallel = FALSE)
|
||||
if(ismob(orbiter))
|
||||
var/mob/M = orbiter
|
||||
M.updating_glide_size = FALSE
|
||||
if(ismovableatom(parent))
|
||||
var/atom/movable/AM = parent
|
||||
orbiter.glide_size = AM.glide_size
|
||||
|
||||
//we stack the orbits up client side, so we can assign this back to normal server side without it breaking the orbit
|
||||
orbiter.transform = initial_transform
|
||||
@@ -94,6 +103,10 @@
|
||||
orbiters -= orbiter
|
||||
orbiter.stop_orbit(src)
|
||||
orbiter.orbiting = null
|
||||
if(ismob(orbiter))
|
||||
var/mob/M = orbiter
|
||||
M.updating_glide_size = TRUE
|
||||
M.glide_size = 8
|
||||
if(!refreshing && !length(orbiters) && !QDELING(src))
|
||||
qdel(src)
|
||||
|
||||
@@ -124,6 +137,11 @@
|
||||
return
|
||||
end_orbit(orbiter)
|
||||
|
||||
/datum/component/orbiter/proc/orbiter_glide_size_update(datum/source, target)
|
||||
for(var/orbiter in orbiters)
|
||||
var/atom/movable/AM = orbiter
|
||||
AM.glide_size = target
|
||||
|
||||
/////////////////////
|
||||
|
||||
/atom/movable/proc/orbit(atom/A, radius = 10, clockwise = FALSE, rotation_speed = 20, rotation_segments = 36, pre_rotation = TRUE)
|
||||
|
||||
Reference in New Issue
Block a user