Пример #1
0
        public virtual void Init(StageEntry entry, ConfigWeatherData fromWeatherData, string toWeatherName, float renderingTimer, float weatherTimer)
        {
            this._currentBaseWeatherName = toWeatherName;
            ConfigWeatherData weatherDataByName = this.GetWeatherDataByName(toWeatherName);

            this._currentRendertingData = (ConfigStageRenderingData)fromWeatherData.configRenderingData.Clone();
            this._currentRendertingData.ApplyGlobally();
            this._initBaseRenderingData = weatherDataByName.configRenderingData as ConfigStageRenderingData;
            this._renderingDataStack.Push(0, new RenderingDataTransition(this._initBaseRenderingData), true);
            if (renderingTimer > 0f)
            {
                this.TransitRenderingData(this._initBaseRenderingData, renderingTimer);
            }
            else
            {
                this.SetRenderingDataImmediately(this._initBaseRenderingData);
            }
            this.SetSubWeathersImmediately(fromWeatherData.configSubWeathers);
            this._initBaseSubWeather = weatherDataByName.configSubWeathers;
            this._subWeatherStack.Push(0, new SubWeatherTransition(this._initBaseSubWeather, 0), true);
            if (weatherTimer > 0f)
            {
                this.TransitSubWeather(this._initBaseSubWeather, weatherTimer);
            }
            else
            {
                this.SetSubWeathersImmediately(this._initBaseSubWeather);
            }
            this.CommonInit(entry);
        }
Пример #2
0
 private void PostAwakeTryLoadFromFile()
 {
     if (DevLevelConfigData.configFromScene)
     {
         this.TryDestroyTypeAll <BaseMonoAvatar>();
         this.TryDestroyTypeAll <BaseMonoMonster>();
         this.TryDestroyTypeAll <MonoBasePerpStage>();
         this.TryDestroyTypeAll <MonoStageEnv>();
         Resources.UnloadUnusedAssets();
         GC.Collect();
         GC.WaitForPendingFinalizers();
         StageEntry stageEntryByName = StageData.GetStageEntryByName(this.stageDevData.stageName);
         GameObject obj2             = UnityEngine.Object.Instantiate <GameObject>(Miscs.LoadResource <GameObject>(stageEntryByName.GetPerpStagePrefabPath(), BundleType.RESOURCE_FILE));
         obj2.transform.position = Vector3.zero;
         Transform transform = obj2.transform;
         transform.position -= obj2.transform.Find(stageEntryByName.LocationPointName).position;
         StageManager.SetPerpstageNodeVisibility(obj2.GetComponent <MonoBasePerpStage>(), stageEntryByName, false, false);
         StageManager.SetPerpstageNodeVisibility(obj2.GetComponent <MonoBasePerpStage>(), stageEntryByName, true, true);
         UnityEngine.Object.Instantiate <GameObject>(Miscs.LoadResource <GameObject>(stageEntryByName.GetEnvPrefabPath(), BundleType.RESOURCE_FILE));
         DevAvatarData data = this.avatarDevDatas[0];
         UnityEngine.Object.Instantiate <GameObject>(Miscs.LoadResource <GameObject>(AvatarData.GetPrefabResPath(data.avatarType, false), BundleType.RESOURCE_FILE));
         this.monsterInstanceIds = new List <int>();
         foreach (DevMonsterData data2 in this.monsterDevDatas)
         {
             this.monsterInstanceIds.Add(UnityEngine.Object.Instantiate <GameObject>(Miscs.LoadResource <GameObject>(MonsterData.GetPrefabResPath(data2.monsterName, data2.typeName, false), BundleType.RESOURCE_FILE)).GetInstanceID());
         }
     }
 }
Пример #3
0
 public static void SetPerpstageNodeVisibility(MonoBasePerpStage perpStage, StageEntry stageEntry, bool useShowNodes, bool visible)
 {
     if (!useShowNodes)
     {
         if (!string.IsNullOrEmpty(stageEntry.HideNodeNames))
         {
             SetPerpstageNodeVisibilityByNode(perpStage, stageEntry.HideNodeNames, visible);
         }
         if (!string.IsNullOrEmpty(stageEntry.HideNodePrefabPaths))
         {
             SetPerpstageNodeVisibilityByPrefab(perpStage, stageEntry.HideNodePrefabPaths, visible);
         }
     }
     else
     {
         if (!string.IsNullOrEmpty(stageEntry.ShowNodeNames))
         {
             SetPerpstageNodeVisibilityByNode(perpStage, stageEntry.ShowNodeNames, visible);
         }
         if (!string.IsNullOrEmpty(stageEntry.ShowNodePrefabPaths))
         {
             SetPerpstageNodeVisibilityByPrefab(perpStage, stageEntry.ShowNodePrefabPaths, visible);
         }
     }
 }
