diff --git a/Moose Development/Moose/Core/Base.lua b/Moose Development/Moose/Core/Base.lua index 6bd74942a..b020ece8c 100644 --- a/Moose Development/Moose/Core/Base.lua +++ b/Moose Development/Moose/Core/Base.lua @@ -199,6 +199,7 @@ BASE = { Events = {}, States = {}, Debug = debug, + Scheduler = nil, } @@ -706,10 +707,15 @@ do -- Scheduling ObjectName = self.ClassName .. self.ClassID self:F3( { "ScheduleOnce: ", ObjectName, Start } ) - self.SchedulerObject = self + + if not self.Scheduler then + self.Scheduler = SCHEDULER:New( self ) + end + + self.Scheduler.SchedulerObject = self.Scheduler local ScheduleID = _SCHEDULEDISPATCHER:AddSchedule( - self, + self.Scheduler, SchedulerFunction, { ... }, Start, @@ -740,10 +746,15 @@ do -- Scheduling ObjectName = self.ClassName .. self.ClassID self:F3( { "ScheduleRepeat: ", ObjectName, Start, Repeat, RandomizeFactor, Stop } ) - self.SchedulerObject = self + + if not self.Scheduler then + self.Scheduler = SCHEDULER:New( self ) + end + + self.Scheduler.SchedulerObject = self.Scheduler local ScheduleID = _SCHEDULEDISPATCHER:AddSchedule( - self, + self.Scheduler, SchedulerFunction, { ... }, Start, @@ -764,7 +775,7 @@ do -- Scheduling self:F3( { "ScheduleStop:" } ) - _SCHEDULEDISPATCHER:Stop( self, self._.Schedules[SchedulerFunction] ) + _SCHEDULEDISPATCHER:Stop( self.Scheduler, self._.Schedules[SchedulerFunction] ) end end diff --git a/Moose Development/Moose/Core/ScheduleDispatcher.lua b/Moose Development/Moose/Core/ScheduleDispatcher.lua index a98b040fb..57073a516 100644 --- a/Moose Development/Moose/Core/ScheduleDispatcher.lua +++ b/Moose Development/Moose/Core/ScheduleDispatcher.lua @@ -87,7 +87,7 @@ function SCHEDULEDISPATCHER:AddSchedule( Scheduler, ScheduleFunction, ScheduleAr self:T3( self.Schedule[Scheduler][CallID] ) self.Schedule[Scheduler][CallID].CallHandler = function( CallID ) - self:F2( CallID ) + --self:E( CallID ) local ErrorHandler = function( errmsg ) env.info( "Error in timer function: " .. errmsg ) @@ -111,7 +111,7 @@ function SCHEDULEDISPATCHER:AddSchedule( Scheduler, ScheduleFunction, ScheduleAr --self:T3( { Schedule = Schedule } ) - local ScheduleObject = Scheduler.SchedulerObject + local SchedulerObject = Scheduler.SchedulerObject --local ScheduleObjectName = Scheduler.SchedulerObject:GetNameAndClassID() local ScheduleFunction = Schedule.Function local ScheduleArguments = Schedule.Arguments @@ -122,9 +122,10 @@ function SCHEDULEDISPATCHER:AddSchedule( Scheduler, ScheduleFunction, ScheduleAr local ScheduleID = Schedule.ScheduleID local Status, Result - if ScheduleObject then + --self:E( { SchedulerObject = SchedulerObject } ) + if SchedulerObject then local function Timer() - return ScheduleFunction( ScheduleObject, unpack( ScheduleArguments ) ) + return ScheduleFunction( SchedulerObject, unpack( ScheduleArguments ) ) end Status, Result = xpcall( Timer, ErrorHandler ) else diff --git a/Moose Development/Moose/Core/Spawn.lua b/Moose Development/Moose/Core/Spawn.lua index e9edae0d8..a50a775ec 100644 --- a/Moose Development/Moose/Core/Spawn.lua +++ b/Moose Development/Moose/Core/Spawn.lua @@ -325,6 +325,7 @@ function SPAWN:New( SpawnTemplatePrefix ) end self:SetEventPriority( 5 ) + self.SpawnHookScheduler = SCHEDULER:New( nil ) return self end @@ -370,6 +371,7 @@ function SPAWN:NewWithAlias( SpawnTemplatePrefix, SpawnAliasPrefix ) end self:SetEventPriority( 5 ) + self.SpawnHookScheduler = SCHEDULER:New( nil ) return self end @@ -957,9 +959,7 @@ function SPAWN:SpawnWithIndex( SpawnIndex ) -- If there is a SpawnFunction hook defined, call it. if self.SpawnFunctionHook then -- delay calling this for .1 seconds so that it hopefully comes after the BIRTH event of the group. - self.SpawnHookScheduler = SCHEDULER:New( self ) self.SpawnHookScheduler:Schedule( nil, self.SpawnFunctionHook, { self.SpawnGroups[self.SpawnIndex].Group, unpack( self.SpawnFunctionArguments)}, 0.1 ) - --self.SpawnFunctionHook( self.SpawnGroups[self.SpawnIndex].Group, unpack( self.SpawnFunctionArguments ) ) end -- TODO: Need to fix this by putting an "R" in the name of the group when the group repeats. --if self.Repeat then