예제 #1
0
        public static bool TryWeaveAssembly(string assemblyAssetPath)
        {
            var settings = ReflectionBakingInternalUtil.TryGetEnabledSettingsInstance();

            if (settings == null)
            {
                return(false);
            }

            var stopwatch = new Stopwatch();

            stopwatch.Start();

            var runner = new ReflectionBakingRunner(settings);

            int numTypesChanged = runner.Run(assemblyAssetPath);

            stopwatch.Start();

            if (numTypesChanged > 0)
            {
                UnityEngine.Debug.Log("Added reflection baking to '{0}' types in assembly '{1}', took {2:0.00} seconds"
                                      .Fmt(numTypesChanged, Path.GetFileName(assemblyAssetPath), stopwatch.Elapsed.TotalSeconds));
                return(true);
            }

            return(false);
        }
        static void OnAssemblyCompiled(string assembly, CompilerMessage[] messages)
        {
#if !UNITY_2018
            if (Application.isEditor && !BuildPipeline.isBuildingPlayer)
            {
                return;
            }
#endif

            if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.WSAPlayer)
            {
                Log.Warn("Zenject reflection baking skipped because it is not currently supported on WSA platform!");
            }
            else
            {
                ReflectionBakingRunner.TryWeaveAssembly(assembly);
            }
        }