From a5df6025540f42b758fb16eb547ace93d9ee379f Mon Sep 17 00:00:00 2001 From: tensorunit Date: Fri, 29 Mar 2024 01:22:05 -0400 Subject: [PATCH] Pie plate selector and tweening patch --- .../Elevators/Otis1960/PiePlateSelector.lua | 28 +++++++++++-------- src/shared/AlgebraEasings.lua | 12 +++++++- src/shared/Tween.lua | 8 ++++-- 3 files changed, 33 insertions(+), 15 deletions(-) diff --git a/src/server/main/Elevators/Otis1960/PiePlateSelector.lua b/src/server/main/Elevators/Otis1960/PiePlateSelector.lua index 92899d8..a5357f3 100644 --- a/src/server/main/Elevators/Otis1960/PiePlateSelector.lua +++ b/src/server/main/Elevators/Otis1960/PiePlateSelector.lua @@ -1,32 +1,38 @@ -local PieplateSelectorModule = {} -PieplateSelectorModule.__index = PieplateSelectorModule +local PPSModule = {} +PPSModule.__index = PPSModule -local RS: RunService = game:GetService("RunService") +PPSModule.Delta = 0 -function PieplateSelectorModule.constructor(PieplateSelector: UnionOperation, PiePlatePlates: UnionOperation, ElevatorBox: UnionOperation) +local RS: RunService = game:GetService("RunService") +local Storage: ReplicatedStorage = game:GetService("ReplicatedStorage") + +local Tween = require(Storage:WaitForChild("Tween")) +local Easing = require(Storage:WaitForChild("AlgebraEasings")) + +function PPSModule.constructor(PieplateSelector: UnionOperation, PiePlatePlates: UnionOperation, ElevatorBox: UnionOperation) return setmetatable({ PieplateSelector = PieplateSelector, PiePlatePlates = PiePlatePlates, ElevatorBox = ElevatorBox - }, PieplateSelectorModule) + }, PPSModule) end -function PieplateSelectorModule:test() - local Delta = 0 +local SelectorTween = Tween.constructor() +function PPSModule:test() self.PieplateSelector.CFrame=self.PieplateSelector.CFrame+Vector3.yAxis/20 local OriginalAngleDelta = self.PiePlatePlates.CFrame local OriginalPositionDelta = self.PieplateSelector.CFrame self.__SelectorConnection = RS.Heartbeat:Connect(function(_dt) - Delta+=1 + PPSModule.Delta+=1 - self.PieplateSelector.CFrame=OriginalPositionDelta+Vector3.new(0, Delta/500, 0) - self.PiePlatePlates.CFrame=OriginalAngleDelta*CFrame.Angles(-math.rad(Delta*6.8), 0, 0) + self.PieplateSelector.CFrame=OriginalPositionDelta+Vector3.new(0, PPSModule.Delta/580, 0) + self.PiePlatePlates.CFrame=OriginalAngleDelta*CFrame.Angles(-math.rad(Easing.Linear(0, PPSModule.Delta, Easing.InQuad(.5))*5), 0, 0) end) return self.__SelectorConnection end -return PieplateSelectorModule \ No newline at end of file +return PPSModule \ No newline at end of file diff --git a/src/shared/AlgebraEasings.lua b/src/shared/AlgebraEasings.lua index 5f3efd4..5b6e7d3 100644 --- a/src/shared/AlgebraEasings.lua +++ b/src/shared/AlgebraEasings.lua @@ -10,9 +10,15 @@ type LinearFunction = (a: number, b: number, t: number) -> number export type EasingStyles = { Linear: LinearFunction, InOutBack: EaseFunction, - OutBounce: EaseFunction + OutBounce: EaseFunction, + InQuad: EaseFunction } +local function flip(x: number): number + return x*0-x + +end + local Ease = {} :: EasingStyles --Google straight up gives wrong/bad math @@ -32,4 +38,8 @@ function Ease.OutBounce(n) n<0.909091 and (.9375*(1.*d1-2.4*n*n1)/d1)) or (.984375*(1.*d1-2.66667*n*n1))/d1 end +function Ease.InQuad(n) + return n*n +end + return Ease \ No newline at end of file diff --git a/src/shared/Tween.lua b/src/shared/Tween.lua index 5fc2d2f..322d1a4 100644 --- a/src/shared/Tween.lua +++ b/src/shared/Tween.lua @@ -42,10 +42,12 @@ function Tween:Start(PostInstance, PostProperties, PostTweenSettings) if PostProperties then if self.PreProperties then - for tween_prop, tween_value in PostProperties do - Props[tween_prop] = tween_value + if Props then + print("Tween library: Combining PostProperties and PreProperties together", debug.traceback()) + for tween_prop, tween_value in PostProperties do + Props[tween_prop] = tween_value + end end - print("Tween library: Combining PostProperties and PreProperties together", debug.traceback()) else Props = PostProperties end