/// <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; }
/// <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; }