Ejemplo n.º 1
0
 public void Init(STUMapHeader mapHeader, ulong key = default)
 {
     GUID         = (teResourceGUID)key;
     Name         = GetString(mapHeader.m_displayName);
     VariantName  = GetString(mapHeader.m_1C706502);
     Description  = GetString(mapHeader.m_389CB894);
     Description2 = GetString(mapHeader.m_ACB95597);
     Subline      = GetString(mapHeader.m_EBCFAD22);
     StateA       = GetString(mapHeader.m_8EBADA44);
     StateB       = GetString(mapHeader.m_5AFE2F61);
     MapGUID      = mapHeader.m_map;
     State        = mapHeader.m_A125818B;
     MapType      = mapHeader.m_mapType;
     GameModes    = mapHeader.m_D608E9F3?.Select(x => new GameMode(x).ToLite()).Where(x => x.GUID != 0);
 }
Ejemplo n.º 2
0
        public void SaveMaps(ICLIFlags toolFlags)
        {
            string basePath;

            if (toolFlags is ExtractFlags flags)
            {
                basePath = flags.OutputPath;
            }
            else
            {
                throw new Exception("no output path");
            }

            Dictionary <string, Dictionary <string, ParsedArg> > parsedTypes = ParseQuery(flags, QueryTypes, QueryNameOverrides);

            if (parsedTypes == null)
            {
                QueryHelp(QueryTypes);
                return;
            }

            foreach (ulong key in TrackedFiles[0x9F])
            {
                STUMapHeader map = GetInstance <STUMapHeader>(key);
                if (map == null)
                {
                    continue;
                }
                MapHeader mapInfo = ListMaps.GetMap(key);
                mapInfo.Name = mapInfo.Name ?? "Title Screen";

                Dictionary <string, ParsedArg> config = GetQuery(parsedTypes, mapInfo.Name, mapInfo.VariantName,
                                                                 mapInfo.GetUniqueName(), mapInfo.GetName(), teResourceGUID.Index(map.m_map).ToString("X"), "*");

                if (config.Count == 0)
                {
                    continue;
                }

                Map.Save(flags, mapInfo, map, key, basePath);
                SaveScratchDatabase();
            }
        }
