private void LoadFile() { translokator = new TranslokatorLoader(file); TranslokatorTree.Nodes.Clear(); TreeNode headerData = new TreeNode("Header Data"); headerData.Tag = translokator; TreeNode gridNode = new TreeNode("Grids"); for (int i = 0; i < translokator.Grids.Length; i++) { Grid grid = translokator.Grids[i]; TreeNode child = new TreeNode("Grid " + i); child.Tag = grid; gridNode.Nodes.Add(child); } TreeNode ogNode = new TreeNode("Objects Groups"); for (int i = 0; i < translokator.ObjectGroups.Length; i++) { ObjectGroup objectGroup = translokator.ObjectGroups[i]; TreeNode objectGroupNode = new TreeNode("Object Group " + i); objectGroupNode.Tag = objectGroup; for (int y = 0; y < objectGroup.Objects.Length; y++) { ResourceTypes.Translokator.Object obj = objectGroup.Objects[y]; TreeNode objNode = new TreeNode(obj.Name.ToString()); objNode.Tag = obj; objectGroupNode.Nodes.Add(objNode); for (int x = 0; x < obj.Instances.Length; x++) { Instance instance = obj.Instances[x]; TreeNode instanceNode = new TreeNode(obj.Name + " " + x); instanceNode.Tag = instance; objNode.Nodes.Add(instanceNode); } } ogNode.Nodes.Add(objectGroupNode); } TranslokatorTree.Nodes.Add(headerData); TranslokatorTree.Nodes.Add(gridNode); TranslokatorTree.Nodes.Add(ogNode); Text = Language.GetString("$TRANSLOKATOR_EDITOR"); bIsFileEdited = false; }
public SpatialGrid(GraphicsClass InGraphics, TranslokatorLoader translokator) { OwnGraphicsClass = InGraphics; bIsReady = true; gridBounds = translokator.Bounds; width = translokator.Grids[0].Width; height = translokator.Grids[0].Height; cellSize = new Vector2(gridBounds.GetWidth() / width, gridBounds.GetHeight() / height); cells = new SpatialCell[width * height]; origin = gridBounds.Minimum; var index = 0; /*for (int i = 0; i < width; i++) * { * for (int x = 0; x < height; x++) * { * var extents = new BoundingBox(); * extents.Minimum = new Vector3(origin.X + cellSize.X * x, origin.Y + cellSize.Y * i, 10.0f); * extents.Maximum = new Vector3(origin.X + cellSize.X * (x + 1), origin.Y + cellSize.Y * (i + 1), 10.0f); * cells[index++] = new SpatialCell(InGraphics, extents); * } * } * * for (int i = 0; i != translokator.ObjectGroups.Length; i++) * { * ObjectGroup objectGroup = translokator.ObjectGroups[i]; * * for (int x = 0; x != objectGroup.NumObjects; x++) * { * ResourceTypes.Translokator.Object obj = objectGroup.Objects[x]; * * for (int y = 0; y != obj.NumInstances; y++) * { * Instance instance = obj.Instances[y]; * var cell = GetCell(instance.Position); * RenderBoundingBox box = new RenderBoundingBox(); * box.SetTransform(Matrix4x4.CreateTranslation(instance.Position)); * box.Init(new BoundingBox(-Vector3.One, Vector3.One)); * cells[cell].AddAsset(box, RefManager.GetNewRefID()); * } * } * }*/ }
public SpatialGrid(TranslokatorLoader translokator) { bIsReady = true; gridBounds = translokator.Bounds; width = translokator.Grids[0].Width; height = translokator.Grids[0].Height; cellSize = new Vector2(gridBounds.Width / width, gridBounds.Height / height); cells = new SpatialCell[width * height]; origin = gridBounds.Minimum; var index = 0; for (int i = 0; i < width; i++) { for (int x = 0; x < height; x++) { var extents = new BoundingBox(); extents.Minimum = new Vector3(origin.X + cellSize.X * x, origin.Y + cellSize.Y * i, 10.0f); extents.Maximum = new Vector3(origin.X + cellSize.X * (x + 1), origin.Y + cellSize.Y * (i + 1), 10.0f); cells[index++] = new SpatialCell(extents); } } for (int i = 0; i != translokator.ObjectGroups.Length; i++) { ObjectGroup objectGroup = translokator.ObjectGroups[i]; for (int x = 0; x != objectGroup.NumObjects; x++) { ResourceTypes.Translokator.Object obj = objectGroup.Objects[x]; for (int y = 0; y != obj.NumInstances; y++) { Instance instance = obj.Instances[y]; var cell = GetCell(instance.Position); RenderBoundingBox box = new RenderBoundingBox(); box.SetTransform(Matrix.Translation(instance.Position)); box.Init(new BoundingBox(-Vector3.One, Vector3.One)); cells[cell].AddAsset(box, StringHelpers.GetNewRefID()); } } } }
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(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(); }
public TreeNode SetTranslokatorGrid(TranslokatorLoader translokator) { translokatorGrid = new SpatialGrid(translokator); translokatorGrid.Initialise(D3D.Device, D3D.DeviceContext); return(translokatorGrid.GetTreeNodes()); }
private void LHFunctionButton_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { FileInfo info = new FileInfo(openFileDialog1.FileName); TranslokatorLoader loader2 = new TranslokatorLoader(info); for (int i = 0; i < loader2.ObjectGroups.Length; i++) { ObjectGroup objectGroup = loader2.ObjectGroups[i]; ObjectGroup transGroup = translokator.ObjectGroups[i]; for (int y = 0; y < objectGroup.Objects.Length; y++) { ResourceTypes.Translokator.Object loaderObj = objectGroup.Objects[y]; for (int z = 0; z < transGroup.Objects.Length; z++) { ResourceTypes.Translokator.Object transObj = transGroup.Objects[z]; if (loaderObj.Name == transObj.Name) { int size = transObj.Instances.Length - loaderObj.Instances.Length; if (size > 0) { Instance[] newArray = new Instance[size]; Array.Copy(transObj.Instances, loaderObj.Instances.Length, newArray, 0, newArray.Length); transObj.Instances = newArray; } } } } } TranslokatorTree.Nodes.Clear(); TreeNode headerData = new TreeNode("Header Data"); headerData.Tag = translokator; TreeNode gridNode = new TreeNode("Grids"); for (int i = 0; i < translokator.Grids.Length; i++) { Grid grid = translokator.Grids[i]; TreeNode child = new TreeNode("Grid " + i); child.Tag = grid; gridNode.Nodes.Add(child); } TreeNode ogNode = new TreeNode("Objects Groups"); for (int i = 0; i < translokator.ObjectGroups.Length; i++) { ObjectGroup objectGroup = translokator.ObjectGroups[i]; TreeNode objectGroupNode = new TreeNode("Object Group " + i); objectGroupNode.Tag = objectGroup; for (int y = 0; y < objectGroup.Objects.Length; y++) { ResourceTypes.Translokator.Object obj = objectGroup.Objects[y]; TreeNode objNode = new TreeNode(obj.Name.ToString()); objNode.Tag = obj; objectGroupNode.Nodes.Add(objNode); for (int x = 0; x < obj.Instances.Length; x++) { Instance instance = obj.Instances[x]; TreeNode instanceNode = new TreeNode(obj.Name + " " + x); instanceNode.Tag = instance; objNode.Nodes.Add(instanceNode); } } ogNode.Nodes.Add(objectGroupNode); } TranslokatorTree.Nodes.Add(headerData); TranslokatorTree.Nodes.Add(gridNode); TranslokatorTree.Nodes.Add(ogNode); Text = Language.GetString("$TRANSLOKATOR_EDITOR") + "*"; bIsFileEdited = true; } }