Fixes cargo

This commit is contained in:
FlightControl 2017-05-06 23:06:21 +02:00
parent 11c20d57fd
commit d2d59a7ba3

View File

@ -234,7 +234,7 @@ do -- CARGO
function CARGO:New( Type, Name, Weight ) --R2.1 function CARGO:New( Type, Name, Weight ) --R2.1
local self = BASE:Inherit( self, FSM:New() ) -- #CARGO local self = BASE:Inherit( self, FSM:New() ) -- #CARGO
self:E( { Type, Name, Weight } ) self:F( { Type, Name, Weight } )
self:SetStartState( "UnLoaded" ) self:SetStartState( "UnLoaded" )
self:AddTransition( { "UnLoaded", "Boarding" }, "Board", "Boarding" ) self:AddTransition( { "UnLoaded", "Boarding" }, "Board", "Boarding" )
@ -299,7 +299,7 @@ end
-- @param #CARGO self -- @param #CARGO self
-- @return #CARGO -- @return #CARGO
function CARGO:Spawn( PointVec2 ) function CARGO:Spawn( PointVec2 )
self:E() self:F()
end end
@ -310,7 +310,7 @@ end
-- @param Core.Zone#ZONE_BASE Zone -- @param Core.Zone#ZONE_BASE Zone
-- @return #boolean **true** if cargo is in the Zone, **false** if cargo is not in the Zone. -- @return #boolean **true** if cargo is in the Zone, **false** if cargo is not in the Zone.
function CARGO:IsInZone( Zone ) function CARGO:IsInZone( Zone )
self:E( { Zone } ) self:F( { Zone } )
if self:IsLoaded() then if self:IsLoaded() then
return Zone:IsPointVec2InZone( self.CargoCarrier:GetPointVec2() ) return Zone:IsPointVec2InZone( self.CargoCarrier:GetPointVec2() )
@ -329,7 +329,7 @@ end
-- @param #number NearRadius The radius when the cargo will board the Carrier (to avoid collision). -- @param #number NearRadius The radius when the cargo will board the Carrier (to avoid collision).
-- @return #boolean -- @return #boolean
function CARGO:IsNear( PointVec2, NearRadius ) function CARGO:IsNear( PointVec2, NearRadius )
self:E( { PointVec2 } ) self:F( { PointVec2, NearRadius } )
local Distance = PointVec2:DistanceFromPointVec2( self.CargoObject:GetPointVec2() ) local Distance = PointVec2:DistanceFromPointVec2( self.CargoObject:GetPointVec2() )
self:T( Distance ) self:T( Distance )
@ -382,7 +382,7 @@ do -- CARGO_REPRESENTABLE
-- @return #CARGO_REPRESENTABLE -- @return #CARGO_REPRESENTABLE
function CARGO_REPRESENTABLE:New( CargoObject, Type, Name, Weight, ReportRadius, NearRadius ) function CARGO_REPRESENTABLE:New( CargoObject, Type, Name, Weight, ReportRadius, NearRadius )
local self = BASE:Inherit( self, CARGO:New( Type, Name, Weight, ReportRadius, NearRadius ) ) -- #CARGO_REPRESENTABLE local self = BASE:Inherit( self, CARGO:New( Type, Name, Weight, ReportRadius, NearRadius ) ) -- #CARGO_REPRESENTABLE
self:E( { Type, Name, Weight, ReportRadius, NearRadius } ) self:F( { Type, Name, Weight, ReportRadius, NearRadius } )
return self return self
end end
@ -393,7 +393,7 @@ do -- CARGO_REPRESENTABLE
-- @param #number Speed -- @param #number Speed
-- @return #CARGO_REPRESENTABLE -- @return #CARGO_REPRESENTABLE
function CARGO_REPRESENTABLE:RouteTo( ToPointVec2, Speed ) function CARGO_REPRESENTABLE:RouteTo( ToPointVec2, Speed )
self:E2( ToPointVec2 ) self:F2( ToPointVec2 )
local Points = {} local Points = {}
@ -429,7 +429,7 @@ end -- CARGO_REPRESENTABLE
-- @return #CARGO_REPORTABLE -- @return #CARGO_REPORTABLE
function CARGO_REPORTABLE:New( CargoObject, Type, Name, Weight, ReportRadius ) function CARGO_REPORTABLE:New( CargoObject, Type, Name, Weight, ReportRadius )
local self = BASE:Inherit( self, CARGO:New( Type, Name, Weight ) ) -- #CARGO_REPORTABLE local self = BASE:Inherit( self, CARGO:New( Type, Name, Weight ) ) -- #CARGO_REPORTABLE
self:E( { Type, Name, Weight, ReportRadius } ) self:F( { Type, Name, Weight, ReportRadius } )
self.ReportRadius = ReportRadius or 1000 self.ReportRadius = ReportRadius or 1000
self.CargoObject = CargoObject self.CargoObject = CargoObject
@ -442,7 +442,7 @@ end -- CARGO_REPRESENTABLE
-- @param Core.Point#POINT_VEC2 PointVec2 -- @param Core.Point#POINT_VEC2 PointVec2
-- @return #boolean -- @return #boolean
function CARGO_REPORTABLE:IsInRadius( PointVec2 ) function CARGO_REPORTABLE:IsInRadius( PointVec2 )
self:E( { PointVec2 } ) self:F( { PointVec2 } )
local Distance = 0 local Distance = 0
if self:IsLoaded() then if self:IsLoaded() then
@ -513,7 +513,7 @@ do -- CARGO_UNIT
-- @return #CARGO_UNIT -- @return #CARGO_UNIT
function CARGO_UNIT:New( CargoUnit, Type, Name, Weight, NearRadius ) function CARGO_UNIT:New( CargoUnit, Type, Name, Weight, NearRadius )
local self = BASE:Inherit( self, CARGO_REPRESENTABLE:New( CargoUnit, Type, Name, Weight, NearRadius ) ) -- #CARGO_UNIT local self = BASE:Inherit( self, CARGO_REPRESENTABLE:New( CargoUnit, Type, Name, Weight, NearRadius ) ) -- #CARGO_UNIT
self:E( { Type, Name, Weight, NearRadius } ) self:F( { Type, Name, Weight, NearRadius } )
self:T( CargoUnit ) self:T( CargoUnit )
self.CargoObject = CargoUnit self.CargoObject = CargoUnit
@ -542,7 +542,7 @@ end
-- @param #string To -- @param #string To
-- @param Core.Point#POINT_VEC2 ToPointVec2 -- @param Core.Point#POINT_VEC2 ToPointVec2
function CARGO_UNIT:onenterUnBoarding( From, Event, To, ToPointVec2, NearRadius ) function CARGO_UNIT:onenterUnBoarding( From, Event, To, ToPointVec2, NearRadius )
self:E() self:F( { From, Event, To, ToPointVec2, NearRadius } )
NearRadius = NearRadius or 25 NearRadius = NearRadius or 25
@ -575,7 +575,7 @@ function CARGO_UNIT:onenterUnBoarding( From, Event, To, ToPointVec2, NearRadius
-- Respawn the group... -- Respawn the group...
if self.CargoObject then if self.CargoObject then
self.CargoObject:ReSpawn( CargoDeployPointVec2:GetVec3(), CargoDeployHeading ) self.CargoObject:ReSpawn( CargoDeployPointVec2:GetVec3(), CargoDeployHeading )
self:E( { "CargoUnits:", self.CargoObject:GetGroup():GetName() } ) self:F( { "CargoUnits:", self.CargoObject:GetGroup():GetName() } )
self.CargoCarrier = nil self.CargoCarrier = nil
local Points = {} local Points = {}
@ -586,7 +586,8 @@ function CARGO_UNIT:onenterUnBoarding( From, Event, To, ToPointVec2, NearRadius
local TaskRoute = self.CargoObject:TaskRoute( Points ) local TaskRoute = self.CargoObject:TaskRoute( Points )
self.CargoObject:SetTask( TaskRoute, 1 ) self.CargoObject:SetTask( TaskRoute, 1 )
self:__UnBoarding( -1, ToPointVec2, NearRadius )
self:__UnBoarding( 1, ToPointVec2, NearRadius )
end end
end end
@ -599,9 +600,9 @@ end
-- @param #string To -- @param #string To
-- @param Core.Point#POINT_VEC2 ToPointVec2 -- @param Core.Point#POINT_VEC2 ToPointVec2
function CARGO_UNIT:onleaveUnBoarding( From, Event, To, ToPointVec2, NearRadius ) function CARGO_UNIT:onleaveUnBoarding( From, Event, To, ToPointVec2, NearRadius )
self:E( { From, Event, To, ToPointVec2, NearRadius } ) self:F( { From, Event, To, ToPointVec2, NearRadius } )
local NearRadius = NearRadius or 25 NearRadius = NearRadius or 25
local Angle = 180 local Angle = 180
local Speed = 10 local Speed = 10
@ -611,6 +612,7 @@ function CARGO_UNIT:onleaveUnBoarding( From, Event, To, ToPointVec2, NearRadius
if self:IsNear( ToPointVec2, NearRadius ) then if self:IsNear( ToPointVec2, NearRadius ) then
return true return true
else else
self:__UnBoarding( 1, ToPointVec2, NearRadius ) self:__UnBoarding( 1, ToPointVec2, NearRadius )
end end
return false return false
@ -625,9 +627,9 @@ end
-- @param #string To -- @param #string To
-- @param Core.Point#POINT_VEC2 ToPointVec2 -- @param Core.Point#POINT_VEC2 ToPointVec2
function CARGO_UNIT:onafterUnBoarding( From, Event, To, ToPointVec2, NearRadius ) function CARGO_UNIT:onafterUnBoarding( From, Event, To, ToPointVec2, NearRadius )
self:E( { ToPointVec2, From, Event, To } ) self:F( { From, Event, To, ToPointVec2, NearRadius } )
local NearRadius = NearRadius or 25 NearRadius = NearRadius or 25
self.CargoInAir = self.CargoObject:InAir() self.CargoInAir = self.CargoObject:InAir()
@ -639,7 +641,7 @@ function CARGO_UNIT:onafterUnBoarding( From, Event, To, ToPointVec2, NearRadius
end end
self:__UnLoad( 1, ToPointVec2 ) self:__UnLoad( 1, ToPointVec2, NearRadius )
end end
@ -652,7 +654,7 @@ end
-- @param #string To -- @param #string To
-- @param Core.Point#POINT_VEC2 -- @param Core.Point#POINT_VEC2
function CARGO_UNIT:onenterUnLoaded( From, Event, To, ToPointVec2 ) function CARGO_UNIT:onenterUnLoaded( From, Event, To, ToPointVec2 )
self:E( { ToPointVec2, From, Event, To } ) self:F( { ToPointVec2, From, Event, To } )
local Angle = 180 local Angle = 180
local Speed = 10 local Speed = 10
@ -687,7 +689,7 @@ end
-- @param #string From -- @param #string From
-- @param #string To -- @param #string To
function CARGO_UNIT:onafterBoard( From, Event, To, CargoCarrier, NearRadius, ... ) function CARGO_UNIT:onafterBoard( From, Event, To, CargoCarrier, NearRadius, ... )
self:E() self:F( { From, Event, To, CargoCarrier, NearRadius } )
local NearRadius = NearRadius or 25 local NearRadius = NearRadius or 25
@ -735,7 +737,7 @@ end
-- @param #string To -- @param #string To
-- @param Wrapper.Unit#UNIT CargoCarrier -- @param Wrapper.Unit#UNIT CargoCarrier
function CARGO_UNIT:onleaveBoarding( From, Event, To, CargoCarrier, NearRadius, ... ) function CARGO_UNIT:onleaveBoarding( From, Event, To, CargoCarrier, NearRadius, ... )
self:E( { From, Event, To, CargoCarrier.UnitName, NearRadius } ) self:F( { From, Event, To, CargoCarrier.UnitName, NearRadius } )
local NearRadius = NearRadius or 25 local NearRadius = NearRadius or 25
@ -756,7 +758,7 @@ end
-- @param Wrapper.Unit#UNIT CargoCarrier -- @param Wrapper.Unit#UNIT CargoCarrier
-- @param #number NearRadius -- @param #number NearRadius
function CARGO_UNIT:onafterBoarding( From, Event, To, CargoCarrier, NearRadius, ... ) function CARGO_UNIT:onafterBoarding( From, Event, To, CargoCarrier, NearRadius, ... )
self:E( { From, Event, To, CargoCarrier.UnitName, NearRadius } ) self:F( { From, Event, To, CargoCarrier.UnitName, NearRadius } )
self:__Boarding( -1, CargoCarrier, NearRadius, ... ) self:__Boarding( -1, CargoCarrier, NearRadius, ... )
@ -772,7 +774,7 @@ end
-- @param #string To -- @param #string To
-- @param Wrapper.Unit#UNIT CargoCarrier -- @param Wrapper.Unit#UNIT CargoCarrier
function CARGO_UNIT:onenterBoarding( From, Event, To, CargoCarrier, NearRadius, ... ) function CARGO_UNIT:onenterBoarding( From, Event, To, CargoCarrier, NearRadius, ... )
self:E( { From, Event, To, CargoCarrier.UnitName, NearRadius } ) self:F( { From, Event, To, CargoCarrier.UnitName, NearRadius } )
local Speed = 90 local Speed = 90
local Angle = 180 local Angle = 180
@ -793,7 +795,7 @@ end
-- @param #string To -- @param #string To
-- @param Wrapper.Unit#UNIT CargoCarrier -- @param Wrapper.Unit#UNIT CargoCarrier
function CARGO_UNIT:onenterLoaded( From, Event, To, CargoCarrier ) function CARGO_UNIT:onenterLoaded( From, Event, To, CargoCarrier )
self:E( { From, Event, To, CargoCarrier } ) self:F( { From, Event, To, CargoCarrier } )
self.CargoCarrier = CargoCarrier self.CargoCarrier = CargoCarrier
@ -827,7 +829,7 @@ do -- CARGO_PACKAGE
-- @return #CARGO_PACKAGE -- @return #CARGO_PACKAGE
function CARGO_PACKAGE:New( CargoCarrier, Type, Name, Weight, ReportRadius, NearRadius ) function CARGO_PACKAGE:New( CargoCarrier, Type, Name, Weight, ReportRadius, NearRadius )
local self = BASE:Inherit( self, CARGO_REPRESENTABLE:New( CargoCarrier, Type, Name, Weight, ReportRadius, NearRadius ) ) -- #CARGO_PACKAGE local self = BASE:Inherit( self, CARGO_REPRESENTABLE:New( CargoCarrier, Type, Name, Weight, ReportRadius, NearRadius ) ) -- #CARGO_PACKAGE
self:E( { Type, Name, Weight, ReportRadius, NearRadius } ) self:F( { Type, Name, Weight, ReportRadius, NearRadius } )
self:T( CargoCarrier ) self:T( CargoCarrier )
self.CargoCarrier = CargoCarrier self.CargoCarrier = CargoCarrier
@ -845,7 +847,7 @@ end
-- @param #number BoardDistance -- @param #number BoardDistance
-- @param #number Angle -- @param #number Angle
function CARGO_PACKAGE:onafterOnBoard( From, Event, To, CargoCarrier, Speed, BoardDistance, LoadDistance, Angle ) function CARGO_PACKAGE:onafterOnBoard( From, Event, To, CargoCarrier, Speed, BoardDistance, LoadDistance, Angle )
self:E() self:F()
self.CargoInAir = self.CargoCarrier:InAir() self.CargoInAir = self.CargoCarrier:InAir()
@ -878,7 +880,7 @@ end
-- @param Wrapper.Unit#UNIT CargoCarrier -- @param Wrapper.Unit#UNIT CargoCarrier
-- @return #boolean -- @return #boolean
function CARGO_PACKAGE:IsNear( CargoCarrier ) function CARGO_PACKAGE:IsNear( CargoCarrier )
self:E() self:F()
local CargoCarrierPoint = CargoCarrier:GetPointVec2() local CargoCarrierPoint = CargoCarrier:GetPointVec2()
@ -899,7 +901,7 @@ end
-- @param #string To -- @param #string To
-- @param Wrapper.Unit#UNIT CargoCarrier -- @param Wrapper.Unit#UNIT CargoCarrier
function CARGO_PACKAGE:onafterOnBoarded( From, Event, To, CargoCarrier, Speed, BoardDistance, LoadDistance, Angle ) function CARGO_PACKAGE:onafterOnBoarded( From, Event, To, CargoCarrier, Speed, BoardDistance, LoadDistance, Angle )
self:E() self:F()
if self:IsNear( CargoCarrier ) then if self:IsNear( CargoCarrier ) then
self:__Load( 1, CargoCarrier, Speed, LoadDistance, Angle ) self:__Load( 1, CargoCarrier, Speed, LoadDistance, Angle )
@ -919,7 +921,7 @@ end
-- @param #number Radius -- @param #number Radius
-- @param #number Angle -- @param #number Angle
function CARGO_PACKAGE:onafterUnBoard( From, Event, To, CargoCarrier, Speed, UnLoadDistance, UnBoardDistance, Radius, Angle ) function CARGO_PACKAGE:onafterUnBoard( From, Event, To, CargoCarrier, Speed, UnLoadDistance, UnBoardDistance, Radius, Angle )
self:E() self:F()
self.CargoInAir = self.CargoCarrier:InAir() self.CargoInAir = self.CargoCarrier:InAir()
@ -957,7 +959,7 @@ end
-- @param #string To -- @param #string To
-- @param Wrapper.Unit#UNIT CargoCarrier -- @param Wrapper.Unit#UNIT CargoCarrier
function CARGO_PACKAGE:onafterUnBoarded( From, Event, To, CargoCarrier, Speed ) function CARGO_PACKAGE:onafterUnBoarded( From, Event, To, CargoCarrier, Speed )
self:E() self:F()
if self:IsNear( CargoCarrier ) then if self:IsNear( CargoCarrier ) then
self:__UnLoad( 1, CargoCarrier, Speed ) self:__UnLoad( 1, CargoCarrier, Speed )
@ -976,7 +978,7 @@ end
-- @param #number LoadDistance -- @param #number LoadDistance
-- @param #number Angle -- @param #number Angle
function CARGO_PACKAGE:onafterLoad( From, Event, To, CargoCarrier, Speed, LoadDistance, Angle ) function CARGO_PACKAGE:onafterLoad( From, Event, To, CargoCarrier, Speed, LoadDistance, Angle )
self:E() self:F()
self.CargoCarrier = CargoCarrier self.CargoCarrier = CargoCarrier
@ -1002,7 +1004,7 @@ end
-- @param #number Distance -- @param #number Distance
-- @param #number Angle -- @param #number Angle
function CARGO_PACKAGE:onafterUnLoad( From, Event, To, CargoCarrier, Speed, Distance, Angle ) function CARGO_PACKAGE:onafterUnLoad( From, Event, To, CargoCarrier, Speed, Distance, Angle )
self:E() self:F()
local StartPointVec2 = self.CargoCarrier:GetPointVec2() local StartPointVec2 = self.CargoCarrier:GetPointVec2()
local CargoCarrierHeading = self.CargoCarrier:GetHeading() -- Get Heading of object in degrees. local CargoCarrierHeading = self.CargoCarrier:GetHeading() -- Get Heading of object in degrees.
@ -1049,7 +1051,7 @@ do -- CARGO_GROUP
-- @return #CARGO_GROUP -- @return #CARGO_GROUP
function CARGO_GROUP:New( CargoGroup, Type, Name, ReportRadius ) function CARGO_GROUP:New( CargoGroup, Type, Name, ReportRadius )
local self = BASE:Inherit( self, CARGO_REPORTABLE:New( CargoGroup, Type, Name, 0, ReportRadius ) ) -- #CARGO_GROUP local self = BASE:Inherit( self, CARGO_REPORTABLE:New( CargoGroup, Type, Name, 0, ReportRadius ) ) -- #CARGO_GROUP
self:E( { Type, Name, ReportRadius } ) self:F( { Type, Name, ReportRadius } )
self.CargoSet = SET_CARGO:New() self.CargoSet = SET_CARGO:New()
@ -1082,7 +1084,7 @@ end
-- @param #string From -- @param #string From
-- @param #string To -- @param #string To
function CARGO_GROUP:onenterBoarding( From, Event, To, CargoCarrier, NearRadius, ... ) function CARGO_GROUP:onenterBoarding( From, Event, To, CargoCarrier, NearRadius, ... )
self:E( { CargoCarrier.UnitName, From, Event, To } ) self:F( { CargoCarrier.UnitName, From, Event, To } )
local NearRadius = NearRadius or 25 local NearRadius = NearRadius or 25
@ -1107,7 +1109,7 @@ end
-- @param #string From -- @param #string From
-- @param #string To -- @param #string To
function CARGO_GROUP:onenterLoaded( From, Event, To, CargoCarrier, ... ) function CARGO_GROUP:onenterLoaded( From, Event, To, CargoCarrier, ... )
self:E( { CargoCarrier.UnitName, From, Event, To } ) self:F( { CargoCarrier.UnitName, From, Event, To } )
if From == "UnLoaded" then if From == "UnLoaded" then
-- For each Cargo object within the CARGO_GROUP, load each cargo to the CargoCarrier. -- For each Cargo object within the CARGO_GROUP, load each cargo to the CargoCarrier.
@ -1128,7 +1130,7 @@ end
-- @param #string From -- @param #string From
-- @param #string To -- @param #string To
function CARGO_GROUP:onleaveBoarding( From, Event, To, CargoCarrier, NearRadius, ... ) function CARGO_GROUP:onleaveBoarding( From, Event, To, CargoCarrier, NearRadius, ... )
self:E( { CargoCarrier.UnitName, From, Event, To } ) self:F( { CargoCarrier.UnitName, From, Event, To } )
local NearRadius = NearRadius or 25 local NearRadius = NearRadius or 25
@ -1159,9 +1161,9 @@ end
-- @param #string From -- @param #string From
-- @param #string To -- @param #string To
function CARGO_GROUP:onenterUnBoarding( From, Event, To, ToPointVec2, NearRadius, ... ) function CARGO_GROUP:onenterUnBoarding( From, Event, To, ToPointVec2, NearRadius, ... )
self:E( {From, Event, To, ToPointVec2, NearRadius } ) self:F( {From, Event, To, ToPointVec2, NearRadius } )
local NearRadius = NearRadius or 25 NearRadius = NearRadius or 25
local Timer = 1 local Timer = 1
@ -1169,12 +1171,14 @@ function CARGO_GROUP:onenterUnBoarding( From, Event, To, ToPointVec2, NearRadius
-- For each Cargo object within the CARGO_GROUP, route each object to the CargoLoadPointVec2 -- For each Cargo object within the CARGO_GROUP, route each object to the CargoLoadPointVec2
self.CargoSet:ForEach( self.CargoSet:ForEach(
function( Cargo ) function( Cargo, NearRadius )
Cargo:__UnBoard( Timer, ToPointVec2, NearRadius ) Cargo:__UnBoard( Timer, ToPointVec2, NearRadius )
Timer = Timer + 10 Timer = Timer + 10
end end, { NearRadius }
) )
self:__UnBoarding( 1, ToPointVec2, NearRadius, ... ) self:__UnBoarding( 1, ToPointVec2, NearRadius, ... )
end end
@ -1187,9 +1191,9 @@ end
-- @param #string From -- @param #string From
-- @param #string To -- @param #string To
function CARGO_GROUP:onleaveUnBoarding( From, Event, To, ToPointVec2, NearRadius, ... ) function CARGO_GROUP:onleaveUnBoarding( From, Event, To, ToPointVec2, NearRadius, ... )
self:E( { From, Event, To, ToPointVec2, NearRadius } ) self:F( { From, Event, To, ToPointVec2, NearRadius } )
local NearRadius = NearRadius or 25 --local NearRadius = NearRadius or 25
local Angle = 180 local Angle = 180
local Speed = 10 local Speed = 10
@ -1224,9 +1228,9 @@ end
-- @param #string From -- @param #string From
-- @param #string To -- @param #string To
function CARGO_GROUP:onafterUnBoarding( From, Event, To, ToPointVec2, NearRadius, ... ) function CARGO_GROUP:onafterUnBoarding( From, Event, To, ToPointVec2, NearRadius, ... )
self:E( { From, Event, To, ToPointVec2, NearRadius } ) self:F( { From, Event, To, ToPointVec2, NearRadius } )
local NearRadius = NearRadius or 25 --local NearRadius = NearRadius or 25
self:__UnLoad( 1, ToPointVec2, ... ) self:__UnLoad( 1, ToPointVec2, ... )
end end
@ -1240,7 +1244,7 @@ end
-- @param #string From -- @param #string From
-- @param #string To -- @param #string To
function CARGO_GROUP:onenterUnLoaded( From, Event, To, ToPointVec2, ... ) function CARGO_GROUP:onenterUnLoaded( From, Event, To, ToPointVec2, ... )
self:E( { From, Event, To, ToPointVec2 } ) self:F( { From, Event, To, ToPointVec2 } )
if From == "Loaded" then if From == "Loaded" then