static bool AppendSystemToPlayerLoopListImpl(ComponentSystemBase system, ref PlayerLoopSystem playerLoop,
                                              Type playerLoopSystemType)
 {
     if (playerLoop.type == playerLoopSystemType)
     {
         var del              = new DummyDelegateWrapper(system);
         int oldListLength    = (playerLoop.subSystemList != null) ? playerLoop.subSystemList.Length : 0;
         var newSubsystemList = new PlayerLoopSystem[oldListLength + 1];
         for (var i = 0; i < oldListLength; ++i)
         {
             newSubsystemList[i] = playerLoop.subSystemList[i];
         }
         newSubsystemList[oldListLength].type           = system.GetType();
         newSubsystemList[oldListLength].updateDelegate = del.TriggerUpdate;
         playerLoop.subSystemList = newSubsystemList;
         return(true);
     }
     if (playerLoop.subSystemList != null)
     {
         for (int i = 0; i < playerLoop.subSystemList.Length; ++i)
         {
             if (AppendSystemToPlayerLoopListImpl(system, ref playerLoop.subSystemList[i], playerLoopSystemType))
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Exemplo n.º 2
0
        private static void InsertManagerIntoSubsystemList <T>(PlayerLoopSystem[] subsystemList, int insertIndex, T mgr)
            where T : ComponentSystemBase
        {
            var del = new DummyDelegateWrapper(mgr);

            subsystemList[insertIndex].type           = typeof(T);
            subsystemList[insertIndex].updateDelegate = del.TriggerUpdate;
        }