private void timer1_Tick(object sender, System.EventArgs e) { if (lb.SelectedItem == null) { timer1.Enabled = false; return; } ListedMeshBlocks lmb = (ListedMeshBlocks)lb.SelectedItem; if (timecode > lmb.ANIMBlock.Animation.TotalTime) { timer1.Enabled = false; return; } pb.Value = timecode; foreach (AnimationData ad in animdata) { ad.SetFrame(timecode); } dx.Render(); //Application.DoEvents(); timecode += 40; }
private void lb_SelectedIndexChanged(object sender, System.EventArgs e) { if (lb.SelectedItem == null) { return; } jointmap.Clear(); ListedMeshBlocks lmb = (ListedMeshBlocks)lb.SelectedItem; if (lmb.CRES == null || lmb.GMDC == null) { return; } SimPe.Plugin.ResourceNode rn = (SimPe.Plugin.ResourceNode)lmb.CRES.Blocks[0]; if (root != null) { root.Dispose(); } root = new Ambertation.Graphics.MeshList(); AddJoint(lmb, rn, root, tv.Nodes); animdata.Clear(); foreach (SimPe.Plugin.Anim.AnimationFrameBlock afb in lmb.ANIMBlock.Part2) { SimPe.Plugin.Anim.AnimationFrameBlock afb2 = afb.CloneBase(true); object o = jointmap[afb.Name]; if (o == null) { continue; } Ambertation.Graphics.MeshBox mb = (Ambertation.Graphics.MeshBox)o; animdata.Add(new AnimationData(afb2, mb, lmb.ANIMBlock.Animation.TotalTime)); } if (inter) { return; } inter = true; //dx.Reset(); dx.ResetViewport(new Microsoft.DirectX.Vector3(-2, -2, -2), new Microsoft.DirectX.Vector3(2, 2, 2)); dx.Render(); inter = false; }
private void btPlay_Click(object sender, System.EventArgs e) { if (lb.SelectedItem == null) { return; } ListedMeshBlocks lmb = (ListedMeshBlocks)lb.SelectedItem; timer1.Interval = 1000 / 25; timecode = 0; pb.Value = 0; pb.Maximum = lmb.ANIMBlock.Animation.TotalTime; timer1.Enabled = true; }
void AddJoint(ListedMeshBlocks lmb, SimPe.Interfaces.Scenegraph.ICresChildren bl, Ambertation.Graphics.MeshList parent, System.Windows.Forms.TreeNodeCollection nodes) { SimPe.Plugin.TransformNode tn = bl.StoredTransformNode; if (tn != null) { Ambertation.Graphics.MeshBox mb = new Ambertation.Graphics.MeshBox( Microsoft.DirectX.Direct3D.Mesh.Sphere(dx.Device, 0.02f, 12, 24), 1, Ambertation.Graphics.DirectXPanel.GetMaterial(Color.Wheat) ); mb.Wire = false; Ambertation.Scenes.Transformation trans = new Ambertation.Scenes.Transformation(); trans.Rotation.X = tn.Rotation.GetEulerAngles().X; trans.Rotation.Y = tn.Rotation.GetEulerAngles().Y; trans.Rotation.Z = tn.Rotation.GetEulerAngles().Z; trans.Translation.X = tn.TransformX; trans.Translation.Y = tn.TransformY; trans.Translation.Z = tn.TransformZ; mb.Transform = Ambertation.Scenes.Converter.ToDx(trans); TreeNode tnode = new TreeNode(tn.ToString()); tnode.Tag = mb; nodes.Add(tnode); jointmap[bl.GetName()] = mb; parent.Add(mb); foreach (SimPe.Interfaces.Scenegraph.ICresChildren cld in bl) { AddJoint(lmb, cld, mb, tnode.Nodes); } } else { foreach (SimPe.Interfaces.Scenegraph.ICresChildren cld in bl) { AddJoint(lmb, cld, parent, nodes); } } }