private void numericUpDown34_ValueChanged(object sender, EventArgs e) { if (link.TreeRoot != null) { ChunkLinks.ChunkLink.LinkTree Link = (ChunkLinks.ChunkLink.LinkTree)link.TreeRoot; Pos pos = Link.UnknownMatrix[u2_i]; pos.W = (float)numericUpDown34.Value; Link.UnknownMatrix[u2_i] = pos; } }
private void numericUpDown22_ValueChanged(object sender, EventArgs e) { if (link.TreeRoot != null) { ChunkLinks.ChunkLink.LinkTree Link = (ChunkLinks.ChunkLink.LinkTree)link.TreeRoot; Pos pos = Link.LoadArea[areap_i]; pos.W = (float)numericUpDown22.Value; Link.LoadArea[areap_i] = pos; } }
private void numericUpDown29_ValueChanged(object sender, EventArgs e) { if (link.TreeRoot != null) { ChunkLinks.ChunkLink.LinkTree Link = (ChunkLinks.ChunkLink.LinkTree)link.TreeRoot; Pos pos = Link.AreaMatrix[u1_i]; pos.X = (float)numericUpDown29.Value; Link.AreaMatrix[u1_i] = pos; } }
private void GetAreaMatrix2Pos() { if (link.TreeRoot != null) { ChunkLinks.ChunkLink.LinkTree Link = (ChunkLinks.ChunkLink.LinkTree)link.TreeRoot; numericUpDown33.Value = (decimal)Link.UnknownMatrix[u2_i].X; numericUpDown36.Value = (decimal)Link.UnknownMatrix[u2_i].Y; numericUpDown35.Value = (decimal)Link.UnknownMatrix[u2_i].Z; numericUpDown34.Value = (decimal)Link.UnknownMatrix[u2_i].W; } }
private void GetAreaMatrix1Pos() { if (link.TreeRoot != null) { ChunkLinks.ChunkLink.LinkTree Link = (ChunkLinks.ChunkLink.LinkTree)link.TreeRoot; numericUpDown29.Value = (decimal)Link.AreaMatrix[u1_i].X; numericUpDown32.Value = (decimal)Link.AreaMatrix[u1_i].Y; numericUpDown31.Value = (decimal)Link.AreaMatrix[u1_i].Z; numericUpDown30.Value = (decimal)Link.AreaMatrix[u1_i].W; } }
private void GetLoadAreaPos() { if (link.TreeRoot != null) { ChunkLinks.ChunkLink.LinkTree Link = (ChunkLinks.ChunkLink.LinkTree)link.TreeRoot; numericUpDown21.Value = (decimal)Link.LoadArea[areap_i].X; numericUpDown28.Value = (decimal)Link.LoadArea[areap_i].Y; numericUpDown23.Value = (decimal)Link.LoadArea[areap_i].Z; numericUpDown22.Value = (decimal)Link.LoadArea[areap_i].W; } }
protected override void GenText() { List <string> text = new List <string>(); text.Add($"ID: {Data.ID}"); text.Add($"Size: {Data.Size}"); text.Add($"LinkCount: {Data.Links.Count}"); for (int i = 0; i < Data.Links.Count; ++i) { text.Add($"Link{i}"); text.Add($"Type: {Data.Links[i].Type}"); text.Add($"Directory: {Data.Links[i].Path}"); text.Add($"Flags: {Convert.ToString(Data.Links[i].Flags, 16).ToUpper()}"); ChunkLinks.ChunkLink.LinkTree tree = Data.Links[i].TreeRoot; string add = ""; int depth = 0; while (tree != null) { text.Add(add + $"Load Zone {depth}"); var gi_header = tree.GI_Type.Header; for (var j = 0; j < 11; ++j) { text.Add(add + $"GI header {j}: {gi_header[j]}"); } add += " "; depth++; if (tree.Next != null) { tree = tree.Next; } else { break; } } text.Add(""); } TextPrev = text.ToArray(); }
//protected override void RenderHUD() //{ // return; //} protected override void RenderObjects() { //put all object rendering code here GL.PushMatrix(); if (links != null) { GL.LineWidth(2); GL.DepthMask(false); foreach (var l in links.Links) { Color cur_color = colors[(links.Links.IndexOf(l) + 2) % colors.Length]; GL.PushMatrix(); GL.Scale(-1, 1, 1); if (l.HasWall) { GL.Color4(Color.FromArgb(95, cur_color)); GL.Begin(PrimitiveType.Quads); GL.Vertex4(l.LoadWall[0].ToArray()); GL.Vertex4(l.LoadWall[1].ToArray()); GL.Vertex4(l.LoadWall[2].ToArray()); GL.Vertex4(l.LoadWall[3].ToArray()); GL.End(); GL.Color4(cur_color); GL.Begin(PrimitiveType.LineLoop); GL.Vertex4(l.LoadWall[0].ToArray()); GL.Vertex4(l.LoadWall[1].ToArray()); GL.Vertex4(l.LoadWall[2].ToArray()); GL.Vertex4(l.LoadWall[3].ToArray()); GL.End(); GL.Begin(PrimitiveType.Lines); GL.Vertex4(l.LoadWall[0].ToArray()); GL.Vertex4(l.LoadWall[2].ToArray()); GL.Vertex4(l.LoadWall[1].ToArray()); GL.Vertex4(l.LoadWall[3].ToArray()); GL.End(); Matrix3 rot_mat = Matrix3.Identity; rot_mat *= Matrix3.CreateRotationX(-rot.Y / 180 * MathHelper.Pi); rot_mat *= Matrix3.CreateRotationY(-rot.X / 180 * MathHelper.Pi); rot_mat *= Matrix3.CreateRotationZ(rot.Z / 180 * MathHelper.Pi); RenderString3D(l.Path, cur_color, -(l.LoadWall[0].X + l.LoadWall[1].X + l.LoadWall[2].X + l.LoadWall[3].X) / 4, (l.LoadWall[0].Y + l.LoadWall[1].Y + l.LoadWall[2].Y + l.LoadWall[3].Y) / 4, (l.LoadWall[0].Z + l.LoadWall[1].Z + l.LoadWall[2].Z + l.LoadWall[3].Z) / 4, ref rot_mat); } if (l.HasTree) { ChunkLinks.ChunkLink.LinkTree tree = l.TreeRoot; while (tree != null) { GL.Begin(PrimitiveType.Lines); for (int i = 0; i < 6; ++i) { switch (i) { case 0: GL.Color4(Color.Red); break; case 1: GL.Color4(Color.Green); break; case 2: GL.Color4(Color.Blue); break; case 3: GL.Color4(Color.Yellow); break; case 4: GL.Color4(Color.Magenta); break; case 5: GL.Color4(Color.Cyan); break; } int i1 = i >= 4 ? 1 - (i - 4) : (0 + 2 * i) % 8; int i2 = i >= 4 ? i1 + 2 : (1 + 2 * i) % 8; int i3 = i >= 4 ? i2 + 2 : (2 + 2 * i) % 8; int i4 = i >= 4 ? i3 + 2 : (3 + 2 * i) % 8; Vector3 mid_vec = new Vector3(tree.LoadArea[i1].X + tree.LoadArea[i2].X + tree.LoadArea[i3].X + tree.LoadArea[i4].X, tree.LoadArea[i1].Y + tree.LoadArea[i2].Y + tree.LoadArea[i3].Y + tree.LoadArea[i4].Y, tree.LoadArea[i1].Z + tree.LoadArea[i2].Z + tree.LoadArea[i3].Z + tree.LoadArea[i4].Z) / 4; Vector3 nor_vec = new Vector3(tree.AreaMatrix[i].X, tree.AreaMatrix[i].Y, tree.AreaMatrix[i].Z); Vector3 unk_vec = new Vector3(tree.UnknownMatrix[i].X, tree.UnknownMatrix[i].Y, tree.UnknownMatrix[i].Z); GL.Vertex3(mid_vec); GL.Vertex3(mid_vec + nor_vec); GL.Vertex3(mid_vec); GL.Vertex3(mid_vec + unk_vec); } GL.End(); GL.Enable(EnableCap.Lighting); GL.Color4(Color.FromArgb(95, cur_color)); GL.Begin(PrimitiveType.QuadStrip); GL.Vertex4(tree.LoadArea[0].ToArray()); GL.Vertex4(tree.LoadArea[1].ToArray()); GL.Vertex4(tree.LoadArea[2].ToArray()); GL.Vertex4(tree.LoadArea[3].ToArray()); GL.Vertex4(tree.LoadArea[4].ToArray()); GL.Vertex4(tree.LoadArea[5].ToArray()); GL.Vertex4(tree.LoadArea[6].ToArray()); GL.Vertex4(tree.LoadArea[7].ToArray()); GL.Vertex4(tree.LoadArea[0].ToArray()); GL.Vertex4(tree.LoadArea[1].ToArray()); GL.End(); GL.Begin(PrimitiveType.Quads); GL.Vertex4(tree.LoadArea[1].ToArray()); GL.Vertex4(tree.LoadArea[3].ToArray()); GL.Vertex4(tree.LoadArea[5].ToArray()); GL.Vertex4(tree.LoadArea[7].ToArray()); GL.Vertex4(tree.LoadArea[0].ToArray()); GL.Vertex4(tree.LoadArea[2].ToArray()); GL.Vertex4(tree.LoadArea[4].ToArray()); GL.Vertex4(tree.LoadArea[6].ToArray()); GL.End(); GL.Disable(EnableCap.Lighting); GL.Color4(cur_color); GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line); GL.Begin(PrimitiveType.QuadStrip); GL.Vertex4(tree.LoadArea[0].ToArray()); GL.Vertex4(tree.LoadArea[1].ToArray()); GL.Vertex4(tree.LoadArea[2].ToArray()); GL.Vertex4(tree.LoadArea[3].ToArray()); GL.Vertex4(tree.LoadArea[4].ToArray()); GL.Vertex4(tree.LoadArea[5].ToArray()); GL.Vertex4(tree.LoadArea[6].ToArray()); GL.Vertex4(tree.LoadArea[7].ToArray()); GL.Vertex4(tree.LoadArea[0].ToArray()); GL.Vertex4(tree.LoadArea[1].ToArray()); GL.End(); GL.Begin(PrimitiveType.Quads); GL.Vertex4(tree.LoadArea[1].ToArray()); GL.Vertex4(tree.LoadArea[3].ToArray()); GL.Vertex4(tree.LoadArea[5].ToArray()); GL.Vertex4(tree.LoadArea[7].ToArray()); GL.Vertex4(tree.LoadArea[0].ToArray()); GL.Vertex4(tree.LoadArea[2].ToArray()); GL.Vertex4(tree.LoadArea[4].ToArray()); GL.Vertex4(tree.LoadArea[6].ToArray()); GL.End(); GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill); GL.Begin(PrimitiveType.Lines); GL.Vertex4(tree.LoadArea[0].ToArray()); GL.Vertex4(tree.LoadArea[3].ToArray()); GL.Vertex4(tree.LoadArea[1].ToArray()); GL.Vertex4(tree.LoadArea[2].ToArray()); GL.Vertex4(tree.LoadArea[2].ToArray()); GL.Vertex4(tree.LoadArea[5].ToArray()); GL.Vertex4(tree.LoadArea[3].ToArray()); GL.Vertex4(tree.LoadArea[4].ToArray()); GL.Vertex4(tree.LoadArea[4].ToArray()); GL.Vertex4(tree.LoadArea[7].ToArray()); GL.Vertex4(tree.LoadArea[5].ToArray()); GL.Vertex4(tree.LoadArea[6].ToArray()); GL.Vertex4(tree.LoadArea[6].ToArray()); GL.Vertex4(tree.LoadArea[1].ToArray()); GL.Vertex4(tree.LoadArea[7].ToArray()); GL.Vertex4(tree.LoadArea[0].ToArray()); GL.Vertex4(tree.LoadArea[0].ToArray()); GL.Vertex4(tree.LoadArea[4].ToArray()); GL.Vertex4(tree.LoadArea[2].ToArray()); GL.Vertex4(tree.LoadArea[6].ToArray()); GL.Vertex4(tree.LoadArea[1].ToArray()); GL.Vertex4(tree.LoadArea[5].ToArray()); GL.Vertex4(tree.LoadArea[3].ToArray()); GL.Vertex4(tree.LoadArea[7].ToArray()); GL.End(); if (tree.Next != null) { tree = tree.Next; } else { break; } } } GL.PopMatrix(); } GL.DepthMask(true); GL.LineWidth(1); } GL.PopMatrix(); }