xyz Hang on, here is actually EVERYTHING related, my bad the previous one was actually just a snippet
var shakeList = {}
func Shake(camera, data):
shakeList[data["name"]] = data #Add shake into shakeList (with all of its data)
var index = shakeList[data["name"]] #Get the shake in the shakeList
#Customisable stats for shake
var min = data["min"] / 100
var max = data["max"] / 100
var speed = data["speed"] #Speed = shakes/second
var originalCameraPos = camera.position
var latestX : float = 0.0
var latestY : float = 0.0
var GetNextShake = func():
while true:
var X = randf_range(min, max) * [-1, 1].pick_random()
var Y = randf_range(min, max) * [-1, 1].pick_random()
if X != latestX and Y != latestY:
latestX = X
latestY = Y
print(latestX, ", ", latestY)
break
var SingleShake = func():
print("New tween", ", pos = ", latestX, ", ", latestY)
GetNextShake.call()
#Tween camera position to new coordinate
await physics.tween({"object" : camera, "property" : "position", "final" : originalCameraPos + Vector3(latestX, latestY, 0), "time" : 1.0 / speed})
if index: #Make sure index exists
if data["mode"] is int: #This means shake has a time limit on it (Should end after x seconds)
pass
elif data["mode"] is bool: #This means shake is on toggle mode (Most likely a suttle and long shake like elevator scene)
if data["mode"] == true: #Starting a shake
print("true loop")
while index["mode"] == true:
await SingleShake.call()
camera.position = originalCameraPos
Now if you run this with a camera and Shake(camera, {"speed" : elevatorShakeSpeed, "min" : 1.0, "max" : 1.0, "mode" : true, "name" : "elevator"}) it will work and print all the results (if it's working your camera should be tweening and shaking)