Beispiel #1
0
        public static void Extents(Ytyp[] ytypfiles, Ymap[] ymapfiles)
        {
            List <CBaseArchetypeDef> archetypeList = null;

            if (ytypfiles != null && ytypfiles.Length != 0)
            {
                archetypeList = Ytyp.Merge(ytypfiles).CMapTypes.archetypes;
            }

            if (ymapfiles != null && ymapfiles.Length != 0)
            {
                for (int i = 0; i < ymapfiles.Length; i++)
                {
                    HashSet <string> missing = ymapfiles[i].UpdateExtents(archetypeList);
                    if (missing?.Any() ?? false)
                    {
                        foreach (string name in missing)
                        {
                            Console.WriteLine("Missing CBaseArchetypeDef: " + name);
                        }
                    }
                    ymapfiles[i].WriteXML().Save(ymapfiles[i].filename);
                    Console.WriteLine("Updated extents for " + ymapfiles[i].filename);
                }
            }
        }
Beispiel #2
0
        public static void Merge(Ytyp[] ytypfiles, Ymap[] ymapfiles)
        {
            if (ytypfiles != null && ytypfiles.Length != 0)
            {
                Ytyp.Merge(ytypfiles).WriteXML().Save("merged.ytyp.xml");
                Console.WriteLine("Exported merged.ytyp.xml");
            }

            if (ymapfiles != null && ymapfiles.Length != 0)
            {
                Ymap.Merge(ymapfiles).WriteXML().Save("merged.ymap.xml");
                Console.WriteLine("Exported merged.ymap.xml");
            }
        }
Beispiel #3
0
        public static void RemoveFromList(Ytyp[] ytypfiles, Ymap[] ymapfiles)
        {
            List <string> removelist = new List <string>();

            Console.WriteLine("Insert the file to load names from: (ex. list.txt)");
            string filename = Console.ReadLine();

            using (StreamReader reader = new StreamReader(filename))
            {
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    removelist.Add(line.Trim().ToLower());
                }
            }

            if (ytypfiles != null && ytypfiles.Length != 0)
            {
                for (int i = 0; i < ytypfiles.Length; i++)
                {
                    List <CBaseArchetypeDef> removed_archetypes = ytypfiles[i].RemoveArchetypesByNames(removelist);
                    ytypfiles[i].WriteXML().Save(ytypfiles[i].filename);
                    Console.WriteLine("Updated " + (ytypfiles[i].filename));

                    Ytyp removedytyp = ytypfiles[i];
                    removedytyp.CMapTypes.archetypes = removed_archetypes;

                    removedytyp.WriteXML().Save(ytypfiles[i].filename.Split('.')[0] + "_removed.ytyp.xml");
                    Console.WriteLine("Exported {0}_removed.ytyp.xml", ytypfiles[i].filename.Split('.')[0]);
                }
            }

            if (ymapfiles != null && ymapfiles.Length != 0)
            {
                for (int i = 0; i < ymapfiles.Length; i++)
                {
                    List <CEntityDef> removed_entities = ymapfiles[i].RemoveEntitiesByNames(removelist);
                    ymapfiles[i].WriteXML().Save(ymapfiles[i].filename);
                    Console.WriteLine("Updated " + (ymapfiles[i].filename));

                    Ymap removedymap = ymapfiles[i];
                    removedymap.CMapData.entities = removed_entities;

                    removedymap.WriteXML().Save(ymapfiles[i].filename.Split('.')[0] + "_removed.ymap.xml");
                    Console.WriteLine("Exported {0}_removed.ymap.xml", ymapfiles[i].filename.Split('.')[0]);
                }
            }
        }
