Exemple #1
0
 public void SaveFog()
 {
     mFogInfo                  = new FogInfo();
     mFogInfo.fog              = RenderSettings.fog;
     mFogInfo.fogMode          = RenderSettings.fogMode;
     mFogInfo.fogColor         = RenderSettings.fogColor;
     mFogInfo.fogStartDistance = RenderSettings.fogStartDistance;
     mFogInfo.fogEndDistance   = RenderSettings.fogEndDistance;
 }
Exemple #2
0
        public Chunk_MFOG(WMOFile file) : base(file, "MFOG", Magic)
        {
            int entryCount = (int)ChunkSize / 48;

            entries = new FogInfo[entryCount];

            for (int i = 0; i < entryCount; i++)
            {
                entries[i] = FogInfo.Read(file);
            }

            LogWrite("Loaded " + entryCount + " fog info entries.");
        }
    private void SaveLightmap()
    {
        fogInfo                  = new FogInfo();
        fogInfo.fog              = RenderSettings.fog;
        fogInfo.fogMode          = RenderSettings.fogMode;
        fogInfo.fogColor         = RenderSettings.fogColor;
        fogInfo.fogStartDistance = RenderSettings.fogStartDistance;
        fogInfo.fogEndDistance   = RenderSettings.fogEndDistance;

        lightmapNear = new List <Texture2D>();
        lightmapFar  = new List <Texture2D>();
        for (int i = 0; i < LightmapSettings.lightmaps.Length; i++)
        {
            LightmapData data = LightmapSettings.lightmaps[i];
            if (data.lightmapDir != null)
            {
                lightmapNear.Add(data.lightmapDir);
            }

            if (data.lightmapColor != null)
            {
                lightmapFar.Add(data.lightmapColor);
            }
        }
        m_RendererInfo = new List <RendererInfo>();
        var renderers = GetComponentsInChildren <MeshRenderer>();

        foreach (MeshRenderer r in renderers)
        {
            if (r.lightmapIndex != -1)
            {
                RendererInfo info = new RendererInfo();
                info.renderer            = r;
                info.lightmapOffsetScale = r.lightmapScaleOffset;
                info.lightmapIndex       = r.lightmapIndex;
                m_RendererInfo.Add(info);
            }
        }

        terrain = GetComponentInChildren <Terrain>();
        if (terrain != null)
        {
            terrainRendererInfo = new RendererInfo();
            terrainRendererInfo.lightmapOffsetScale = terrain.lightmapScaleOffset;
            terrainRendererInfo.lightmapIndex       = terrain.lightmapIndex;
        }
        lightmapsMode = LightmapSettings.lightmapsMode;
    }
Exemple #4
0
        private static FogInfo ReadFogInfo(EndianBinaryReader stream)
        {
            var retVal = new FogInfo();

            retVal.Type   = stream.ReadByte();
            retVal.Enable = stream.ReadBoolean();
            retVal.Center = stream.ReadUInt16();
            retVal.StartZ = stream.ReadSingle();
            retVal.EndZ   = stream.ReadSingle();
            retVal.NearZ  = stream.ReadSingle();
            retVal.FarZ   = stream.ReadSingle();
            retVal.Color  = ReadColor32(stream);
            retVal.Table  = new ushort[10];
            for (int i = 0; i < retVal.Table.Length; i++)
            {
                retVal.Table[i] = stream.ReadUInt16();
            }

            return(retVal);
        }
    public void SaveLightmap()
    {
        fogInfo                  = new FogInfo();
        fogInfo.fog              = RenderSettings.fog;
        fogInfo.fogMode          = RenderSettings.fogMode;
        fogInfo.fogColor         = RenderSettings.fogColor;
        fogInfo.fogStartDistance = RenderSettings.fogStartDistance;
        fogInfo.fogEndDistance   = RenderSettings.fogEndDistance;

        m_RendererInfo = new List <RendererInfo>();
        var renderers = GetComponentsInChildren <MeshRenderer>();

        foreach (MeshRenderer r in renderers)
        {
            if (r.lightmapIndex != -1)
            {
                RendererInfo info = new RendererInfo();
                info.renderer            = r;
                info.lightmapOffsetScale = r.lightmapScaleOffset;
                info.lightmapIndex       = r.lightmapIndex;
                m_RendererInfo.Add(info);
            }
        }

        terrains = GetComponentsInChildren <Terrain>();
        if (terrains != null)
        {
            int cnt = terrains.Length;
            terrainsRendererInfo = new TerrainInfo[cnt];
            for (int i = 0; i < cnt; i++)
            {
                var terrainRenderer = new TerrainInfo();
                terrainRenderer.lightmapOffsetScale = terrains[i].lightmapScaleOffset;
                terrainRenderer.lightmapIndex       = terrains[i].lightmapIndex;
                terrainsRendererInfo[i]             = terrainRenderer;
            }
        }
        lightmapsMode = LightmapSettings.lightmapsMode;
    }