Пример #4
0
        public void LoadNavMeshRelatedLevel(string stageTypeName)
        {
            StageEntry stageEntryByName = StageData.GetStageEntryByName(stageTypeName);

            char[] separator = new char[] { '/' };
            string str       = stageEntryByName.GetPerpStagePrefabPath().Split(separator)[1];

            if (!string.IsNullOrEmpty(this._currentLocatorName))
            {
                SceneManager.UnloadScene(this._currentLocatorName);
                this._currentLocatorName = string.Empty;
            }
            string locatorName = this.GetLocatorName(stageEntryByName);

            foreach (ConfigNavMeshScenePath path in GlobalDataManager.metaConfig.scenePaths)
            {
                if ((path.MainSceneName == str) && (path.UnitySceneName == locatorName))
                {
                    SceneManager.LoadScene(path.UnitySceneName, LoadSceneMode.Additive);
                    this._currentLocatorName = locatorName;
                    this.ResetStageAreaMask(stageEntryByName);
                    break;
                }
            }
        }
Пример #5
0
 public virtual void Reset(StageEntry entry, ConfigWeatherData weatherData)
 {
     this._initBaseRenderingData = weatherData.configRenderingData as ConfigStageRenderingData;
     this._renderingDataStack.Set(0, new RenderingDataTransition(this._initBaseRenderingData), true);
     this.SetRenderingDataImmediately(this._initBaseRenderingData);
     this._currentRendertingData.ApplyGlobally();
     this._initBaseSubWeather = weatherData.configSubWeathers;
     this._subWeatherStack.Set(0, new SubWeatherTransition(this._initBaseSubWeather, 0), true);
     this.SetSubWeathersImmediately(this._initBaseSubWeather);
     this.CommonInit(entry);
 }
Пример #6
0
        private void CommonInit(StageEntry stageEntry)
        {
            this.InitWindZone();
            this.InitLightProb();
            this.InitLightMapCorrection();
            Singleton <StageManager> .Instance.SetBaseStageEffectSetting(stageEntry.StageEffectSetting);

            Singleton <StageManager> .Instance.SetBaseStageEffectSetting(this._subWeatherStack.value.weather.stageEffectSetting);

            FixedStack <float> auxTimeScaleStack = Singleton <LevelManager> .Instance.levelEntity.auxTimeScaleStack;

            auxTimeScaleStack.onChanged = (Action <float, int, float, int>)Delegate.Combine(auxTimeScaleStack.onChanged, new Action <float, int, float, int>(this.AuxTimeScaleCallback));
        }
Пример #7
0
        public virtual void Init(StageEntry entry, string weatherName)
        {
            this._currentBaseWeatherName = weatherName;
            ConfigWeatherData weatherDataByName = this.GetWeatherDataByName(weatherName);

            this._initBaseRenderingData = weatherDataByName.configRenderingData as ConfigStageRenderingData;
            this._renderingDataStack.Push(0, new RenderingDataTransition(this._initBaseRenderingData), true);
            this._currentRendertingData = (ConfigStageRenderingData)this._initBaseRenderingData.Clone();
            this._currentRendertingData.ApplyGlobally();
            this._initBaseSubWeather = weatherDataByName.configSubWeathers;
            this._subWeatherStack.Push(0, new SubWeatherTransition(this._initBaseSubWeather, 0), true);
            this.SetSubWeathersImmediately(this._initBaseSubWeather);
            this.CommonInit(entry);
        }
Пример #8
0
 public static void ReloadFromFile()
 {
     _stageEntryDict = new Dictionary <string, StageEntry>();
     string[] stageEntryPathes = GlobalDataManager.metaConfig.stageEntryPathes;
     for (int i = 0; i < stageEntryPathes.Length; i++)
     {
         ConfigStageRegistry registry = ConfigUtil.LoadConfig <ConfigStageRegistry>(stageEntryPathes[i]);
         if (registry.entries != null)
         {
             for (int j = 0; j < registry.entries.Length; j++)
             {
                 StageEntry entry = registry.entries[j];
                 _stageEntryDict.Add(entry.TypeName, entry);
             }
         }
     }
 }
Пример #9
0
        public void ResetStageAreaMask(StageEntry newStage)
        {
            uint   num;
            string locatorName = this.GetLocatorName(newStage);
            bool   flag        = uint.TryParse(locatorName.Substring(locatorName.Length - 2), out num);

            if (!flag)
            {
                flag = uint.TryParse(locatorName.Substring(locatorName.Length - 1), out num);
            }
            int areaFromName = NavMesh.GetAreaFromName("Walkable");

            if (flag)
            {
                areaFromName = NavMesh.GetAreaFromName("StageMask" + num.ToString());
            }
            this._stageAreaWalkMask = (((int)1) << areaFromName) | (((int)1) << NavMesh.GetAreaFromName("Walkable"));
        }