Beispiel #4
0
        //TEMP
        public static void GenerateMLO(string ytyppath, string ymappath)
        {
            Console.WriteLine("Insert the name for the MLO:");
            string mloname = Console.ReadLine();

            Ytyp theytyp = new Ytyp(XDocument.Load(ytyppath), mloname);
            Ymap theymap = new Ymap(XDocument.Load(ymappath), mloname);

            if (theytyp != null && theymap != null)
            {
                CMloInstanceDef  mloent = new CMloInstanceDef(mloname);
                CMloArchetypeDef mloarc = new CMloArchetypeDef(mloname);

                //COPY VALUES
                mloarc.entities      = theymap.CMapData.entities;
                mloarc.lodDist       = theytyp.CMapTypes.archetypes.Max(arc => arc.lodDist);
                mloarc.hdTextureDist = theytyp.CMapTypes.archetypes.Max(arc => arc.hdTextureDist);
                mloent.lodDist       = theymap.CMapData.entities.Max(ent => ent.lodDist);

                //GET CENTROID OF ENTITIES AND USE IT AS MLO POSITION
                foreach (CEntityDef ent in theymap.CMapData.entities)
                {
                    mloent.position += ent.position;
                }
                mloent.position = mloent.position / theymap.CMapData.entities.Count;

                //CHANGE COORDSYSTEM TO PARENT'S ONE
                foreach (CEntityDef ent in mloarc.entities)
                {
                    ent.position = ent.position - mloent.position;
                }

                //WEIRD WAY OF SAVING BECAUSE I'M ACTUALLY TOO BORED TO FIX ALL THE CODE TO SUPPORT MLO :DDDDDDDDDDD
                theytyp.CMapTypes.name = mloname;
                XDocument doc = theytyp.WriteXML();
                doc.Element("CMapTypes").Element("archetypes").Add(mloarc.WriteXML());
                doc.Save(mloname + ".ytyp.xml");
                Console.WriteLine(mloname + ".ytyp.xml");

                theymap.CMapData.name     = mloname;
                theymap.CMapData.entities = new List <CEntityDef>();
                doc = theymap.WriteXML();
                doc.Element("CMapData").Element("entities").Add(mloent.WriteXML());
                doc.Save(mloname + ".ymap.xml");
                Console.WriteLine(mloname + ".ymap.xml");
            }
        }
Beispiel #5
0
 public static Ytyp[] CollectYtyps(DirectoryInfo dir)
 {
     Ytyp[]     ytyps = null;
     FileInfo[] files = dir.GetFiles("*.ytyp.xml");
     if (files.Length == 0)
     {
         Console.WriteLine("No .ytyp.xml file found.");
     }
     else
     {
         ytyps = new Ytyp[files.Length];
         for (int i = 0; i < files.Length; i++)
         {
             ytyps[i] = new Ytyp(XDocument.Load(files[i].Name), files[i].Name);
         }
     }
     return(ytyps);
 }
Beispiel #6
0
        public static void Reset(Ytyp[] ytypfiles, Ymap[] ymapfiles)
        {
            List <CBaseArchetypeDef> archetypeList = null;

            if (ytypfiles != null && ytypfiles.Length != 0)
            {
                for (int i = 0; i < ytypfiles.Length; i++)
                {
                    ytypfiles[i].UpdatelodDist();
                    foreach (CBaseArchetypeDef arc in ytypfiles[i].CMapTypes.archetypes)
                    {
                        arc.flags            = 0;
                        arc.specialAttribute = 0;
                    }
                    ytypfiles[i].WriteXML().Save(ytypfiles[i].filename);
                    Console.WriteLine("Resetted " + ytypfiles[i].filename);
                }
                archetypeList = Ytyp.Merge(ytypfiles).CMapTypes.archetypes;
            }

            if (ymapfiles != null && ymapfiles.Length != 0)
            {
                for (int i = 0; i < ymapfiles.Length; i++)
                {
                    ymapfiles[i].UpdatelodDist(archetypeList);
                    ymapfiles[i].CMapData.block        = new CBlockDesc(0, 0, "GTADrifting", "Neos7's MapTools", Environment.UserName);
                    ymapfiles[i].CMapData.flags        = 0;
                    ymapfiles[i].CMapData.contentFlags = 1;
                    foreach (CEntityDef ent in ymapfiles[i].CMapData.entities)
                    {
                        ent.flags        = 0;
                        ent.childLodDist = 0;
                    }
                    ymapfiles[i].WriteXML().Save(ymapfiles[i].filename);
                    Console.WriteLine("Resetted " + (ymapfiles[i].filename));
                }
            }
        }
