private void SetTransformEdit() { IsEntryReady = false; if (FrameResource.IsFrameType(currentObject)) { FrameObjectBase fObject = (currentObject as FrameObjectBase); CurrentEntry.Text = fObject.Name.String; PositionXNumeric.Value = Convert.ToDecimal(fObject.Matrix.Position.X); PositionYNumeric.Value = Convert.ToDecimal(fObject.Matrix.Position.Y); PositionZNumeric.Value = Convert.ToDecimal(fObject.Matrix.Position.Z); RotationXNumeric.Value = Convert.ToDecimal(fObject.Matrix.Rotation.X); RotationYNumeric.Value = Convert.ToDecimal(fObject.Matrix.Rotation.Y); RotationZNumeric.Value = Convert.ToDecimal(fObject.Matrix.Rotation.Z); ScaleXNumeric.Enabled = ScaleYNumeric.Enabled = ScaleZNumeric.Enabled = true; ScaleXNumeric.Value = Convert.ToDecimal(fObject.Matrix.Scale.X); ScaleYNumeric.Value = Convert.ToDecimal(fObject.Matrix.Scale.Y); ScaleZNumeric.Value = Convert.ToDecimal(fObject.Matrix.Scale.Z); } else if (currentObject is ResourceTypes.Collisions.Collision.Placement) { ResourceTypes.Collisions.Collision.Placement placement = (currentObject as ResourceTypes.Collisions.Collision.Placement); CurrentEntry.Text = placement.Hash.ToString(); PositionXNumeric.Value = Convert.ToDecimal(placement.Position.X); PositionYNumeric.Value = Convert.ToDecimal(placement.Position.Y); PositionZNumeric.Value = Convert.ToDecimal(placement.Position.Z); RotationXNumeric.Value = Convert.ToDecimal(placement.Rotation.X); RotationYNumeric.Value = Convert.ToDecimal(placement.Rotation.Y); RotationZNumeric.Value = Convert.ToDecimal(placement.Rotation.Z); ScaleXNumeric.Value = ScaleYNumeric.Value = ScaleZNumeric.Value = 0.0M; ScaleXNumeric.Enabled = ScaleYNumeric.Enabled = ScaleZNumeric.Enabled = false; } IsEntryReady = true; }
public Vector3 JumpToHelper() { object data = TreeView_Explorer.SelectedNode.Tag; if (FrameResource.IsFrameType(data)) { return((data as FrameObjectBase).WorldTransform.Translation); } if (data.GetType() == typeof(ResourceTypes.Collisions.Collision.Placement)) { return((data as ResourceTypes.Collisions.Collision.Placement).Position); } if (data.GetType() == typeof(Rendering.Graphics.RenderJunction)) { return((data as Rendering.Graphics.RenderJunction).Data.Position); } if (data.GetType() == typeof(Rendering.Graphics.RenderNav)) { return((data as Rendering.Graphics.RenderNav).Transform.Translation); } if (data.GetType() == typeof(ResourceTypes.Actors.ActorEntry)) { return((data as ResourceTypes.Actors.ActorEntry).Position); } return(new Vector3(0, 0, 0)); }
private void LoadMaterials() { if (isMaterialTabFocused && !hasLoadedMaterials) { MatViewPanel.Controls.Clear(); currentMaterials.Clear(); if (FrameResource.IsFrameType(currentObject)) { if (currentObject is FrameObjectSingleMesh) { var entry = (currentObject as FrameObjectSingleMesh); MaterialStruct[] materialAssignments = entry.Material.Materials[LODComboBox.SelectedIndex]; for (int x = 0; x != materialAssignments.Length; x++) { TextureEntry textEntry = new TextureEntry(); var mat = materialAssignments[x]; IMaterial material = MaterialsManager.LookupMaterialByHash(mat.MaterialHash); textEntry.OnEntrySingularClick += MatViewPanel_TextureEntryOnSingularClick; textEntry.OnEntryDoubleClick += MatViewPanel_TextureEntryOnDoubleClick; textEntry.SetMaterial(material); currentMaterials.Add(textEntry, mat); MatViewPanel.Controls.Add(textEntry); } } } hasLoadedMaterials = true; } }
private void OpenEntryContext(object sender, System.ComponentModel.CancelEventArgs e) { EntryMenuStrip.Items[0].Visible = false; EntryMenuStrip.Items[1].Visible = false; EntryMenuStrip.Items[2].Visible = false; EntryMenuStrip.Items[3].Visible = false; EntryMenuStrip.Items[4].Visible = false; if (treeView1.SelectedNode != null && treeView1.SelectedNode.Tag != null) { EntryMenuStrip.Items[1].Visible = true; EntryMenuStrip.Items[2].Visible = true; if (FrameResource.IsFrameType(treeView1.SelectedNode.Tag) || treeView1.SelectedNode.Tag.GetType() == typeof(Rendering.Graphics.RenderJunction)) { EntryMenuStrip.Items[0].Visible = true; } if ((treeView1.SelectedNode.Tag.GetType() == typeof(FrameObjectSingleMesh) || treeView1.SelectedNode.Tag.GetType() == typeof(FrameObjectModel) || treeView1.SelectedNode.Tag.GetType() == typeof(ResourceTypes.Collisions.Collision.NXSStruct))) { EntryMenuStrip.Items[3].Visible = true; } if (FrameResource.IsFrameType(treeView1.SelectedNode.Tag)) { EntryMenuStrip.Items[4].Visible = true; } } }
public static void CleanData() { FrameNameTable = null; FrameResource = null; VertexBufferPool = null; IndexBufferPool = null; SoundSector = null; Actors = null; ItemDescs = null; Collisions = null; CityAreas = null; }
private void SetMaterialTab() { LODComboBox.Items.Clear(); if (FrameResource.IsFrameType(currentObject)) { if (currentObject is FrameObjectSingleMesh) { var entry = (currentObject as FrameObjectSingleMesh); for (int i = 0; i != entry.Geometry.NumLods; i++) { LODComboBox.Items.Add("LOD #" + i); } LODComboBox.SelectedIndex = 0; } } }
public static void CleanData() { FrameNameTable = null; FrameResource = null; VertexBufferPool = null; IndexBufferPool = null; SoundSector = null; Actors = null; ItemDescs = null; Collisions = null; CityAreas = null; CityShops = null; roadMap = null; ATLoader = null; AIWorlds = null; OBJData = null; }
public void UpdateObject() { if (IsEntryReady && currentObject != null) { if (FrameResource.IsFrameType(currentObject)) { FrameObjectBase fObject = (currentObject as FrameObjectBase); fObject.Matrix.Position = new Vector3(Convert.ToSingle(PositionXNumeric.Value), Convert.ToSingle(PositionYNumeric.Value), Convert.ToSingle(PositionZNumeric.Value)); fObject.Matrix.SetRotationMatrix(new Vector3(Convert.ToSingle(RotationXNumeric.Value), Convert.ToSingle(RotationYNumeric.Value), Convert.ToSingle(RotationZNumeric.Value))); fObject.Matrix.SetScaleMatrix(new Vector3(Convert.ToSingle(ScaleXNumeric.Value), Convert.ToSingle(ScaleYNumeric.Value), Convert.ToSingle(ScaleZNumeric.Value))); } else if (currentObject is ResourceTypes.Collisions.Collision.Placement) { ResourceTypes.Collisions.Collision.Placement placement = (currentObject as ResourceTypes.Collisions.Collision.Placement); placement.Position = new Vector3(Convert.ToSingle(PositionXNumeric.Value), Convert.ToSingle(PositionYNumeric.Value), Convert.ToSingle(PositionZNumeric.Value)); placement.Rotation = new Vector3(Convert.ToSingle(RotationXNumeric.Value), Convert.ToSingle(RotationYNumeric.Value), Convert.ToSingle(RotationZNumeric.Value)); } } }
private void SetTransformEdit() { IsEntryReady = false; if (FrameResource.IsFrameType(currentObject)) { FrameObjectBase fObject = (currentObject as FrameObjectBase); Vector3 position = Vector3.Zero; Quaternion rotation2 = Quaternion.Identity; Vector3 scale = Vector3.Zero; Matrix4x4.Decompose(fObject.LocalTransform, out scale, out rotation2, out position); CurrentEntry.Text = fObject.Name.ToString(); PositionXNumeric.Value = Convert.ToDecimal(position.X); PositionYNumeric.Value = Convert.ToDecimal(position.Y); PositionZNumeric.Value = Convert.ToDecimal(position.Z); Vector3 rotation = rotation2.ToEuler(); RotationXNumeric.Value = Convert.ToDecimal(rotation.X); RotationYNumeric.Value = Convert.ToDecimal(rotation.Y); RotationZNumeric.Value = Convert.ToDecimal(rotation.Z); ScaleXNumeric.Enabled = ScaleYNumeric.Enabled = ScaleZNumeric.Enabled = true; ScaleXNumeric.Value = Convert.ToDecimal(scale.X); ScaleYNumeric.Value = Convert.ToDecimal(scale.Y); ScaleZNumeric.Value = Convert.ToDecimal(scale.Z); } else if (currentObject is ResourceTypes.Collisions.Collision.Placement) { ResourceTypes.Collisions.Collision.Placement placement = (currentObject as ResourceTypes.Collisions.Collision.Placement); CurrentEntry.Text = placement.Hash.ToString(); PositionXNumeric.Value = Convert.ToDecimal(placement.Position.X); PositionYNumeric.Value = Convert.ToDecimal(placement.Position.Y); PositionZNumeric.Value = Convert.ToDecimal(placement.Position.Z); Vector3 placementRotation = placement.RotationDegrees; RotationXNumeric.Value = Convert.ToDecimal(placementRotation.X); RotationYNumeric.Value = Convert.ToDecimal(placementRotation.Y); RotationZNumeric.Value = Convert.ToDecimal(placementRotation.Z); ScaleXNumeric.Value = ScaleYNumeric.Value = ScaleZNumeric.Value = 0.0M; ScaleXNumeric.Enabled = ScaleYNumeric.Enabled = ScaleZNumeric.Enabled = false; } IsEntryReady = true; }
public void UpdateObject() { if (IsEntryReady && currentObject != null) { Vector3 position = new Vector3(Convert.ToSingle(PositionXNumeric.Value), Convert.ToSingle(PositionYNumeric.Value), Convert.ToSingle(PositionZNumeric.Value)); Vector3 rotation = new Vector3(Convert.ToSingle(RotationXNumeric.Value), Convert.ToSingle(RotationYNumeric.Value), Convert.ToSingle(RotationZNumeric.Value)); Vector3 scale = new Vector3(Convert.ToSingle(ScaleXNumeric.Value), Convert.ToSingle(ScaleYNumeric.Value), Convert.ToSingle(ScaleZNumeric.Value)); if (FrameResource.IsFrameType(currentObject)) { FrameObjectBase fObject = (currentObject as FrameObjectBase); fObject.LocalTransform = MatrixUtils.SetMatrix(rotation, scale, position); } else if (currentObject is ResourceTypes.Collisions.Collision.Placement) { ResourceTypes.Collisions.Collision.Placement placement = (currentObject as ResourceTypes.Collisions.Collision.Placement); placement.Position = position; placement.RotationDegrees = rotation; } } }
public void Draw(Window window) { FrameResource frameResource = FrameResources[Presenter.BackBufferIndex]; Device3D.AcquireWrappedResources(new[] { frameResource.WrappedBackBuffer }, 1); var rectangle = new RectangleF(0, 0, 200, 200); DeviceContext.Target = frameResource.Bitmap; //DeviceContext.AntialiasMode = AntialiasMode.Aliased; DeviceContext.BeginDraw(); DeviceContext.Transform = Matrix3x2.Identity; window?.DrawChildren(DrawContext); var b = new RectangleF(50f, 50f, 100, 100); //DeviceContext.PushAxisAlignedClip(b, AntialiasMode.PerPrimitive); // https://github.com/Microsoft/DirectX-Graphics-Samples/issues/212 //DeviceContext.FillRectangle(b, Brush); //DeviceContext.Clear(new Color4(1, 1, 1, 1)); //DeviceContext.PopAxisAlignedClip(); //DeviceContext.Clear(new Color4(1, 1, 1, 1)); //DeviceContext.Flush(); DeviceContext.EndDraw(); Device3D.ReleaseWrappedResources(new[] { frameResource.WrappedBackBuffer }, 1); DeviceContext3D.Flush(); /* * PathGeometry geometry = new PathGeometry(Factory); * GeometrySink sink = geometry.Open(); * sink.Close(); */ }
/// <summary> /// Initializes the presentable resources before resize. /// </summary> /// <param name="device"></param> public void InitializePresentable(GraphicsDevice device) { Device3D12 device3D12 = device.NativeDevice; deviceContext2D = new GraphicsDeviceContext2D(DeviceContext); Brush = new SolidColorBrush(DeviceContext, SharpDX.Color.White); var properties = new BitmapProperties1( new PixelFormat(Format.B8G8R8A8_UNorm, AlphaMode.Premultiplied), DesktopDpi.Width, DesktopDpi.Height, BitmapOptions.Target | BitmapOptions.CannotDraw); FrameResources = new FrameResource[Presenter.BackBufferCount]; for (int i = 0; i < Presenter.BackBufferCount; i++) { var frameResource = new FrameResource(); FrameResources[i] = frameResource; frameResource.RenderTarget = Presenter.BackBuffers[i].Resource; Device3D.CreateWrappedResource( Presenter.BackBuffers[i].Resource, new D3D11ResourceFlags() { BindFlags = (int)BindFlags.RenderTarget }, (int)ResourceStates.RenderTarget, (int)ResourceStates.Present, Utilities.GetGuidFromType(typeof(Resource11)), out frameResource.WrappedBackBuffer); frameResource.Surface = frameResource.WrappedBackBuffer.QueryInterface <Surface>(); frameResource.Bitmap = new Bitmap1(DeviceContext, frameResource.Surface, properties); } // https://msdn.microsoft.com/en-us/library/windows/desktop/dd370966(v=vs.85).aspx#resizing_a_dxgi_surface_render_target // https://msdn.microsoft.com/en-us/library/windows/desktop/bb205075(v=vs.85).aspx#Care_and_Feeding_of_the_Swap_Chain // https://msdn.microsoft.com/en-us/library/windows/desktop/bb205075(v=vs.85).aspx#Handling_Window_Resizing }
public Vector3 JumpToHelper() { object data = treeView1.SelectedNode.Tag; if (FrameResource.IsFrameType(data)) { bool fin = false; TransformMatrix matrix = (data as FrameObjectBase).Matrix; TreeNode curNode = treeView1.SelectedNode; while (!fin) { if (curNode.Parent == null) { fin = true; } else { FrameObjectBase parent = (curNode.Parent.Tag as FrameObjectBase); curNode = curNode.Parent; if (parent != null) { matrix += parent.Matrix; } } } return(matrix.Position); } if (data.GetType() == typeof(ResourceTypes.Collisions.Collision.Placement)) { return((data as ResourceTypes.Collisions.Collision.Placement).Position); } if (data.GetType() == typeof(Rendering.Graphics.RenderJunction)) { return((data as Rendering.Graphics.RenderJunction).Data.Position); } return(new Vector3(0, 0, 0)); }
/* Context function */ private void OpenEntryContext(object sender, System.ComponentModel.CancelEventArgs e) { //TODO: Clean this messy system. EntryMenuStrip.Items[0].Visible = false; EntryMenuStrip.Items[1].Visible = false; EntryMenuStrip.Items[2].Visible = false; EntryMenuStrip.Items[3].Visible = false; EntryMenuStrip.Items[4].Visible = false; FrameActions.DropDownItems[3].Visible = false; if (TreeView_Explorer.SelectedNode != null && TreeView_Explorer.SelectedNode.Tag != null) { EntryMenuStrip.Items[1].Visible = true; EntryMenuStrip.Items[2].Visible = true; object data = TreeView_Explorer.SelectedNode.Tag; if (FrameResource.IsFrameType(data) || data.GetType() == typeof(ResourceTypes.Collisions.Collision.Placement) || data.GetType() == typeof(Rendering.Graphics.RenderJunction) || data.GetType() == typeof(ResourceTypes.Actors.ActorEntry) || data.GetType() == typeof(Rendering.Graphics.RenderNav)) { EntryMenuStrip.Items[0].Visible = true; } if ((TreeView_Explorer.SelectedNode.Tag.GetType() == typeof(FrameObjectSingleMesh) || TreeView_Explorer.SelectedNode.Tag.GetType() == typeof(FrameObjectModel) || TreeView_Explorer.SelectedNode.Tag.GetType() == typeof(ResourceTypes.Collisions.Collision.CollisionModel))) { EntryMenuStrip.Items[3].Visible = true; } if (FrameResource.IsFrameType(TreeView_Explorer.SelectedNode.Tag)) { EntryMenuStrip.Items[4].Visible = true; if (TreeView_Explorer.SelectedNode.Tag is FrameObjectFrame) { FrameActions.DropDownItems[3].Visible = true; } } } }
private void SelectedIndexChanged(object sender, EventArgs e) { Panel.Controls.Clear(); if (FrameResource.IsFrameType(currentObject)) { if (currentObject is FrameObjectSingleMesh) { var entry = (currentObject as FrameObjectSingleMesh); for (int i = 0; i != entry.Material.NumLods; i++) { for (int x = 0; x != entry.Material.Materials[i].Length; x++) { var mat = entry.Material.Materials[i][x]; TextureEntry textEntry = new TextureEntry(); textEntry.SetMaterialName(mat.MaterialName); textEntry.SetMaterialTexture(GetThumbnail(mat)); Panel.Controls.Add(textEntry); } } } } }
public static void BuildData() { List <FileInfo> vbps = new List <FileInfo>(); List <FileInfo> ibps = new List <FileInfo>(); List <ItemDescLoader> ids = new List <ItemDescLoader>(); List <Actor> act = new List <Actor>(); List <NAVData> aiw = new List <NAVData>(); List <NAVData> obj = new List <NAVData>(); DirectoryInfo dirInfo = new DirectoryInfo(ScenePath); FileInfo[] files = dirInfo.GetFiles("*", SearchOption.AllDirectories); XmlDocument document = new XmlDocument(); document.Load(ScenePath + "/SDSContent.xml"); XPathNavigator nav = document.CreateNavigator(); var nodes = nav.Select("/SDSResource/ResourceEntry"); while (nodes.MoveNext() == true) { string type; string name; nodes.Current.MoveToFirstChild(); type = nodes.Current.Value; nodes.Current.MoveToNext(); name = ScenePath + "/" + nodes.Current.Value; if (type == "IndexBufferPool") { ibps.Add(new FileInfo(name)); } else if (type == "VertexBufferPool") { vbps.Add(new FileInfo(name)); } else if (type == "Actors") { try { act.Add(new Actor(name)); } catch (Exception ex) { Console.WriteLine("Failed to read actor {0}", name); } } else if (type == "FrameResource") { FrameResource = new FrameResource(name); } else if (type == "ItemDesc") { ids.Add(new ItemDescLoader(name)); } else if (type == "FrameNameTable") { FrameNameTable = new FrameNameTable(name); } else if (type == "Collisions") { Collisions = new Collision(name); } else if (type == "AnimalTrafficPaths") { try { ATLoader = new AnimalTrafficLoader(new FileInfo(name)); } catch (Exception ex) { Console.WriteLine("Failed to read AnimalTrafficPaths {0}", ATLoader); } } else if (nodes.Current.Value == "roadmap.gsd") { roadMap = new Roadmap(new FileInfo(name)); } else if (type == "NAV_OBJ_DATA") { obj.Add(new NAVData(new FileInfo(name))); } else if (type == "Translokator") { Translokator = new TranslokatorLoader(new FileInfo(name)); } } IndexBufferPool = new IndexBufferManager(ibps); VertexBufferPool = new VertexBufferManager(vbps); ItemDescs = ids.ToArray(); Actors = act.ToArray(); OBJData = obj.ToArray(); }
public static void BuildData() { List <FileInfo> vbps = new List <FileInfo>(); List <FileInfo> ibps = new List <FileInfo>(); List <ItemDesc> ids = new List <ItemDesc>(); List <Actor> act = new List <Actor>(); DirectoryInfo dirInfo = new DirectoryInfo(ScenePath); FileInfo[] files = dirInfo.GetFiles("*", SearchOption.AllDirectories); XmlDocument document = new XmlDocument(); document.Load(ScenePath + "/SDSContent.xml"); XPathNavigator nav = document.CreateNavigator(); var nodes = nav.Select("/SDSResource/ResourceEntry"); while (nodes.MoveNext() == true) { string type; string name; nodes.Current.MoveToFirstChild(); type = nodes.Current.Value; nodes.Current.MoveToNext(); name = ScenePath + "/" + nodes.Current.Value; if (type == "IndexBufferPool") { ibps.Add(new FileInfo(name)); } else if (type == "VertexBufferPool") { vbps.Add(new FileInfo(name)); } else if (type == "FrameResource") { FrameResource = new FrameResource(name); } else if (type == "ItemDesc") { ids.Add(new ItemDesc(name)); } else if (type == "FrameNameTable") { FrameNameTable = new FrameNameTable(name); } //else if ((type == "MemFile") && (name.Contains("cityshops"))) // CityShops = new CityShops(name); //else if (type == "Actors") // act.Add(new Actor(name)); //else if (type == "AudioSectors") // SoundSector = new SoundSector(name); //else if ((type == "MemFile") && (name.Contains("cityareas"))) // CityAreas = new CityAreas(name); } IndexBufferPool = new IndexBufferManager(ibps); VertexBufferPool = new VertexBufferManager(vbps); ItemDescs = ids.ToArray(); Actors = act.ToArray(); for (int i = 0; i != ItemDescs.Length; i++) { ItemDescs[i].WriteToEDC(); } if (Actors == null) { return; } AttachActors(); }
public static void BuildData(bool forceBigEndian) { List <FileInfo> vbps = new List <FileInfo>(); List <FileInfo> ibps = new List <FileInfo>(); List <ItemDescLoader> ids = new List <ItemDescLoader>(); List <Actor> act = new List <Actor>(); List <NAVData> aiw = new List <NAVData>(); List <NAVData> obj = new List <NAVData>(); isBigEndian = forceBigEndian; VertexTranslator.IsBigEndian = forceBigEndian; if (isBigEndian) { MessageBox.Show("Detected 'Big Endian' formats. This will severely effect functionality!", "Toolkit", MessageBoxButtons.OK, MessageBoxIcon.Information); } DirectoryInfo dirInfo = new DirectoryInfo(ScenePath); sdsContent = new SDSContentFile(); sdsContent.ReadFromFile(new FileInfo(Path.Combine(ScenePath + "/SDSContent.xml"))); //IndexBuffers var paths = sdsContent.GetResourceFiles("IndexBufferPool", true); foreach (var item in paths) { ibps.Add(BuildFileInfo(item)); } //Vertex Buffers paths = sdsContent.GetResourceFiles("VertexBufferPool", true); foreach (var item in paths) { vbps.Add(BuildFileInfo(item)); } //Actors if (!isBigEndian) { paths = sdsContent.GetResourceFiles("Actors", true); foreach (var item in paths) { try { act.Add(new Actor(item)); } catch (Exception ex) { Console.WriteLine("Failed to read actor {0}", item); } } } //FrameResource if (sdsContent.HasResource("FrameResource")) { var name = sdsContent.GetResourceFiles("FrameResource", true)[0]; FrameResource = new FrameResource(name, isBigEndian); } //Item Desc if (!isBigEndian) { paths = sdsContent.GetResourceFiles("ItemDesc", true); foreach (var item in paths) { ids.Add(new ItemDescLoader(item)); } } //FrameNameTable if (sdsContent.HasResource("FrameNameTable")) { var name = sdsContent.GetResourceFiles("FrameNameTable", true)[0]; FrameNameTable = new FrameNameTable(name, isBigEndian); } //Collisions if (!isBigEndian && sdsContent.HasResource("Collisions")) { var name = sdsContent.GetResourceFiles("Collisions", true)[0]; Collisions = new Collision(name); } //~ENABLE THIS SECTION AT YOUR OWN RISK //AnimalTrafficPaths //if (!isBigEndian && sdsContent.HasResource("AnimalTrafficPaths")) //{ // var name = sdsContent.GetResourceFiles("AnimalTrafficPaths", true)[0]; // try // { // ATLoader = new AnimalTrafficLoader(new FileInfo(name)); // } // catch (Exception ex) // { // Console.WriteLine("Failed to read AnimalTrafficPaths {0}", ex.Message); // } //} //~ENABLE THIS SECTION AT YOUR OWN RISK if (!isBigEndian && sdsContent.HasResource("PREFAB")) { var name = sdsContent.GetResourceFiles("PREFAB", true)[0]; PrefabLoader loader = new PrefabLoader(new FileInfo(name)); Prefabs = loader; } //RoadMap if (!isBigEndian) { paths = sdsContent.GetResourceFiles("MemFile", true); foreach (var item in paths) { if (item.Contains("RoadMap") || item.Contains("roadmap")) { roadMap = new Roadmap(new FileInfo(item)); } } } //~ENABLE THIS SECTION AT YOUR OWN RISK //Translokator //if (!isBigEndian && sdsContent.HasResource("Translokator")) //{ // var name = sdsContent.GetResourceFiles("Translokator", true)[0]; // Translokator = new TranslokatorLoader(new FileInfo(name)); //} //~ENABLE THIS SECTION AT YOUR OWN RISK //~ENABLE THIS SECTION AT YOUR OWN RISK /* Kynapse OBJ_DATA * if (!isBigEndian) * { * tis' broken for now * paths = sdsContent.GetResourceFiles("NAV_OBJ_DATA", true); * foreach (var item in paths) * { * obj.Add(new NAVData(new FileInfo(item))); * } * * for (int i = 0; i < obj.Count; i++) * { * obj[i].WriteToFile(); * } * } * * AI WORLD * if (!isBigEndian) * { * paths = sdsContent.GetResourceFiles("NAV_AIWORLD_DATA", true); * foreach (var Item in paths) * { * aiw.Add(new NAVData(new FileInfo(Item))); * } * } * * if (!isBigEndian && sdsContent.HasResource("NAV_HPD_DATA")) * { * var name = sdsContent.GetResourceFiles("NAV_HPD_DATA", true)[0]; * var data = new NAVData(new FileInfo(name)); * HPDData = (data.data as HPDData); * data.WriteToFile(); * } */ //~ENABLE THIS SECTION AT YOUR OWN RISK IndexBufferPool = new IndexBufferManager(ibps, dirInfo, isBigEndian); VertexBufferPool = new VertexBufferManager(vbps, dirInfo, isBigEndian); ItemDescs = ids.ToArray(); Actors = act.ToArray(); OBJData = obj.ToArray(); AIWorlds = aiw.ToArray(); }
private void CreateFrameResource_OnClick(object sender, EventArgs e) { FrameResource fr = new FrameResource(); fr.WriteToFile(Path.Combine(currentDirectory.FullName, "FrameResource_0.fr")); }
public static void BuildData(bool forceBigEndian) { List <FileInfo> vbps = new List <FileInfo>(); List <FileInfo> ibps = new List <FileInfo>(); List <ItemDescLoader> ids = new List <ItemDescLoader>(); List <Actor> act = new List <Actor>(); List <NAVData> aiw = new List <NAVData>(); List <NAVData> obj = new List <NAVData>(); DirectoryInfo dirInfo = new DirectoryInfo(ScenePath); FileInfo[] files = dirInfo.GetFiles("*", SearchOption.AllDirectories); XmlDocument document = new XmlDocument(); document.Load(ScenePath + "/SDSContent.xml"); XPathNavigator nav = document.CreateNavigator(); var nodes = nav.Select("/SDSResource/ResourceEntry"); isBigEndian = forceBigEndian; Utils.Models.VertexTranslator.IsBigEndian = forceBigEndian; if (isBigEndian) { MessageBox.Show("Detected 'Big Endian' formats. This will severely effect functionality!", "Toolkit", MessageBoxButtons.OK, MessageBoxIcon.Information); } while (nodes.MoveNext() == true) { string type; string name; nodes.Current.MoveToFirstChild(); type = nodes.Current.Value; nodes.Current.MoveToNext(); name = ScenePath + "/" + nodes.Current.Value; if (type == "IndexBufferPool") { ibps.Add(new FileInfo(name)); } else if (type == "VertexBufferPool") { vbps.Add(new FileInfo(name)); } else if (type == "Actors" && !isBigEndian) { try { act.Add(new Actor(name)); } catch (Exception ex) { Console.WriteLine("Failed to read actor {0}", name); } } else if (type == "FrameResource") { FrameResource = new FrameResource(name, isBigEndian); } else if (type == "ItemDesc" && !isBigEndian) { ids.Add(new ItemDescLoader(name)); } else if (type == "FrameNameTable") { FrameNameTable = new FrameNameTable(name, isBigEndian); } else if (type == "Collisions" && !isBigEndian) { Collisions = new Collision(name); } else if (type == "AnimalTrafficPaths" && !isBigEndian) { try { ATLoader = new AnimalTrafficLoader(new FileInfo(name)); } catch (Exception ex) { Console.WriteLine("Failed to read AnimalTrafficPaths {0}", ex.Message); } } else if (nodes.Current.Value == "roadmap.gsd" && !isBigEndian) { roadMap = new Roadmap(new FileInfo(name)); } //else if (type == "NAV_OBJ_DATA" && !isBigEndian) // obj.Add(new NAVData(new FileInfo(name))); else if (type == "Translokator" && !isBigEndian) { Translokator = new TranslokatorLoader(new FileInfo(name)); } } IndexBufferPool = new IndexBufferManager(ibps, isBigEndian); VertexBufferPool = new VertexBufferManager(vbps, isBigEndian); ItemDescs = ids.ToArray(); Actors = act.ToArray(); OBJData = obj.ToArray(); }