Exemplo n.º 1
0
        public static void Load()
        {
            try {
                Log.Info("LifeCycle.Load() called");
                Log.Info("testing stack trace:\n" + Environment.StackTrace, false);

                NetworkExtensionManager.Instance.OnLoad();
                Log.Info($"Scene={Scene} LoadMode={Mode}");
                if (Scene != "AssetEditor")
                {
                    Log.Info("Applying in game patches");
                    HarmonyUtil.InstallHarmony <InGamePatchAttribute>(HARMONY_ID);
                }
                else
                {
                    Log.Info("Applying all patches");
                    HarmonyUtil.InstallHarmony(HARMONY_ID, forbidden: typeof(PreloadPatchAttribute));
                    HintBox.Create();
                }
                NetInfoExtionsion.Ensure_EditedNetInfos();

                ObserverDisposable = GeometryManager.Instance.Subscribe(new ARTMPEObsever());

                ARTool.Create();

                Log.Info("LifeCycle.Load() successfull!");
                Log.Flush();
            } catch (Exception ex) {
                Log.Exception(ex);
                throw ex;
            }
        }
Exemplo n.º 2
0
        public static void OnRefreshARMode()
        {
            ARMode.value = !VanillaModeToggle.isChecked;
            Log.Debug($"Vanilla Mode toggle =  {VanillaModeToggle.isChecked}. ARMode = {ARMode.value}");

            if (Helpers.InStartupMenu)
            {
                return;
            }
            NetInfoExtionsion.Ensure_EditedNetInfos();
            RoadEditorUtils.RefreshRoadEditor();
        }
Exemplo n.º 3
0
        /// <summary>
        /// when loading asset from a file, IAssetData.OnAssetLoaded() is called for all assets but the one that is loaded from the file.
        /// this postfix calls IAssetData.OnAssetLoaded() for asset loaded from file.
        /// Note: even if new road intanciated based on an AR Road, we still need to do this because
        ///       NetInfo metadata is stored in external array
        ///       also we cannot be sure that it is always instancitated properly.
        /// </summary>
        public static void Postfix(LoadAssetPanel __instance, UIListBox ___m_SaveList)
        {
            try {
                // Taken from LoadAssetPanel.OnLoad
                var selectedIndex   = ___m_SaveList.selectedIndex;
                var listingMetaData = (CustomAssetMetaData)mListingMetaData
                                      .Invoke(__instance, new object[] { selectedIndex });

                // Taken from LoadingManager.LoadCustomContent
                if (listingMetaData.userDataRef != null)
                {
                    AssetDataWrapper.UserAssetData userAssetData =
                        listingMetaData.userDataRef.Instantiate() as AssetDataWrapper.UserAssetData;
                    if (userAssetData == null)
                    {
                        userAssetData = new AssetDataWrapper.UserAssetData();
                    }
                    Log.Debug($"LoadAssetPanel.OnLoad().Postfix(): Loading asset from load asset panel");
                    AssetDataExtension.OnAssetLoadedImpl(
                        listingMetaData.name,
                        ToolsModifierControl.toolController.m_editPrefabInfo,
                        userAssetData.Data);

                    var originalInfo = GetOriginalNetInfo(listingMetaData);
                    if (originalInfo)
                    {
                        // OnLoad() calls IntializePrefab() which reverses metadata
                        // and can't be patched because its generic.
                        // so we restore asset metadata here
                        Log.Debug($" restoring original metadata.");
                        AssetDataExtension.OnAssetLoadedImpl(
                            listingMetaData.name,
                            originalInfo,
                            userAssetData.Data);
                    }
                }
                NetInfoExtionsion.Ensure_EditedNetInfos();
                Log.Debug($"LoadAssetPanel.OnLoad().Postfix() succeeded!");
            } catch (Exception ex) {
                Log.Exception(ex);
            }
        }
Exemplo n.º 4
0
 static void Prefix()
 {
     Log.Debug("AssetImporterWizard.Complete().Prefix(): Creating new road based on existing road " +
               $"(ARMode={UI.ModSettings.ARMode}) ...");
     NetInfoExtionsion.Ensure_EditedNetInfos();
 }
Exemplo n.º 5
0
 public static bool IsAdaptive(this NetInfo info) =>
 NetInfoExtionsion.IsAdaptive(info);