Пример #1
0
        public new virtual void InitializePrefab()
        {
            if (OnPreInitialization != null)
            {
                try
                {
                    OnPreInitialization(base.GetComponent <PropInfo>());
                }
                catch (Exception e)
                {
                    Debug.LogException(e);
                }
            }
            RedirectionHelper.RevertRedirect(_InitializePrefab_original, _InitializePrefab_state);
            try
            {
                base.InitializePrefab();
            }
            finally
            {
                RedirectionHelper.RedirectCalls(_InitializePrefab_original, _InitializePrefab_detour);
            }

            if (OnPostInitialization != null)
            {
                try
                {
                    OnPostInitialization(base.GetComponent <PropInfo>());
                }
                catch (Exception e)
                {
                    Debug.LogException(e);
                }
            }
        }
Пример #2
0
        public static void Deploy()
        {
            if (!deployed && (OnPreInitialization != null || OnPostInitialization != null))
            {
                _InitializePrefab_original = typeof(PropInfo).GetMethod("InitializePrefab", BindingFlags.Instance | BindingFlags.Public);
                _InitializePrefab_detour   = typeof(PropInfoHook).GetMethod("InitializePrefab", BindingFlags.Instance | BindingFlags.Public);
                _InitializePrefab_state    = RedirectionHelper.RedirectCalls(_InitializePrefab_original, _InitializePrefab_detour);

                deployed = true;

                Debug.LogFormat("PrefabHook: {0} Methods detoured!", "PropInfo");
            }
        }