/// <summary> /// Constructor /// </summary> /// <param name="spineAnimationItem"></param> /// <param name="title_path">The path of the spine animation to set as title</param> public SpineAnimationWindow(WzSpineAnimationItem spineAnimationItem, string title_path) { IsMouseVisible = true; //Window.IsBorderless = true; //Window.Position = new Point(0, 0); Window.Title = title_path; IsFixedTimeStep = false; // dont cap fps Content.RootDirectory = "Content"; // Res this.UserScreenScaleFactor = (float)ScreenDPIUtil.GetScreenScaleFactor(); this.matrixScale = Matrix.CreateScale(UserScreenScaleFactor); // Graphics graphicsDeviceMgr = new GraphicsDeviceManager(this) { SynchronizeWithVerticalRetrace = true, // max fps with the monitor HardwareModeSwitch = true, GraphicsProfile = GraphicsProfile.HiDef, IsFullScreen = false, PreferMultiSampling = true, SupportedOrientations = DisplayOrientation.Default, PreferredBackBufferWidth = (int)(1366 * UserScreenScaleFactor), // XNA isnt DPI aware. PreferredBackBufferHeight = (int)(768 * UserScreenScaleFactor), PreferredBackBufferFormat = SurfaceFormat.Color /*RGBA8888*/ | SurfaceFormat.Bgr32 | SurfaceFormat.Dxt1 | SurfaceFormat.Dxt5, PreferredDepthStencilFormat = DepthFormat.Depth24Stencil8, }; graphicsDeviceMgr.ApplyChanges(); this.wzSpineObject = new WzSpineObject(spineAnimationItem); }
/// <summary> /// Constructor /// </summary> /// <param name="spineAnimationItem"></param> /// <param name="skeletonData"></param> public SpineAnimationWindow(WzSpineAnimationItem spineAnimationItem) { IsMouseVisible = true; //Window.IsBorderless = true; //Window.Position = new Point(0, 0); Window.Title = "Spine"; IsFixedTimeStep = false; // dont cap fps graphicsDeviceMgr = new GraphicsDeviceManager(this) { SynchronizeWithVerticalRetrace = false, // dont cap fps HardwareModeSwitch = true, GraphicsProfile = GraphicsProfile.HiDef, IsFullScreen = false, PreferMultiSampling = true, SupportedOrientations = DisplayOrientation.Default, PreferredBackBufferWidth = 1366, PreferredBackBufferHeight = 768, PreferredBackBufferFormat = SurfaceFormat.Color, PreferredDepthStencilFormat = DepthFormat.Depth24Stencil8, }; graphicsDeviceMgr.ApplyChanges(); this.wzSpineObject = new WzSpineObject(spineAnimationItem); }
/// <summary> /// On click /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void bgItem_Click(object sender, MouseEventArgs e) { ImageViewer imageViewer = sender as ImageViewer; BackgroundInfo bgInfo = (BackgroundInfo)((ImageViewer)sender).Tag; if (e.Button == MouseButtons.Left) { lock (hcsm.MultiBoard) { hcsm.EnterEditMode(ItemTypes.Backgrounds); hcsm.MultiBoard.SelectedBoard.Mouse.SetHeldInfo(bgInfo); hcsm.MultiBoard.Focus(); ((ImageViewer)sender).IsActive = true; } } else // right click { if (bgInfo.Type == BackgroundInfoType.Spine) // only shows an animation preview window if its a spine object. { ContextMenu cm = new ContextMenu(); MenuItem menuItem = new MenuItem(); menuItem.Text = "Preview"; menuItem.Tag = bgInfo; menuItem.Click += new EventHandler(delegate(object sender_, EventArgs e_) { MenuItem menuItem_ = sender_ as MenuItem; BackgroundInfo bgInfo_ = menuItem_.Tag as BackgroundInfo; WzImageProperty spineAtlasProp = bgInfo_.WzImageProperty.WzProperties.FirstOrDefault( wzprop => wzprop is WzStringProperty && ((WzStringProperty)wzprop).IsSpineAtlasResources); if (spineAtlasProp != null) { WzStringProperty stringObj = (WzStringProperty)spineAtlasProp; Thread thread = new Thread(() => { try { WzSpineAnimationItem item = new WzSpineAnimationItem(stringObj); // Create xna window SpineAnimationWindow Window = new SpineAnimationWindow(item); Window.Run(); } catch (Exception ex) { } }); thread.Start(); thread.Join(); } }); cm.MenuItems.Add(menuItem); cm.Show(imageViewer, new Point(0, 50)); } } }
private WzSpineAnimationItem wzSpineAnimationItem; // only applicable if its a spine item, otherwise null. /// <summary> /// Constructor /// Only to be initialized in Get /// </summary> /// <param name="image"></param> /// <param name="origin"></param> /// <param name="bS"></param> /// <param name="_type"></param> /// <param name="no"></param> /// <param name="parentObject"></param> /// <param name="wzSpineAnimationItem"></param> private BackgroundInfo(WzImageProperty imageProperty, Bitmap image, System.Drawing.Point origin, string bS, BackgroundInfoType _type, string no, WzObject parentObject, WzSpineAnimationItem wzSpineAnimationItem) : base(image, origin, parentObject) { this.imageProperty = imageProperty; this._bS = bS; this._type = _type; this._no = no; this.wzSpineAnimationItem = wzSpineAnimationItem; }
/// <summary> /// Constructor /// </summary> /// <param name="spineAnimationItem"></param> /// <param name="skeletonData"></param> public SpineAnimationWindow(WzSpineAnimationItem spineAnimationItem) { IsMouseVisible = true; graphicsDeviceMgr = new GraphicsDeviceManager(this); graphicsDeviceMgr.IsFullScreen = false; graphicsDeviceMgr.PreferredBackBufferWidth = 1366; graphicsDeviceMgr.PreferredBackBufferHeight = 768; this.spineAnimationItem = spineAnimationItem; }
/// <summary> /// Load background from WzImageProperty /// </summary> /// <param name="graphicsDevice">The graphics device that the backgroundInfo is to be rendered on (loading spine)</param> /// <param name="parentObject"></param> /// <param name="spineParentObject"></param> /// <param name="bS"></param> /// <param name="type"></param> /// <param name="no"></param> /// <returns></returns> private static BackgroundInfo Load(GraphicsDevice graphicsDevice, WzImageProperty parentObject, string bS, BackgroundInfoType type, string no) { WzCanvasProperty frame0; if (type == BackgroundInfoType.Animation) { frame0 = (WzCanvasProperty)WzInfoTools.GetRealProperty(parentObject["0"]); } else if (type == BackgroundInfoType.Spine) { // TODO: make a preview of the spine image ffs WzCanvasProperty spineCanvas = (WzCanvasProperty)parentObject["0"]; if (spineCanvas != null) { // Load spine WzSpineAnimationItem wzSpineAnimationItem = null; if (graphicsDevice != null) // graphicsdevice needed to work.. assuming that it is loaded by now before BackgroundPanel { WzImageProperty spineAtlasProp = ((WzSubProperty)parentObject).WzProperties.FirstOrDefault( wzprop => wzprop is WzStringProperty property && property.IsSpineAtlasResources); if (spineAtlasProp != null) { WzStringProperty stringObj = (WzStringProperty)spineAtlasProp; wzSpineAnimationItem = new WzSpineAnimationItem(stringObj); wzSpineAnimationItem.LoadResources(graphicsDevice); } } // Preview Image Bitmap bitmap = spineCanvas.GetLinkedWzCanvasBitmap(); // Origin PointF origin__ = spineCanvas.GetCanvasOriginPosition(); return(new BackgroundInfo(parentObject, bitmap, WzInfoTools.PointFToSystemPoint(origin__), bS, type, no, parentObject, wzSpineAnimationItem)); } else { PointF origin_ = new PointF(); return(new BackgroundInfo(parentObject, Properties.Resources.placeholder, WzInfoTools.PointFToSystemPoint(origin_), bS, type, no, parentObject, null)); } } else { frame0 = (WzCanvasProperty)WzInfoTools.GetRealProperty(parentObject); } PointF origin = frame0.GetCanvasOriginPosition(); return(new BackgroundInfo(frame0, frame0.GetLinkedWzCanvasBitmap(), WzInfoTools.PointFToSystemPoint(origin), bS, type, no, parentObject, null)); }