Пример #10
0
 private void EnqueueForStage(TaskEntry entry, int readyForStage)
 {
     entry.ReadForStage = readyForStage;
     if (!_orderedStage[readyForStage] && (entry.PreviousByCorrelation == null))
     {
         var stageEntry = new StageEntry {
             Entry = entry, Next = null
         };
         if (_byUnorderedStageFirst[readyForStage] != null)
         {
             _byUnorderedStageLast[readyForStage].Next = stageEntry;
             _byUnorderedStageLast[readyForStage]      = stageEntry;
         }
         else
         {
             _byUnorderedStageFirst[readyForStage] = stageEntry;
             _byUnorderedStageLast[readyForStage]  = stageEntry;
         }
     }
 }
Пример #11
0
        public void CreateStage(string typeName, List <string> avatarSpawnNameList, string baseWeatherName, bool isContinued = false)
        {
            MonoBasePerpStage component;
            StageEntry        stageEntryByName = StageData.GetStageEntryByName(typeName);
            bool    isBorn = this._activeStageEntry == null;
            Vector3 zero   = Vector3.zero;

            MonoBasePerpStage.ContinueWeatherDataSettings continueData = null;
            if (this._activeStageEntry == null)
            {
                component = ((GameObject)UnityEngine.Object.Instantiate(Miscs.LoadResource(stageEntryByName.GetPerpStagePrefabPath(), BundleType.RESOURCE_FILE))).GetComponent <MonoBasePerpStage>();
                SetPerpstageNodeVisibility(component, stageEntryByName, false, false);
                SetPerpstageNodeVisibility(component, stageEntryByName, true, true);
            }
            else if (this._activeStageEntry.PerpStagePrefabPath != stageEntryByName.PerpStagePrefabPath)
            {
                zero         = this._perpStage.transform.position;
                continueData = this._perpStage.GetContinueWeatherDataSetup();
                UnityEngine.Object.DestroyImmediate(this._perpStage.gameObject);
                Resources.UnloadUnusedAssets();
                component = ((GameObject)UnityEngine.Object.Instantiate(Miscs.LoadResource(stageEntryByName.GetPerpStagePrefabPath(), BundleType.RESOURCE_FILE))).GetComponent <MonoBasePerpStage>();
                SetPerpstageNodeVisibility(component, stageEntryByName, false, false);
                SetPerpstageNodeVisibility(component, stageEntryByName, true, true);
            }
            else
            {
                SetPerpstageNodeVisibility(this._perpStage, this._activeStageEntry, false, true);
                zero         = -this._perpStage.transform.Find(this._activeStageEntry.LocationPointName).localPosition;
                continueData = this._perpStage.GetContinueWeatherDataSetup();
                component    = this._perpStage;
                SetPerpstageNodeVisibility(component, stageEntryByName, false, false);
                SetPerpstageNodeVisibility(component, stageEntryByName, true, true);
            }
            Vector3 offset = this.InitAfterCreateStage(stageEntryByName, component, zero, isBorn, baseWeatherName, continueData, isContinued);

            Singleton <AvatarManager> .Instance.PreloadTeamAvatars();

            Singleton <EventManager> .Instance.FireEvent(new EvtStageCreated(avatarSpawnNameList, isBorn, offset), MPEventDispatchMode.Normal);
        }
