Esempio n. 1
0
    public static void ThreadedLoadNHoodData()
    {
        LoadArchives(config.archives_nhood);
        var hoodDecos = GetItemsByType(0x6D619378);

        foreach (var element in hoodDecos)
        {
            var decoDesc = new NHoodDecorationDescription();
            var cpfFile  = new CPFFile(element.Value);
            decoDesc.name      = cpfFile.GetString("name");
            decoDesc.modelName = cpfFile.GetString("modelname");
            var guid = cpfFile.GetUInt("guid");
            decoDesc.guid = guid;
            hoodDeco.Add(decoDesc);
            hoodDecoByGUID[guid] = decoDesc;
        }
        LoadFinished = true;
    }
Esempio n. 2
0
    public NeighborhoodTerrainFile(byte[] data, Neighborhood nehood)
    {
        var stream = new MemoryStream(data);
        var io     = new IoBuffer(stream);

        io.ByteOrder = ByteOrder.LITTLE_ENDIAN;
        var version = io.ReadUInt32();

        io.Skip(2);
        var treeCount = io.ReadUInt32();

        for (var i = 0; i < treeCount; i++)
        {
            var treeByte        = io.ReadByte();
            var treeY           = io.ReadFloat();
            var treeX           = io.ReadFloat();
            var treeZ           = io.ReadFloat();
            var treeBBTopLeftY  = io.ReadFloat();
            var treeBBTopRightX = io.ReadFloat();
            var treeBBBotLeftY  = io.ReadFloat();
            var treeBBBotRightX = io.ReadFloat();
            var treeByte2       = io.ReadByte();
            var treeRotation    = io.ReadFloat();
            var treeGUID        = io.ReadUInt32();
            NHoodDecorationDescription decoResource = null;
            if (Environment.hoodDecoByGUID.ContainsKey(treeGUID))
            {
                decoResource = Environment.hoodDecoByGUID[treeGUID];
            }
            if (decoResource != null)
            {
                var deco = new NHoodDecoration();
                deco.description = decoResource;
                deco.position    = new Vector3(treeY, treeZ, treeX);
                deco.rotation    = treeRotation * -1;
                decos.Add(deco);
            }
            //io.Skip(38); // ToDo: Load Trees
        }
        io.Skip(2);
        var roadCount = io.ReadUInt32();

        for (var i = 0; i < roadCount; i++)
        {
            io.Skip(124); // ToDo: Load Roads
        }
        io.Skip(2);
        var bridgeCount = io.ReadUInt32();

        for (var i = 0; i < bridgeCount; i++)
        {
            io.Skip(165); // ToDo: Load Bridges
        }
        io.Skip(2);
        var decorationCount = io.ReadUInt32();

        for (var i = 0; i < decorationCount; i++)
        {
            io.Skip(1);
            var yPos        = io.ReadFloat();
            var xPos        = io.ReadFloat();
            var zPos        = io.ReadFloat();
            var BBTopLeftY  = io.ReadFloat();
            var BBTopRightX = io.ReadFloat();
            var BBBotLeftY  = io.ReadFloat();
            var BBBotRightX = io.ReadFloat();
            io.Skip(1);
            var resourceID = io.ReadUInt32();
            var rotation   = io.ReadFloat();
            NHoodDecorationDescription decoResource = null;
            if (Environment.hoodDecoByGUID.ContainsKey(resourceID))
            {
                decoResource = Environment.hoodDecoByGUID[resourceID];
            }
            if (decoResource != null)
            {
                var deco = new NHoodDecoration();
                deco.description = decoResource;
                deco.position    = new Vector3(yPos, zPos, xPos);
                deco.rotation    = rotation * -1;
                decos.Add(deco);
            }
        }
        io.Dispose();
        stream.Dispose();
    }