예제 #1
0
        /// <summary>
        ///     Unregisters a mod handler.
        /// </summary>
        /// <returns><c>true</c>, if mod handler was unregistered, <c>false</c> otherwise.</returns>
        /// <param name="modName">Mod Name.</param>
        public bool UnregisterModHandler(string modName)
        {
            var unregistered = false;

            lock (EventLock)
            {
                if (RegisteredRawMods.ContainsKey(modName))
                {
                    RegisteredRawMods.Remove(modName);
                    unregistered = true;
                }
                if (RegisteredUpdateMods.ContainsKey(modName))
                {
                    RegisteredUpdateMods.Remove(modName);
                    UpdateQueue.Remove(modName);
                    unregistered = true;
                }
                if (RegisteredFixedUpdateMods.ContainsKey(modName))
                {
                    RegisteredFixedUpdateMods.Remove(modName);
                    FixedUpdateQueue.Remove(modName);
                    unregistered = true;
                }
            }
            return(unregistered);
        }
예제 #2
0
 /// <summary>
 ///     Registers a mod handler function that will be called on every FixedUpdate.
 /// </summary>
 /// <param name="modName">Mod Name.</param>
 /// <param name="handlerFunction">Handler function.</param>
 public bool RegisterFixedUpdateModHandler(string modName, MessageCallback handlerFunction)
 {
     lock (EventLock)
     {
         if (RegisteredFixedUpdateMods.ContainsKey(modName))
         {
             Debug.Log($"[LMP]: Failed to register FixedUpdate mod handler for {modName}, mod already registered");
             return(false);
         }
         Debug.Log($"[LMP]: Registered FixedUpdate mod handler for {modName}");
         RegisteredFixedUpdateMods.Add(modName, handlerFunction);
         FixedUpdateQueue.Add(modName, new ConcurrentQueue <byte[]>());
     }
     return(true);
 }