Пример #12
0
        private Vector3 InitAfterCreateStage(StageEntry stageEntry, MonoBasePerpStage perpStage, Vector3 preStagePos, bool isBorn, string baseWeatherName, MonoBasePerpStage.ContinueWeatherDataSettings continueData, bool isContinued)
        {
            Vector3 zero    = Vector3.zero;
            Vector3 vector2 = Vector3.zero;

            if (!string.IsNullOrEmpty(stageEntry.LocationPointName))
            {
                perpStage.transform.position = Vector3.zero;
                perpStage.transform.position = -perpStage.transform.Find(stageEntry.LocationPointName).localPosition;
                vector2 = perpStage.transform.position - preStagePos;
            }
            if (this._activeStageEntry == null)
            {
                perpStage.Init(stageEntry, baseWeatherName);
            }
            else
            {
                float             renderingTimer  = 0f;
                float             weatherTimer    = 0f;
                ConfigWeatherData fromWeatherData = null;
                ConfigWeatherData toWeatherData   = null;
                string            toWeatherName   = null;
                if (continueData != null)
                {
                    renderingTimer  = continueData.renderingDataContinueTimer;
                    weatherTimer    = continueData.weatherContinueTimer;
                    fromWeatherData = continueData.currentWeatherData;
                    toWeatherData   = continueData.continueWeatherData;
                    toWeatherName   = continueData.continueWeatherName;
                }
                if (this._activeStageEntry.PerpStagePrefabPath != stageEntry.PerpStagePrefabPath)
                {
                    if (isContinued)
                    {
                        if (renderingTimer > 0f)
                        {
                            if (toWeatherName != null)
                            {
                                perpStage.Init(stageEntry, fromWeatherData, toWeatherName, renderingTimer, weatherTimer);
                            }
                            else
                            {
                                perpStage.Init(stageEntry, fromWeatherData, toWeatherData, renderingTimer, weatherTimer);
                            }
                        }
                        else if (toWeatherName != null)
                        {
                            perpStage.Init(stageEntry, toWeatherName);
                        }
                        else
                        {
                            perpStage.Init(stageEntry, toWeatherData);
                        }
                    }
                    else
                    {
                        perpStage.Init(stageEntry, baseWeatherName);
                    }
                }
                else if (isContinued)
                {
                    if (renderingTimer > 0f)
                    {
                        perpStage.TransitWeatherData(toWeatherData, renderingTimer, weatherTimer);
                    }
                    else
                    {
                        perpStage.Reset(stageEntry, toWeatherData);
                    }
                }
                else
                {
                    perpStage.Reset(stageEntry, WeatherData.GetWeatherDataConfig(baseWeatherName));
                }
                this.CleanForStageTransit();
            }
            GameObject obj2 = (GameObject)UnityEngine.Object.Instantiate(Miscs.LoadResource(stageEntry.GetEnvPrefabPath(), BundleType.RESOURCE_FILE));

            obj2.transform.position = Vector3.zero;
            obj2.transform.rotation = Quaternion.identity;
            MonoStageEnv component = obj2.GetComponent <MonoStageEnv>();
            Vector3      vector3   = new Vector3(0f, -0.05f, 0f);
            Transform    transform = Miscs.FindFirstChildGivenLayerAndCollider(obj2.transform, LayerMask.NameToLayer("StageCollider"));

            if (transform != null)
            {
                transform.position += vector3;
            }
            this.RegisterStage(stageEntry, perpStage, component);
            return(vector2);
        }
 private void EnqueueForStage(TaskEntry entry, int readyForStage)
 {
     entry.ReadForStage = readyForStage;
     if (!_orderedStage[readyForStage] && (entry.PreviousByCorrelation == null))
     {
         var stageEntry = new StageEntry {Entry = entry, Next = null};
         if (_byUnorderedStageFirst[readyForStage] != null)
         {
             _byUnorderedStageLast[readyForStage].Next = stageEntry;
             _byUnorderedStageLast[readyForStage] = stageEntry;
         }
         else
         {
             _byUnorderedStageFirst[readyForStage] = stageEntry;
             _byUnorderedStageLast[readyForStage] = stageEntry;
         }
     }
 }
Пример #14
0
 private string GetLocatorName(StageEntry newStage)
 {
     char[]   separator = new char[] { '/' };
     string[] strArray  = newStage.LocationPointName.Split(separator);
     return(strArray[strArray.Length - 1]);
 }
Пример #15
0
 public void RegisterStage(StageEntry stageEntry, MonoBasePerpStage perpStage, MonoStageEnv stageEnv)
 {
     this._activeStageEntry = stageEntry;
     this._perpStage        = perpStage;
     this._stageEnv         = stageEnv;
 }
