public override void BindingStream(MemoryStream ms) { // データの複製を作る. streamdata = new MemoryStream(); ZipFileUtil.CopyStream(ms, streamdata); ms.Seek(0, SeekOrigin.Begin); Bitmap savefilebitmap = new Bitmap(ms); posestream = new PNGPOSEStream(); ms.Seek(0, SeekOrigin.Begin); posedata = posestream.LoadStream(ms); #if false TDCGExplorer.TDCGExplorer.MainFormWindow.PictureBox.Image = savefilebitmap; TDCGExplorer.TDCGExplorer.MainFormWindow.PictureBox.Width = savefilebitmap.Width; TDCGExplorer.TDCGExplorer.MainFormWindow.PictureBox.Height = savefilebitmap.Height; #else TDCGExplorer.TDCGExplorer.MainFormWindow.SetBitmap(savefilebitmap); #endif #if false TDCG.Viewer viewer = TDCGExplorer.TDCGExplorer.MainFormWindow.Viewer; if (posedata.scene == false) { // キャラが無い時はデフォ子 if (TDCGExplorer.TDCGExplorer.FigureLoad == false) { viewer.AddFigureFromPNGFile("default.tdcgsav.png", false); TDCGExplorer.TDCGExplorer.FigureLoad = true; } using (MemoryStream tmo = new MemoryStream(posedata.figures[0].tmo.data)) { viewer.LoadTMOFile(tmo); } } else { // 全部ロードする. ms.Seek(0, SeekOrigin.Begin); viewer.AddFigureFromPNGStream(ms, false); TDCGExplorer.TDCGExplorer.FigureLoad = false; } List <float> camera = posedata.GetCamera(); Vector3 eye = new Vector3(camera[0], camera[1], camera[2]); Vector3 ypr = new Vector3(camera[5], camera[4], camera[6]); Matrix m = Matrix.RotationYawPitchRoll(ypr.Y, ypr.X, ypr.Z) * Matrix.Translation(eye.X, eye.Y, eye.Z); viewer.Camera.Reset(); viewer.Camera.Translation = new Vector3(-m.M41, -m.M42, m.M43); viewer.Camera.Angle = ypr; TDCGExplorer.TDCGExplorer.MainFormWindow.setNeedCameraReset(); #endif // データ階層ツリーを構築する. MakeTreeView(); }
protected override void Dispose(bool disposing) { if (streamdata != null) { streamdata.Dispose(); } streamdata = null; if (posedata != null) { posedata.Dispose(); } posedata = null; if (posestream != null) { posestream.Dispose(); } posestream = null; base.Dispose(disposing); }