Example #1
0
        /// <summary>
        /// Обновление файловой системы
        /// </summary>
        /// <param name="en">Файл</param>
        /// <param name="ev">Событие</param>
        public override void ProjectEntryEvent(Project.Entry en, Project.FileEvent ev)
        {
            base.ProjectEntryEvent(en, ev);
            if (closed)
            {
                return;
            }

            // Просмотр на изменение текстур
            SkyboxForm fr = Form as SkyboxForm;

            NSFileDropControl[] drops = new NSFileDropControl[] {
                fr.frontSkyTexture, fr.rightSkyTexture, fr.backSkyTexture, fr.leftSkyTexture, fr.topSkyTexture, fr.bottomSkyTexture
            };
            forceTextureReload = true;
            foreach (NSFileDropControl fc in drops)
            {
                if (fc.File == en)
                {
                    if (ev == Project.FileEvent.Deleted)
                    {
                        fc.File = null;
                    }
                    else
                    {
                        fc.File = en;
                    }
                }
            }
            forceTextureReload = false;
        }
Example #2
0
        /// <summary>
        /// Загрузка и инициализация
        /// </summary>
        protected override void Load()
        {
            // Инициализация графики
            if (scene == null)
            {
                // Создание сцены
                scene = new Scene();

                // Камера
                cam          = new Camera();
                scene.Camera = cam;

                // Создание скайбокса
                sky       = new Skybox();
                scene.Sky = sky;

                // Направляющие
                WireCubeComponent c = new WireCubeComponent();
                c.WireColor = Color.Lime;
                c.WireWidth = 3f;
                wireGuides  = new Entity();
                wireGuides.AddComponent(c);
                wireGuides.Position = Vec3.Zero;
                scene.Entities.Add(wireGuides);
            }

            // Загрузка данных
            UpdateTitle();

            ChunkedFile cf = new ChunkedFile(File.FullPath);

            if (cf.Root.Name == "Skybox")
            {
                // Конвертация формы
                SkyboxForm frm = Form as SkyboxForm;

                // Поиск чанка с текстурами
                ChunkedFile.KeyValueChunk textureChunk = (ChunkedFile.KeyValueChunk)cf.Root.GetChunk("Texture");
                if (textureChunk != null)
                {
                    frm.topSkyTexture.File    = Project.GetEntry(textureChunk.Values["Top"]);
                    frm.bottomSkyTexture.File = Project.GetEntry(textureChunk.Values["Bottom"]);
                    frm.leftSkyTexture.File   = Project.GetEntry(textureChunk.Values["Left"]);
                    frm.rightSkyTexture.File  = Project.GetEntry(textureChunk.Values["Right"]);
                    frm.frontSkyTexture.File  = Project.GetEntry(textureChunk.Values["Front"]);
                    frm.backSkyTexture.File   = Project.GetEntry(textureChunk.Values["Back"]);
                }

                // Получение чанка для редактора
                ChunkedFile.DataChunk editorChunk = (ChunkedFile.DataChunk)cf.Root.GetChunk("Editor");
                if (editorChunk != null)
                {
                    MemoryStream ms = new MemoryStream(editorChunk.Data);
                    BinaryReader br = new BinaryReader(ms);
                    float        cx = br.ReadSingle();
                    float        cy = br.ReadSingle();
                    cam.Angles = new Vec3(cx, cy, 0f);
                    (Form as SkyboxForm).skyGizmoButton.Checked = br.ReadBoolean();
                    br.Close();
                }
            }
            Saved = true;
        }