Пример #16
0
        public void GenerateObjSet(string filePath, Model stgpv, ObjectDatabase objdb, TextureDatabase texturedb, StageDatabase staged, string acpath, divamodgen divamods, bool doProcess = true, bool debug = false)
        {
            /*
             * var stgpv = new Model();
             * var textures = new MikuMikuLibrary.Textures.TextureSet();
             * var texdb = new TextureDatabase();
             *
             * using (var farcArchive = BinaryFile.Load<FarcArchive>(filePath))
             * using (var entryStream = farcArchive.Open(farcArchive.Entries.Where(c => c.Contains("txi")).First(), EntryStreamMode.MemoryStream))
             *  texdb.Load(entryStream);
             *
             * if (debug)
             * {
             *  string farcpath = acpath + "\\rom\\objset\\" + Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8") + ".farc";
             *
             *  using (var farcArchive = BinaryFile.Load<FarcArchive>(farcpath))
             *  using (var entryStream = farcArchive.Open(farcArchive.Entries.Where(c => c.Contains("tex")).First(), EntryStreamMode.MemoryStream))
             *      textures.Load(entryStream);
             *
             * }
             * else
             * {
             *  using (var farcArchive = BinaryFile.Load<FarcArchive>(filePath))
             *  using (var entryStream = farcArchive.Open(farcArchive.Entries.Where(c => c.Contains("txd")).First(), EntryStreamMode.MemoryStream))
             *      textures.Load(entryStream);
             *
             *  using (var farcArchive = BinaryFile.Load<FarcArchive>(filePath))
             *  using (var entryStream = farcArchive.Open(farcArchive.Entries.First(), EntryStreamMode.MemoryStream))
             *      stgpv.Load(entryStream, textures, texdb);
             * }
             *
             */

            if (Path.GetFileNameWithoutExtension(filePath).Contains("effpv"))
            {
                filePath = Path.GetDirectoryName(filePath) + "\\" + Path.GetFileNameWithoutExtension(filePath).Replace("effpv", "stgpv") + "hrc2.farc";
            }

            var texdb = new TextureDatabase();

            //using (var farcArchive = BinaryFile.Load<FarcArchive>(filePath))
            //using (var entryStream = farcArchive.Open(farcArchive.Entries.Where(c => c.Contains("txi")).First(), EntryStreamMode.MemoryStream))
            //   texdb.Load(entryStream);

            var objentry = new ObjectEntry();

            objentry.ArchiveFileName = Path.GetFileName(filePath).Replace("stgpv0", "stgpv8");
            objentry.FileName        = Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8") + "_obj.bin";
            objentry.Id              = FindUnusedID(objdb);
            objentry.Name            = Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8").ToUpper();
            objentry.TextureFileName = Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8") + "_tex.bin";

            int ground_id = -1;

            ushort counter = 1;

            foreach (var meshes in stgpv.Meshes)
            {
                meshes.SubMeshes.RemoveAll(x => x.Vertices == null || x.Vertices.Length == 0);
                meshes.Name = meshes.Name.Replace("STGPV0", "STGPV8");
                meshes.Name = meshes.Name.Replace("EFFPV", "STGPV");

                if (Path.GetFileName(filePath).Contains("hrc"))
                {
                    int pvid = int.Parse(Path.GetFileName(filePath).Substring(5, 3));

                    if (pvid < 200)
                    {
                        pvid = pvid + 800;
                    }

                    {
                        var check2 = divamods.Divamods.Where(c => c.pvid == pvid).FirstOrDefault();
                        if (check2 == null)
                        {
                            divamods.Divamods.Add(new pdaconversion.divamods(pvid));
                            Logs.WriteLine("objset: Created new PV at id " + pvid);
                            check2 = divamods.Divamods.Where(c => c.pvid == pvid).First();
                        }
                        check2.item_pv.Add(meshes.Name);
                        Logs.WriteLine("objset: Added item_pv for PV at id " + pvid + "," + meshes.Name);
                    }

                    if (pvid >= 800)
                    {
                        var check2 = divamods.Divamods.Where(c => c.pvid == (pvid - 100)).FirstOrDefault();
                        if (check2 == null)
                        {
                            divamods.Divamods.Add(new pdaconversion.divamods(pvid - 100));
                            Logs.WriteLine("objset: Created new PV at id " + (pvid - 100));
                            check2 = divamods.Divamods.Where(c => c.pvid == (pvid - 100)).First();
                        }
                        check2.item_pv.Add(meshes.Name);
                        Logs.WriteLine("objset: Added item_pv for PV at id " + (pvid - 100) + "," + meshes.Name);
                    }
                }

                var meshentry = new MeshEntry();
                meshes.Id      = counter;
                meshentry.Id   = (ushort)meshes.Id;
                meshentry.Name = meshes.Name;

                if (meshes.Name.Contains("GND"))
                {
                    ground_id = meshes.Id;
                }

                objentry.Meshes.Add(meshentry);

                if (doProcess)
                {
                    if (!debug)
                    {
                        /*
                         * foreach (var submeshes in meshes.SubMeshes)
                         * {
                         *  foreach (var indexTable in submeshes.IndexTables)
                         *  {
                         *      ushort[] triangleStrip = Stripifier.Stripify(indexTable.Indices);
                         *      if (triangleStrip != null)
                         *      {
                         *          indexTable.PrimitiveType = PrimitiveType.TriangleStrip;
                         *          indexTable.Indices = triangleStrip;
                         *      }
                         *  }
                         * }
                         */
                    }

                    //foreach (var textures in M)

                    foreach (var material in meshes.Materials)
                    {
                        if ((Path.GetFileName(filePath).Contains("hrc2")) || (Path.GetFileName(filePath).Contains("hrc")))
                        {
                            material.Shader         = "ITEM";
                            material.IsAlphaEnabled = false;
                            //material.Field00 = 0x00000001;
                            //material.Field02 = 0x00000A80;

                            //material.Diffuse.Field00 = 0x00000000;
                            //material.Diffuse.Field01 = 0x016400E1;
                            //material.Diffuse.Field02 = 0x000000F1;

                            MikuMikuLibrary.Misc.Color asdf = new MikuMikuLibrary.Misc.Color(0, 0, 0, 0);

                            material.SpecularColor = asdf;

                            //material.AmbientColor = asdf;
                            //material.EmissionColor = asdf;
                            //material.SpecularColor = asdf;

                            //material.Shininess = 1;

                            //material.Diffuse.Field00 = 0x00000000;
                            //material.Diffuse.Field01 = 0x002400E0;
                            //material.Diffuse.Field02 = 0x000000F1;

                            if (material.Ambient.TextureId == 1509989155)
                            {
                                material.Ambient.TextureId = -1;
                            }
                            if (material.Normal.TextureId == 1509989155)
                            {
                                material.Normal.TextureId = -1;
                            }
                            if (material.Specular.TextureId == 1509989155)
                            {
                                material.Specular.TextureId = -1;
                                material.SpecularColor      = asdf;
                            }
                            //else { material.Field00 = 0x0000002D; }

                            /*
                             *
                             * // this blacken the screen on STAGE SHADER
                             * material.Specular.Field01 = 0x002418C3;
                             * material.Specular.Field02 = 0x000000F3;
                             * material.Specular.Field05 = 1;
                             * material.Specular.Field06 = 1;
                             * material.Specular.Field11 = 1;
                             * material.Specular.Field16 = 1;
                             * material.Specular.Field21 = 1;
                             *
                             *
                             * material.Specular.TextureId = -1;
                             * material.Specular.Field01 = 0x00000000;
                             * material.Specular.Field02 = 0x000000F0;
                             * material.Specular.Field05 = 1;
                             * material.Specular.Field06 = 0;
                             * material.Specular.Field11 = 0;
                             * material.Specular.Field16 = 0;
                             * material.Specular.Field21 = 0;
                             *
                             * material.Reflection.TextureId = -1;
                             * material.Reflection.Field01 = 0x00000000;
                             * material.Reflection.Field02 = 0x000000F0;
                             * material.Reflection.Field05 = 1;
                             * material.Reflection.Field06 = 0;
                             * material.Reflection.Field11 = 0;
                             * material.Reflection.Field16 = 0;
                             * material.Reflection.Field21 = 0;
                             */

                            if (material.Reflection.TextureId == 1509989155)
                            {
                                material.Reflection.TextureId = -1;
                            }
                            if (material.ToonCurve.TextureId == 1509989155)
                            {
                                material.ToonCurve.TextureId = -1;
                            }
                            if (material.SpecularPower.TextureId == 1509989155)
                            {
                                material.SpecularPower.TextureId = -1;
                            }
                            if (material.Texture08.TextureId == 1509989155)
                            {
                                material.Texture08.TextureId = -1;
                            }
                        }
                        else
                        {
                            material.Shader = "BLINN";
                            //material.Field00 = 0x0000000D;
                            //material.Field02 = 0x00000A80;

                            MikuMikuLibrary.Misc.Color asdf = new MikuMikuLibrary.Misc.Color(0, 0, 0, 0);

                            //material.AmbientColor = asdf;
                            //material.EmissionColor = asdf;
                            //material.Shininess = 1;
                            //material.Diffuse.Field00 = 0x00000230;
                            //material.Diffuse.Field02 = 0x002418C3;

                            if (material.Ambient.TextureId == 1509989155)
                            {
                                material.Ambient.TextureId = -1;
                            }
                            if (material.Normal.TextureId == 1509989155)
                            {
                                material.Normal.TextureId = -1;
                            }
                            if (material.Specular.TextureId == 1509989155)
                            {
                                material.Specular.TextureId = -1;
                                material.SpecularColor      = asdf;
                            }
                            //else { material.Field00 = 0x0000002D; }

                            /*
                             *
                             * // this blacken the screen on STAGE SHADER
                             * material.Specular.Field01 = 0x002418C3;
                             * material.Specular.Field02 = 0x000000F3;
                             * material.Specular.Field05 = 1;
                             * material.Specular.Field06 = 1;
                             * material.Specular.Field11 = 1;
                             * material.Specular.Field16 = 1;
                             * material.Specular.Field21 = 1;
                             *
                             */

                            /*
                             * material.Specular.TextureId = -1;
                             * material.Specular.Field01 = 0x00000000;
                             * material.Specular.Field02 = 0x000000F0;
                             * material.Specular.Field05 = 5;
                             * material.Specular.Field06 = 0;
                             * material.Specular.Field11 = 0;
                             * material.Specular.Field16 = 0;
                             * material.Specular.Field21 = 0;
                             *
                             *
                             * material.Normal.Field01 = 0x00000000;
                             * material.Normal.Field02 = 0x000000F0;
                             * material.Normal.Field05 = 5;
                             * material.Normal.Field06 = 0;
                             * material.Normal.Field11 = 0;
                             * material.Normal.Field16 = 0;
                             * material.Normal.Field21 = 0;
                             *
                             *
                             * material.ToonCurve.TextureId = -1;
                             * material.ToonCurve.Field01 = 0x00000000;
                             * material.ToonCurve.Field02 = 0x000000F0;
                             * material.ToonCurve.Field05 = 5;
                             * material.ToonCurve.Field06 = 0;
                             * material.ToonCurve.Field11 = 0;
                             * material.ToonCurve.Field16 = 0;
                             * material.ToonCurve.Field21 = 0;
                             */

                            if (material.Reflection.TextureId == 1509989155)
                            {
                                material.Reflection.TextureId = -1;
                            }
                            if (material.ToonCurve.TextureId == 1509989155)
                            {
                                material.ToonCurve.TextureId = -1;
                            }
                            if (material.SpecularPower.TextureId == 1509989155)
                            {
                                material.SpecularPower.TextureId = -1;
                            }
                            if (material.Texture08.TextureId == 1509989155)
                            {
                                material.Texture08.TextureId = -1;
                            }
                        }
                    }
                }
                counter++;
            }

            stgpv.TextureSet.Format = BinaryFormat.DT;
            stgpv.Format            = BinaryFormat.DT;



            if (doProcess)
            {
                stgpv.Save("temp\\" + Path.GetFileNameWithoutExtension(filePath) + "_obj.bin", null, texturedb, null);
            }
            objdb.Objects.Add(objentry);

            if (Path.GetFileNameWithoutExtension(filePath).Count() == 8)
            {
                StageEntry stage = new StageEntry();
                stage.Id                  = FindUnusedID(staged);
                stage.Name                = Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8").ToUpper();
                stage.ObjectGroundId      = (short)ground_id;
                stage.ObjectGroundIdFlag  = (short)objentry.Id;
                stage.ObjectId3           = -1;
                stage.ObjectIdFlag3       = -1;
                stage.ObjectId5           = -1;
                stage.ObjectIdFlag5       = -1;
                stage.ObjectId7           = -1;
                stage.ObjectIdFlag7       = -1;
                stage.RingRectangleX      = -8;
                stage.RingRectangleY      = -8;
                stage.RingRectangleWidth  = 16;
                stage.RingRectangleHeight = 16;
                stage.RingRingHeight      = 0;
                stage.RingOutHeight       = -1000;
                stage.Field00             = 1;
                stage.Field11             = -1;
                stage.Field02             = -1;

                stage.LensFlareScaleX = -1;
                stage.LensFlareScaleY = -1;
                stage.LensFlareScaleZ = -1;

                stage.ObjectSkyId         = -1;
                stage.ObjectSkyIdFlag     = -1;
                stage.ObjectReflectId     = -1;
                stage.ObjectReflectIdFlag = -1;

                stage.CollisionFilePath = @"rom/STGTST_COLI.000.bin";

                stage.ObjectId1    = (short)objentry.Id;
                stage.StageEffect1 = StageEntry.StageEffect.Empty;
                stage.Auth3dName   = "EFF" + stage.Name;
                staged.Stages.Add(stage);
            }

            if (doProcess)
            {
                var newfarc = new FarcArchive();
                newfarc.Add(Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8") + "_obj.bin", "temp\\" + Path.GetFileNameWithoutExtension(filePath) + "_obj.bin");
                newfarc.Add(Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8") + "_tex.bin", "temp\\" + Path.GetFileNameWithoutExtension(filePath) + "_tex.bin");
                newfarc.Alignment    = 16;
                newfarc.IsCompressed = false;
                newfarc.Save(acpath + "\\rom\\objset\\" + Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8") + ".farc");
            }
        }
Пример #17
0
        private void HandleAlreadyLoadedPrefabs()
        {
            RuntimeIDManager  instance         = Singleton <RuntimeIDManager> .Instance;
            StageEntry        stageEntryByName = StageData.GetStageEntryByName(this.stageDevData.stageName);
            MonoBasePerpStage perpStage        = UnityEngine.Object.FindObjectOfType <MonoBasePerpStage>();

            if (perpStage != null)
            {
                perpStage.Init(stageEntryByName, (string)null);
            }
            MonoStageEnv stageEnv = UnityEngine.Object.FindObjectOfType <MonoStageEnv>();

            Singleton <StageManager> .Instance.RegisterStage(stageEntryByName, perpStage, stageEnv);

            LevelActor actor = (LevelActor)Singleton <EventManager> .Instance.GetActor(0x21800001);

            actor.levelMode = this.LEVEL_MODE;
            BaseMonoAvatar avatar = UnityEngine.Object.FindObjectOfType <BaseMonoAvatar>();

            if (avatar != null)
            {
                DevAvatarData  devAvatarData  = this.avatarDevDatas[0];
                AvatarDataItem avatarDataItem = Singleton <AvatarModule> .Instance.GetDummyAvatarDataItem(this.avatarTypeNames[0], devAvatarData.avatarLevel, devAvatarData.avatarStar);

                this.SetUpAvatarDataItem(avatarDataItem, devAvatarData);
                uint nextRuntimeID = instance.GetNextRuntimeID(3);
                avatar.Init(true, nextRuntimeID, avatarDataItem.AvatarRegistryKey, avatarDataItem.GetWeapon().ID, avatar.transform.position, avatar.transform.forward, true);
                this.LoadAvatarWwiseSoundBank(avatar);
                AvatarActor actor2 = Singleton <EventManager> .Instance.CreateActor <AvatarActor>(avatar);

                actor2.InitAvatarDataItem(avatarDataItem, true, false, true, true);
                actor2.PostInit();
                Singleton <AvatarManager> .Instance.RegisterAvatar(avatar, true, true, false);

                this.SetUpAvatarSkill(actor2, devAvatarData);
                this.CheatForPariticleMode(actor2);
                for (int i = 1; i < this.avatarCount; i++)
                {
                    DevAvatarData  data2 = this.avatarDevDatas[i];
                    AvatarDataItem item2 = Singleton <AvatarModule> .Instance.GetDummyAvatarDataItem(this.avatarTypeNames[i], data2.avatarLevel, data2.avatarStar);

                    this.SetUpAvatarDataItem(item2, data2);
                    uint runtimeID = instance.GetNextRuntimeID(3);
                    Singleton <AvatarManager> .Instance.CreateAvatar(item2, false, avatar.XZPosition, avatar.FaceDirection, runtimeID, false, false, false, false);

                    AvatarActor actor3 = Singleton <EventManager> .Instance.GetActor <AvatarActor>(runtimeID);

                    this.SetUpAvatarSkill(actor3, data2);
                    this.CheatForPariticleMode(actor3);
                }
                if (this.useFakeHelper)
                {
                    this.CreateFakeFriendAvatar();
                }
                Singleton <CinemaDataManager> .Instance.Preload(avatar);
            }
            foreach (BaseMonoMonster monster in UnityEngine.Object.FindObjectsOfType <BaseMonoMonster>())
            {
                DevMonsterData data3      = null;
                int            instanceID = monster.gameObject.GetInstanceID();
                for (int j = 0; j < this.monsterInstanceIds.Count; j++)
                {
                    if (this.monsterInstanceIds[j] == instanceID)
                    {
                        data3 = this.monsterDevDatas[j];
                        break;
                    }
                }
                if (data3 == null)
                {
                    UnityEngine.Object.Destroy(monster.gameObject);
                }
                else
                {
                    string monsterName;
                    string typeName;
                    uint   num7 = instance.GetNextRuntimeID(4);
                    if (data3.uniqueMonsterID != 0)
                    {
                        UniqueMonsterMetaData uniqueMonsterMetaData = MonsterData.GetUniqueMonsterMetaData(data3.uniqueMonsterID);
                        monsterName = uniqueMonsterMetaData.monsterName;
                        typeName    = uniqueMonsterMetaData.typeName;
                    }
                    else
                    {
                        monsterName = data3.monsterName;
                        typeName    = data3.typeName;
                    }
                    bool isElite = data3.isElite;
                    monster.Init(monsterName, typeName, num7, monster.transform.position, data3.uniqueMonsterID, null, true, isElite, true, 0);
                    for (int k = 0; k < monster.config.CommonArguments.RequestSoundBankNames.Length; k++)
                    {
                        Singleton <WwiseAudioManager> .Instance.ManualPrepareBank(monster.config.CommonArguments.RequestSoundBankNames[k]);
                    }
                    MonsterActor actor4 = Singleton <EventManager> .Instance.CreateActor <MonsterActor>(monster);

                    actor4.InitLevelData(data3.level, data3.isElite);
                    actor4.PostInit();
                    Singleton <MonsterManager> .Instance.RegisterMonster(monster);

                    if (data3.abilities.Length > 0)
                    {
                        for (int m = 0; m < data3.abilities.Length; m++)
                        {
                            string str3 = data3.abilities[m];
                            if (!string.IsNullOrEmpty(str3))
                            {
                                actor4.abilityPlugin.InsertPreInitAbility(AbilityData.GetAbilityConfig(data3.abilities[m]));
                            }
                        }
                    }
                    if (data3.isStationary)
                    {
                        MonsterActor actor5 = Singleton <EventManager> .Instance.GetActor <MonsterActor>(monster.GetRuntimeID());

                        actor5.baseMaxHP = actor5.HP = actor5.maxHP = 999999f;
                        monster.GetActiveAIController().SetActive(false);
                    }
                }
            }
            Singleton <LevelManager> .Instance.levelActor.SuddenLevelStart();

            EvtStageReady evt = new EvtStageReady {
                isBorn = true
            };

            Singleton <EventManager> .Instance.FireEvent(evt, MPEventDispatchMode.Normal);

            Singleton <DetourManager> .Instance.LoadNavMeshRelatedLevel(this.stageDevData.stageName);

            Singleton <MainUIManager> .Instance.GetInLevelUICanvas().FadeInStageTransitPanel(0.18f, false, null, null);
        }