Ejemplo n.º 3
0
        public void Parse(ICLIFlags toolFlags)
        {
            var flags     = toolFlags as ExtractFlags;
            var testguids = flags.Positionals.Skip(3).Select(x => uint.Parse(x, System.Globalization.NumberStyles.HexNumber));

            foreach (var guid in Program.TrackedFiles[0x9F])
            {
                if (testguids.Contains(teResourceGUID.Index(guid)))
                {
                    var          path = Path.Combine(flags.OutputPath, "teMapPlacable", teResourceGUID.Index(guid).ToString("X"));
                    STUMapHeader map  = GetInstance <STUMapHeader>(guid);

                    foreach (var t in Enum.GetValues(typeof(Enums.teMAP_PLACEABLE_TYPE)))
                    {
                        var teType = (Enums.teMAP_PLACEABLE_TYPE)t;
                        if (teType == Enums.teMAP_PLACEABLE_TYPE.UNKNOWN)
                        {
                            continue;
                        }

                        var o = Path.Combine(path, teType.ToString());
                        if (teMapPlaceableData.Manager.Types.ContainsKey(teType))
                        {
                            continue;
                        }

                        if (!Directory.Exists(o))
                        {
                            Directory.CreateDirectory(o);
                        }

                        teMapPlaceableData placable = GetPlaceableData(map, teType);
                        for (int i = 0; i < placable.Header.PlaceableCount; ++i)
                        {
                            var commonStructure = placable.CommonStructures[i];
                            using (var f = File.OpenWrite(Path.Combine(o, commonStructure.UUID.Value.ToString("N")))) {
                                f.Write(((teMapPlaceableDummy)placable.Placeables[i]).Data, 0, ((teMapPlaceableDummy)placable.Placeables[i]).Data.Length);
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 4
0
        public void Init(STUMapHeader mapHeader, ulong key = default)
        {
            GUID         = (teResourceGUID)key;
            Name         = GetString(mapHeader.m_displayName);
            VariantName  = GetString(mapHeader.m_1C706502);
            Description  = GetString(mapHeader.m_389CB894);
            Description2 = GetString(mapHeader.m_ACB95597);
            Subline      = GetString(mapHeader.m_EBCFAD22);
            StateA       = GetString(mapHeader.m_8EBADA44);
            StateB       = GetString(mapHeader.m_5AFE2F61);
            MapGUID      = mapHeader.m_map;
            State        = mapHeader.m_A125818B;
            MapType      = mapHeader.m_mapType;
            Thumbnail    = mapHeader.m_9386E669;
            Image        = mapHeader.m_86C1CFAB;
            FlagImage    = mapHeader.m_C6599DEB;
            GameModes    = mapHeader.m_D608E9F3?.Select(x => new GameMode(x).ToLite()).Where(x => x.GUID != 0);

            if (mapHeader.m_celebrationOverrides != null)
            {
                CelebrationVariants = mapHeader.m_celebrationOverrides.Select(x => {
                    var hmm = (teResourceGUID)x.m_map;
                    hmm.SetType(0x9F);

                    return(new MapCelebrationVariant {
                        Name = GetGUIDName(x.m_celebrationType),
                        Virtual01C = x.m_celebrationType,
                        MapInfo = new MapHeader(hmm).ToLite()
                    });
                }).ToArray();
            }

            // Attempt to get the menu map name if one exists
            var mapHeaderGuid = (teResourceGUID)mapHeader.m_map;

            mapHeaderGuid.SetType(0x9F);
            Name = GetNullableGUIDName(mapHeaderGuid) ?? Name;
        }
Ejemplo n.º 5
0
 public MapHeader(STUMapHeader stu, ulong key = default)
 {
     Init(stu, key);
 }
Ejemplo n.º 6
0
        public void SaveMaps(ICLIFlags toolFlags)
        {
            string basePath;

            if (toolFlags is ExtractFlags extractFlags)
            {
                basePath = extractFlags.OutputPath;
            }
            else
            {
                throw new Exception("no output path");
            }

            basePath = Path.Combine(basePath, "Environments");

            if (!Directory.Exists(basePath))
            {
                Directory.CreateDirectory(basePath);
            }

            var flags = extractFlags as ExtractMapEnvFlags ?? new ExtractMapEnvFlags();

            if (!flags.SkipMapEnvironmentLUT && File.Exists(Path.Combine(basePath, "SPILUT", "config.ocio")))
            {
                File.Delete(Path.Combine(basePath, "SPILUT", "config.ocio"));
            }

            HashSet <KeyValuePair <ulong, string> > done = new HashSet <KeyValuePair <ulong, string> >();

            foreach (ulong metaKey in TrackedFiles[0x9F])
            {
                STUMapHeader map = GetInstance <STUMapHeader>(metaKey);
                if (map == null)
                {
                    continue;
                }

                MapHeader mapInfo = GetMap(metaKey);

                ulong dataKey = map.m_map;

                //if (teResourceGUID.Index(dataKey) != 0x7A4) continue;

                var    mapName = GetValidFilename($"{mapInfo.GetName()}_{teResourceGUID.Index(mapInfo.MapGUID):X}");
                string fname   = $"ow_map_{mapName}";

                var reflectionData = Map.GetPlaceableData(map, Enums.teMAP_PLACEABLE_TYPE.REFLECTIONPOINT);
                if (reflectionData != null)
                {
                    foreach (var placeable in reflectionData.Placeables ?? Array.Empty <IMapPlaceable>())
                    {
                        if (!(placeable is teMapPlaceableReflectionPoint reflectionPoint))
                        {
                            continue;
                        }
                        if (done.Add(new KeyValuePair <ulong, string>(reflectionPoint.Header.Texture1, mapInfo.Name + "cube")))
                        {
                            SaveTex(extractFlags, basePath, Path.Combine("Cubemap", fname), reflectionPoint.Header.Texture1.ToString(), reflectionPoint.Header.Texture1);
                        }

                        if (done.Add(new KeyValuePair <ulong, string>(reflectionPoint.Header.Texture2, mapInfo.Name + "cube")))
                        {
                            SaveTex(extractFlags, basePath, Path.Combine("Cubemap", fname), reflectionPoint.Header.Texture2.ToString(), reflectionPoint.Header.Texture2);
                        }
                    }
                }

                using (Stream data = OpenFile(dataKey)) {
                    if (data != null)
                    {
                        using (BinaryReader dataReader = new BinaryReader(data)) {
                            teMap env = dataReader.Read <teMap>();

                            // using (Stream lightingStream = OpenFile(env.BakedLighting)) {
                            //    teLightingManifest lightingManifest = new teLightingManifest(lightingStream);
                            //}

                            if (!flags.SkipMapEnvironmentSound && done.Add(new KeyValuePair <ulong, string>(env.MapEnvironmentSound, mapInfo.Name)))
                            {
                                SaveSound(extractFlags, basePath, Path.Combine("Sound", mapName), env.MapEnvironmentSound);
                            }
                            if (!flags.SkipMapEnvironmentLUT && done.Add(new KeyValuePair <ulong, string>(env.LUT, mapInfo.Name)))
                            {
                                SaveTex(extractFlags, basePath, "LUT", fname + env.LUT, env.LUT);
                                SaveLUT(extractFlags, basePath, "SPILUT", fname + env.LUT, env.LUT, Path.Combine(basePath, "SPILUT", "config.ocio"), mapInfo);
                            }

                            if (!flags.SkipMapEnvironmentBlendCubemap && done.Add(new KeyValuePair <ulong, string>(env.BlendEnvironmentCubemap, mapInfo.Name)))
                            {
                                SaveTex(extractFlags, basePath, "BlendCubemap", fname + env.BlendEnvironmentCubemap, env.BlendEnvironmentCubemap);
                            }
                            if (!flags.SkipMapEnvironmentGroundCubemap && done.Add(new KeyValuePair <ulong, string>(env.GroundEnvironmentCubemap, mapInfo.Name)))
                            {
                                SaveTex(extractFlags, basePath, "GroundCubemap", fname + env.GroundEnvironmentCubemap, env.GroundEnvironmentCubemap);
                            }
                            if (!flags.SkipMapEnvironmentSkyCubemap && done.Add(new KeyValuePair <ulong, string>(env.SkyEnvironmentCubemap, mapInfo.Name)))
                            {
                                SaveTex(extractFlags, basePath, "SkyCubemap", fname + env.SkyEnvironmentCubemap, env.SkyEnvironmentCubemap);
                            }
                            if (!flags.SkipMapEnvironmentSkybox && done.Add(new KeyValuePair <ulong, string>(env.SkyboxModel + env.SkyboxModelLook, mapInfo.Name)))
                            {
                                SaveMdl(extractFlags, basePath, Path.Combine("Skybox", mapName), env.SkyboxModel, env.SkyboxModelLook);
                            }
                            if (!flags.SkipMapEnvironmentEntity && done.Add(new KeyValuePair <ulong, string>(env.EntityDefinition, mapInfo.Name)))
                            {
                                SaveEntity(extractFlags, basePath, Path.Combine("Entity", mapName), env.EntityDefinition);
                            }
                        }
                    }
                }

                InfoLog("Saved Environment data for {0}", mapInfo.GetUniqueName());
            }
        }
Ejemplo n.º 7
0
Archivo: Map.cs Proyecto: ipud2/OWLib
 public static teMapPlaceableData GetPlaceableData(STUMapHeader map, Enums.teMAP_PLACEABLE_TYPE modelGroup)
 {
     return(GetPlaceableData(map, (byte)modelGroup));
 }
Ejemplo n.º 8
0
Archivo: Map.cs Proyecto: ipud2/OWLib
        public static void Save(ICLIFlags flags, STUMapHeader mapHeader, ulong key, string basePath)
        {
            string name = GetString(mapHeader.m_displayName) ?? "Title Screen";
            //string name = map.m_506FA8D8;
            var variantName = GetString(mapHeader.m_1C706502);

            if (variantName != null)
            {
                name = variantName;
            }

            LoudLog($"Extracting map {name}\\{teResourceGUID.Index(key):X}");
            name = GetValidFilename(name);

            // TODO: MAP11 HAS CHANGED
            // TODO: MAP10 TOO?

            string mapPath = Path.Combine(basePath, "Maps", name, teResourceGUID.Index(key).ToString("X")) + Path.DirectorySeparatorChar;

            CreateDirectoryFromFile(mapPath);

            FindLogic.Combo.ComboInfo info = new FindLogic.Combo.ComboInfo();
            LoudLog("\tFinding");
            FindLogic.Combo.Find(info, mapHeader.m_map);

            //for (ushort i = 0; i < 255; i++) {
            //    using (Stream mapChunkStream = OpenFile(mapHeader.GetChunkKey((byte)i))) {
            //        if (mapChunkStream == null) continue;
            //        WriteFile(mapChunkStream, Path.Combine(mapPath, $"{(Enums.teMAP_PLACEABLE_TYPE)i}.0BC"));
            //    }
            //}
            //return;

            teMapPlaceableData placeableModelGroups  = GetPlaceableData(mapHeader, Enums.teMAP_PLACEABLE_TYPE.MODEL_GROUP);
            teMapPlaceableData placeableSingleModels = GetPlaceableData(mapHeader, Enums.teMAP_PLACEABLE_TYPE.SINGLE_MODEL);
            teMapPlaceableData placeableModel        = GetPlaceableData(mapHeader, Enums.teMAP_PLACEABLE_TYPE.MODEL);
            teMapPlaceableData placeableLights       = GetPlaceableData(mapHeader, Enums.teMAP_PLACEABLE_TYPE.LIGHT);
            teMapPlaceableData placeableEntities     = GetPlaceableData(mapHeader, Enums.teMAP_PLACEABLE_TYPE.ENTITY);
            teMapPlaceableData placeableSounds       = GetPlaceableData(mapHeader, Enums.teMAP_PLACEABLE_TYPE.SOUND);
            teMapPlaceableData placeableEffects      = GetPlaceableData(mapHeader, Enums.teMAP_PLACEABLE_TYPE.EFFECT);

            OverwatchMap exportMap = new OverwatchMap(name, info, placeableSingleModels, placeableModelGroups, placeableModel, placeableEntities, placeableLights, placeableSounds, placeableEffects);

            using (Stream outputStream = File.OpenWrite(Path.Combine(mapPath, $"{name}.{exportMap.Extension}"))) {
                exportMap.Write(outputStream);
            }

            {
                FindLogic.Combo.Find(info, mapHeader.m_86C1CFAB);
                FindLogic.Combo.Find(info, mapHeader.m_9386E669);
                FindLogic.Combo.Find(info, mapHeader.m_C6599DEB);

                if (mapHeader.m_D608E9F3 != null)
                {
                    foreach (teResourceGUID gamemodeGUID in mapHeader.m_D608E9F3)
                    {
                        STUGameMode gameMode = GetInstance <STUGameMode>(gamemodeGUID);
                        if (gameMode == null)
                        {
                            continue;
                        }

                        FindLogic.Combo.Find(info, gameMode.m_6EB38130);  // 004
                        FindLogic.Combo.Find(info, gameMode.m_CF63B633);  // 01B
                        FindLogic.Combo.Find(info, gameMode.m_7F5B54B2);  // game mode voice set

                        foreach (STUGameModeTeam team in gameMode.m_teams)
                        {
                            FindLogic.Combo.Find(info, team.m_bodyScript);       // 01B
                            FindLogic.Combo.Find(info, team.m_controllerScript); // 01B
                        }
                    }
                }
            }

            FindLogic.Combo.Find(info, mapHeader.m_announcerWelcome);
            info.SetEffectName(mapHeader.m_announcerWelcome, "AnnouncerWelcome");
            FindLogic.Combo.Find(info, mapHeader.m_musicTease);
            info.SetEffectName(mapHeader.m_musicTease, "MusicTease");

            ulong announcerVoiceSet = 0;

            using (Stream stream = OpenFile(mapHeader.m_map)) {
                if (stream != null)
                {
                    using (BinaryReader reader = new BinaryReader(stream)) {
                        teMap map = reader.Read <teMap>();

                        STUVoiceSetComponent voiceSetComponent =
                            GetInstance <STUVoiceSetComponent>(map.EntityDefinition);
                        announcerVoiceSet = voiceSetComponent?.m_voiceDefinition;
                        FindLogic.Combo.Find(info, announcerVoiceSet);

                        info.SetEffectVoiceSet(mapHeader.m_announcerWelcome, announcerVoiceSet);
                    }
                }
            }

            LoudLog("\tSaving");
            Combo.Save(flags, mapPath, info);
            Combo.SaveLooseTextures(flags, Path.Combine(mapPath, "Textures"), info);

            if (mapHeader.m_7F5B54B2 != 0)    // map voice set. not announcer
            {
                FindLogic.Combo.Find(info, mapHeader.m_7F5B54B2);
            }

            if (announcerVoiceSet != 0)    // whole thing in env mode, not here
            {
                info.VoiceSets.Remove(announcerVoiceSet);
            }
            Combo.SaveAllVoiceSets(flags, Path.Combine(mapPath, "VoiceSets"), info);
            Combo.SaveAllSoundFiles(flags, Path.Combine(mapPath, "Sound"), info);

            LoudLog("\tDone");
        }
Ejemplo n.º 9
0
 public static ulong GetChunkRoot(this STUMapHeader w)
 {
     return((w.m_map & ~0xFFFFFFFF00000000ul) | 0x0DD0000100000000ul);
 }
Ejemplo n.º 10
0
        public static MapInfo GetMap(ulong key)
        {
            STUMapHeader map = GetInstance <STUMapHeader>(key);

            if (map == null)
            {
                return(null);
            }

            string nameA   = GetString(map.m_displayName);
            string nameB   = GetString(map.m_1C706502);
            string subline = GetString(map.m_EBCFAD22);

            string descA = GetString(map.m_389CB894);
            string descB = GetString(map.m_ACB95597);

            string stateA = GetString(map.m_5AFE2F61);
            string stateB = GetString(map.m_8EBADA44);

            List <GamemodeInfo> gamemodes = null;

            if (map.m_D608E9F3 != null)
            {
                gamemodes = new List <GamemodeInfo>();
                foreach (ulong guid in map.m_D608E9F3)
                {
                    STUGameMode gamemode = GetInstance <STUGameMode>(guid);
                    if (gamemode == null)
                    {
                        continue;
                    }

                    gamemodes.Add(new GamemodeInfo {
                        Name = GetString(gamemode.m_displayName),
                        GUID = guid
                    });
                }
            }

            // if (map.m_celebrationOverrides != null) {
            //
            //
            // }

            if (!string.IsNullOrEmpty(nameA) && !string.IsNullOrEmpty(nameB) && nameB.Equals(nameA))
            {
                nameB = null;
            }

            if (!string.IsNullOrEmpty(descA) && !string.IsNullOrEmpty(descB) && descB.Equals(descA))
            {
                descB = null;
            }

            string uniqueName;

            if (nameA == null)
            {
                uniqueName = $"Title Screen:{teResourceGUID.Index(key):X}";
            }
            else
            {
                uniqueName = nameA + $":{teResourceGUID.Index(key):X}";
            }
            return(new MapInfo(uniqueName, key, nameA, nameB, descA, descB, subline, stateA, stateB,
                               map.m_map, map.m_baseMap, gamemodes));
        }
Ejemplo n.º 11
0
 public static ulong GetChunkKey(this STUMapHeader w, byte type)
 {
     return((GetChunkRoot(w) & ~0xFFFF00000000ul) | ((ulong)type << 32));
 }
Ejemplo n.º 12
0
 public MapHeader(STUMapHeader stu)
 {
     Init(stu);
 }
Ejemplo n.º 13
0
        public void SaveMaps(ICLIFlags toolFlags)
        {
            string basePath;

            if (toolFlags is ExtractMapEnvFlags flags)
            {
                basePath = flags.OutputPath;
            }
            else
            {
                throw new Exception("no output path");
            }

            basePath = Path.Combine(basePath, "Environments");

            if (!Directory.Exists(basePath))
            {
                Directory.CreateDirectory(basePath);
            }

            if (!flags.SkipMapEnvironmentLUT && File.Exists(Path.Combine(basePath, "SPILUT", "config.ocio")))
            {
                File.Delete(Path.Combine(basePath, "SPILUT", "config.ocio"));
            }

            HashSet <KeyValuePair <ulong, string> > done = new HashSet <KeyValuePair <ulong, string> >();

            foreach (ulong metaKey in TrackedFiles[0x9F])
            {
                STUMapHeader map = GetInstance <STUMapHeader>(metaKey);
                if (map == null)
                {
                    continue;
                }

                MapInfo mapInfo = GetMap(metaKey);
                mapInfo.Name  = mapInfo.Name ?? "Title Screen";
                mapInfo.NameB = mapInfo.NameB ?? mapInfo.Name;

                ulong dataKey = map.m_map;

                //if (teResourceGUID.Index(dataKey) != 0x7A4) continue;

                using (Stream data = OpenFile(dataKey))
                {
                    if (data == null)
                    {
                        continue;
                    }

                    using (BinaryReader dataReader = new BinaryReader(data))
                    {
                        teMap env = dataReader.Read <teMap>();

                        string fname = $"ow_map_{GetValidFilename($"{mapInfo.NameB}_{teResourceGUID.Index(mapInfo.MetadataGUID):X}")}";

                        //using (Stream lightingStream = OpenFile(env.BakedLighting)) {
                        //    teLightingManifest lightingManifest = new teLightingManifest(lightingStream);
                        //}

                        if (!flags.SkipMapEnvironmentSound && done.Add(new KeyValuePair <ulong, string>(env.MapEnvironmentSound, mapInfo.Name)))
                        {
                            SaveSound(flags, basePath, Path.Combine("Sound", GetValidFilename($"{mapInfo.NameB}_{teResourceGUID.Index(mapInfo.MetadataGUID):X}")), env.MapEnvironmentSound);
                        }
                        if (!flags.SkipMapEnvironmentLUT && done.Add(new KeyValuePair <ulong, string>(env.LUT, mapInfo.Name)))
                        {
                            SaveTex(flags, basePath, "LUT", fname, env.LUT);
                            SaveLUT(flags, basePath, "SPILUT", fname, env.LUT, Path.Combine(basePath, "SPILUT", "config.ocio"), mapInfo);
                        }
                        if (!flags.SkipMapEnvironmentBlendCubemap && done.Add(new KeyValuePair <ulong, string>(env.BlendEnvironmentCubemap, mapInfo.Name)))
                        {
                            SaveTex(flags, basePath, "BlendCubemap", fname, env.BlendEnvironmentCubemap);
                        }
                        if (!flags.SkipMapEnvironmentGroundCubemap && done.Add(new KeyValuePair <ulong, string>(env.GroundEnvironmentCubemap, mapInfo.Name)))
                        {
                            SaveTex(flags, basePath, "GroundCubemap", fname, env.GroundEnvironmentCubemap);
                        }
                        if (!flags.SkipMapEnvironmentSkyCubemap && done.Add(new KeyValuePair <ulong, string>(env.SkyEnvironmentCubemap, mapInfo.Name)))
                        {
                            SaveTex(flags, basePath, "SkyCubemap", fname, env.SkyEnvironmentCubemap);
                        }
                        if (!flags.SkipMapEnvironmentSkybox && done.Add(new KeyValuePair <ulong, string>(env.SkyboxModel ^ env.SkyboxModelLook, mapInfo.Name)))
                        {
                            SaveMdl(flags, basePath, Path.Combine("Skybox", GetValidFilename($"{mapInfo.NameB}_{teResourceGUID.Index(mapInfo.MetadataGUID):X}")), env.SkyboxModel, env.SkyboxModelLook);
                        }
                        if (!flags.SkipMapEnvironmentEntity && done.Add(new KeyValuePair <ulong, string>(env.EntityDefinition, mapInfo.Name)))
                        {
                            SaveEntity(flags, basePath, Path.Combine("Entity", GetValidFilename($"{mapInfo.NameB}_{teResourceGUID.Index(mapInfo.MetadataGUID):X}")), env.EntityDefinition);
                        }

                        InfoLog("Saved Environment data for {0}", mapInfo.NameB);
                    }
                }
            }
        }
Ejemplo n.º 14
0
        protected static string GetMapName(ulong key)
        {
            STUMapHeader map = GetInstance <STUMapHeader>(key);

            return(GetString(map.m_displayName));
        }
Ejemplo n.º 15
0
 public static ulong GetChunkKey(this STUMapHeader w, Enums.teMAP_PLACEABLE_TYPE type)
 {
     return((GetChunkRoot(w) & ~0xFFFF00000000ul) | ((ulong)type << 32));
 }
Ejemplo n.º 16
0
 public static teMapPlaceableData GetPlaceableData(STUMapHeader map, byte type)
 {
     return(GetPlaceableData(map, (Enums.teMAP_PLACEABLE_TYPE)type));
 }
Ejemplo n.º 17
0
 public static teMapPlaceableData GetPlaceableData(STUMapHeader map, Enums.teMAP_PLACEABLE_TYPE modelGroup)
 {
     using (Stream stream = OpenFile(map.GetChunkKey(modelGroup))) {
         return(stream == null ? null : new teMapPlaceableData(stream, modelGroup));
     }
 }