/// <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)); }
/// <summary> /// Load spine related assets and contents /// </summary> protected override void LoadContent() { // Font spriteBatch = new SpriteBatch(GraphicsDevice); // Spine spineAnimationItem.LoadResources(graphicsDeviceMgr.GraphicsDevice); // load spine resources (this must happen after window is loaded) this.skeleton = new Skeleton(spineAnimationItem.SkeletonData); skeletonRenderer = new SkeletonMeshRenderer(GraphicsDevice); skeletonRenderer.PremultipliedAlpha = spineAnimationItem.PremultipliedAlpha; // Skin foreach (Skin skin in spineAnimationItem.SkeletonData.Skins) { this.skeleton.SetSkin(skin.Name); // just set the first skin break; } // Define mixing between animations. AnimationStateData stateData = new AnimationStateData(skeleton.Data); state = new AnimationState(stateData); int i = 0; foreach (Animation animation in spineAnimationItem.SkeletonData.Animations) { state.SetAnimation(i++, animation.Name, true); } /*if (name == "spineboy") * { * stateData.SetMix("run", "jump", 0.2f); * stateData.SetMix("jump", "run", 0.4f); * * // Event handling for all animations. * state.Start += Start; * state.End += End; * state.Complete += Complete; * state.Event += Event; * * state.SetAnimation(0, "test", false); * TrackEntry entry = state.AddAnimation(0, "jump", false, 0); * entry.End += End; // Event handling for queued animations. * state.AddAnimation(0, "run", true, 0); * } * else if (name == "raptor") * { * state.SetAnimation(0, "walk", true); * state.SetAnimation(1, "empty", false); * state.AddAnimation(1, "gungrab", false, 2); * } * else * { * state.SetAnimation(0, "walk", true); * }*/ skeleton.X = 800; skeleton.Y = 600; skeleton.UpdateWorldTransform(); }