Esempio n. 1
0
        public static void CachePrefabs()
        {
            Log.Info("CachePrefabs() called ...");
            Log.Info("Assembly is " + typeof(PrefabUtils).Assembly);

            Extensions.Init();
            TMPEUTILS.Init();
            NS2Utils.Init();
#if !DEBUG
            if (!Extensions.IsActive)
            {
                Log.Info("skipped caching prefabs in asset editor/map/scenario/... release build");
                return;
            }
#endif
            NetInfoExt.InitNetInfoExtArray();
            TextureUtils.Init();
            MaterialUtils.Init();
            for (ushort segmentID = 0; segmentID < NetManager.MAX_SEGMENT_COUNT; ++segmentID)
            {
                foreach (bool bStartNode in new bool[] { false, true })
                {
                    if (TMPEUTILS.HasCrossingBan(segmentID, bStartNode))
                    {
                        NetSegment segment = segmentID.ToSegment();

                        if (!segment.Info)
                        {
                            continue;
                        }

                        ushort nodeID = bStartNode ? segment.m_startNode : segment.m_endNode;

                        foreach (var node in segment.Info.m_nodes)
                        {
                            if (node.m_directConnect)
                            {
                                continue;
                            }
                            var flags = nodeID.ToNode().m_flags;

                            //cache:
                            //Log.Info("Caching " + segment.Info.name);
                            if (nodeID.ToNode().m_flags.IsFlagSet(NetNode.Flags.Junction))
                            {
                                CalculateMaterialCommons.CalculateMaterial(node.m_nodeMaterial, nodeID, segmentID);
                            }
                        }
                    }
                }
            }
            PrefabsLoaded = true;
            Log.Info("all prefabs cached");
        }
Esempio n. 2
0
        public static IEnumerable<CodeInstruction> Transpiler(ILGenerator il, IEnumerable<CodeInstruction> instructions) {
            try {
                var codes = TranspilerUtils.ToCodeList(instructions);
                CalculateMaterialCommons.PatchCheckFlags(codes, occurance: 2, Target);

                Log("successfully patched NetNode.RenderInstance");
                return codes;
            }catch(Exception e) {
                KianCommons.Log.Error(e.ToString());
                throw e;
            }
        }