Exemple #6
0
        public static XElement PutItem(XElement item)
        {
            //XElement result = null;
            string owner = item.Attribute("owner")?.Value;

            // Запись возможна только если есть код владельца
            if (owner == null)
            {
                return(new XElement("error", "no owner attribute"));
            }

            // Проверим и изменим отметку времени
            string     mT     = DateTime.Now.ToUniversalTime().ToString("u");
            XAttribute mT_att = item.Attribute("mT");

            if (mT_att == null)
            {
                item.Add(new XAttribute("mT", mT));
            }
            else
            {
                mT_att.Value = mT;
            }


            // Ищем подходящий фог-документ
            FogInfo fi = fogs.FirstOrDefault(f => f.owner == owner && f.writable);

            // Если нет подходящего - запись не производится
            if (fi == null)
            {
                return(new XElement("error", "no writable fog for request"));
            }

            // Если фог не загружен, то загрузить его
            if (fi.fogx == null)
            {
                fi.fogx = XElement.Load(fi.pth);
            }


            // читаем или формируем идентификатор
            string   id      = item.Attribute("{http://www.w3.org/1999/02/22-rdf-syntax-ns#}about")?.Value;
            XElement element = null; // запись с пришедшим идентификатором

            if (id == null)
            {
                XAttribute counter_att = fi.fogx.Attribute("counter");
                int        counter     = Int32.Parse(counter_att.Value);
                id = fi.fogx.Attribute("prefix").Value + counter;
                // внедряем
                item.Add(new XAttribute("{http://www.w3.org/1999/02/22-rdf-syntax-ns#}about", id));
                counter_att.Value = "" + (counter + 1);
            }
            else
            {
                element = fi.fogx.Elements().FirstOrDefault(el =>
                                                            el.Attribute("{http://www.w3.org/1999/02/22-rdf-syntax-ns#}about")?.Value == id);
            }

            // Изымаем из пришедшего элемента владельца и фиксируем его в фоге
            XAttribute owner_att = item.Attribute("owner");

            owner_att.Remove();
            if (element != null)
            {
                element.Remove();
            }
            XElement nitem = new XElement(item);

            fi.fogx.Add(nitem);

            // Сохраняем файл
            fi.fogx.Save(fi.pth);

            // Сохраняем в базе данных
            adapter.PutItem(nitem);

            // Сохраняем в логе
            using (Stream log = File.Open(putlogfilename, FileMode.Append, FileAccess.Write))
            {
                TextWriter tw = new StreamWriter(log, System.Text.Encoding.UTF8);
                tw.WriteLine(nitem.ToString());
                tw.Close();
            }

            return(new XElement(nitem));
        }
 protected override void ActivationBehaviour()
 {
     initialFogInfo     = new FogInfo();
     RenderSettings.fog = true;
 }