Beispiel #7
0
        public static void ConvertJson(FivemJson[] jsonfiles)
        {
            if (jsonfiles == null || jsonfiles.Length <= 0)
            {
                return;
            }

            Ytyp[] ytypfiles = new Ytyp[jsonfiles.Length];
            Ymap[] ymapfiles = new Ymap[jsonfiles.Length];

            for (int i = 0; i < jsonfiles.Length; i++)
            {
                ytypfiles[i] = new Ytyp(jsonfiles[i].filename.Replace(".json", ".ytyp.xml"));
                ytypfiles[i].CMapTypes.name = jsonfiles[i].filename.Replace(".json", "");

                List <CBaseArchetypeDef> unresolved_arc = new List <CBaseArchetypeDef>();

                foreach (FivemArchetype a in jsonfiles[i].archetypes)
                {
                    CBaseArchetypeDef arc = new CBaseArchetypeDef();

                    //arc.lodDist = 0;
                    arc.flags            = 0;
                    arc.specialAttribute = 0;
                    arc.bbMin            = a.aabbMin;
                    arc.bbMax            = a.aabbMax;
                    arc.bsCentre         = a.centroid;
                    arc.bsRadius         = a.radius;
                    //arc.hdTextureDist = 0;
                    arc.name = a.archetypeName;
                    arc.textureDictionary  = a.txdName;
                    arc.clipDictionary     = null;
                    arc.drawableDictionary = null;
                    arc.physicsDictionary  = a.archetypeName;
                    arc.assetType          = assetType.ASSET_TYPE_DRAWABLE;
                    arc.assetName          = a.archetypeName;
                    arc.extensions         = null;

                    arc.lodDist       = 100 + (1.5f * arc.bsRadius);
                    arc.hdTextureDist = 0.75f * arc.lodDist;

                    if (a.archetypeName.StartsWith("0x") || a.txdName.StartsWith("0x"))
                    {
                        unresolved_arc.Add(arc);
                    }
                    else
                    {
                        ytypfiles[i].CMapTypes.archetypes.Add(arc);
                    }
                }

                ymapfiles[i] = new Ymap(jsonfiles[i].filename.Replace(".json", ".ymap.xml"));
                ymapfiles[i].CMapData.name = jsonfiles[i].filename.Replace(".json", "");

                Random            rnd            = new Random();
                List <CEntityDef> unresolved_ent = new List <CEntityDef>();

                foreach (FivemEntity e in jsonfiles[i].entities)
                {
                    CEntityDef ent = new CEntityDef();

                    ent.archetypeName = e.archetypeName;
                    ent.flags         = 0;
                    ent.guid          = (uint)rnd.Next();
                    ent.position      = e.position;
                    ent.rotation      = e.rotation;
                    ent.scaleXY       = 1;
                    ent.scaleZ        = 1;
                    ent.parentIndex   = -1;
                    ent.lodDist       = 100;
                    ent.childLodDist  = 0;
                    ent.lodLevel      = lodLevel.LODTYPES_DEPTH_ORPHANHD;
                    ent.numChildren   = 0;
                    ent.priorityLevel = priorityLevel.PRI_REQUIRED;
                    ent.extensions    = null;
                    ent.ambientOcclusionMultiplier = 255;
                    ent.artificialAmbientOcclusion = 255;
                    ent.tintValue = 0;

                    if (e.archetypeName.StartsWith("0x"))
                    {
                        unresolved_ent.Add(ent);
                    }
                    else
                    {
                        ymapfiles[i].CMapData.entities.Add(ent);
                    }
                }

                ymapfiles[i].UpdatelodDist(ytypfiles[i].CMapTypes.archetypes);
                ymapfiles[i].UpdateExtents(ytypfiles[i].CMapTypes.archetypes);

                ytypfiles[i].WriteXML().Save(ytypfiles[i].filename);
                Console.WriteLine("Saved " + ytypfiles[i].filename);
                ymapfiles[i].WriteXML().Save(ymapfiles[i].filename);
                Console.WriteLine("Saved " + ymapfiles[i].filename);

                if (unresolved_arc?.Any() ?? false)
                {
                    string unresolvedname = ytypfiles[i].CMapTypes.name + "_unresolved";
                    ytypfiles[i].CMapTypes.archetypes = unresolved_arc;
                    ytypfiles[i].CMapTypes.name       = unresolvedname;
                    ytypfiles[i].WriteXML().Save(unresolvedname + ".ymap.xml");
                    Console.WriteLine("Saved " + unresolvedname + ".ymap.xml");
                }

                if (unresolved_ent?.Any() ?? false)
                {
                    string unresolvedname = ymapfiles[i].CMapData.name + "_unresolved";
                    ymapfiles[i].CMapData.entities = unresolved_ent;
                    ymapfiles[i].CMapData.name     = unresolvedname;
                    ymapfiles[i].WriteXML().Save(unresolvedname + ".ymap.xml");
                    Console.WriteLine("Saved " + unresolvedname + ".ymap.xml");
                }
            }
        }