elevator lanterns

This commit is contained in:
2024-04-07 12:07:16 -04:00
parent 05e3b9406f
commit 42db037fc5
12 changed files with 399 additions and 189 deletions

View File

@@ -9,34 +9,30 @@ type Impl_Constructor = {
--Class functions
UpdateCFrame: (self: ClassConstructor) -> (),
Frame_Pullies: (self: ClassConstructor, Delta: number, ElevatorVelocity_Y: number) -> (),
Frame_PiePlate: (self: ClassConstructor) -> ()
Frame_PiePlate: (self: ClassConstructor, Delta: number, ElevatorVelocity_Y: number) -> ()
}
type Constructor_Fun = (InstanceTree: InstanceTree) -> ClassConstructor
type Constructor_Return_Props = {
MachineRoom: {
Pulley: UnionOperation,
Pulley2: UnionOperation,
Governor: UnionOperation,
GovernorFlyballs: UnionOperation,
PieplatePulley: UnionOperation,
_CFrame: {
PulleyCFrame: CFrame,
Pulley2CFrame: CFrame,
GovernorCFrame: CFrame,
GovernorFlyballsCFrame: CFrame,
PieplatePulleyCFrame: CFrame,
}
}
}
type Constructor_Return_Props = InstanceTree
export type MachineRoom = {
Pulley: UnionOperation,
Pulley2: UnionOperation,
Governor: UnionOperation,
GovernorFlyballs: UnionOperation,
PieplatePulley: UnionOperation,
GovernorFlyballs: Part,
PiePlatePulley: UnionOperation,
PiePlateSelector: UnionOperation,
PiePlatePlates: UnionOperation,
_CFrame: {
PulleyCFrame: CFrame,
Pulley2CFrame: CFrame,
GovernorCFrame: CFrame,
GovernorFlyballsCFrame: CFrame,
PieplatePulleyCFrame: CFrame,
PieplateSelectorCFrame: CFrame,
PiePlatePlatesCFrame: CFrame
}
}
export type InstanceTree = {
@@ -50,7 +46,7 @@ MovingObjects.__index = MovingObjects
local Storage: ReplicatedStorage = game:GetService("ReplicatedStorage")
local Tween = require(Storage:WaitForChild("Tween"))
local Easing = require(Storage:WaitForChild("AlgebraEasings"))
local Easing = require(Storage:WaitForChild("Algebra"))
function MovingObjects.constructor(InstanceTree)
local self = InstanceTree :: Constructor_Return_Props
@@ -58,7 +54,11 @@ function MovingObjects.constructor(InstanceTree)
self.MachineRoom._CFrame.Pulley2CFrame = InstanceTree.MachineRoom.Pulley2.CFrame
self.MachineRoom._CFrame.GovernorCFrame = InstanceTree.MachineRoom.Governor.CFrame
self.MachineRoom._CFrame.GovernorFlyballsCFrame = InstanceTree.MachineRoom.GovernorFlyballs.CFrame
self.MachineRoom._CFrame.PieplatePulleyCFrame = InstanceTree.MachineRoom.PieplatePulley.CFrame
self.MachineRoom._CFrame.PieplatePulleyCFrame = InstanceTree.MachineRoom.PiePlatePulley.CFrame
self.MachineRoom._CFrame.PiePlatePlatesCFrame = InstanceTree.MachineRoom.PiePlatePlates.CFrame
--static
self.MachineRoom._CFrame.PieplateSelectorCFrame = InstanceTree.MachineRoom.PiePlateSelector.CFrame
return setmetatable(self, MovingObjects)
end
@@ -68,23 +68,31 @@ function MovingObjects:UpdateCFrame()
self.MachineRoom._CFrame.Pulley2CFrame = self.MachineRoom.Pulley2.CFrame
self.MachineRoom._CFrame.GovernorCFrame = self.MachineRoom.Governor.CFrame
self.MachineRoom._CFrame.GovernorFlyballsCFrame = self.MachineRoom.GovernorFlyballs.CFrame
self.MachineRoom._CFrame.PieplatePulleyCFrame = self.MachineRoom.PieplatePulley.CFrame
self.MachineRoom._CFrame.PieplatePulleyCFrame = self.MachineRoom.PiePlatePulley.CFrame
self.MachineRoom._CFrame.PieplateSelectorCFrame = self.MachineRoom.PiePlateSelector.CFrame
end
function MovingObjects:Frame_Pullies(Delta, ElevatorVelocity_Y)
local MR = self.MachineRoom
local MR_C = MR._CFrame
local RotAngle = Delta*ElevatorVelocity_Y
local PullAngle_2 = math.rad(RotAngle/2)
local PullAngle = math.rad(RotAngle)
self.MachineRoom.Pulley.CFrame = self.MachineRoom._CFrame.PulleyCFrame *CFrame.Angles(-PullAngle_2, 0, 0)
self.MachineRoom.Pulley2.CFrame = self.MachineRoom._CFrame.Pulley2CFrame *CFrame.Angles(PullAngle_2, 0, 0)
self.MachineRoom.Governor.CFrame = self.MachineRoom._CFrame.GovernorCFrame *CFrame.Angles(0, PullAngle_2, 0)
self.MachineRoom.GovernorFlyballs.CFrame = self.MachineRoom._CFrame.GovernorFlyballsCFrame*CFrame.Angles(PullAngle, 0, 0)
self.MachineRoom.PieplatePulley.CFrame = self.MachineRoom._CFrame.PieplatePulleyCFrame *CFrame.Angles(PullAngle_2, 0, 0)
MR.Pulley.CFrame = MR_C.PulleyCFrame *CFrame.Angles(-PullAngle_2, 0, 0)
MR.Pulley2.CFrame = MR_C.Pulley2CFrame *CFrame.Angles(PullAngle_2, 0, 0)
MR.Governor.CFrame = MR_C.GovernorCFrame *CFrame.Angles(0, PullAngle_2, 0)
MR.GovernorFlyballs.CFrame = MR_C.GovernorFlyballsCFrame*CFrame.Angles(PullAngle, 0, 0)
MR.PiePlatePulley.CFrame = MR_C.PieplatePulleyCFrame *CFrame.Angles(PullAngle_2, 0, 0)
end
function MovingObjects:Frame_PiePlate()
function MovingObjects:Frame_PiePlate(Delta, ElevatorVelocity_Y)
local MR = self.MachineRoom
local MR_C = MR._CFrame
MR.PiePlateSelector.CFrame = MR_C.PieplateSelectorCFrame+Vector3.new(0, Delta/580, 0)
MR.PiePlatePlates.CFrame = MR_C.PiePlatePlatesCFrame *CFrame.Angles(-math.rad(Delta*5), 0, 0)
end
return MovingObjects