|
@@ -42,7 +42,7 @@ using Spine;
|
|
namespace Spine {
|
|
namespace Spine {
|
|
public class Example : Microsoft.Xna.Framework.Game {
|
|
public class Example : Microsoft.Xna.Framework.Game {
|
|
GraphicsDeviceManager graphics;
|
|
GraphicsDeviceManager graphics;
|
|
- SkeletonMeshRenderer skeletonRenderer;
|
|
|
|
|
|
+ SkeletonRenderer skeletonRenderer;
|
|
Skeleton skeleton;
|
|
Skeleton skeleton;
|
|
Slot headSlot;
|
|
Slot headSlot;
|
|
AnimationState state;
|
|
AnimationState state;
|
|
@@ -65,15 +65,22 @@ namespace Spine {
|
|
base.Initialize();
|
|
base.Initialize();
|
|
}
|
|
}
|
|
|
|
|
|
- protected override void LoadContent () {
|
|
|
|
- skeletonRenderer = new SkeletonMeshRenderer(GraphicsDevice);
|
|
|
|
|
|
+ protected override void LoadContent() {
|
|
|
|
+ // Two color tint effect, comment line 76 to disable
|
|
|
|
+ var spineEffect = Content.Load<Effect>("Content\\SpineEffect");
|
|
|
|
+ spineEffect.Parameters["World"].SetValue(Matrix.Identity);
|
|
|
|
+ spineEffect.Parameters["View"].SetValue(Matrix.CreateLookAt(new Vector3(0.0f, 0.0f, 1.0f), Vector3.Zero, Vector3.Up));
|
|
|
|
+
|
|
|
|
+ skeletonRenderer = new SkeletonRenderer(GraphicsDevice);
|
|
skeletonRenderer.PremultipliedAlpha = true;
|
|
skeletonRenderer.PremultipliedAlpha = true;
|
|
|
|
+ skeletonRenderer.Effect = spineEffect;
|
|
|
|
|
|
// String name = "spineboy";
|
|
// String name = "spineboy";
|
|
// String name = "goblins-mesh";
|
|
// String name = "goblins-mesh";
|
|
// String name = "raptor";
|
|
// String name = "raptor";
|
|
// String name = "tank";
|
|
// String name = "tank";
|
|
- String name = "coin";
|
|
|
|
|
|
+ // String name = "coin";
|
|
|
|
+ String name = "TwoColorTest";
|
|
bool binaryData = true;
|
|
bool binaryData = true;
|
|
|
|
|
|
Atlas atlas = new Atlas(assetsFolder + name + ".atlas", new XnaTextureLoader(GraphicsDevice));
|
|
Atlas atlas = new Atlas(assetsFolder + name + ".atlas", new XnaTextureLoader(GraphicsDevice));
|
|
@@ -81,7 +88,8 @@ namespace Spine {
|
|
float scale = 1;
|
|
float scale = 1;
|
|
if (name == "spineboy") scale = 0.6f;
|
|
if (name == "spineboy") scale = 0.6f;
|
|
if (name == "raptor") scale = 0.5f;
|
|
if (name == "raptor") scale = 0.5f;
|
|
- if (name == "tank") scale = 0.3f;
|
|
|
|
|
|
+ if (name == "tank") scale = 0.3f;
|
|
|
|
+ if (name == "TwoColorTest") scale = 0.5f;
|
|
|
|
|
|
SkeletonData skeletonData;
|
|
SkeletonData skeletonData;
|
|
if (binaryData) {
|
|
if (binaryData) {
|
|
@@ -124,12 +132,15 @@ namespace Spine {
|
|
}
|
|
}
|
|
else if (name == "tank") {
|
|
else if (name == "tank") {
|
|
state.SetAnimation(0, "drive", true);
|
|
state.SetAnimation(0, "drive", true);
|
|
|
|
+ }
|
|
|
|
+ else if (name == "TwoColorTest") {
|
|
|
|
+ state.SetAnimation(0, "animation", true);
|
|
} else {
|
|
} else {
|
|
state.SetAnimation(0, "walk", true);
|
|
state.SetAnimation(0, "walk", true);
|
|
}
|
|
}
|
|
|
|
|
|
skeleton.X = 400 + (name == "tank" ? 300: 0);
|
|
skeleton.X = 400 + (name == "tank" ? 300: 0);
|
|
- skeleton.Y = 580;
|
|
|
|
|
|
+ skeleton.Y = 580 + (name == "TwoColorTest" ? -300 : 0);
|
|
skeleton.UpdateWorldTransform();
|
|
skeleton.UpdateWorldTransform();
|
|
|
|
|
|
headSlot = skeleton.FindSlot("head");
|
|
headSlot = skeleton.FindSlot("head");
|
|
@@ -148,6 +159,12 @@ namespace Spine {
|
|
state.Update(gameTime.ElapsedGameTime.Milliseconds / 1000f);
|
|
state.Update(gameTime.ElapsedGameTime.Milliseconds / 1000f);
|
|
state.Apply(skeleton);
|
|
state.Apply(skeleton);
|
|
skeleton.UpdateWorldTransform();
|
|
skeleton.UpdateWorldTransform();
|
|
|
|
+ if (skeletonRenderer.Effect is BasicEffect) {
|
|
|
|
+ ((BasicEffect)skeletonRenderer.Effect).Projection = Matrix.CreateOrthographicOffCenter(0, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height, 0, 1, 0);
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ skeletonRenderer.Effect.Parameters["Projection"].SetValue(Matrix.CreateOrthographicOffCenter(0, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height, 0, 1, 0));
|
|
|
|
+ }
|
|
skeletonRenderer.Begin();
|
|
skeletonRenderer.Begin();
|
|
skeletonRenderer.Draw(skeleton);
|
|
skeletonRenderer.Draw(skeleton);
|
|
skeletonRenderer.End();
|
|
skeletonRenderer.End();
|