Browse Source

[xna] Removed spine-xna in favor of spine-monogame.

Mario Zechner 3 years ago
parent
commit
86cd8668ca
41 changed files with 10 additions and 10087 deletions
  1. 2 0
      CHANGELOG.md
  2. 7 4
      spine-monogame/README.md
  3. 0 26
      spine-xna/LICENSE
  4. 0 34
      spine-xna/Properties/AssemblyInfo.cs
  5. 1 28
      spine-xna/README.md
  6. 0 59
      spine-xna/example-content/SpineEffect.fx
  7. 0 116
      spine-xna/example-content/SpineEffectNormalmap.fx
  8. 0 113
      spine-xna/example-content/SpineEffectOutline.fx
  9. 0 51
      spine-xna/example-content/spine-xna-example-content.contentproj
  10. BIN
      spine-xna/example/Game.ico
  11. BIN
      spine-xna/example/GameThumbnail.png
  12. 0 34
      spine-xna/example/Properties/AssemblyInfo.cs
  13. 0 259
      spine-xna/example/data/coin-pro.json
  14. BIN
      spine-xna/example/data/coin-pro.skel
  15. 0 18
      spine-xna/example/data/coin.atlas
  16. BIN
      spine-xna/example/data/coin.png
  17. 0 1211
      spine-xna/example/data/mix-and-match-pro.json
  18. 0 362
      spine-xna/example/data/mix-and-match.atlas
  19. BIN
      spine-xna/example/data/mix-and-match.png
  20. 0 692
      spine-xna/example/data/raptor-pro.json
  21. 0 99
      spine-xna/example/data/raptor.atlas
  22. BIN
      spine-xna/example/data/raptor.png
  23. BIN
      spine-xna/example/data/raptor_normals.png
  24. BIN
      spine-xna/example/data/spineboy-pro.skel
  25. 0 101
      spine-xna/example/data/spineboy.atlas
  26. BIN
      spine-xna/example/data/spineboy.png
  27. 0 5020
      spine-xna/example/data/tank-pro.json
  28. 0 56
      spine-xna/example/data/tank.atlas
  29. BIN
      spine-xna/example/data/tank.png
  30. 0 218
      spine-xna/example/spine-xna-example.csproj
  31. 0 246
      spine-xna/example/src/ExampleGame.cs
  32. 0 26
      spine-xna/example/src/ExampleProgram.cs
  33. 0 160
      spine-xna/spine-xna.csproj
  34. 0 71
      spine-xna/spine-xna.sln
  35. 0 195
      spine-xna/src/MeshBatcher.cs
  36. 0 165
      spine-xna/src/ShapeRenderer.cs
  37. 0 228
      spine-xna/src/SkeletonDebugRenderer.cs
  38. 0 226
      spine-xna/src/SkeletonRenderer.cs
  39. 0 79
      spine-xna/src/Util.cs
  40. 0 97
      spine-xna/src/VertexEffect.cs
  41. 0 93
      spine-xna/src/XnaTextureLoader.cs

+ 2 - 0
CHANGELOG.md

@@ -60,6 +60,8 @@
 * **Restructuring (Non-Breaking)**
 
 ### XNA/MonoGame
+* **Breaking change**: Removed spine-xna in favor of spine-monogame. See https://github.com/EsotericSoftware/spine-runtimes/issues/1949
+* Added new spine-monogame solution. See [spine-monogame/README.md](spine-monogame/README.md) for updated instructions on how to use spine-monogame.
 
 ## Java
 * **Breaking change**: `AttachmentLoader#newRegionAttachment()` and `AttachmentLoader#newMeshAttachment()` take an additional `Sequence` parameter.

+ 7 - 4
spine-monogame/README.md

@@ -21,11 +21,14 @@ spine-monogame supports all Spine features.
 ## Setup
 
 1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it as a zip via the download button above.
-1. Copy the contents of the `spine-csharp/src` and `spine-xna/src` directories into your project.
+1. Let your MonoGame project reference the project `spine-monogame/spine-monogame/spine-monogame.csproj`.
+1. Optionally add `spine-monogame/spine-monogame-example/Content/shaders/SpineEffect.fx` to your content pipeline build if you require two color tinting support. See the `spine-monogame-example/ExampleGame.cs` on how to use it.
+
+Note: `spine-monogame` references source files from `spine-csharp/src`.
 
 ## Example
 
+1. Follow the [MonoGame Getting Started Guide](https://docs.monogame.net/articles/getting_started/0_getting_started.html) on how to setup your development environment for MonoGame. Make sure to also install the optional dependencies allowing compilation of shaders. 
 1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip via the download button above.
-1. Open the `spine-monogame-example.sln` Solution in either Visual Studio 2015 or Xamarin Studio
-1. Right click the `spine-monogame-example` project in the solution explorer and select `Properties`
-1. Select `Debug` and set the working directory to point to `spine-runtimes/spine-xna/example`
+1. Open the `spine-monogame.sln` Solution in the IDE you choose based on the `Monogame Getting Started Guide`.
+1. Set the `spine-monogame-example` project as the startup project, and ensure the working directory is set to `spine-runtimes/spine-monogame/spine-monogame-example` when running or debugging the project.

+ 0 - 26
spine-xna/LICENSE

@@ -1,26 +0,0 @@
-Spine Runtimes License Agreement
-Last updated May 1, 2019. Replaces all prior versions.
-
-Copyright (c) 2013-2019, Esoteric Software LLC
-
-Integration of the Spine Runtimes into software or otherwise creating
-derivative works of the Spine Runtimes is permitted under the terms and
-conditions of Section 2 of the Spine Editor License Agreement:
-http://esotericsoftware.com/spine-editor-license
-
-Otherwise, it is permitted to integrate the Spine Runtimes into software
-or otherwise create derivative works of the Spine Runtimes (collectively,
-"Products"), provided that each user of the Products must obtain their own
-Spine Editor license and redistribution of the Products in any form must
-include this license and copyright notice.
-
-THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY EXPRESS
-OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS
-INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ 0 - 34
spine-xna/Properties/AssemblyInfo.cs

@@ -1,34 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("spine-xna")]
-[assembly: AssemblyProduct("spine-xna")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyCompany("Esoteric Software")]
-[assembly: AssemblyCopyright("Copyright © Esoteric Software 2013-2016")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type. Only Windows
-// assemblies support COM.
-[assembly: ComVisible(false)]
-
-// On Windows, the following GUID is for the ID of the typelib if this
-// project is exposed to COM. On other platforms, it unique identifies the
-// title storage container when deploying this assembly to the device.
-[assembly: Guid("bce68f54-1e09-449a-90a2-b7ca28f491a5")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-[assembly: AssemblyVersion("1.0.0.0")]

+ 1 - 28
spine-xna/README.md

@@ -1,30 +1,3 @@
 # spine-xna
 
-The spine-xna runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [XNA](http://msdn.microsoft.com/xna/). spine-xna is based on [spine-csharp](../spine-csharp).
-
-## Licensing
-
-You are welcome to evaluate the Spine Runtimes and the examples we provide in this repository free of charge.
-
-You can integrate the Spine Runtimes into your software free of charge, but users of your software must have their own [Spine license](https://esotericsoftware.com/spine-purchase). Please make your users aware of this requirement! This option is often chosen by those making development tools, such as an SDK, game toolkit, or software library.
-
-In order to distribute your software containing the Spine Runtimes to others that don't have a Spine license, you need a [Spine license](https://esotericsoftware.com/spine-purchase) at the time of integration. Then you can distribute your software containing the Spine Runtimes however you like, provided others don't modify it or use it to create new software. If others want to do that, they'll need their own Spine license.
-
-For the official legal terms governing the Spine Runtimes, please read the [Spine Runtimes License Agreement](http://esotericsoftware.com/spine-runtimes-license) and Section 2 of the [Spine Editor License Agreement](http://esotericsoftware.com/spine-editor-license#s2).
-
-## Spine version
-
-spine-xna works with data exported from Spine 4.1.xx.
-
-spine-xna supports all Spine features.
-
-## Setup
-
-1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it as a zip via the download button above.
-1. For XNA with Visual Studio 2015, download [XNA 4.0 refresh for Visual Studio 2015](https://mxa.codeplex.com/releases/view/618279). Install each subfolder as per the README file.
-1. Open the `spine-xna.sln` project file with Visual Studio.
-1. Set `spine-xna-example` as the startup project
-1. Set the working directory of `spine-xna-example` to `spine-runtimes/spine-xna/example`
-1. Run the example!
-
-Alternatively, the contents of the `spine-csharp/src` and `spine-xna/src` directories can be copied into your project.
+spine-xna has been discontinued in favor of spine-monogame. Microsoft no longer offers the old XNA tools for download. Projects still relying on Microsoft's XNA implementation can use the sources from spine-monogame.

+ 0 - 59
spine-xna/example-content/SpineEffect.fx

@@ -1,59 +0,0 @@
-float4x4 World;
-float4x4 View;
-float4x4 Projection;
-
-sampler TextureSampler : register(s0);
-
-// TODO: add effect parameters here.
-
-struct VertexShaderInput
-{
-    float4 Position : POSITION0;
-	float4 Color : COLOR0;
-	float4 TextureCoordinate : TEXCOORD0;
-	float4 Color2 : COLOR1;
-};
-
-struct VertexShaderOutput
-{
-    float4 Position : POSITION0;
-	float4 Color : COLOR0;
-	float4 TextureCoordinate : TEXCOORD0;
-	float4 Color2 : COLOR1;
-};
-
-VertexShaderOutput VertexShaderFunction(VertexShaderInput input)
-{
-    VertexShaderOutput output;
-
-    float4 worldPosition = mul(input.Position, World);
-    float4 viewPosition = mul(worldPosition, View);
-    output.Position = mul(viewPosition, Projection);
-	output.TextureCoordinate = input.TextureCoordinate;
-	output.Color = input.Color;
-	output.Color2 = input.Color2;
-
-    return output;
-}
-
-float4 PixelShaderFunction(VertexShaderOutput input) : COLOR0
-{
-	float4 texColor = tex2D(TextureSampler, input.TextureCoordinate);
-	float alpha = texColor.a * input.Color.a;
-	float4 output;
-	output.a = alpha;
-	output.rgb = ((texColor.a - 1.0) * input.Color2.a + 1.0 - texColor.rgb) * input.Color2.rgb + texColor.rgb * input.Color.rgb;
-
-	return output;
-}
-
-technique Technique1
-{
-    pass Pass1
-    {
-        // TODO: set renderstates here.
-
-        VertexShader = compile vs_2_0 VertexShaderFunction();
-        PixelShader = compile ps_2_0 PixelShaderFunction();
-    }
-}

+ 0 - 116
spine-xna/example-content/SpineEffectNormalmap.fx

@@ -1,116 +0,0 @@
-float4x4 World;
-float4x4 View;
-float4x4 Projection;
-
-// Light0 parameters.
-// Default values set below, change them via spineEffect.Parameters["Light0_Direction"] and similar.
-float3 Light0_Direction = float3(-0.5265408f, -0.5735765f, -0.6275069f);
-float3 Light0_Diffuse = float3(1, 1, 1);
-float3 Light0_Specular = float3(1, 1, 1);
-float Light0_SpecularExponent = 2.0; // also called "shininess", "specular hardness"
-
-sampler TextureSampler : register(s0);
-sampler NormalmapSampler : register(s1);
-
-// TODO: add effect parameters here.
-
-float NormalmapIntensity = 1;
-
-float3 GetNormal(sampler normalmapSampler, float2 uv, float3 worldPos, float3 vertexNormal)
-{
-	// Reconstruct tangent space TBN matrix
-	float3 pos_dx = ddx(worldPos);
-	float3 pos_dy = ddy(worldPos);
-	float3 tex_dx = float3(ddx(uv), 0.0);
-	float3 tex_dy = float3(ddy(uv), 0.0);
-	float divisor = (tex_dx.x * tex_dy.y - tex_dy.x * tex_dx.y);
-	float3 t = (tex_dy.y * pos_dx - tex_dx.y * pos_dy) / divisor;
-
-	float divisorBinormal = (tex_dy.y * tex_dx.x - tex_dx.y * tex_dy.x);
-	float3 b = (tex_dx.x * pos_dy - tex_dy.x * pos_dx) / divisorBinormal;
-
-	t = normalize(t - vertexNormal * dot(vertexNormal, t));
-	b = normalize(b - vertexNormal * dot(vertexNormal, b));
-	float3x3 tbn = float3x3(t, b, vertexNormal);
-
-	float3 n = 2.0 * tex2D(normalmapSampler, uv).rgb - 1.0;
-#ifdef INVERT_NORMALMAP_Y
-	n.y = -n.y;
-#endif
-	n = normalize(mul(n * float3(NormalmapIntensity, NormalmapIntensity, 1.0), tbn));
-	return n;
-}
-
-void GetLightContributionBlinnPhong(inout float3 diffuseResult, inout float3 specularResult,
-	float3 lightDirection, float3 lightDiffuse, float3 lightSpecular, float specularExponent, float3 normal, float3 viewDirection)
-{
-	diffuseResult += lightDiffuse * max(0.0, dot(normal, -lightDirection));
-	half3 halfVector = normalize(-lightDirection + viewDirection);
-	float nDotH = max(0, dot(normal, halfVector));
-	specularExponent = max(0.00001, specularExponent); // prevent fx compiler error at pow() below
-	specularResult += lightSpecular * pow(nDotH, specularExponent);
-}
-
-struct VertexShaderInput
-{
-    float4 Position : POSITION0;
-	float4 Color : COLOR0;
-	float4 TextureCoordinate : TEXCOORD0;
-	float4 Color2 : COLOR1;
-};
-
-struct VertexShaderOutput
-{
-    float4 Position : POSITION0;
-	float4 Color : COLOR0;
-	float4 TextureCoordinate : TEXCOORD0;
-	float4 Color2 : COLOR1;
-	float3 WorldNormal : TEXCOORD1;
-	float4 WorldPosition : TEXCOORD2; // for tangent reconstruction
-};
-
-VertexShaderOutput VertexShaderFunction(VertexShaderInput input)
-{
-    VertexShaderOutput output;
-
-    float4 worldPosition = mul(input.Position, World);
-    float4 viewPosition = mul(worldPosition, View);
-    output.Position = mul(viewPosition, Projection);
-	output.TextureCoordinate = input.TextureCoordinate;
-	output.Color = input.Color;
-	output.Color2 = input.Color2;
-
-	output.WorldNormal = mul(transpose(View), float4(0, 0, 1, 0)).xyz;
-	output.WorldPosition = worldPosition;
-    return output;
-}
-
-float4 PixelShaderFunction(VertexShaderOutput input) : COLOR0
-{
-	float4 texColor = tex2D(TextureSampler, input.TextureCoordinate);
-	float3 normal = GetNormal(NormalmapSampler, input.TextureCoordinate, input.WorldPosition, input.WorldNormal);
-	float3 viewDirection = -input.WorldNormal;
-
-	float alpha = texColor.a * input.Color.a;
-	float4 output;
-	output.a = alpha;
-	output.rgb = ((texColor.a - 1.0) * input.Color2.a + 1.0 - texColor.rgb) * input.Color2.rgb + texColor.rgb * input.Color.rgb;
-
-	float3 diffuseLight = float3(0, 0, 0);
-	float3 specularLight = float3(0, 0, 0);
-	GetLightContributionBlinnPhong(diffuseLight, specularLight,
-		Light0_Direction, Light0_Diffuse, Light0_Specular, Light0_SpecularExponent, normal, viewDirection);
-	output.rgb = diffuseLight * output.rgb + specularLight;
-	return output;
-}
-
-technique Technique1
-{
-    pass Pass1
-    {
-        // TODO: set renderstates here.
-
-        VertexShader = compile vs_3_0 VertexShaderFunction();
-        PixelShader = compile ps_3_0 PixelShaderFunction();
-    }
-}

+ 0 - 113
spine-xna/example-content/SpineEffectOutline.fx

@@ -1,113 +0,0 @@
-float4x4 World;
-float4x4 View;
-float4x4 Projection;
-
-sampler TextureSampler : register(s0);
-
-float _OutlineWidth = 3;
-float4 _OutlineColor = float4(1, 1, 0, 1);
-float _ThresholdEnd = 0.25;
-float _OutlineSmoothness = 1.0;
-float _OutlineMipLevel = 0;
-
-// TODO: add effect parameters here.
-
-struct VertexShaderInput
-{
-    float4 Position : POSITION0;
-	float4 Color : COLOR0;
-	float4 TextureCoordinate : TEXCOORD0;
-	float4 Color2 : COLOR1;
-};
-
-struct VertexShaderOutput
-{
-    float4 Position : POSITION0;
-	float4 Color : COLOR0;
-	float4 TextureCoordinate : TEXCOORD0;
-	float4 Color2 : COLOR1;
-};
-
-VertexShaderOutput VertexShaderFunction(VertexShaderInput input)
-{
-    VertexShaderOutput output;
-
-    float4 worldPosition = mul(input.Position, World);
-    float4 viewPosition = mul(worldPosition, View);
-    output.Position = mul(viewPosition, Projection);
-	output.TextureCoordinate = input.TextureCoordinate;
-	output.Color = input.Color;
-	output.Color2 = input.Color2;
-
-    return output;
-}
-
-float4 PixelShaderFunction(VertexShaderOutput input) : COLOR0
-{
-	float4 texColor = tex2D(TextureSampler, input.TextureCoordinate);
-	float alpha = texColor.a * input.Color.a;
-	float4 output;
-	output.a = alpha;
-	output.rgb = ((texColor.a - 1.0) * input.Color2.a + 1.0 - texColor.rgb) * input.Color2.rgb + texColor.rgb * input.Color.rgb;
-
-	return output;
-}
-
-// Outline pass
-#define _USE8NEIGHBOURHOOD_ON
-
-float4 PixelShaderFunctionOutline(VertexShaderOutput i) : COLOR0
-{
-	float4 texColor = float4(0,0,0,0);
-
-	float uvDeltaPerPixel = max(ddx(i.TextureCoordinate), ddy(i.TextureCoordinate));
-	float outlineWidthCompensated = _OutlineWidth * uvDeltaPerPixel;
-	float xOffset = outlineWidthCompensated;
-	float yOffset = outlineWidthCompensated;
-	float xOffsetDiagonal = outlineWidthCompensated * 0.7;
-	float yOffsetDiagonal = outlineWidthCompensated * 0.7;
-
-	float pixelCenter = tex2D(TextureSampler, i.TextureCoordinate).a;
-
-	float4 uvCenterWithLod = float4(i.TextureCoordinate.xy, 0, _OutlineMipLevel);
-	float pixelTop = tex2Dlod(TextureSampler, uvCenterWithLod + float4(0,  yOffset, 0, 0)).a;
-	float pixelBottom = tex2Dlod(TextureSampler, uvCenterWithLod + float4(0, -yOffset, 0, 0)).a;
-	float pixelLeft = tex2Dlod(TextureSampler, uvCenterWithLod + float4(-xOffset, 0, 0, 0)).a;
-	float pixelRight = tex2Dlod(TextureSampler, uvCenterWithLod + float4(xOffset, 0, 0, 0)).a;
-#ifdef _USE8NEIGHBOURHOOD_ON
-	float numSamples = 8;
-	float pixelTopLeft = tex2Dlod(TextureSampler, uvCenterWithLod + float4(-xOffsetDiagonal, yOffsetDiagonal, 0, 0)).a;
-	float pixelTopRight = tex2Dlod(TextureSampler, uvCenterWithLod + float4(xOffsetDiagonal, yOffsetDiagonal, 0, 0)).a;
-	float pixelBottomLeft = tex2Dlod(TextureSampler, uvCenterWithLod + float4(-xOffsetDiagonal, -yOffsetDiagonal, 0, 0)).a;
-	float pixelBottomRight = tex2Dlod(TextureSampler, uvCenterWithLod + float4(xOffsetDiagonal, -yOffsetDiagonal, 0, 0)).a;
-	float average = (pixelTop + pixelBottom + pixelLeft + pixelRight +
-		pixelTopLeft + pixelTopRight + pixelBottomLeft + pixelBottomRight)
-		* i.Color.a / numSamples;
-#else // 4 neighbourhood
-	float numSamples = 1;
-	float average = (pixelTop + pixelBottom + pixelLeft + pixelRight) * i.Color.a / numSamples;
-#endif
-
-	float thresholdStart = _ThresholdEnd * (1.0 - _OutlineSmoothness);
-	float outlineAlpha = saturate((average - thresholdStart) / (_ThresholdEnd - thresholdStart)) - pixelCenter;
-	texColor.rgba = lerp(texColor, _OutlineColor, outlineAlpha);
-	return texColor;
-}
-
-technique Technique1
-{
-    pass OutlinePass
-    {
-        // TODO: set renderstates here.
-
-        VertexShader = compile vs_3_0 VertexShaderFunction();
-        PixelShader = compile ps_3_0 PixelShaderFunctionOutline();
-    }
-	pass Pass2
-	{
-		// TODO: set renderstates here.
-
-		VertexShader = compile vs_2_0 VertexShaderFunction();
-		PixelShader = compile ps_2_0 PixelShaderFunction();
-	}
-}

+ 0 - 51
spine-xna/example-content/spine-xna-example-content.contentproj

@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
-  <PropertyGroup>
-    <ProjectGuid>{D0632D20-BC92-4A73-896B-30BB687732B8}</ProjectGuid>
-    <ProjectTypeGuids>{96E2B04D-8817-42c6-938A-82C39BA4D311};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <XnaFrameworkVersion>v4.0</XnaFrameworkVersion>
-    <OutputPath>bin\$(Platform)\$(Configuration)</OutputPath>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.EffectImporter, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=MSIL" />
-    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.FBXImporter, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=MSIL" />
-    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.TextureImporter, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=MSIL" />
-    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.XImporter, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=MSIL" />
-    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.AudioImporters, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=MSIL" />
-    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.VideoImporters, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=MSIL" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="SpineEffect.fx">
-      <Name>SpineEffect</Name>
-      <Importer>EffectImporter</Importer>
-      <Processor>EffectProcessor</Processor>
-    </Compile>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="SpineEffectNormalmap.fx">
-      <Name>SpineEffectNormalmap</Name>
-      <Importer>EffectImporter</Importer>
-      <Processor>EffectProcessor</Processor>
-    </Compile>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="SpineEffectOutline.fx">
-      <Name>SpineEffectOutline</Name>
-      <Importer>EffectImporter</Importer>
-      <Processor>EffectProcessor</Processor>
-    </Compile>
-  </ItemGroup>
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-</Project>

BIN
spine-xna/example/Game.ico


BIN
spine-xna/example/GameThumbnail.png


+ 0 - 34
spine-xna/example/Properties/AssemblyInfo.cs

@@ -1,34 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("spine-xna-example")]
-[assembly: AssemblyProduct("spine-xna-example")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyCompany("Esoteric Software")]
-[assembly: AssemblyCopyright("Copyright © Esoteric Software 2013-2016")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type. Only Windows
-// assemblies support COM.
-[assembly: ComVisible(false)]
-
-// On Windows, the following GUID is for the ID of the typelib if this
-// project is exposed to COM. On other platforms, it unique identifies the
-// title storage container when deploying this assembly to the device.
-[assembly: Guid("078eb4ac-3a70-4ab4-b103-a048c6a15898")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-[assembly: AssemblyVersion("1.0.0.0")]

+ 0 - 259
spine-xna/example/data/coin-pro.json

@@ -1,259 +0,0 @@
-{
-"skeleton": {
-	"hash": "5q2VQysgSd0",
-	"spine": "4.1.04-beta",
-	"x": -152.5,
-	"y": -151,
-	"width": 305,
-	"height": 302,
-	"images": "./images/",
-	"audio": ""
-},
-"bones": [
-	{ "name": "root" },
-	{ "name": "coin-front", "parent": "root" },
-	{ "name": "clipping", "parent": "coin-front" },
-	{ "name": "coin-sides", "parent": "root" },
-	{ "name": "coin-side-round", "parent": "coin-sides" },
-	{ "name": "coin-side-straight", "parent": "coin-sides" },
-	{ "name": "shine", "parent": "root", "x": 243.14 }
-],
-"slots": [
-	{ "name": "coin-side", "bone": "coin-side-straight", "color": "ffdb2fff", "attachment": "coin-side-straight" },
-	{ "name": "coin-side-round", "bone": "coin-side-round", "color": "ffdb2fff", "attachment": "coin-side-round" },
-	{ "name": "coin-front-texture", "bone": "coin-front", "color": "868686ff", "attachment": "coin-front-logo" },
-	{ "name": "coin-front-shine", "bone": "coin-front", "color": "888888ff", "dark": "000000", "attachment": "coin-front-shine-logo", "blend": "additive" },
-	{ "name": "clipping", "bone": "clipping", "attachment": "clipping" },
-	{ "name": "shine", "bone": "shine", "color": "ffffff60", "attachment": "shine", "blend": "additive" }
-],
-"skins": [
-	{
-		"name": "default",
-		"attachments": {
-			"clipping": {
-				"clipping": {
-					"type": "clipping",
-					"end": "clipping",
-					"vertexCount": 39,
-					"vertices": [ 0.1, 140.26, -26.4, 138.14, -50.51, 131.25, -75.42, 119.06, -98.21, 101.04, -115.44, 82.22, -127.63, 62.08, -136.11, 39.03, -140.08, 19.68, -141.41, -0.19, -140.08, -22.98, -134.78, -45.5, -125.24, -66.44, -113.32, -84.19, -98.21, -101.95, -80.46, -116.52, -61.38, -127.39, -38.92, -134.81, -18.22, -139.27, -0.14, -140.58, 24.23, -138.48, 45.45, -132.46, 67.98, -122.5, 86.58, -110.19, 102.56, -95.25, 115.4, -78.75, 125.36, -61.72, 134, -42.33, 138.46, -22.15, 139.24, -0.15, 138.46, 20.29, 133.48, 39.94, 127.19, 58.54, 117.5, 76.1, 104.4, 92.86, 88.42, 108.32, 69.03, 121.42, 50.43, 130.85, 26.32, 137.4 ],
-					"color": "ce3a3aff"
-				}
-			},
-			"coin-front-shine": {
-				"coin-front-shine-logo": { "width": 282, "height": 282 },
-				"coin-front-shine-spineboy": { "width": 282, "height": 282 }
-			},
-			"coin-front-texture": {
-				"coin-front-logo": { "width": 305, "height": 302 },
-				"coin-front-spineboy": { "width": 305, "height": 302 }
-			},
-			"coin-side": {
-				"coin-side-straight": { "x": 0.5, "width": 17, "height": 282 }
-			},
-			"coin-side-round": {
-				"coin-side-round": { "x": -69.43, "width": 144, "height": 282 }
-			},
-			"shine": {
-				"shine": { "y": 0.5, "scaleX": 1.6004, "scaleY": 1.6004, "width": 72, "height": 245 }
-			}
-		}
-	}
-],
-"animations": {
-	"animation": {
-		"slots": {
-			"coin-front-shine": {
-				"rgba2": [
-					{ "light": "7d7d7dff", "dark": "000000" },
-					{ "time": 0.2667, "light": "000000ff", "dark": "7e7e7e" },
-					{ "time": 0.664, "light": "000000ff", "dark": "000000" },
-					{ "time": 1.0333, "light": "7f7f7fff", "dark": "000000" },
-					{ "time": 1.3333, "light": "404040ff", "dark": "000000" },
-					{ "time": 1.6, "light": "000000ff", "dark": "7e7e7e" },
-					{ "time": 2.0022, "light": "000000ff", "dark": "000000" },
-					{ "time": 2.4, "light": "7f7f7fff", "dark": "000000" },
-					{ "time": 2.6667, "light": "7d7d7dff", "dark": "000000" }
-				],
-				"attachment": [
-					{ "time": 0.6667, "name": "coin-front-shine-spineboy" },
-					{ "time": 2, "name": "coin-front-shine-logo" }
-				]
-			},
-			"coin-front-texture": {
-				"rgba": [
-					{ "color": "858585ff" },
-					{ "time": 0.4, "color": "ffffffff" },
-					{
-						"time": 0.6696,
-						"color": "858585ff",
-						"curve": [ 0.725, 0.59, 0.892, 1, 0.725, 0.59, 0.892, 1, 0.725, 0.59, 0.892, 1, 0.725, 1, 0.892, 1 ]
-					},
-					{ "time": 0.9667, "color": "ffffffff" },
-					{ "time": 1.3318, "color": "858585ff", "curve": "stepped" },
-					{ "time": 1.3333, "color": "858585ff" },
-					{ "time": 1.7333, "color": "ffffffff" },
-					{ "time": 1.9982, "color": "858585ff", "curve": "stepped" },
-					{ "time": 2.0022, "color": "858585ff" },
-					{ "time": 2.3, "color": "ffffffff" },
-					{ "time": 2.6667, "color": "858585ff" }
-				],
-				"attachment": [
-					{ "time": 0.6667, "name": "coin-front-spineboy" },
-					{ "time": 2, "name": "coin-front-logo" }
-				]
-			}
-		},
-		"bones": {
-			"coin-front": {
-				"translate": [
-					{},
-					{ "time": 0.664, "x": 8.3, "curve": "stepped" },
-					{
-						"time": 0.6696,
-						"x": -8.3,
-						"curve": [ 0.794, -7.08, 1.167, 0, 0.794, 0, 1.167, 0 ]
-					},
-					{ "time": 1.3333 },
-					{ "time": 1.9982, "x": 8.3, "curve": "stepped" },
-					{ "time": 2.0022, "x": -8.3 },
-					{ "time": 2.6667 }
-				],
-				"scale": [
-					{
-						"curve": [ 0.164, 1, 0.484, 0.091, 0.164, 1, 0.484, 1 ]
-					},
-					{ "time": 0.664, "x": 0, "curve": "stepped" },
-					{
-						"time": 0.6696,
-						"x": 0.003,
-						"curve": [ 0.786, 0.153, 1.167, 1, 0.786, 1, 1.167, 1 ]
-					},
-					{
-						"time": 1.3333,
-						"curve": [ 1.442, 0.992, 1.858, 0.098, 1.442, 1, 1.858, 1 ]
-					},
-					{ "time": 1.9982, "x": 0.003, "curve": "stepped" },
-					{
-						"time": 2.0022,
-						"x": 0.003,
-						"curve": [ 2.123, 0.151, 2.501, 1, 2.123, 1, 2.501, 1 ]
-					},
-					{ "time": 2.6667 }
-				]
-			},
-			"coin-side-round": {
-				"translate": [
-					{},
-					{ "time": 0.664, "x": -6.75, "curve": "stepped" },
-					{
-						"time": 0.6696,
-						"x": 7.03,
-						"curve": [ 0.794, 5.99, 1.167, 0, 0.794, 0, 1.167, 0 ]
-					},
-					{ "time": 1.3333 },
-					{ "time": 1.9982, "x": -6.75, "curve": "stepped" },
-					{ "time": 2.0022, "x": 7.03 },
-					{ "time": 2.6667 }
-				],
-				"scale": [
-					{
-						"curve": [ 0.085, 1, 0.207, 0.789, 0.085, 1, 0.207, 1 ]
-					},
-					{
-						"time": 0.3333,
-						"x": 0.555,
-						"curve": [ 0.449, 0.347, 0.567, 0.122, 0.449, 1, 0.567, 1 ]
-					},
-					{ "time": 0.664, "x": 0.014, "curve": "stepped" },
-					{
-						"time": 0.6696,
-						"x": -0.028,
-						"curve": [ 0.723, -0.126, 0.865, -0.367, 0.723, 1, 0.865, 1 ]
-					},
-					{
-						"time": 1,
-						"x": -0.609,
-						"curve": [ 1.053, -0.778, 1.29, -0.997, 1.053, 1, 1.29, 1 ]
-					},
-					{ "time": 1.3318, "x": -1, "curve": "stepped" },
-					{
-						"time": 1.3333,
-						"curve": [ 1.384, 0.997, 1.439, 0.94, 1.384, 1, 1.439, 1 ]
-					},
-					{
-						"time": 1.5,
-						"x": 0.852,
-						"curve": [ 1.564, 0.748, 1.703, 0.509, 1.564, 1, 1.703, 1 ]
-					},
-					{
-						"time": 1.8,
-						"x": 0.315,
-						"curve": [ 1.873, 0.13, 1.987, 0.015, 1.873, 1, 1.987, 1 ]
-					},
-					{ "time": 1.9982, "x": 0.014, "curve": "stepped" },
-					{
-						"time": 2.0022,
-						"x": -0.028,
-						"curve": [ 2.039, -0.072, 2.123, -0.239, 2.039, 1, 2.123, 1 ]
-					},
-					{
-						"time": 2.2018,
-						"x": -0.365,
-						"curve": [ 2.269, -0.513, 2.337, -0.635, 2.269, 1, 2.337, 1 ]
-					},
-					{
-						"time": 2.4,
-						"x": -0.731,
-						"curve": [ 2.503, -0.871, 2.596, -0.961, 2.503, 1, 2.596, 1 ]
-					},
-					{
-						"time": 2.6592,
-						"x": -1,
-						"curve": [ 2.661, -1, 2.665, 1, 2.661, 1, 2.665, 1 ]
-					},
-					{ "time": 2.6667 }
-				]
-			},
-			"shine": {
-				"translate": [
-					{
-						"curve": [ 0.167, 0, 0.5, -473.39, 0.167, 0, 0.5, 0 ]
-					},
-					{
-						"time": 0.6667,
-						"x": -473.39,
-						"curve": [ 0.833, -473.39, 1.167, -33.16, 0.833, 0, 1.167, 0 ]
-					},
-					{
-						"time": 1.3333,
-						"x": -33.16,
-						"curve": [ 1.5, -33.16, 1.833, -473.39, 1.5, 0, 1.833, 0 ]
-					},
-					{
-						"time": 2,
-						"x": -473.39,
-						"curve": [ 2.167, -473.39, 2.5, 0, 2.167, 0, 2.5, 0 ]
-					},
-					{ "time": 2.6667 }
-				]
-			}
-		},
-		"drawOrder": [
-			{
-				"time": 0.6667,
-				"offsets": [
-					{ "slot": "coin-side", "offset": 2 }
-				]
-			},
-			{ "time": 0.6696 },
-			{
-				"time": 1.9982,
-				"offsets": [
-					{ "slot": "coin-side", "offset": 2 }
-				]
-			},
-			{ "time": 2.0022 }
-		]
-	}
-}
-}

BIN
spine-xna/example/data/coin-pro.skel


+ 0 - 18
spine-xna/example/data/coin.atlas

@@ -1,18 +0,0 @@
-coin.png
-	size: 1024, 1024
-	filter: Linear, Linear
-coin-front-logo
-	bounds: 2, 570, 305, 302
-coin-front-shine-logo
-	bounds: 2, 286, 282, 282
-coin-front-shine-spineboy
-	bounds: 305, 283, 282, 282
-coin-front-spineboy
-	bounds: 309, 567, 305, 302
-	rotate: 90
-coin-side-round
-	bounds: 2, 2, 144, 282
-coin-side-straight
-	bounds: 286, 286, 17, 282
-shine
-	bounds: 148, 39, 72, 245

BIN
spine-xna/example/data/coin.png


File diff suppressed because it is too large
+ 0 - 1211
spine-xna/example/data/mix-and-match-pro.json


+ 0 - 362
spine-xna/example/data/mix-and-match.atlas

@@ -1,362 +0,0 @@
-mix-and-match.png
-	size: 1024, 512
-	filter: Linear, Linear
-	scale: 0.5
-base-head
-	bounds: 587, 2, 95, 73
-boy/arm-front
-	bounds: 558, 271, 36, 115
-boy/backpack
-	bounds: 235, 109, 119, 153
-boy/backpack-pocket
-	bounds: 328, 73, 34, 62
-	rotate: 90
-boy/backpack-strap-front
-	bounds: 665, 79, 38, 88
-boy/backpack-up
-	bounds: 395, 364, 21, 70
-	rotate: 90
-boy/body
-	bounds: 251, 264, 97, 132
-	rotate: 90
-boy/boot-ribbon-front
-	bounds: 648, 131, 9, 11
-boy/collar
-	bounds: 744, 4, 73, 29
-	rotate: 90
-boy/ear
-	bounds: 383, 109, 19, 23
-	rotate: 90
-boy/eye-back-low-eyelid
-	bounds: 739, 284, 17, 6
-	rotate: 90
-boy/eye-back-pupil
-	bounds: 832, 443, 8, 9
-	rotate: 90
-boy/eye-back-up-eyelid
-	bounds: 558, 264, 23, 5
-boy/eye-back-up-eyelid-back
-	bounds: 802, 491, 19, 10
-	rotate: 90
-boy/eye-front-low-eyelid
-	bounds: 386, 363, 22, 7
-	rotate: 90
-boy/eye-front-pupil
-	bounds: 816, 389, 9, 9
-boy/eye-front-up-eyelid
-	bounds: 160, 71, 31, 6
-	rotate: 90
-boy/eye-front-up-eyelid-back
-	bounds: 801, 434, 26, 9
-	rotate: 90
-boy/eye-iris-back
-	bounds: 618, 264, 17, 17
-boy/eye-iris-front
-	bounds: 727, 264, 18, 18
-boy/eye-white-back
-	bounds: 580, 131, 20, 12
-boy/eye-white-front
-	bounds: 510, 130, 27, 13
-boy/eyebrow-back
-	bounds: 751, 88, 20, 11
-	rotate: 90
-boy/eyebrow-front
-	bounds: 483, 130, 25, 11
-boy/hair-back
-	bounds: 494, 388, 122, 81
-	rotate: 90
-boy/hair-bangs
-	bounds: 667, 284, 70, 37
-boy/hair-side
-	bounds: 789, 374, 25, 43
-boy/hand-backfingers
-	bounds: 467, 364, 19, 21
-boy/hand-front-fingers
-	bounds: 488, 364, 19, 21
-boy/hat
-	bounds: 615, 417, 93, 56
-	rotate: 90
-boy/leg-front
-	bounds: 138, 104, 31, 158
-boy/mouth-close
-	bounds: 551, 365, 21, 5
-	rotate: 90
-girl-blue-cape/mouth-close
-	bounds: 551, 365, 21, 5
-	rotate: 90
-girl-spring-dress/mouth-close
-	bounds: 551, 365, 21, 5
-	rotate: 90
-girl/mouth-close
-	bounds: 551, 365, 21, 5
-	rotate: 90
-boy/mouth-smile
-	bounds: 705, 79, 29, 7
-boy/nose
-	bounds: 836, 473, 17, 10
-	rotate: 90
-boy/pompom
-	bounds: 747, 273, 48, 43
-	rotate: 90
-boy/zip
-	bounds: 648, 144, 14, 23
-girl-blue-cape/back-eyebrow
-	bounds: 602, 131, 18, 12
-girl-blue-cape/body-dress
-	bounds: 2, 264, 109, 246
-girl-blue-cape/body-ribbon
-	bounds: 615, 283, 50, 38
-girl-blue-cape/cape-back
-	bounds: 2, 69, 134, 193
-girl-blue-cape/cape-back-up
-	bounds: 386, 387, 123, 106
-	rotate: 90
-girl-blue-cape/cape-ribbon
-	bounds: 675, 264, 50, 18
-girl-blue-cape/cape-shoulder-back
-	bounds: 751, 110, 49, 59
-girl-blue-cape/cape-shoulder-front
-	bounds: 113, 264, 62, 76
-	rotate: 90
-girl-blue-cape/cape-up-front
-	bounds: 399, 264, 98, 117
-	rotate: 90
-girl-blue-cape/ear
-	bounds: 775, 2, 19, 23
-girl-spring-dress/ear
-	bounds: 775, 2, 19, 23
-girl/ear
-	bounds: 775, 2, 19, 23
-girl-blue-cape/eye-back-low-eyelid
-	bounds: 802, 463, 17, 6
-girl-spring-dress/eye-back-low-eyelid
-	bounds: 802, 463, 17, 6
-girl/eye-back-low-eyelid
-	bounds: 802, 463, 17, 6
-girl-blue-cape/eye-back-pupil
-	bounds: 816, 367, 8, 9
-girl-spring-dress/eye-back-pupil
-	bounds: 816, 367, 8, 9
-girl/eye-back-pupil
-	bounds: 816, 367, 8, 9
-girl-blue-cape/eye-back-up-eyelid
-	bounds: 554, 131, 24, 12
-girl-spring-dress/eye-back-up-eyelid
-	bounds: 554, 131, 24, 12
-girl/eye-back-up-eyelid
-	bounds: 554, 131, 24, 12
-girl-blue-cape/eye-back-up-eyelid-back
-	bounds: 832, 453, 17, 11
-	rotate: 90
-girl-spring-dress/eye-back-up-eyelid-back
-	bounds: 832, 453, 17, 11
-	rotate: 90
-girl/eye-back-up-eyelid-back
-	bounds: 832, 453, 17, 11
-	rotate: 90
-girl-blue-cape/eye-front-low-eyelid
-	bounds: 739, 303, 18, 6
-	rotate: 90
-girl-spring-dress/eye-front-low-eyelid
-	bounds: 739, 303, 18, 6
-	rotate: 90
-girl/eye-front-low-eyelid
-	bounds: 739, 303, 18, 6
-	rotate: 90
-girl-blue-cape/eye-front-pupil
-	bounds: 816, 378, 9, 9
-girl-spring-dress/eye-front-pupil
-	bounds: 816, 378, 9, 9
-girl/eye-front-pupil
-	bounds: 816, 378, 9, 9
-girl-blue-cape/eye-front-up-eyelid
-	bounds: 392, 77, 30, 14
-	rotate: 90
-girl-spring-dress/eye-front-up-eyelid
-	bounds: 392, 77, 30, 14
-	rotate: 90
-girl/eye-front-up-eyelid
-	bounds: 392, 77, 30, 14
-	rotate: 90
-girl-blue-cape/eye-front-up-eyelid-back
-	bounds: 455, 130, 26, 11
-girl-spring-dress/eye-front-up-eyelid-back
-	bounds: 455, 130, 26, 11
-girl/eye-front-up-eyelid-back
-	bounds: 455, 130, 26, 11
-girl-blue-cape/eye-iris-back
-	bounds: 637, 264, 17, 17
-girl-blue-cape/eye-iris-front
-	bounds: 802, 471, 18, 18
-girl-blue-cape/eye-white-back
-	bounds: 596, 264, 20, 16
-girl-spring-dress/eye-white-back
-	bounds: 596, 264, 20, 16
-girl-blue-cape/eye-white-front
-	bounds: 796, 5, 20, 16
-	rotate: 90
-girl-spring-dress/eye-white-front
-	bounds: 796, 5, 20, 16
-	rotate: 90
-girl/eye-white-front
-	bounds: 796, 5, 20, 16
-	rotate: 90
-girl-blue-cape/front-eyebrow
-	bounds: 608, 149, 18, 12
-	rotate: 90
-girl-blue-cape/hair-back
-	bounds: 508, 145, 117, 98
-	rotate: 90
-girl-blue-cape/hair-bangs
-	bounds: 673, 419, 91, 40
-	rotate: 90
-girl-blue-cape/hair-head-side-back
-	bounds: 196, 331, 30, 52
-	rotate: 90
-girl-blue-cape/hair-head-side-front
-	bounds: 738, 323, 41, 42
-girl-blue-cape/hair-side
-	bounds: 473, 3, 36, 71
-girl-blue-cape/hand-front-fingers
-	bounds: 509, 365, 19, 21
-girl-spring-dress/hand-front-fingers
-	bounds: 509, 365, 19, 21
-girl-blue-cape/leg-front
-	bounds: 168, 72, 30, 158
-	rotate: 90
-girl-blue-cape/mouth-smile
-	bounds: 736, 79, 29, 7
-girl-spring-dress/mouth-smile
-	bounds: 736, 79, 29, 7
-girl/mouth-smile
-	bounds: 736, 79, 29, 7
-girl-blue-cape/nose
-	bounds: 747, 264, 11, 7
-girl-spring-dress/nose
-	bounds: 747, 264, 11, 7
-girl/nose
-	bounds: 747, 264, 11, 7
-girl-blue-cape/sleeve-back
-	bounds: 767, 79, 42, 29
-girl-blue-cape/sleeve-front
-	bounds: 408, 76, 52, 119
-	rotate: 90
-girl-spring-dress/arm-front
-	bounds: 596, 282, 17, 111
-girl-spring-dress/back-eyebrow
-	bounds: 801, 420, 18, 12
-girl-spring-dress/body-up
-	bounds: 179, 4, 64, 66
-girl-spring-dress/cloak-down
-	bounds: 775, 27, 50, 50
-girl-spring-dress/cloak-up
-	bounds: 360, 7, 64, 58
-	rotate: 90
-girl-spring-dress/eye-iris-back
-	bounds: 656, 264, 17, 17
-girl-spring-dress/eye-iris-front
-	bounds: 814, 492, 18, 18
-girl-spring-dress/front-eyebrow
-	bounds: 822, 472, 18, 12
-	rotate: 90
-girl-spring-dress/hair-back
-	bounds: 196, 363, 147, 93
-	rotate: 90
-girl-spring-dress/hair-bangs
-	bounds: 696, 326, 91, 40
-	rotate: 90
-girl-spring-dress/hair-head-side-back
-	bounds: 529, 76, 30, 52
-girl-spring-dress/hair-head-side-front
-	bounds: 781, 323, 41, 42
-girl-spring-dress/hair-side
-	bounds: 511, 3, 36, 71
-girl-spring-dress/leg-front
-	bounds: 171, 104, 30, 158
-girl-spring-dress/neck
-	bounds: 138, 70, 20, 32
-girl-spring-dress/shoulder-ribbon
-	bounds: 622, 131, 36, 24
-	rotate: 90
-girl-spring-dress/skirt
-	bounds: 113, 328, 182, 81
-	rotate: 90
-girl-spring-dress/underskirt
-	bounds: 2, 2, 175, 65
-girl/arm-front
-	bounds: 577, 395, 36, 115
-girl/back-eyebrow
-	bounds: 834, 492, 18, 12
-	rotate: 90
-girl/bag-base
-	bounds: 191, 264, 62, 58
-	rotate: 90
-girl/bag-strap-front
-	bounds: 385, 265, 12, 96
-girl/bag-top
-	bounds: 738, 367, 49, 50
-girl/body
-	bounds: 356, 130, 97, 132
-girl/boot-ribbon-front
-	bounds: 539, 130, 13, 13
-girl/eye-iris-back
-	bounds: 821, 424, 17, 17
-girl/eye-iris-front
-	bounds: 812, 443, 18, 18
-girl/eye-white-back
-	bounds: 814, 5, 20, 16
-	rotate: 90
-girl/front-eyebrow
-	bounds: 816, 400, 18, 12
-	rotate: 90
-girl/hair-back
-	bounds: 291, 363, 147, 93
-	rotate: 90
-girl/hair-bangs
-	bounds: 715, 419, 91, 40
-	rotate: 90
-girl/hair-flap-down-front
-	bounds: 288, 5, 70, 65
-girl/hair-head-side-back
-	bounds: 561, 77, 30, 52
-girl/hair-head-side-front
-	bounds: 757, 419, 41, 42
-	rotate: 90
-girl/hair-patch
-	bounds: 245, 4, 66, 41
-	rotate: 90
-girl/hair-side
-	bounds: 549, 3, 36, 71
-girl/hair-strand-back-1
-	bounds: 684, 3, 58, 74
-girl/hair-strand-back-2
-	bounds: 692, 171, 91, 58
-	rotate: 90
-girl/hair-strand-back-3
-	bounds: 615, 323, 92, 79
-	rotate: 90
-girl/hair-strand-front-1
-	bounds: 518, 269, 38, 94
-girl/hair-strand-front-2
-	bounds: 593, 79, 70, 50
-girl/hair-strand-front-3
-	bounds: 705, 88, 44, 81
-girl/hand-front-fingers
-	bounds: 530, 365, 19, 21
-girl/hat
-	bounds: 608, 169, 93, 82
-	rotate: 90
-girl/leg-front
-	bounds: 203, 104, 30, 158
-girl/pompom
-	bounds: 757, 462, 48, 43
-	rotate: 90
-girl/scarf
-	bounds: 455, 143, 119, 51
-	rotate: 90
-girl/scarf-back
-	bounds: 420, 2, 72, 51
-	rotate: 90
-girl/zip
-	bounds: 356, 109, 19, 25
-	rotate: 90

BIN
spine-xna/example/data/mix-and-match.png


File diff suppressed because it is too large
+ 0 - 692
spine-xna/example/data/raptor-pro.json


+ 0 - 99
spine-xna/example/data/raptor.atlas

@@ -1,99 +0,0 @@
-raptor.png
-	size: 1024, 512
-	filter: Linear, Linear
-back-arm
-	bounds: 829, 88, 46, 25
-	rotate: 90
-back-bracer
-	bounds: 195, 238, 39, 28
-	rotate: 90
-back-hand
-	bounds: 724, 140, 36, 34
-	rotate: 90
-back-knee
-	bounds: 760, 131, 49, 67
-	rotate: 90
-back-thigh
-	bounds: 225, 238, 39, 24
-	rotate: 90
-eyes-open
-	bounds: 975, 204, 47, 45
-front-arm
-	bounds: 969, 112, 48, 26
-front-bracer
-	bounds: 724, 97, 41, 29
-	rotate: 90
-front-hand
-	bounds: 251, 239, 41, 38
-front-open-hand
-	bounds: 856, 76, 43, 44
-	rotate: 90
-front-thigh
-	bounds: 729, 178, 57, 29
-	rotate: 90
-gun
-	bounds: 894, 251, 107, 103
-gun-nohand
-	bounds: 764, 241, 105, 102
-head
-	bounds: 756, 345, 136, 149
-lower-leg
-	bounds: 475, 237, 73, 98
-	rotate: 90
-mouth-grind
-	bounds: 975, 172, 47, 30
-mouth-smile
-	bounds: 975, 140, 47, 30
-neck
-	bounds: 366, 282, 18, 21
-raptor-back-arm
-	bounds: 636, 97, 82, 86
-	rotate: 90
-raptor-body
-	bounds: 2, 2, 632, 233
-raptor-front-arm
-	bounds: 871, 168, 81, 102
-	rotate: 90
-raptor-front-leg
-	bounds: 2, 237, 191, 257
-raptor-hindleg-back
-	bounds: 195, 279, 169, 215
-raptor-horn
-	bounds: 431, 312, 182, 80
-	rotate: 90
-raptor-horn-back
-	bounds: 513, 318, 176, 77
-	rotate: 90
-raptor-jaw
-	bounds: 894, 356, 126, 138
-raptor-jaw-tooth
-	bounds: 294, 240, 37, 48
-	rotate: 90
-raptor-mouth-inside
-	bounds: 344, 241, 36, 41
-	rotate: 90
-raptor-saddle-strap-back
-	bounds: 575, 242, 54, 74
-raptor-saddle-strap-front
-	bounds: 764, 182, 57, 95
-	rotate: 90
-raptor-saddle-w-shadow
-	bounds: 592, 323, 162, 171
-raptor-tail-shadow
-	bounds: 366, 305, 189, 63
-	rotate: 90
-raptor-tongue
-	bounds: 387, 239, 86, 64
-stirrup-back
-	bounds: 829, 136, 44, 35
-	rotate: 90
-stirrup-front
-	bounds: 866, 121, 45, 50
-	rotate: 90
-stirrup-strap
-	bounds: 918, 120, 49, 46
-torso
-	bounds: 636, 181, 54, 91
-	rotate: 90
-visor
-	bounds: 631, 237, 131, 84

BIN
spine-xna/example/data/raptor.png


BIN
spine-xna/example/data/raptor_normals.png


BIN
spine-xna/example/data/spineboy-pro.skel


+ 0 - 101
spine-xna/example/data/spineboy.atlas

@@ -1,101 +0,0 @@
-spineboy.png
-	size: 1024, 256
-	filter: Linear, Linear
-	scale: 0.5
-crosshair
-	bounds: 813, 160, 45, 45
-eye-indifferent
-	bounds: 569, 2, 47, 45
-eye-surprised
-	bounds: 643, 7, 47, 45
-	rotate: 90
-front-bracer
-	bounds: 811, 51, 29, 40
-front-fist-closed
-	bounds: 807, 93, 38, 41
-front-fist-open
-	bounds: 815, 210, 43, 44
-front-foot
-	bounds: 706, 64, 63, 35
-	rotate: 90
-front-shin
-	bounds: 80, 11, 41, 92
-front-thigh
-	bounds: 754, 12, 23, 56
-front-upper-arm
-	bounds: 618, 5, 23, 49
-goggles
-	bounds: 214, 20, 131, 83
-gun
-	bounds: 347, 14, 105, 102
-	rotate: 90
-head
-	bounds: 80, 105, 136, 149
-hoverboard-board
-	bounds: 2, 8, 246, 76
-	rotate: 90
-hoverboard-thruster
-	bounds: 478, 2, 30, 32
-hoverglow-small
-	bounds: 218, 117, 137, 38
-	rotate: 90
-mouth-grind
-	bounds: 775, 80, 47, 30
-	rotate: 90
-mouth-oooo
-	bounds: 779, 31, 47, 30
-	rotate: 90
-mouth-smile
-	bounds: 783, 207, 47, 30
-	rotate: 90
-muzzle-glow
-	bounds: 779, 4, 25, 25
-muzzle-ring
-	bounds: 451, 14, 25, 105
-muzzle01
-	bounds: 664, 60, 67, 40
-	rotate: 90
-muzzle02
-	bounds: 580, 56, 68, 42
-	rotate: 90
-muzzle03
-	bounds: 478, 36, 83, 53
-	rotate: 90
-muzzle04
-	bounds: 533, 49, 75, 45
-	rotate: 90
-muzzle05
-	bounds: 624, 56, 68, 38
-	rotate: 90
-neck
-	bounds: 806, 8, 18, 21
-portal-bg
-	bounds: 258, 121, 133, 133
-portal-flare1
-	bounds: 690, 2, 56, 30
-	rotate: 90
-portal-flare2
-	bounds: 510, 3, 57, 31
-portal-flare3
-	bounds: 722, 4, 58, 30
-	rotate: 90
-portal-shade
-	bounds: 393, 121, 133, 133
-portal-streaks1
-	bounds: 528, 126, 126, 128
-portal-streaks2
-	bounds: 656, 129, 125, 125
-rear-bracer
-	bounds: 826, 13, 28, 36
-rear-foot
-	bounds: 743, 70, 57, 30
-	rotate: 90
-rear-shin
-	bounds: 174, 14, 38, 89
-rear-thigh
-	bounds: 783, 158, 28, 47
-rear-upper-arm
-	bounds: 783, 136, 20, 44
-	rotate: 90
-torso
-	bounds: 123, 13, 49, 90

BIN
spine-xna/example/data/spineboy.png


+ 0 - 5020
spine-xna/example/data/tank-pro.json

@@ -1,5020 +0,0 @@
-{
-"skeleton": {
-	"hash": "zExzm/6YDxM",
-	"spine": "4.1.04-beta",
-	"x": -5852.65,
-	"y": -348.5,
-	"width": 7202.61,
-	"height": 1298.88,
-	"images": "./images/",
-	"audio": ""
-},
-"bones": [
-	{ "name": "root" },
-	{ "name": "tank-root", "parent": "root", "y": 146.79 },
-	{ "name": "tank-treads", "parent": "tank-root", "y": 48.35 },
-	{ "name": "tank-body", "parent": "tank-treads", "y": 10 },
-	{ "name": "guntower", "parent": "tank-body", "x": -21.72, "y": 245.48 },
-	{ "name": "antenna-root", "parent": "guntower", "x": 164.61, "y": 202.53 },
-	{ "name": "antenna1", "parent": "antenna-root", "length": 40, "rotation": 90, "y": 40, "color": "ffee00ff" },
-	{ "name": "antenna2", "parent": "antenna1", "length": 42, "x": 42, "color": "ffee00ff" },
-	{ "name": "antenna3", "parent": "antenna2", "length": 42, "x": 42, "color": "ffee00ff" },
-	{ "name": "antenna4", "parent": "antenna3", "length": 42, "x": 42, "color": "ffee00ff" },
-	{ "name": "antenna5", "parent": "antenna4", "length": 42, "x": 42, "color": "ffee00ff" },
-	{ "name": "antenna6", "parent": "antenna5", "length": 42, "x": 42, "color": "ffee00ff" },
-	{ "name": "cannon-connector", "parent": "guntower", "x": -235.05, "y": 96.07 },
-	{ "name": "cannon-target", "parent": "tank-root", "x": -2276.67, "y": 400.17, "color": "0096ffff" },
-	{ "name": "cannon", "parent": "cannon-connector", "length": 946.68, "rotation": 180, "color": "ff4000ff" },
-	{
-		"name": "machinegun-mount",
-		"parent": "guntower",
-		"length": 90.98,
-		"rotation": 90,
-		"x": -123.73,
-		"y": 218.33,
-		"color": "15ff00ff"
-	},
-	{ "name": "machinegun-target", "parent": "tank-root", "x": -2272.76, "y": 607.77, "color": "0096ffff" },
-	{
-		"name": "machinegun",
-		"parent": "machinegun-mount",
-		"length": 208.95,
-		"rotation": 90,
-		"x": 91.52,
-		"y": -1.03,
-		"color": "15ff00ff"
-	},
-	{ "name": "machinegun-tip", "parent": "machinegun", "x": 210.43, "y": -12.21 },
-	{ "name": "rock", "parent": "root", "x": -1925.2, "y": 33.17 },
-	{
-		"name": "smoke-root",
-		"parent": "tank-root",
-		"x": -1200.38,
-		"y": 405.76,
-		"scaleX": -6.5,
-		"scaleY": 6.5,
-		"color": "ff4000ff"
-	},
-	{ "name": "smoke-glow", "parent": "smoke-root", "x": 62.92, "y": -0.71, "color": "ff4000ff" },
-	{
-		"name": "smoke1",
-		"parent": "smoke-root",
-		"rotation": -179.99,
-		"x": 14.75,
-		"y": -1.55,
-		"scaleX": 1.6484,
-		"scaleY": 1.6484,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke10",
-		"parent": "smoke-root",
-		"rotation": -103.52,
-		"x": 25.45,
-		"y": 2.48,
-		"scaleX": 3.9011,
-		"scaleY": 2.8523,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke11",
-		"parent": "smoke-root",
-		"rotation": -103.52,
-		"x": 25.45,
-		"y": 2.48,
-		"scaleX": 3.9011,
-		"scaleY": 2.8523,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke12",
-		"parent": "smoke-root",
-		"rotation": -103.52,
-		"x": 25.45,
-		"y": 2.48,
-		"scaleX": 3.9011,
-		"scaleY": 2.8523,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke13",
-		"parent": "smoke-root",
-		"rotation": -179.99,
-		"x": 14.75,
-		"y": -1.55,
-		"scaleX": 1.6484,
-		"scaleY": 1.6484,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke14",
-		"parent": "smoke-root",
-		"rotation": -179.99,
-		"x": 14.75,
-		"y": -1.55,
-		"scaleX": 1.6484,
-		"scaleY": 1.6484,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke15",
-		"parent": "smoke-root",
-		"rotation": -179.99,
-		"x": 14.75,
-		"y": -1.55,
-		"scaleX": 1.6484,
-		"scaleY": 1.6484,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke16",
-		"parent": "smoke-root",
-		"rotation": -179.99,
-		"x": 14.75,
-		"y": -1.55,
-		"scaleX": 1.6484,
-		"scaleY": 1.6484,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke17",
-		"parent": "smoke-root",
-		"rotation": -179.99,
-		"x": 14.75,
-		"y": -1.55,
-		"scaleX": 1.6484,
-		"scaleY": 1.6484,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke18",
-		"parent": "smoke-root",
-		"rotation": -179.99,
-		"x": 14.75,
-		"y": -1.55,
-		"scaleX": 1.6484,
-		"scaleY": 1.6484,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke2",
-		"parent": "smoke-root",
-		"rotation": -84.14,
-		"x": 45.06,
-		"y": 29.7,
-		"scaleX": 3.3345,
-		"scaleY": 3.3345,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke20",
-		"parent": "smoke-root",
-		"rotation": -179.99,
-		"x": 14.75,
-		"y": -1.55,
-		"scaleX": 1.6484,
-		"scaleY": 1.6484,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke21",
-		"parent": "smoke-root",
-		"rotation": -179.99,
-		"x": 14.75,
-		"y": -1.55,
-		"scaleX": 1.6484,
-		"scaleY": 1.6484,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke22",
-		"parent": "smoke-root",
-		"rotation": -179.99,
-		"x": 14.75,
-		"y": -1.55,
-		"scaleX": 1.6484,
-		"scaleY": 1.6484,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke23",
-		"parent": "smoke-root",
-		"rotation": -179.99,
-		"x": 14.75,
-		"y": -1.55,
-		"scaleX": 1.6484,
-		"scaleY": 1.6484,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke24",
-		"parent": "smoke-root",
-		"rotation": -179.99,
-		"x": 14.75,
-		"y": -1.55,
-		"scaleX": 1.6484,
-		"scaleY": 1.6484,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke25",
-		"parent": "smoke-root",
-		"rotation": -179.99,
-		"x": 14.75,
-		"y": -1.55,
-		"scaleX": 1.6484,
-		"scaleY": 1.6484,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke26",
-		"parent": "smoke-root",
-		"rotation": -179.99,
-		"x": 14.75,
-		"y": -1.55,
-		"scaleX": 1.6484,
-		"scaleY": 1.6484,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke27",
-		"parent": "smoke-root",
-		"rotation": -179.99,
-		"x": 14.75,
-		"y": -1.55,
-		"scaleX": 1.6484,
-		"scaleY": 1.6484,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke3",
-		"parent": "smoke-root",
-		"rotation": -87.91,
-		"x": 55.15,
-		"y": -17.5,
-		"scaleX": 3.0415,
-		"scaleY": 4.157,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke4",
-		"parent": "smoke-root",
-		"rotation": -87.91,
-		"x": 69.25,
-		"y": 8.01,
-		"scaleX": 2.1808,
-		"scaleY": 2.9807,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke5",
-		"parent": "smoke-root",
-		"rotation": -87.91,
-		"x": 80.63,
-		"y": 59.88,
-		"scaleX": 4.5119,
-		"scaleY": 2.9725,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke6",
-		"parent": "smoke-root",
-		"rotation": -87.91,
-		"x": 96.19,
-		"y": 25.65,
-		"scaleX": 3.7912,
-		"scaleY": 3.0552,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke7",
-		"parent": "smoke-root",
-		"rotation": 153.68,
-		"x": 85.65,
-		"y": -50.47,
-		"scaleX": 4.8523,
-		"scaleY": 3.6528,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke8",
-		"parent": "smoke-root",
-		"rotation": 67.58,
-		"x": 47.85,
-		"y": -42.55,
-		"scaleX": 4.0006,
-		"scaleY": 3.4796,
-		"color": "ff4000ff"
-	},
-	{
-		"name": "smoke9",
-		"parent": "smoke-root",
-		"rotation": 150.05,
-		"x": 104.02,
-		"y": -8.73,
-		"scaleX": 4.2074,
-		"scaleY": 3.0762,
-		"color": "ff4000ff"
-	},
-	{ "name": "tank-glow", "parent": "tank-root", "x": -247.72, "y": 404.37, "scaleX": 1.0582, "scaleY": 0.6785 },
-	{
-		"name": "tread",
-		"parent": "tank-root",
-		"length": 82,
-		"rotation": 180,
-		"x": -22.9,
-		"y": 213.86,
-		"scaleX": 0.9933,
-		"color": "e64344ff"
-	},
-	{ "name": "wheel-mid-center", "parent": "tank-root", "y": -66.21 },
-	{ "name": "tread-collider1", "parent": "wheel-mid-center", "x": -329.58, "y": -85.44, "color": "ff00fbff" },
-	{ "name": "tread-collider2", "parent": "wheel-mid-center", "x": -165.95, "y": -85.44, "color": "ff00fbff" },
-	{ "name": "tread-collider3", "parent": "wheel-mid-center", "y": -85.44, "color": "ff00fbff" },
-	{ "name": "tread-collider4", "parent": "wheel-mid-center", "x": 163.56, "y": -85.44, "color": "ff00fbff" },
-	{ "name": "tread-collider5", "parent": "wheel-mid-center", "x": 329.12, "y": -85.44, "color": "ff00fbff" },
-	{ "name": "tread-gravity1", "parent": "tank-root", "rotation": 180, "x": -175.35, "y": 149.31, "color": "ff00fbff" },
-	{ "name": "tread-gravity2", "parent": "tank-root", "rotation": 180, "x": 177.89, "y": 144.78, "color": "ff00fbff" },
-	{
-		"name": "tread10",
-		"parent": "tread",
-		"length": 82,
-		"rotation": 48.85,
-		"x": 662.9,
-		"y": -120.35,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread11",
-		"parent": "tread",
-		"length": 82,
-		"rotation": 97.99,
-		"x": 651.5,
-		"y": -39.69,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread12",
-		"parent": "tread",
-		"length": 82,
-		"rotation": 113.79,
-		"x": 618.43,
-		"y": 34.83,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread13",
-		"parent": "tread",
-		"length": 82,
-		"rotation": 122.96,
-		"x": 573.82,
-		"y": 103.18,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread14",
-		"parent": "tread",
-		"length": 82,
-		"rotation": 142.01,
-		"x": 509.19,
-		"y": 153.3,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread15",
-		"parent": "tread",
-		"length": 82,
-		"rotation": 157.84,
-		"x": 433.25,
-		"y": 184.02,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread16",
-		"parent": "tread",
-		"length": 82,
-		"rotation": 157.37,
-		"x": 357.56,
-		"y": 215.37,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread17",
-		"parent": "tread",
-		"length": 82,
-		"rotation": 157.29,
-		"x": 281.92,
-		"y": 246.8,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread18",
-		"parent": "tread",
-		"length": 82,
-		"rotation": 157.19,
-		"x": 206.33,
-		"y": 278.38,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread19",
-		"parent": "tread",
-		"length": 82,
-		"rotation": 157.14,
-		"x": 130.77,
-		"y": 310.02,
-		"color": "e64344ff"
-	},
-	{ "name": "tread2", "parent": "tread", "length": 82, "x": 82, "color": "e64344ff" },
-	{
-		"name": "tread20",
-		"parent": "tread",
-		"length": 82,
-		"rotation": 157.34,
-		"x": 55.1,
-		"y": 341.41,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread21",
-		"parent": "tread",
-		"length": 82,
-		"rotation": 158.11,
-		"x": -20.99,
-		"y": 371.77,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread22",
-		"parent": "tread",
-		"length": 82,
-		"rotation": 157.99,
-		"x": -97.02,
-		"y": 402.28,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread23",
-		"parent": "tread",
-		"length": 82,
-		"rotation": 157.59,
-		"x": -172.83,
-		"y": 433.33,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread24",
-		"parent": "tread",
-		"length": 82,
-		"rotation": 156.86,
-		"x": -248.23,
-		"y": 465.34,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread25",
-		"parent": "tread",
-		"length": 82,
-		"rotation": 177.94,
-		"x": -330.17,
-		"y": 468.27,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread26",
-		"parent": "tread",
-		"length": 82,
-		"rotation": -169.55,
-		"x": -410.81,
-		"y": 453.5,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread27",
-		"parent": "tread",
-		"length": 82,
-		"rotation": -163.86,
-		"x": -489.58,
-		"y": 430.86,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread28",
-		"parent": "tread",
-		"length": 82,
-		"rotation": -139.13,
-		"x": -551.59,
-		"y": 377.57,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread29",
-		"parent": "tread",
-		"length": 82,
-		"rotation": -89.04,
-		"x": -550.21,
-		"y": 296.14,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread3",
-		"parent": "tread",
-		"length": 82,
-		"rotation": -8.91,
-		"x": 163.01,
-		"y": -12.61,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread30",
-		"parent": "tread",
-		"length": 82,
-		"rotation": -38.99,
-		"x": -486.48,
-		"y": 244.89,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread31",
-		"parent": "tread",
-		"length": 82,
-		"rotation": -20.04,
-		"x": -409.45,
-		"y": 216.98,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread32",
-		"parent": "tread",
-		"length": 82,
-		"rotation": -46.24,
-		"x": -352.74,
-		"y": 158.15,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread33",
-		"parent": "tread",
-		"length": 82,
-		"rotation": -27.95,
-		"x": -280.3,
-		"y": 119.98,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread34",
-		"parent": "tread",
-		"length": 82,
-		"rotation": 10.46,
-		"x": -199.66,
-		"y": 134.77,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread35",
-		"parent": "tread",
-		"length": 82,
-		"rotation": -17.9,
-		"x": -121.63,
-		"y": 109.73,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread36",
-		"parent": "tread",
-		"length": 82,
-		"rotation": -36.82,
-		"x": -55.99,
-		"y": 60.92,
-		"color": "fbff00ff"
-	},
-	{
-		"name": "tread4",
-		"parent": "tread",
-		"length": 82,
-		"rotation": -29.27,
-		"x": 234.55,
-		"y": -52.43,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread5",
-		"parent": "tread",
-		"length": 82,
-		"rotation": -45.26,
-		"x": 292.26,
-		"y": -110.28,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread6",
-		"parent": "tread",
-		"length": 82,
-		"rotation": -15.29,
-		"x": 371.36,
-		"y": -131.76,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread7",
-		"parent": "tread",
-		"length": 82,
-		"rotation": -5.49,
-		"x": 452.98,
-		"y": -139.55,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread8",
-		"parent": "tread",
-		"length": 82,
-		"rotation": -24.99,
-		"x": 527.31,
-		"y": -173.95,
-		"color": "e64344ff"
-	},
-	{
-		"name": "tread9",
-		"parent": "tread",
-		"length": 82,
-		"rotation": -5.44,
-		"x": 608.94,
-		"y": -181.68,
-		"color": "e64344ff"
-	},
-	{ "name": "wheel-big-root1", "parent": "tank-treads", "x": -549.6, "y": 14.4, "color": "abe323ff" },
-	{ "name": "wheel-big-root2", "parent": "tank-treads", "x": 547.34, "y": 14.4 },
-	{ "name": "wheel-big1", "parent": "wheel-big-root1", "x": -0.02, "color": "abe323ff" },
-	{ "name": "wheel-big2", "parent": "wheel-big-root2" },
-	{ "name": "wheel-mid-root1", "parent": "wheel-mid-center", "x": -410.57, "color": "abe323ff" },
-	{ "name": "wheel-mid-root2", "parent": "wheel-mid-center", "x": -246.95 },
-	{ "name": "wheel-mid-root3", "parent": "wheel-mid-center", "x": -82.73 },
-	{ "name": "wheel-mid-root4", "parent": "wheel-mid-center", "x": 80.89 },
-	{ "name": "wheel-mid-root5", "parent": "wheel-mid-center", "x": 244.51 },
-	{ "name": "wheel-mid-root6", "parent": "wheel-mid-center", "x": 408.74 },
-	{ "name": "wheel-mid1", "parent": "wheel-mid-root1", "color": "abe323ff" },
-	{ "name": "wheel-mid2", "parent": "wheel-mid-root2" },
-	{ "name": "wheel-mid3", "parent": "wheel-mid-root3" },
-	{ "name": "wheel-mid4", "parent": "wheel-mid-root4" },
-	{ "name": "wheel-mid5", "parent": "wheel-mid-root5" },
-	{ "name": "wheel-mid6", "parent": "wheel-mid-root6" },
-	{ "name": "wheel-small-root1", "parent": "tank-treads", "x": -337.39, "y": 109.43 },
-	{ "name": "wheel-small-root2", "parent": "tank-treads", "x": 0.09, "y": 109.43 },
-	{ "name": "wheel-small-root3", "parent": "tank-treads", "x": 334.69, "y": 109.43 },
-	{ "name": "wheel-small1", "parent": "wheel-small-root1", "color": "abe323ff" },
-	{ "name": "wheel-small2", "parent": "wheel-small-root2" },
-	{ "name": "wheel-small3", "parent": "wheel-small-root3" }
-],
-"slots": [
-	{ "name": "rock", "bone": "rock", "attachment": "rock" },
-	{ "name": "ground", "bone": "root", "attachment": "ground" },
-	{ "name": "ground2", "bone": "root", "attachment": "ground" },
-	{ "name": "ground3", "bone": "root", "attachment": "ground" },
-	{ "name": "ground4", "bone": "root", "attachment": "ground" },
-	{ "name": "ground5", "bone": "root", "attachment": "ground" },
-	{ "name": "ground6", "bone": "root", "attachment": "ground" },
-	{ "name": "ground7", "bone": "root", "attachment": "ground" },
-	{ "name": "tank-body-shadow", "bone": "tank-body", "color": "ffffffb9", "attachment": "tank-bottom-shadow" },
-	{ "name": "bottom", "bone": "tank-body", "attachment": "tank-bottom" },
-	{ "name": "tread-inside1", "bone": "tread", "attachment": "tread-inside" },
-	{ "name": "tread-inside53", "bone": "tread27", "attachment": "tread-inside" },
-	{ "name": "tread-inside27", "bone": "tread14", "attachment": "tread-inside" },
-	{ "name": "tread-inside3", "bone": "tread2", "attachment": "tread-inside" },
-	{ "name": "tread-inside55", "bone": "tread28", "attachment": "tread-inside" },
-	{ "name": "tread-inside29", "bone": "tread15", "attachment": "tread-inside" },
-	{ "name": "tread-inside5", "bone": "tread3", "attachment": "tread-inside" },
-	{ "name": "tread-inside57", "bone": "tread29", "attachment": "tread-inside" },
-	{ "name": "tread-inside31", "bone": "tread16", "attachment": "tread-inside" },
-	{ "name": "tread-inside7", "bone": "tread4", "attachment": "tread-inside" },
-	{ "name": "tread-inside59", "bone": "tread30", "attachment": "tread-inside" },
-	{ "name": "tread-inside33", "bone": "tread17", "attachment": "tread-inside" },
-	{ "name": "tread-inside9", "bone": "tread5", "attachment": "tread-inside" },
-	{ "name": "tread-inside61", "bone": "tread31", "attachment": "tread-inside" },
-	{ "name": "tread-inside35", "bone": "tread18", "attachment": "tread-inside" },
-	{ "name": "tread-inside11", "bone": "tread6", "attachment": "tread-inside" },
-	{ "name": "tread-inside63", "bone": "tread32", "attachment": "tread-inside" },
-	{ "name": "tread-inside37", "bone": "tread19", "attachment": "tread-inside" },
-	{ "name": "tread-inside13", "bone": "tread7", "attachment": "tread-inside" },
-	{ "name": "tread-inside65", "bone": "tread33", "attachment": "tread-inside" },
-	{ "name": "tread-inside39", "bone": "tread20", "attachment": "tread-inside" },
-	{ "name": "tread-inside15", "bone": "tread8", "attachment": "tread-inside" },
-	{ "name": "tread-inside67", "bone": "tread34", "attachment": "tread-inside" },
-	{ "name": "tread-inside69", "bone": "tread35", "attachment": "tread-inside" },
-	{ "name": "tread-inside71", "bone": "tread36", "attachment": "tread-inside" },
-	{ "name": "tread-inside41", "bone": "tread21", "attachment": "tread-inside" },
-	{ "name": "tread-inside17", "bone": "tread9", "attachment": "tread-inside" },
-	{ "name": "tread-inside43", "bone": "tread22", "attachment": "tread-inside" },
-	{ "name": "tread-inside19", "bone": "tread10", "attachment": "tread-inside" },
-	{ "name": "tread-inside45", "bone": "tread23", "attachment": "tread-inside" },
-	{ "name": "tread-inside21", "bone": "tread11", "attachment": "tread-inside" },
-	{ "name": "tread-inside47", "bone": "tread24", "attachment": "tread-inside" },
-	{ "name": "tread-inside23", "bone": "tread12", "attachment": "tread-inside" },
-	{ "name": "tread-inside49", "bone": "tread25", "attachment": "tread-inside" },
-	{ "name": "tread-inside25", "bone": "tread13", "attachment": "tread-inside" },
-	{ "name": "tread-inside51", "bone": "tread26", "attachment": "tread-inside" },
-	{ "name": "tread-inside2", "bone": "tread", "attachment": "tread-inside" },
-	{ "name": "tread-inside54", "bone": "tread27", "attachment": "tread-inside" },
-	{ "name": "tread-inside28", "bone": "tread14", "attachment": "tread-inside" },
-	{ "name": "tread-inside4", "bone": "tread2", "attachment": "tread-inside" },
-	{ "name": "tread-inside56", "bone": "tread28", "attachment": "tread-inside" },
-	{ "name": "tread-inside30", "bone": "tread15", "attachment": "tread-inside" },
-	{ "name": "tread-inside6", "bone": "tread3", "attachment": "tread-inside" },
-	{ "name": "tread-inside58", "bone": "tread29", "attachment": "tread-inside" },
-	{ "name": "tread-inside32", "bone": "tread16", "attachment": "tread-inside" },
-	{ "name": "tread-inside8", "bone": "tread4", "attachment": "tread-inside" },
-	{ "name": "tread-inside60", "bone": "tread30", "attachment": "tread-inside" },
-	{ "name": "tread-inside34", "bone": "tread17", "attachment": "tread-inside" },
-	{ "name": "tread-inside10", "bone": "tread5", "attachment": "tread-inside" },
-	{ "name": "tread-inside62", "bone": "tread31", "attachment": "tread-inside" },
-	{ "name": "tread-inside36", "bone": "tread18", "attachment": "tread-inside" },
-	{ "name": "tread-inside12", "bone": "tread6", "attachment": "tread-inside" },
-	{ "name": "tread-inside64", "bone": "tread32", "attachment": "tread-inside" },
-	{ "name": "tread-inside38", "bone": "tread19", "attachment": "tread-inside" },
-	{ "name": "tread-inside14", "bone": "tread7", "attachment": "tread-inside" },
-	{ "name": "tread-inside66", "bone": "tread33", "attachment": "tread-inside" },
-	{ "name": "tread-inside40", "bone": "tread20", "attachment": "tread-inside" },
-	{ "name": "tread-inside16", "bone": "tread8", "attachment": "tread-inside" },
-	{ "name": "tread-inside68", "bone": "tread34", "attachment": "tread-inside" },
-	{ "name": "tread-inside70", "bone": "tread35", "attachment": "tread-inside" },
-	{ "name": "tread-inside72", "bone": "tread36", "attachment": "tread-inside" },
-	{ "name": "tread-inside42", "bone": "tread21", "attachment": "tread-inside" },
-	{ "name": "tread-inside18", "bone": "tread9", "attachment": "tread-inside" },
-	{ "name": "tread-inside44", "bone": "tread22", "attachment": "tread-inside" },
-	{ "name": "tread-inside20", "bone": "tread10", "attachment": "tread-inside" },
-	{ "name": "tread-inside46", "bone": "tread23", "attachment": "tread-inside" },
-	{ "name": "tread-inside22", "bone": "tread11", "attachment": "tread-inside" },
-	{ "name": "tread-inside48", "bone": "tread24", "attachment": "tread-inside" },
-	{ "name": "tread-inside24", "bone": "tread12", "attachment": "tread-inside" },
-	{ "name": "tread-inside50", "bone": "tread25", "attachment": "tread-inside" },
-	{ "name": "tread-inside26", "bone": "tread13", "attachment": "tread-inside" },
-	{ "name": "tread-inside52", "bone": "tread26", "attachment": "tread-inside" },
-	{ "name": "wheel-big", "bone": "wheel-big1", "color": "dbdbdbff", "attachment": "wheel-big" },
-	{ "name": "wheel-big2", "bone": "wheel-big2", "color": "dbdbdbff", "attachment": "wheel-big" },
-	{ "name": "wheel-mid", "bone": "wheel-mid1", "attachment": "wheel-mid" },
-	{ "name": "wheel-mid2", "bone": "wheel-mid2", "attachment": "wheel-mid" },
-	{ "name": "wheel-mid3", "bone": "wheel-mid3", "attachment": "wheel-mid" },
-	{ "name": "wheel-mid4", "bone": "wheel-mid4", "attachment": "wheel-mid" },
-	{ "name": "wheel-mid5", "bone": "wheel-mid5", "attachment": "wheel-mid" },
-	{ "name": "wheel-mid6", "bone": "wheel-mid6", "attachment": "wheel-mid" },
-	{ "name": "wheel-small", "bone": "wheel-small1", "attachment": "wheel-small" },
-	{ "name": "wheel-small2", "bone": "wheel-small2", "attachment": "wheel-small" },
-	{ "name": "wheel-small3", "bone": "wheel-small3", "attachment": "wheel-small" },
-	{ "name": "wheel-mid-overlay", "bone": "wheel-mid-root1", "color": "ffffffec", "attachment": "wheel-mid-overlay", "blend": "multiply" },
-	{ "name": "wheel-mid-overlay2", "bone": "wheel-mid-root2", "color": "ffffffec", "attachment": "wheel-mid-overlay", "blend": "multiply" },
-	{ "name": "wheel-mid-overlay3", "bone": "wheel-mid-root3", "color": "ffffffec", "attachment": "wheel-mid-overlay", "blend": "multiply" },
-	{ "name": "wheel-mid-overlay4", "bone": "wheel-mid-root4", "color": "ffffffec", "attachment": "wheel-mid-overlay", "blend": "multiply" },
-	{ "name": "wheel-mid-overlay5", "bone": "wheel-mid-root5", "color": "ffffffec", "attachment": "wheel-mid-overlay", "blend": "multiply" },
-	{ "name": "wheel-mid-overlay6", "bone": "wheel-mid-root6", "color": "ffffffec", "attachment": "wheel-mid-overlay", "blend": "multiply" },
-	{ "name": "wheel-big-overlay1", "bone": "wheel-big-root1", "color": "ffffffe9", "attachment": "wheel-big-overlay", "blend": "multiply" },
-	{ "name": "wheel-big-overlay2", "bone": "wheel-big-root2", "color": "ffffffe9", "attachment": "wheel-big-overlay", "blend": "multiply" },
-	{ "name": "treads-path", "bone": "tank-root", "attachment": "treads-path" },
-	{ "name": "tread", "bone": "tread", "attachment": "tread" },
-	{ "name": "tread27", "bone": "tread27", "color": "adc9b8ff", "attachment": "tread" },
-	{ "name": "tread14", "bone": "tread14", "attachment": "tread" },
-	{ "name": "tread2", "bone": "tread2", "attachment": "tread" },
-	{ "name": "tread28", "bone": "tread28", "attachment": "tread" },
-	{ "name": "tread15", "bone": "tread15", "color": "adc9b8ff", "attachment": "tread" },
-	{ "name": "tread3", "bone": "tread3", "color": "adc9b8ff", "attachment": "tread" },
-	{ "name": "tread29", "bone": "tread29", "color": "adc9b8ff", "attachment": "tread" },
-	{ "name": "tread16", "bone": "tread16", "attachment": "tread" },
-	{ "name": "tread4", "bone": "tread4", "attachment": "tread" },
-	{ "name": "tread30", "bone": "tread30", "attachment": "tread" },
-	{ "name": "tread17", "bone": "tread17", "color": "adc9b8ff", "attachment": "tread" },
-	{ "name": "tread5", "bone": "tread5", "color": "adc9b8ff", "attachment": "tread" },
-	{ "name": "tread31", "bone": "tread31", "color": "adc9b8ff", "attachment": "tread" },
-	{ "name": "tread18", "bone": "tread18", "attachment": "tread" },
-	{ "name": "tread6", "bone": "tread6", "attachment": "tread" },
-	{ "name": "tread32", "bone": "tread32", "attachment": "tread" },
-	{ "name": "tread19", "bone": "tread19", "color": "adc9b8ff", "attachment": "tread" },
-	{ "name": "tread7", "bone": "tread7", "color": "adc9b8ff", "attachment": "tread" },
-	{ "name": "tread33", "bone": "tread33", "color": "adc9b8ff", "attachment": "tread" },
-	{ "name": "tread20", "bone": "tread20", "attachment": "tread" },
-	{ "name": "tread8", "bone": "tread8", "attachment": "tread" },
-	{ "name": "tread34", "bone": "tread34", "attachment": "tread" },
-	{ "name": "tread35", "bone": "tread35", "color": "adc9b8ff", "attachment": "tread" },
-	{ "name": "tread36", "bone": "tread36", "color": "adc9b8ff", "attachment": "tread" },
-	{ "name": "tread21", "bone": "tread21", "color": "adc9b8ff", "attachment": "tread" },
-	{ "name": "tread9", "bone": "tread9", "color": "adc9b8ff", "attachment": "tread" },
-	{ "name": "tread22", "bone": "tread22", "attachment": "tread" },
-	{ "name": "tread10", "bone": "tread10", "attachment": "tread" },
-	{ "name": "tread23", "bone": "tread23", "color": "adc9b8ff", "attachment": "tread" },
-	{ "name": "tread11", "bone": "tread11", "color": "adc9b8ff", "attachment": "tread" },
-	{ "name": "tread24", "bone": "tread24", "attachment": "tread" },
-	{ "name": "tread12", "bone": "tread12", "attachment": "tread" },
-	{ "name": "tread25", "bone": "tread25", "color": "adc9b8ff", "attachment": "tread" },
-	{ "name": "tread13", "bone": "tread13", "color": "adc9b8ff", "attachment": "tread" },
-	{ "name": "tread26", "bone": "tread26", "attachment": "tread" },
-	{ "name": "machinegun", "bone": "machinegun", "attachment": "machinegun" },
-	{ "name": "machinegun-mount", "bone": "machinegun-mount", "attachment": "machinegun-mount" },
-	{ "name": "tank-top", "bone": "tank-body", "attachment": "tank-top" },
-	{ "name": "guntower", "bone": "guntower", "attachment": "guntower" },
-	{ "name": "cannon", "bone": "cannon", "attachment": "cannon" },
-	{ "name": "cannon-connector", "bone": "cannon-connector", "attachment": "cannon-connector" },
-	{ "name": "antenna", "bone": "antenna-root", "attachment": "antenna" },
-	{ "name": "smoke-puff1-bg", "bone": "smoke1", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg13", "bone": "smoke13", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg14", "bone": "smoke14", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg15", "bone": "smoke15", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg16", "bone": "smoke16", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg17", "bone": "smoke17", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg18", "bone": "smoke18", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg20", "bone": "smoke20", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg21", "bone": "smoke21", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg22", "bone": "smoke22", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg23", "bone": "smoke23", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg24", "bone": "smoke24", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg25", "bone": "smoke25", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg26", "bone": "smoke26", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg27", "bone": "smoke27", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg2", "bone": "smoke2", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg5", "bone": "smoke5", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg6", "bone": "smoke6", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg7", "bone": "smoke7", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg10", "bone": "smoke10", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg11", "bone": "smoke11", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg12", "bone": "smoke12", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg8", "bone": "smoke8", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg9", "bone": "smoke9", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg4", "bone": "smoke4", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-bg3", "bone": "smoke3", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg", "bone": "smoke1", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg13", "bone": "smoke13", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg14", "bone": "smoke14", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg15", "bone": "smoke15", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg16", "bone": "smoke16", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg17", "bone": "smoke17", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg18", "bone": "smoke18", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg20", "bone": "smoke20", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg21", "bone": "smoke21", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg22", "bone": "smoke22", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg23", "bone": "smoke23", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg24", "bone": "smoke24", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg25", "bone": "smoke25", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg26", "bone": "smoke26", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg27", "bone": "smoke27", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg2", "bone": "smoke2", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg5", "bone": "smoke5", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg6", "bone": "smoke6", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg7", "bone": "smoke7", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg10", "bone": "smoke10", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg11", "bone": "smoke11", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg12", "bone": "smoke12", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg8", "bone": "smoke8", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg9", "bone": "smoke9", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg4", "bone": "smoke4", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-puff1-fg3", "bone": "smoke3", "color": "ecececff", "dark": "000000" },
-	{ "name": "smoke-glow", "bone": "smoke-glow", "blend": "additive" },
-	{ "name": "clipping", "bone": "tank-body", "attachment": "clipping" },
-	{ "name": "tank-glow", "bone": "tank-glow", "color": "fcdc6da7", "blend": "additive" }
-],
-"ik": [
-	{
-		"name": "cannon-ik",
-		"bones": [ "cannon" ],
-		"target": "cannon-target"
-	},
-	{
-		"name": "machinegun-ik",
-		"order": 1,
-		"bones": [ "machinegun" ],
-		"target": "machinegun-target",
-		"mix": 0
-	}
-],
-"transform": [
-	{
-		"name": "wheel-big-transform",
-		"order": 8,
-		"bones": [ "wheel-big2" ],
-		"target": "wheel-big1",
-		"rotation": 65.6,
-		"mixX": 0,
-		"mixScaleX": 0,
-		"mixShearY": 0
-	},
-	{
-		"name": "wheel-mid1-transform",
-		"order": 3,
-		"bones": [ "wheel-mid2", "wheel-mid4" ],
-		"target": "wheel-mid1",
-		"rotation": 93,
-		"mixX": 0,
-		"mixScaleX": 0,
-		"mixShearY": 0
-	},
-	{
-		"name": "wheel-mid2-transform",
-		"order": 4,
-		"bones": [ "wheel-mid3", "wheel-mid5" ],
-		"target": "wheel-mid1",
-		"rotation": -89,
-		"mixX": 0,
-		"mixScaleX": 0,
-		"mixShearY": 0
-	},
-	{
-		"name": "wheel-mid3-transform",
-		"order": 5,
-		"bones": [ "wheel-mid6" ],
-		"target": "wheel-mid1",
-		"rotation": -152.6,
-		"mixX": 0,
-		"mixScaleX": 0,
-		"mixShearY": 0
-	},
-	{
-		"name": "wheel-small1-transform",
-		"order": 6,
-		"bones": [ "wheel-small2" ],
-		"target": "wheel-small1",
-		"rotation": 87,
-		"mixX": 0,
-		"mixScaleX": 0,
-		"mixShearY": 0
-	},
-	{
-		"name": "wheel-small2-transform",
-		"order": 7,
-		"bones": [ "wheel-small3" ],
-		"target": "wheel-small1",
-		"rotation": 54.9,
-		"mixX": 0,
-		"mixScaleX": 0,
-		"mixShearY": 0
-	}
-],
-"path": [
-	{
-		"name": "treads-path",
-		"order": 2,
-		"bones": [ "tread", "tread2", "tread3", "tread4", "tread5", "tread6", "tread7", "tread8", "tread9", "tread10", "tread11", "tread12", "tread13", "tread14", "tread15", "tread16", "tread17", "tread18", "tread19", "tread20", "tread21", "tread22", "tread23", "tread24", "tread25", "tread26", "tread27", "tread28", "tread29", "tread30", "tread31", "tread32", "tread33", "tread34", "tread35", "tread36" ],
-		"target": "treads-path",
-		"rotateMode": "chain"
-	}
-],
-"skins": [
-	{
-		"name": "default",
-		"attachments": {
-			"antenna": {
-				"antenna": {
-					"type": "mesh",
-					"uvs": [ 0.64286, 0.07876, 0.65354, 0.1535, 0.66325, 0.22138, 0.67367, 0.29433, 0.68383, 0.36543, 0.6936, 0.43374, 0.70311, 0.5003, 0.71311, 0.57031, 0.72327, 0.64139, 0.73406, 0.71689, 0.74441, 0.7893, 0.75614, 0.87141, 0.76905, 0.94311, 1, 0.94311, 1, 1, 0, 1, 0, 0.94311, 0.20106, 0.94311, 0.20106, 0.87094, 0.21461, 0.78847, 0.22651, 0.71607, 0.23886, 0.64099, 0.25036, 0.57105, 0.26206, 0.49983, 0.27306, 0.43291, 0.2843, 0.36454, 0.29593, 0.29382, 0.308, 0.22038, 0.319, 0.15345, 0.33142, 0.07796, 0.34423, 0, 0.63161, 0 ],
-					"triangles": [ 30, 31, 0, 29, 30, 0, 29, 0, 1, 28, 29, 1, 28, 1, 2, 27, 28, 2, 27, 2, 3, 26, 3, 4, 25, 26, 4, 25, 4, 5, 26, 27, 3, 24, 5, 6, 23, 24, 6, 7, 23, 6, 24, 25, 5, 22, 7, 8, 21, 22, 8, 21, 8, 9, 7, 22, 23, 20, 9, 10, 19, 20, 10, 20, 21, 9, 19, 10, 11, 18, 19, 11, 17, 18, 11, 17, 11, 12, 15, 16, 17, 12, 13, 14, 15, 17, 12, 14, 15, 12 ],
-					"vertices": [ 2, 10, 65.38, -3.14, 0.3125, 11, 23.38, -3.14, 0.6875, 2, 10, 42.73, -3.38, 0.66667, 11, 0.73, -3.38, 0.33333, 2, 9, 64.17, -3.59, 0.33333, 10, 22.17, -3.59, 0.66667, 2, 9, 42.06, -3.82, 0.66667, 10, 0.06, -3.82, 0.33333, 2, 8, 62.52, -4.04, 0.33333, 9, 20.52, -4.04, 0.66667, 2, 8, 41.82, -4.26, 0.66667, 9, -0.18, -4.26, 0.33333, 2, 7, 63.65, -4.47, 0.33333, 8, 21.65, -4.47, 0.66667, 2, 7, 42.44, -4.69, 0.66667, 8, 0.44, -4.69, 0.33333, 2, 6, 62.9, -4.91, 0.33333, 7, 20.9, -4.91, 0.66667, 2, 6, 40.03, -5.15, 0.66667, 7, -1.97, -5.15, 0.33333, 2, 5, 5.38, 58.09, 0.4, 6, 18.09, -5.38, 0.6, 1, 5, 5.64, 33.21, 1, 1, 5, 5.92, 11.48, 1, 1, 5, 11, 11.48, 1, 1, 5, 11, -5.76, 1, 1, 5, -11, -5.76, 1, 1, 5, -11, 11.48, 1, 1, 5, -6.58, 11.48, 1, 1, 5, -6.58, 33.35, 1, 2, 5, -6.28, 58.34, 0.4, 6, 18.34, 6.28, 0.6, 2, 6, 40.27, 6.02, 0.66667, 7, -1.73, 6.02, 0.33333, 2, 6, 63.03, 5.75, 0.33333, 7, 21.03, 5.75, 0.66667, 2, 7, 42.22, 5.49, 0.66667, 8, 0.22, 5.49, 0.33333, 2, 7, 63.8, 5.23, 0.33333, 8, 21.8, 5.23, 0.66667, 2, 8, 42.07, 4.99, 0.66667, 9, 0.07, 4.99, 0.33333, 2, 8, 62.79, 4.75, 0.33333, 9, 20.79, 4.75, 0.66667, 2, 9, 42.22, 4.49, 0.66667, 10, 0.22, 4.49, 0.33333, 2, 9, 64.47, 4.22, 0.33333, 10, 22.47, 4.22, 0.66667, 2, 10, 42.75, 3.98, 0.66667, 11, 0.75, 3.98, 0.33333, 2, 10, 65.62, 3.71, 0.3125, 11, 23.62, 3.71, 0.6875, 1, 11, 47.24, 3.43, 1, 1, 11, 47.24, -2.9, 1 ],
-					"hull": 32,
-					"edges": [ 28, 30, 28, 26, 30, 32, 26, 24, 24, 22, 32, 34, 34, 24, 34, 36, 36, 22, 60, 62, 38, 36, 20, 22, 38, 20, 40, 38, 18, 20, 40, 18, 42, 40, 16, 18, 42, 16, 44, 42, 14, 16, 44, 14, 46, 44, 12, 14, 46, 12, 48, 46, 10, 12, 48, 10, 50, 48, 8, 10, 50, 8, 52, 50, 6, 8, 52, 6, 54, 52, 4, 6, 54, 4, 56, 54, 2, 4, 56, 2, 60, 58, 58, 56, 62, 0, 0, 2, 58, 0 ],
-					"width": 22,
-					"height": 303
-				}
-			},
-			"bottom": {
-				"tank-bottom": { "x": -16.67, "y": 9.89, "width": 1285, "height": 276 }
-			},
-			"cannon": {
-				"cannon": { "x": 481.95, "y": -0.03, "rotation": 180, "width": 931, "height": 58 }
-			},
-			"cannon-connector": {
-				"cannon-connector": {
-					"type": "mesh",
-					"uvs": [ 1, 0.03237, 1, 0.10603, 0.90988, 0.32859, 0.81975, 0.55116, 0.72963, 0.77373, 0.6395, 0.9963, 0.42157, 0.9963, 0.20364, 0.9963, 0, 0.85434, 0, 0.69902, 0.02268, 0.52884, 0, 0.31444, 0.21602, 0.12998, 0.43368, 0, 0.63547, 0.0037, 0.48408, 0.77059, 0.31496, 0.52497, 0.64133, 0.19648, 0.21516, 0.76766, 0.58346, 0.56471, 0.68444, 0.40146, 0.46758, 0.36649, 0.28935, 0.34604 ],
-					"triangles": [ 7, 18, 6, 6, 18, 15, 7, 8, 18, 8, 9, 18, 18, 16, 15, 15, 16, 19, 9, 10, 18, 18, 10, 16, 16, 21, 19, 19, 21, 20, 10, 22, 16, 10, 11, 22, 16, 22, 21, 21, 17, 20, 21, 12, 13, 17, 13, 14, 17, 21, 13, 11, 12, 22, 21, 22, 12, 6, 15, 5, 5, 15, 4, 15, 19, 4, 4, 19, 3, 19, 20, 3, 3, 20, 2, 20, 17, 2, 2, 17, 1, 17, 14, 1, 14, 0, 1 ],
-					"vertices": [ 1, 12, 35.91, 69.08, 1, 1, 12, 35.91, 59.14, 1, 1, 12, 25.82, 29.09, 1, 1, 12, 15.72, -0.95, 1, 1, 12, 5.63, -31, 1, 1, 12, -4.46, -61.05, 1, 2, 12, -28.87, -61.05, 0.33333, 14, 28.87, 61.03, 0.66667, 1, 14, 53.28, 61.02, 1, 1, 14, 76.09, 41.84, 1, 1, 14, 71.17, 21.63, 1, 1, 14, 72.83, -1.62, 1, 1, 14, 70.38, -29.12, 1, 1, 14, 50.67, -56.14, 1, 2, 12, -28.43, 74.38, 0.41, 14, 28.43, -74.4, 0.59, 2, 12, -4.92, 72.95, 0.52, 14, 4.92, -72.95, 0.48, 2, 12, -21.87, -30.58, 0.49, 14, 21.87, 30.57, 0.51, 1, 14, 40.81, -2.6, 1, 2, 12, -4.26, 46.93, 0.49, 14, 4.26, -46.93, 0.51, 1, 14, 51.99, 30.15, 1, 2, 12, -10.74, -2.78, 0.49, 14, 10.74, 2.78, 0.51, 2, 12, 0.57, 19.25, 0.49, 14, -0.57, -19.25, 0.51, 1, 14, 23.72, -23.99, 1, 1, 14, 43.68, -26.76, 1 ],
-					"hull": 15,
-					"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 0 ],
-					"width": 112,
-					"height": 135
-				}
-			},
-			"clipping": {
-				"clipping": {
-					"type": "clipping",
-					"end": "tank-glow",
-					"vertexCount": 32,
-					"vertices": [ 1, 3, 165.84, 455.67, 1, 1, 3, 114.21, 493.01, 1, 1, 3, -38.53, 492.23, 1, 1, 3, -193.4, 464.18, 1, 2, 3, -280.85, 415.48, 0.752, 14, 24.09, -73.93, 0.248, 1, 14, 70.34, -27.32, 1, 1, 14, 412.56, -22.02, 1, 1, 14, 412.82, -29.21, 1, 1, 14, 539.26, -29.34, 1, 1, 14, 539.52, -17.09, 1, 1, 14, 894.02, -16.8, 1, 1, 14, 902.99, -28.89, 1, 1, 14, 942.06, -28.58, 1, 1, 14, 948.14, -16.64, 1, 1, 14, 947.9, 14.29, 1, 1, 14, 539.3, 14.55, 1, 1, 14, 539, 29.22, 1, 1, 14, 412.51, 29.88, 1, 1, 14, 412.51, 21.73, 1, 1, 14, 74.24, 27.28, 1, 1, 3, -296.64, 281.2, 1, 1, 3, -316.06, 225.71, 1, 1, 3, -521.69, 190.74, 1, 1, 3, -610.03, 141.02, 1, 1, 3, -671.84, 87.13, 1, 1, 3, -652.23, -11.24, 1, 1, 3, -618.53, -71.36, 1, 1, 3, -478.77, -114.21, 1, 1, 3, -274.11, -116.26, 1, 1, 3, 1.38, -45.75, 1, 1, 3, 189.67, 148.78, 1, 1, 3, 215.75, 276.59, 1 ],
-					"color": "ce3a3aff"
-				}
-			},
-			"ground": {
-				"ground": { "x": 837.96, "y": -172, "width": 1024, "height": 353 }
-			},
-			"ground2": {
-				"ground": { "x": -179.89, "y": -172, "width": 1024, "height": 353 }
-			},
-			"ground3": {
-				"ground": { "x": -1213.48, "y": -172, "scaleX": 1.035, "width": 1024, "height": 353 }
-			},
-			"ground4": {
-				"ground": { "x": -2268.51, "y": -172, "scaleX": 1.04, "width": 1024, "height": 353 }
-			},
-			"ground5": {
-				"ground": { "x": -3306.54, "y": -172, "width": 1024, "height": 353 }
-			},
-			"ground6": {
-				"ground": { "x": -4322.71, "y": -172, "width": 1024, "height": 353 }
-			},
-			"ground7": {
-				"ground": { "x": -5340.65, "y": -172, "width": 1024, "height": 353 }
-			},
-			"guntower": {
-				"guntower": { "x": 77.22, "y": 122.59, "width": 730, "height": 289 }
-			},
-			"machinegun": {
-				"machinegun": { "x": 44.85, "y": -5.72, "rotation": -180, "width": 331, "height": 57 }
-			},
-			"machinegun-mount": {
-				"machinegun-mount": { "x": 47.42, "y": -1.54, "rotation": -90, "width": 72, "height": 96 }
-			},
-			"rock": {
-				"rock": { "x": 25.24, "y": 27.35, "width": 580, "height": 127 }
-			},
-			"smoke-glow": {
-				"smoke-glow": {
-					"type": "mesh",
-					"uvs": [ 1, 0.24906, 1, 0.51991, 1, 0.73165, 0.70776, 1, 0.49012, 1, 0.24373, 1, 0, 0.71158, 0, 0.50308, 0, 0.26235, 0.28107, 0, 0.47435, 0, 0.73345, 0, 0.48858, 0.51759 ],
-					"triangles": [ 12, 7, 8, 12, 10, 11, 12, 11, 0, 9, 10, 12, 12, 8, 9, 12, 0, 1, 6, 7, 12, 12, 1, 2, 5, 6, 12, 3, 4, 12, 5, 12, 4, 2, 3, 12 ],
-					"vertices": [ 49.99, 25.1, 50, -1.98, 50.01, -23.15, 20.79, -50, -0.98, -50, -25.62, -50.01, -50, -21.17, -50, -0.32, -50.01, 23.75, -21.9, 50, -2.58, 50, 23.33, 50.01, -1.14, -1.76 ],
-					"hull": 12,
-					"edges": [ 2, 24, 24, 14, 20, 24, 24, 8, 2, 0, 20, 22, 0, 22, 18, 20, 14, 16, 18, 16, 12, 14, 8, 10, 12, 10, 6, 8, 2, 4, 6, 4 ],
-					"width": 100,
-					"height": 100
-				}
-			},
-			"smoke-puff1-bg": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg2": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg3": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg4": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg5": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg6": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg7": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg8": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg9": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg10": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg11": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg12": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg13": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg14": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg15": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg16": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg17": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg18": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg20": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg21": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg22": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg23": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg24": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg25": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg26": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-bg27": {
-				"smoke-puff01-bg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				}
-			},
-			"smoke-puff1-fg": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg2": {
-				"smoke-puff01-fg": {
-					"x": -1.01,
-					"y": -0.07,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.82,
-					"y": -0.39,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -1.82,
-					"y": -0.39,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -1.82,
-					"y": -0.39,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg3": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.02,
-					"y": -0.25,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1145,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -1.03,
-					"y": -0.43,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg4": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.63,
-					"y": -0.09,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -1.63,
-					"y": -0.09,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -1.63,
-					"y": -0.09,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg5": {
-				"smoke-puff01-fg": {
-					"x": -1.21,
-					"y": -0.08,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.89,
-					"y": -0.04,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -1.89,
-					"y": -0.04,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -1.89,
-					"y": -0.04,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg6": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.48,
-					"y": -0.07,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -1.48,
-					"y": -0.07,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -1.48,
-					"y": -0.07,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg7": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -0.7,
-					"y": -0.36,
-					"scaleX": 0.1216,
-					"scaleY": 0.1214,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -0.56,
-					"y": -0.15,
-					"scaleX": 0.1224,
-					"scaleY": 0.1224,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -0.56,
-					"y": -0.15,
-					"scaleX": 0.1224,
-					"scaleY": 0.1224,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg8": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -0.65,
-					"y": 0.01,
-					"scaleX": 0.1226,
-					"scaleY": 0.1226,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -0.75,
-					"y": -0.15,
-					"scaleX": 0.1211,
-					"scaleY": 0.1211,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -0.75,
-					"y": -0.15,
-					"scaleX": 0.1211,
-					"scaleY": 0.1211,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg9": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.99,
-					"y": -0.09,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -1.99,
-					"y": -0.09,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -0.95,
-					"y": -0.48,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg10": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.27,
-					"y": -0.37,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -1.27,
-					"y": -0.37,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -1.27,
-					"y": -0.37,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg11": {
-				"smoke-puff04-fg": {
-					"x": -1.27,
-					"y": -0.37,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg12": {
-				"smoke-puff04-fg": {
-					"x": -1.27,
-					"y": -0.37,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg13": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg14": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg15": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg16": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg17": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg18": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg20": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg21": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg22": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg23": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg24": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg25": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg26": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"smoke-puff1-fg27": {
-				"smoke-puff01-fg": {
-					"x": -0.5,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 175,
-					"height": 118
-				},
-				"smoke-puff02-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff03-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 184,
-					"height": 123
-				},
-				"smoke-puff04-fg": {
-					"x": -1.38,
-					"y": -0.12,
-					"scaleX": 0.1106,
-					"scaleY": 0.1106,
-					"rotation": 88.58,
-					"width": 155,
-					"height": 96
-				}
-			},
-			"tank-body-shadow": {
-				"tank-bottom-shadow": { "x": -11.44, "y": -42.89, "width": 1291, "height": 341 }
-			},
-			"tank-glow": {
-				"smoke-glow": {
-					"type": "mesh",
-					"uvs": [ 1, 1, 0, 1, 1, 0 ],
-					"triangles": [ 1, 2, 0 ],
-					"vertices": [ 469.64, -738.08, -1660.32, -738.08, 469.64, 1391.88 ],
-					"hull": 3,
-					"edges": [ 0, 2, 0, 4, 2, 4 ],
-					"width": 100,
-					"height": 100
-				}
-			},
-			"tank-top": {
-				"tank-top": { "x": 6.8, "y": 168.71, "width": 1407, "height": 222 }
-			},
-			"tread": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread-inside1": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside2": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside3": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside4": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside5": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside6": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside7": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside8": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside9": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside10": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside11": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside12": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside13": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside14": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside15": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside16": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside17": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside18": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside19": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside20": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside21": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside22": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside23": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside24": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside25": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside26": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside27": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside28": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside29": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside30": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside31": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside32": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside33": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside34": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside35": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside36": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside37": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside38": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside39": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside40": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside41": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside42": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside43": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside44": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside45": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside46": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside47": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside48": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside49": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside50": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside51": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside52": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside53": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside54": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside55": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside56": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside57": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside58": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside59": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside60": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside61": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside62": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside63": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside64": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside65": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside66": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside67": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside68": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside69": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside70": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside71": {
-				"tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread-inside72": {
-				"tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 }
-			},
-			"tread2": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread3": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread4": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread5": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread6": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread7": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread8": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread9": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread10": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread11": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread12": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread13": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread14": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread15": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread16": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread17": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread18": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread19": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread20": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread21": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread22": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread23": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread24": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread25": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread26": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread27": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread28": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread29": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread30": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread31": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread32": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread33": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread34": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread35": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"tread36": {
-				"tread": { "x": 45.47, "y": -8.28, "rotation": -180, "width": 96, "height": 30 }
-			},
-			"treads-path": {
-				"treads-path": {
-					"type": "path",
-					"closed": true,
-					"lengths": [ 185.21, 354.53, 478.3, 608.52, 786, 1058.49, 1138.97, 1223.96, 1303.87, 1388.23, 1471.11, 1551.64, 1633.55, 1713.27, 1799.89, 1882.28, 2164.2, 2326.85, 2444.07, 2584.91, 2754.15, 2940.62 ],
-					"vertexCount": 66,
-					"vertices": [ 1, 110, 11.23, 41.87, 1, 1, 110, 0.79, 41.95, 1, 1, 110, -34.72, 42.24, 1, 1, 56, -104.22, 0.41, 1, 1, 56, 0.07, 0.55, 1, 1, 56, 68.8, 0.65, 1, 1, 109, 20.5, 43.47, 1, 1, 109, 1.14, 40.82, 1, 1, 109, -27.38, 36.85, 1, 1, 93, 147.07, 105.01, 1, 1, 93, 96.21, 96.63, 1, 1, 93, 43.87, 87.72, 1, 1, 93, 16.18, 103.35, 1, 1, 93, -33.67, 94.21, 1, 1, 93, -99.36, 81.25, 1, 1, 93, -122.05, -1.7, 1, 1, 93, -83.58, -47.93, 1, 1, 93, -33.53, -109.37, 1, 1, 97, -83.57, -66.1, 1, 1, 97, -2.17, -67.9, 1, 2, 97, 56.68, -41.49, 0.68, 51, -24.31, -41.49, 0.32, 1, 51, -26.59, 16.7, 1, 1, 51, -2.69, 16.7, 1, 1, 51, 13.52, 16.7, 1, 2, 98, -52.42, -46.51, 0.744, 51, 30.21, -46.52, 0.256, 1, 98, -0.32, -68.92, 1, 2, 98, 52.09, -44.73, 0.712, 52, -28.91, -44.73, 0.288, 1, 52, -22.81, 16.24, 1, 1, 52, -1.42, 16.24, 1, 1, 52, 20.48, 16.24, 1, 2, 99, -47.21, -47.46, 0.744, 52, 36.01, -47.46, 0.256, 1, 99, -0.29, -69.66, 1, 2, 99, 45.24, -47.26, 0.736, 53, -37.49, -47.26, 0.264, 1, 53, -23.76, 15.28, 1, 1, 53, -0.14, 15.28, 1, 1, 53, 24.45, 15.28, 1, 2, 100, -47.37, -48.7, 0.744, 53, 33.53, -48.7, 0.256, 1, 100, -0.5, -70.4, 1, 2, 100, 49.09, -48.34, 0.744, 54, -33.58, -48.34, 0.256, 1, 54, -20.89, 15.84, 1, 1, 54, -1.26, 15.84, 1, 1, 54, 15.78, 15.84, 1, 2, 101, -52.5, -48.21, 0.76, 54, 28.45, -48.22, 0.24, 1, 101, -2.5, -68.92, 1, 2, 101, 55.72, -47.82, 0.752, 55, -28.88, -47.83, 0.248, 1, 55, -21.64, 16.7, 1, 1, 55, -0.48, 16.7, 1, 1, 55, 20.74, 16.7, 1, 2, 102, -53.65, -48.9, 0.76, 55, 25.97, -48.9, 0.24, 1, 102, 2.28, -69.66, 1, 1, 102, 44.95, -69.74, 1, 1, 94, 76.03, -85.61, 1, 1, 94, 93.58, -42.24, 1, 1, 94, 118.67, 19.75, 1, 1, 94, 78.59, 76.62, 1, 1, 94, 37.27, 95.07, 1, 1, 94, 31.45, 97.67, 1, 1, 94, -15.16, 87.48, 1, 1, 94, -79.8, 92.52, 1, 1, 94, -119.06, 95.58, 1, 1, 111, 47.07, 42.29, 1, 1, 111, 0.25, 42.75, 1, 1, 111, -29.64, 43.29, 1, 1, 57, -86.65, 1.35, 1, 1, 57, 0.49, 0.26, 1, 1, 57, 92.42, -0.9, 1 ],
-					"color": "ff8819ff"
-				}
-			},
-			"wheel-big": {
-				"wheel-big": { "width": 191, "height": 191 }
-			},
-			"wheel-big-overlay1": {
-				"wheel-big-overlay": { "width": 186, "height": 186 }
-			},
-			"wheel-big-overlay2": {
-				"wheel-big-overlay": { "width": 186, "height": 186 }
-			},
-			"wheel-big2": {
-				"wheel-big": { "width": 191, "height": 191 }
-			},
-			"wheel-mid": {
-				"wheel-mid": { "width": 136, "height": 136 }
-			},
-			"wheel-mid-overlay": {
-				"wheel-mid-overlay": { "width": 136, "height": 136 }
-			},
-			"wheel-mid-overlay2": {
-				"wheel-mid-overlay": { "width": 136, "height": 136 }
-			},
-			"wheel-mid-overlay3": {
-				"wheel-mid-overlay": { "width": 136, "height": 136 }
-			},
-			"wheel-mid-overlay4": {
-				"wheel-mid-overlay": { "width": 136, "height": 136 }
-			},
-			"wheel-mid-overlay5": {
-				"wheel-mid-overlay": { "width": 136, "height": 136 }
-			},
-			"wheel-mid-overlay6": {
-				"wheel-mid-overlay": { "width": 136, "height": 136 }
-			},
-			"wheel-mid2": {
-				"wheel-mid": { "width": 136, "height": 136 }
-			},
-			"wheel-mid3": {
-				"wheel-mid": { "width": 136, "height": 136 }
-			},
-			"wheel-mid4": {
-				"wheel-mid": { "width": 136, "height": 136 }
-			},
-			"wheel-mid5": {
-				"wheel-mid": { "width": 136, "height": 136 }
-			},
-			"wheel-mid6": {
-				"wheel-mid": { "width": 136, "height": 136 }
-			},
-			"wheel-small": {
-				"wheel-small": { "width": 71, "height": 71 }
-			},
-			"wheel-small2": {
-				"wheel-small": { "width": 71, "height": 71 }
-			},
-			"wheel-small3": {
-				"wheel-small": { "width": 71, "height": 71 }
-			}
-		}
-	}
-],
-"animations": {
-	"drive": {
-		"bones": {
-			"tank-root": {
-				"rotate": [
-					{ "time": 2 },
-					{ "time": 2.0667, "value": 1.99 },
-					{ "time": 2.5, "value": -15.63 },
-					{
-						"time": 2.6667,
-						"value": -10.37,
-						"curve": [ 2.718, -10.37, 2.78, -8.34 ]
-					},
-					{
-						"time": 2.8333,
-						"value": -6.13,
-						"curve": [ 2.909, -2.8, 2.974, 0.8 ]
-					},
-					{ "time": 3, "value": 1.84 },
-					{ "time": 3.0667, "value": 5.32 },
-					{ "time": 3.1667, "value": 10.99 },
-					{ "time": 3.2333, "value": 9.73 },
-					{
-						"time": 3.4333,
-						"value": -4.52,
-						"curve": [ 3.474, -3.99, 3.608, 0.01 ]
-					},
-					{ "time": 3.6667, "value": 0.01 }
-				],
-				"translate": [
-					{
-						"curve": [ 1.019, 0, 1.608, -582.83, 1.019, 0, 1.608, 0 ]
-					},
-					{ "time": 2, "x": -1209.75 },
-					{ "time": 2.3333, "x": -1652.84, "y": 26.05 },
-					{ "time": 2.5, "x": -1877.69, "y": 71.5 },
-					{ "time": 2.6667, "x": -2053.37, "y": 100.44 },
-					{ "time": 2.8333, "x": -2183.86, "y": 97.42 },
-					{ "time": 3, "x": -2312.32, "y": 74.12 },
-					{ "time": 3.0667, "x": -2340.68, "y": 45.94 },
-					{ "time": 3.1333, "x": -2403.04, "y": 17.04 },
-					{ "time": 3.1667, "x": -2439.84, "y": 5.45 },
-					{ "time": 3.2333, "x": -2523.34, "y": -3.31 },
-					{ "time": 3.4333, "x": -2728.27, "y": -12.73 },
-					{
-						"time": 3.5,
-						"x": -2795.65,
-						"y": -6.14,
-						"curve": [ 3.538, -2829.89, 3.583, -2878.59, 3.538, -4.93, 3.583, -3.21 ]
-					},
-					{
-						"time": 3.6333,
-						"x": -2938.53,
-						"y": -1.09,
-						"curve": [ 3.89, -3218.84, 4.404, -3972.02, 3.89, -0.79, 4.404, 0 ]
-					},
-					{ "time": 4.8333, "x": -3972.02 },
-					{ "time": 5, "x": -3991.31 },
-					{ "time": 5.3667, "x": -3973.94 }
-				]
-			},
-			"tread-collider1": {
-				"translate": [
-					{ "time": 2 },
-					{ "time": 2.0667, "y": 9.99 },
-					{ "time": 2.1667, "y": 37.69 },
-					{ "time": 2.3333, "y": 53.45 },
-					{ "time": 2.5, "y": 30.97 },
-					{ "time": 2.6667, "y": -2.89 },
-					{ "time": 2.8333, "y": -0.71 },
-					{ "time": 3.0667, "y": -13.64 },
-					{ "time": 3.1667, "y": 59.3 },
-					{ "time": 3.2333, "y": 48.2 },
-					{ "time": 3.4333, "y": -11.27 },
-					{ "time": 3.6333, "y": 4.15 }
-				]
-			},
-			"tread-collider2": {
-				"translate": [
-					{ "time": 2 },
-					{ "time": 2.0667, "y": -2.83 },
-					{ "time": 2.1667, "y": -17.44 },
-					{ "time": 2.3333, "y": 46.07 },
-					{ "time": 2.5, "y": 19.45 },
-					{ "time": 2.6667, "y": 13.46 },
-					{ "time": 2.8333, "y": -1.92, "curve": "stepped" },
-					{ "time": 2.9667, "y": -1.92 },
-					{ "time": 3, "y": -13.17 },
-					{ "time": 3.0667, "y": -23.25 },
-					{ "time": 3.1667, "y": 28.13 },
-					{ "time": 3.2333, "y": 25.63 },
-					{ "time": 3.4333, "y": -1.52 },
-					{ "time": 3.6333, "y": 1.15 }
-				]
-			},
-			"tread-collider3": {
-				"translate": [
-					{ "time": 2 },
-					{ "time": 2.0667, "y": -7.76 },
-					{ "time": 2.1667, "y": -16.61 },
-					{ "time": 2.5, "y": 29.05 },
-					{ "time": 2.6667, "y": 30.12 },
-					{ "time": 2.8333, "y": 5.3 },
-					{ "time": 3, "y": -0.38 },
-					{ "time": 3.1667, "y": 2.6 },
-					{ "time": 3.4333, "y": 15.41 },
-					{ "time": 3.6333, "y": 1.44 }
-				]
-			},
-			"tread-collider4": {
-				"translate": [
-					{ "time": 2 },
-					{ "time": 2.1667, "y": -6.72 },
-					{ "time": 2.3333, "y": -0.92 },
-					{ "time": 2.5, "y": 18.37 },
-					{ "time": 2.6667, "y": 38.77 },
-					{ "time": 2.8333, "y": 30.6 },
-					{ "time": 3.1667, "y": 12.61 },
-					{ "time": 3.2333, "y": -16 },
-					{ "time": 3.4333, "y": 25.62 },
-					{ "time": 3.6333, "y": -0.68 }
-				]
-			},
-			"tread-collider5": {
-				"translate": [
-					{ "time": 2 },
-					{ "time": 2.1667, "y": 3.35 },
-					{ "time": 2.3333, "y": 22.17 },
-					{ "time": 2.6667, "y": 13.35 },
-					{ "time": 2.8333, "y": 39 },
-					{ "time": 3, "y": 39.88 },
-					{ "time": 3.1667, "y": 26.57 },
-					{ "time": 3.2333, "y": -10.15 },
-					{ "time": 3.4333, "y": 35.98 },
-					{ "time": 3.6333, "y": -1.36 }
-				]
-			},
-			"wheel-mid-root6": {
-				"translate": [
-					{ "time": 2 },
-					{ "time": 2.1667, "y": 5.61 },
-					{ "time": 2.3333, "y": 27.21 },
-					{ "time": 2.5, "y": 30.28 },
-					{ "time": 2.6667, "y": -2.81 },
-					{ "time": 2.8333, "y": 19.59 },
-					{ "time": 3, "y": 29.11 },
-					{ "time": 3.1667, "y": 32.55 },
-					{ "time": 3.2333, "y": 3.55 },
-					{ "time": 3.4333, "y": 40.54 },
-					{ "time": 3.6333 }
-				]
-			},
-			"wheel-mid-root5": {
-				"translate": [
-					{ "time": 2 },
-					{ "time": 2.1667, "y": -7.46 },
-					{ "time": 2.3333, "y": 9.53 },
-					{ "time": 2.6667, "y": 36.78 },
-					{ "time": 2.8333, "y": 46.11 },
-					{ "time": 3.1667, "y": 7.55 },
-					{ "time": 3.2333, "y": -16.28 },
-					{ "time": 3.4333, "y": 26.21 },
-					{ "time": 3.6333 }
-				]
-			},
-			"wheel-mid-root4": {
-				"translate": [
-					{ "time": 2 },
-					{ "time": 2.1667, "y": -13.98 },
-					{ "time": 2.3333, "y": -8.26 },
-					{ "time": 2.5, "y": 24.27 },
-					{ "time": 2.6667, "y": 34.42 },
-					{ "time": 2.8333, "y": 8.88 },
-					{ "time": 3.1667, "y": 10.32 },
-					{ "time": 3.2333, "y": -7.63 },
-					{ "time": 3.4333, "y": 19.69 },
-					{ "time": 3.6333 }
-				]
-			},
-			"wheel-mid-root3": {
-				"translate": [
-					{ "time": 2 },
-					{ "time": 2.1667, "y": -21.14 },
-					{ "time": 2.3333, "y": 22.83 },
-					{ "time": 2.5, "y": 23.34 },
-					{ "time": 2.6667, "y": 18.07 },
-					{ "time": 2.8333, "y": 1.2 },
-					{ "time": 3.0667, "y": -13.36 },
-					{ "time": 3.1667, "y": 15.48 },
-					{ "time": 3.2333, "y": 13.34 },
-					{ "time": 3.4333, "y": 6.4 },
-					{ "time": 3.6333 }
-				]
-			},
-			"wheel-mid-root2": {
-				"translate": [
-					{ "time": 2 },
-					{ "time": 2.0667, "y": -4.39 },
-					{ "time": 2.1667, "y": 3.13 },
-					{ "time": 2.3333, "y": 53.56 },
-					{ "time": 2.5, "y": 16.65 },
-					{ "time": 2.6667, "y": 8.39 },
-					{ "time": 3.0667, "y": -19.16 },
-					{ "time": 3.1667, "y": 43.25 },
-					{ "time": 3.2333, "y": 39.04 },
-					{ "time": 3.4333, "y": -8.61 },
-					{ "time": 3.6333 }
-				]
-			},
-			"wheel-mid-root1": {
-				"translate": [
-					{ "time": 2 },
-					{ "time": 2.0333, "y": 22.64 },
-					{ "time": 2.0667, "y": 53.65 },
-					{ "time": 2.1667, "y": 71.18 },
-					{ "time": 2.5, "y": 46.83 },
-					{ "time": 2.6667, "y": 8.38 },
-					{ "time": 3.0667, "y": -10.03 },
-					{ "time": 3.1667, "y": 72.71 },
-					{ "time": 3.2333, "y": 64.74 },
-					{ "time": 3.4333, "y": -17.65 },
-					{ "time": 3.6333 }
-				]
-			},
-			"tank-body": {
-				"rotate": [
-					{
-						"curve": [ 0.208, 0, 0.625, -4.39 ]
-					},
-					{ "time": 0.8333, "value": -4.39 },
-					{ "time": 2 },
-					{ "time": 2.1667, "value": -1.34 },
-					{ "time": 2.3333, "value": -6.23 },
-					{ "time": 2.5, "value": -5.45 },
-					{ "time": 2.9667, "value": -5.07 },
-					{ "time": 3.0667, "value": -2.39 },
-					{ "time": 3.1667, "value": -0.98 },
-					{ "time": 3.2333, "value": -1.1 },
-					{
-						"time": 3.4,
-						"value": 0.43,
-						"curve": [ 3.433, 0.43, 3.483, -1.56 ]
-					},
-					{
-						"time": 3.5333,
-						"value": -3.55,
-						"curve": [ 3.675, -3.47, 3.754, 1.49 ]
-					},
-					{ "time": 3.8333, "value": 1.93 },
-					{ "time": 4, "value": 0.48 },
-					{
-						"time": 4.3333,
-						"curve": [ 4.476, 0.59, 4.833, 3.8 ]
-					},
-					{
-						"time": 5,
-						"value": 3.8,
-						"curve": [ 5.286, 3.8, 5.35, -2.17 ]
-					},
-					{ "time": 5.4667, "value": -2.17 },
-					{ "time": 5.6, "value": -0.61 }
-				]
-			},
-			"wheel-big-root1": {
-				"translate": [
-					{ "time": 2 },
-					{ "time": 2.0667, "y": 20.07 },
-					{ "time": 2.3333, "y": 67.24 },
-					{ "time": 2.6667, "y": 21.04 },
-					{ "time": 3, "y": 10.28 },
-					{ "time": 3.1, "y": 11.28 },
-					{ "time": 3.1667, "y": 29.43 },
-					{ "time": 3.2333, "y": 35.31 },
-					{ "time": 3.4333, "y": 18.38 },
-					{ "time": 3.5 }
-				]
-			},
-			"tank-treads": {
-				"rotate": [
-					{},
-					{ "time": 0.8333, "value": -2.4 },
-					{ "time": 2 },
-					{ "time": 2.0667, "value": 1.72 },
-					{ "time": 2.4333, "value": -0.37 },
-					{ "time": 2.8 },
-					{ "time": 3, "value": -1.41 },
-					{ "time": 3.1667, "value": 0.54 },
-					{
-						"time": 3.2667,
-						"value": 2.22,
-						"curve": [ 3.348, 2.22, 3.392, -1.31 ]
-					},
-					{ "time": 3.4333, "value": -1.31 },
-					{ "time": 3.7333, "value": -1.14 },
-					{
-						"time": 4.3333,
-						"curve": [ 4.476, 0.35, 4.833, 2.24 ]
-					},
-					{
-						"time": 5,
-						"value": 2.24,
-						"curve": [ 5.286, 2.24, 5.35, 0 ]
-					},
-					{ "time": 5.4667 }
-				]
-			},
-			"cannon-target": {
-				"translate": [
-					{},
-					{ "time": 0.8333, "y": 121.95 },
-					{ "time": 2, "y": 45.73 }
-				]
-			},
-			"wheel-big-root2": {
-				"translate": [
-					{ "time": 3.4333, "y": 13.01 }
-				]
-			},
-			"wheel-big1": {
-				"rotate": [
-					{
-						"curve": [ 0.51, 0, 0.804, 57.81 ]
-					},
-					{ "time": 1, "value": 120 },
-					{ "time": 1.2667, "value": 240 },
-					{ "time": 1.5333, "value": 360 },
-					{ "time": 1.7667, "value": 480 },
-					{ "time": 2.0333, "value": 600 },
-					{ "time": 2.2, "value": 720 },
-					{ "time": 2.4, "value": 840 },
-					{ "time": 2.5667, "value": 960 },
-					{ "time": 2.7333, "value": 1080 },
-					{ "time": 2.9333, "value": 1200 },
-					{ "time": 3.1333, "value": 1320 },
-					{ "time": 3.3333, "value": 1440 },
-					{ "time": 3.5, "value": 1560 },
-					{ "time": 3.6667, "value": 1680 },
-					{ "time": 3.8667, "value": 1800 },
-					{ "time": 4.0667, "value": 1920 },
-					{ "time": 4.2667, "value": 2040 },
-					{
-						"time": 4.5,
-						"value": 2160,
-						"curve": [ 4.563, 2194.34, 4.695, 2225.3 ]
-					},
-					{ "time": 4.8333, "value": 2247.67 }
-				]
-			},
-			"wheel-mid1": {
-				"rotate": [
-					{
-						"curve": [ 0.459, 0, 0.724, 57.81 ]
-					},
-					{ "time": 0.9, "value": 120 },
-					{ "time": 1.1667, "value": 240 },
-					{ "time": 1.4333, "value": 360 },
-					{ "time": 1.6333, "value": 480 },
-					{ "time": 1.8333, "value": 600 },
-					{ "time": 2, "value": 720 },
-					{ "time": 2.1333, "value": 840 },
-					{ "time": 2.2667, "value": 960 },
-					{ "time": 2.4, "value": 1080 },
-					{ "time": 2.5333, "value": 1200 },
-					{ "time": 2.6667, "value": 1320 },
-					{ "time": 2.8333, "value": 1440 },
-					{ "time": 2.9667, "value": 1560 },
-					{ "time": 3.1, "value": 1680 },
-					{ "time": 3.2333, "value": 1800 },
-					{ "time": 3.3667, "value": 1920 },
-					{ "time": 3.5, "value": 2040 },
-					{ "time": 3.6333, "value": 2160 },
-					{ "time": 3.7667, "value": 2280 },
-					{ "time": 3.9, "value": 2400 },
-					{ "time": 4.0333, "value": 2520 },
-					{ "time": 4.1667, "value": 2640 },
-					{ "time": 4.3, "value": 2760 },
-					{
-						"time": 4.4667,
-						"value": 2880,
-						"curve": [ 4.538, 2949.2, 4.742, 3000 ]
-					},
-					{ "time": 4.8333, "value": 3000 }
-				]
-			},
-			"wheel-small1": {
-				"rotate": [
-					{
-						"curve": [ 0.34, 0, 0.536, 57.81 ]
-					},
-					{ "time": 0.6667, "value": 120 },
-					{ "time": 0.8667, "value": 240 },
-					{ "time": 1.0333, "value": 360 },
-					{ "time": 1.1667, "value": 480 },
-					{ "time": 1.3, "value": 600 },
-					{ "time": 1.4333, "value": 720 },
-					{ "time": 1.5333, "value": 840 },
-					{ "time": 1.6333, "value": 960 },
-					{ "time": 1.7333, "value": 1080 },
-					{ "time": 1.8333, "value": 1200 },
-					{ "time": 1.9333, "value": 1320 },
-					{ "time": 2.0333, "value": 1440 },
-					{ "time": 2.1333, "value": 1560 },
-					{ "time": 2.2333, "value": 1680 },
-					{ "time": 2.3333, "value": 1800 },
-					{ "time": 2.4333, "value": 1920 },
-					{ "time": 2.5333, "value": 2040 },
-					{ "time": 2.6333, "value": 2160 },
-					{ "time": 2.7333, "value": 2280 },
-					{ "time": 2.8333, "value": 2400 },
-					{ "time": 2.9333, "value": 2520 },
-					{ "time": 3.0333, "value": 2640 },
-					{ "time": 3.1333, "value": 2760 },
-					{ "time": 3.2333, "value": 2880 },
-					{ "time": 3.3333, "value": 3000 },
-					{ "time": 3.4333, "value": 3120 },
-					{ "time": 3.5333, "value": 3240 },
-					{ "time": 3.6333, "value": 3360 },
-					{ "time": 3.7333, "value": 3480 },
-					{ "time": 3.8333, "value": 3600 },
-					{ "time": 3.9333, "value": 3720 },
-					{ "time": 4.0333, "value": 3840 },
-					{ "time": 4.1333, "value": 3960 },
-					{ "time": 4.2333, "value": 4080 },
-					{ "time": 4.3333, "value": 4200 },
-					{ "time": 4.4333, "value": 4320 },
-					{ "time": 4.6667, "value": 4440 },
-					{ "time": 4.9, "value": 4490 }
-				]
-			},
-			"wheel-small-root1": {
-				"translate": [
-					{ "time": 2 },
-					{ "time": 2.1333, "y": 12.37 },
-					{ "time": 2.4667, "y": 32.37 },
-					{ "time": 2.7333, "y": -5.27 },
-					{ "time": 2.9667, "y": 14.31 },
-					{ "time": 3.1667, "y": 19.54 },
-					{ "time": 3.4667, "y": 7.5 },
-					{ "time": 4.3667, "y": -2.4 }
-				]
-			},
-			"wheel-small-root2": {
-				"translate": [
-					{ "time": 2 },
-					{ "time": 2.9, "y": 5.26 },
-					{ "time": 3.1667, "y": 10.67 },
-					{ "time": 3.4667, "y": -4.71 }
-				]
-			},
-			"wheel-small-root3": {
-				"translate": [
-					{ "time": 2 },
-					{ "time": 2.4667, "y": -10.56 },
-					{ "time": 2.9, "y": -16.08 },
-					{ "time": 3.1667, "y": 10.12 },
-					{ "time": 3.4667, "y": 4.1 },
-					{ "time": 4.3667, "y": -0.03 }
-				]
-			},
-			"antenna1": {
-				"rotate": [
-					{},
-					{
-						"time": 0.3333,
-						"value": 1.05,
-						"curve": [ 0.731, 1.05, 1.008, -4.55 ]
-					},
-					{
-						"time": 1.2333,
-						"value": -4.55,
-						"curve": [ 1.35, -4.55, 1.583, 0.53 ]
-					},
-					{ "time": 1.7, "value": 0.53 },
-					{ "time": 2, "value": -2.13 },
-					{ "time": 2.2, "value": 4.71 },
-					{ "time": 2.3667, "value": -7.26 },
-					{ "time": 2.5667, "value": 2.26 },
-					{ "time": 2.7333, "value": -3.39 },
-					{ "time": 3.0667, "value": -5.53 },
-					{ "time": 3.2333, "value": 7.78 },
-					{ "time": 3.4667, "value": -5.99 },
-					{ "time": 3.7, "value": 3.11 },
-					{ "time": 3.9, "value": -3.05 },
-					{ "time": 4.1, "value": 0.31 },
-					{ "time": 4.3, "value": -3.06 },
-					{ "time": 4.5333, "value": 0.36 },
-					{
-						"time": 4.8667,
-						"value": 4.94,
-						"curve": [ 4.925, 4.94, 5.042, -2.38 ]
-					},
-					{ "time": 5.1, "value": -2.38 },
-					{ "time": 5.2667, "value": 3.65 },
-					{ "time": 5.4, "value": -3.04 },
-					{ "time": 5.5, "value": 1.49 },
-					{ "time": 5.6, "value": -1.86 },
-					{ "time": 5.7, "value": 0.42 }
-				]
-			},
-			"antenna2": {
-				"rotate": [
-					{},
-					{
-						"time": 0.3333,
-						"value": 1.05,
-						"curve": [ 0.731, 1.05, 1.008, -4.55 ]
-					},
-					{
-						"time": 1.2333,
-						"value": -4.55,
-						"curve": [ 1.35, -4.55, 1.583, 0.53 ]
-					},
-					{ "time": 1.7, "value": 0.53 },
-					{ "time": 2, "value": -2.13 },
-					{ "time": 2.2, "value": 4.71 },
-					{ "time": 2.3667, "value": -7.26 },
-					{ "time": 2.5667, "value": 2.26 },
-					{ "time": 2.7333, "value": -3.39 },
-					{ "time": 3.0667, "value": -5.53 },
-					{ "time": 3.2333, "value": 7.78 },
-					{ "time": 3.4667, "value": -5.99 },
-					{ "time": 3.7, "value": 3.11 },
-					{ "time": 3.9, "value": -3.05 },
-					{ "time": 4.1, "value": 0.31 },
-					{ "time": 4.3, "value": -3.06 },
-					{ "time": 4.5333, "value": 0.36 },
-					{
-						"time": 4.8667,
-						"value": 4.94,
-						"curve": [ 4.925, 4.94, 5.042, -2.38 ]
-					},
-					{ "time": 5.1, "value": -2.38 },
-					{ "time": 5.2667, "value": 3.65 },
-					{ "time": 5.4, "value": -3.04 },
-					{ "time": 5.5, "value": 1.49 },
-					{ "time": 5.6, "value": -1.86 },
-					{ "time": 5.7, "value": 0.42 }
-				]
-			},
-			"antenna3": {
-				"rotate": [
-					{},
-					{
-						"time": 0.3333,
-						"value": 1.05,
-						"curve": [ 0.731, 1.05, 1.008, -4.55 ]
-					},
-					{
-						"time": 1.2333,
-						"value": -4.55,
-						"curve": [ 1.35, -4.55, 1.583, 0.53 ]
-					},
-					{ "time": 1.7, "value": 0.53 },
-					{ "time": 2, "value": -2.13 },
-					{ "time": 2.2, "value": 4.71 },
-					{ "time": 2.3667, "value": -7.26 },
-					{ "time": 2.5667, "value": 2.26 },
-					{ "time": 2.7333, "value": -3.39 },
-					{ "time": 3.0667, "value": -5.53 },
-					{ "time": 3.2333, "value": 7.78 },
-					{ "time": 3.4667, "value": -5.99 },
-					{ "time": 3.7, "value": 3.11 },
-					{ "time": 3.9, "value": -3.05 },
-					{ "time": 4.1, "value": 0.31 },
-					{ "time": 4.3, "value": -3.06 },
-					{ "time": 4.5333, "value": 0.36 },
-					{
-						"time": 4.8667,
-						"value": 4.94,
-						"curve": [ 4.925, 4.94, 5.042, -2.38 ]
-					},
-					{ "time": 5.1, "value": -2.38 },
-					{ "time": 5.2667, "value": 3.65 },
-					{ "time": 5.4, "value": -3.04 },
-					{ "time": 5.5, "value": 1.49 },
-					{ "time": 5.6, "value": -1.86 },
-					{ "time": 5.7, "value": 0.42 }
-				]
-			},
-			"antenna4": {
-				"rotate": [
-					{},
-					{
-						"time": 0.3333,
-						"value": 1.05,
-						"curve": [ 0.731, 1.05, 1.008, -4.55 ]
-					},
-					{
-						"time": 1.2333,
-						"value": -4.55,
-						"curve": [ 1.35, -4.55, 1.583, 0.53 ]
-					},
-					{ "time": 1.7, "value": 0.53 },
-					{ "time": 2, "value": -2.13 },
-					{ "time": 2.2, "value": 4.71 },
-					{ "time": 2.3667, "value": -7.26 },
-					{ "time": 2.5667, "value": 2.26 },
-					{ "time": 2.7333, "value": -3.39 },
-					{ "time": 3.0667, "value": -5.53 },
-					{ "time": 3.2333, "value": 7.78 },
-					{ "time": 3.4667, "value": -5.99 },
-					{ "time": 3.7, "value": 3.11 },
-					{ "time": 3.9, "value": -3.05 },
-					{ "time": 4.1, "value": 0.31 },
-					{ "time": 4.3, "value": -3.06 },
-					{ "time": 4.5333, "value": 0.36 },
-					{
-						"time": 4.8667,
-						"value": 4.94,
-						"curve": [ 4.925, 4.94, 5.042, -2.38 ]
-					},
-					{ "time": 5.1, "value": -2.38 },
-					{ "time": 5.2667, "value": 3.65 },
-					{ "time": 5.4, "value": -3.04 },
-					{ "time": 5.5, "value": 1.49 },
-					{ "time": 5.6, "value": -1.86 },
-					{ "time": 5.7, "value": 0.42 }
-				]
-			},
-			"antenna5": {
-				"rotate": [
-					{},
-					{
-						"time": 0.3333,
-						"value": 1.05,
-						"curve": [ 0.731, 1.05, 1.008, -4.55 ]
-					},
-					{
-						"time": 1.2333,
-						"value": -4.55,
-						"curve": [ 1.35, -4.55, 1.583, 0.53 ]
-					},
-					{ "time": 1.7, "value": 0.53 },
-					{ "time": 2, "value": -2.13 },
-					{ "time": 2.2, "value": 4.71 },
-					{ "time": 2.3667, "value": -7.26 },
-					{ "time": 2.5667, "value": 2.26 },
-					{ "time": 2.7333, "value": -3.39 },
-					{ "time": 3.0667, "value": -5.53 },
-					{ "time": 3.2333, "value": 7.78 },
-					{ "time": 3.4667, "value": -5.99 },
-					{ "time": 3.7, "value": 3.11 },
-					{ "time": 3.9, "value": -3.05 },
-					{ "time": 4.1, "value": 0.31 },
-					{ "time": 4.3, "value": -3.06 },
-					{ "time": 4.5333, "value": 0.36 },
-					{
-						"time": 4.8667,
-						"value": 4.94,
-						"curve": [ 4.925, 4.94, 5.042, -2.38 ]
-					},
-					{ "time": 5.1, "value": -2.38 },
-					{ "time": 5.2667, "value": 3.65 },
-					{ "time": 5.4, "value": -3.04 },
-					{ "time": 5.5, "value": 1.49 },
-					{ "time": 5.6, "value": -1.86 },
-					{ "time": 5.7, "value": 0.42 }
-				]
-			},
-			"antenna6": {
-				"rotate": [
-					{},
-					{
-						"time": 0.3333,
-						"value": 1.05,
-						"curve": [ 0.731, 1.05, 1.008, -4.55 ]
-					},
-					{
-						"time": 1.2333,
-						"value": -4.55,
-						"curve": [ 1.35, -4.55, 1.583, 0.53 ]
-					},
-					{ "time": 1.7, "value": 0.53 },
-					{ "time": 2, "value": -2.13 },
-					{ "time": 2.2, "value": 4.71 },
-					{ "time": 2.3667, "value": -7.26 },
-					{ "time": 2.5667, "value": 2.26 },
-					{ "time": 2.7333, "value": -3.39 },
-					{ "time": 3.0667, "value": -5.53 },
-					{ "time": 3.2333, "value": 7.78 },
-					{ "time": 3.4667, "value": -5.99 },
-					{ "time": 3.7, "value": 3.11 },
-					{ "time": 3.9, "value": -3.05 },
-					{ "time": 4.1, "value": 0.31 },
-					{ "time": 4.3, "value": -3.06 },
-					{ "time": 4.5333, "value": 0.36 },
-					{
-						"time": 4.8667,
-						"value": 4.94,
-						"curve": [ 4.925, 4.94, 5.042, -2.38 ]
-					},
-					{ "time": 5.1, "value": -2.38 },
-					{ "time": 5.2667, "value": 3.65 },
-					{ "time": 5.4, "value": -3.04 },
-					{ "time": 5.5, "value": 1.49 },
-					{ "time": 5.6, "value": -1.86 },
-					{ "time": 5.7, "value": 0.42 }
-				]
-			},
-			"machinegun": {
-				"rotate": [
-					{ "value": 8.07, "curve": "stepped" },
-					{ "time": 2.0667, "value": 8.07 },
-					{ "time": 2.1667, "value": 3.11 },
-					{ "time": 2.5667, "value": -10.99, "curve": "stepped" },
-					{ "time": 3.1333, "value": -10.99 },
-					{ "time": 3.2667, "value": 18.18 },
-					{ "time": 3.4333, "value": 2.75, "curve": "stepped" },
-					{ "time": 4.7, "value": 2.75 },
-					{ "time": 4.9, "value": 8.07 }
-				]
-			}
-		},
-		"path": {
-			"treads-path": {
-				"position": [
-					{
-						"curve": [ 0.984, 0, 1.588, 0.1788 ]
-					},
-					{
-						"time": 2,
-						"value": 0.385,
-						"curve": [ 2.023, 0.3916, 2.045, 0.3983 ]
-					},
-					{ "time": 2.0667, "value": 0.405 },
-					{ "time": 2.3333, "value": 0.555 },
-					{ "time": 2.5, "value": 0.605 },
-					{ "time": 2.6667, "value": 0.685 },
-					{ "time": 2.8333, "value": 0.745 },
-					{ "time": 3, "value": 0.785 },
-					{ "time": 3.0667, "value": 0.8 },
-					{ "time": 3.1333, "value": 0.825 },
-					{ "time": 3.1667, "value": 0.835 },
-					{ "time": 3.2333, "value": 0.87 },
-					{
-						"time": 3.5,
-						"value": 0.98,
-						"curve": [ 3.726, 1.0474, 4.335, 1.4 ]
-					},
-					{ "time": 4.8333, "value": 1.4 }
-				]
-			}
-		}
-	},
-	"shoot": {
-		"slots": {
-			"rock": {
-				"attachment": [
-					{}
-				]
-			},
-			"smoke-glow": {
-				"rgba": [
-					{ "time": 0.1333, "color": "ffffffff" },
-					{ "time": 0.1667, "color": "ffbc8af4" },
-					{ "time": 0.2, "color": "fc8e8e90" },
-					{ "time": 0.2667, "color": "fa3e3e1e" }
-				],
-				"attachment": [
-					{ "time": 0.0667, "name": "smoke-glow" },
-					{ "time": 0.3 }
-				]
-			},
-			"smoke-puff1-bg": {
-				"rgba2": [
-					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
-					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.6, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 1.0333, "light": "ffd50c00", "dark": "604b3f" }
-				],
-				"attachment": [
-					{ "time": 0.0667, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg2": {
-				"rgba2": [
-					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
-					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.8333, "light": "ffd50c00", "dark": "604b3f" }
-				],
-				"attachment": [
-					{ "time": 0.1333, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg3": {
-				"rgba2": [
-					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
-					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.8333, "light": "ffd50c00", "dark": "604b3f" }
-				],
-				"attachment": [
-					{ "time": 0.1333, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg4": {
-				"rgba2": [
-					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
-					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.6, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.9, "light": "ffd50c00", "dark": "604b3f" }
-				],
-				"attachment": [
-					{ "time": 0.1333, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg5": {
-				"rgba2": [
-					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
-					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.6, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.9, "light": "ffd50c00", "dark": "604a3f" }
-				],
-				"attachment": [
-					{ "time": 0.1333, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg6": {
-				"rgba2": [
-					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
-					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.7, "light": "ffd50c00", "dark": "604b3f" }
-				],
-				"attachment": [
-					{ "time": 0.1333, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg7": {
-				"rgba2": [
-					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
-					{ "time": 0.3333, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.8333, "light": "ffd50c00", "dark": "604b3f" }
-				],
-				"attachment": [
-					{ "time": 0.1333, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg8": {
-				"rgba2": [
-					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
-					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.4333, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.9333, "light": "ffd50c00", "dark": "604b3f" }
-				],
-				"attachment": [
-					{ "time": 0.1333, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg9": {
-				"rgba2": [
-					{ "time": 0.1333, "light": "ffd50cff", "dark": "3b2c23" },
-					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.5333, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.8333, "light": "ffd50c00", "dark": "604b3f" }
-				],
-				"attachment": [
-					{ "time": 0.1333, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg10": {
-				"rgba2": [
-					{ "time": 0.1333, "light": "ffd50cff", "dark": "3b2c23" },
-					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.5333, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.8333, "light": "ffd50c00", "dark": "604a3f" }
-				],
-				"attachment": [
-					{ "time": 0.1333, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg11": {
-				"rgba2": [
-					{ "time": 0.1333, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.7667, "light": "ffd50c00", "dark": "604b3f" }
-				],
-				"attachment": [
-					{ "time": 0.3333, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg12": {
-				"rgba2": [
-					{ "time": 0.3333, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.6, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.8667, "light": "ffd50c00", "dark": "604a3f" }
-				],
-				"attachment": [
-					{ "time": 0.3667, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg13": {
-				"rgba2": [
-					{ "time": 0.3667, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 1, "light": "ffd50c00", "dark": "604b3f" }
-				],
-				"attachment": [
-					{ "time": 0.3667, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg14": {
-				"rgba2": [
-					{ "time": 0.4333, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.6, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 1.0667, "light": "ffd50c00", "dark": "604b3f" }
-				],
-				"attachment": [
-					{ "time": 0.4333, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg15": {
-				"rgba2": [
-					{ "time": 0.4, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.8333, "light": "ffd50c00", "dark": "604b3f" }
-				],
-				"attachment": [
-					{ "time": 0.4, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg16": {
-				"rgba2": [
-					{ "time": 0.4, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.7, "light": "ffd50c00", "dark": "604b3f" }
-				],
-				"attachment": [
-					{ "time": 0.4, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg17": {
-				"rgba2": [
-					{ "time": 0.2333, "light": "ffd50cff", "dark": "534035" },
-					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.4, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.6667, "light": "ffd50c00", "dark": "604b3f" }
-				],
-				"attachment": [
-					{ "time": 0.2333, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg18": {
-				"rgba2": [
-					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
-					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.5, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.8, "light": "ffd50c00", "dark": "604b3f" }
-				],
-				"attachment": [
-					{ "time": 0.2333, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg20": {
-				"rgba2": [
-					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
-					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.8, "light": "ffd50c00", "dark": "604b3f" }
-				],
-				"attachment": [
-					{ "time": 0.3333, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg21": {
-				"rgba2": [
-					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
-					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.7, "light": "ffd50c00", "dark": "604b3f" }
-				]
-			},
-			"smoke-puff1-bg22": {
-				"rgba2": [
-					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
-					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.7, "light": "ffd50c00", "dark": "604b3f" }
-				]
-			},
-			"smoke-puff1-bg23": {
-				"rgba2": [
-					{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
-					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.5, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.7667, "light": "ffd50c00", "dark": "604b3f" }
-				],
-				"attachment": [
-					{ "time": 0.3, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg24": {
-				"rgba2": [
-					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.7, "light": "ffd50c00", "dark": "604b3f" }
-				],
-				"attachment": [
-					{ "time": 0.3, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg25": {
-				"rgba2": [
-					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 1, "light": "ffd50c00", "dark": "604b3f" }
-				],
-				"attachment": [
-					{ "time": 0.3667, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg26": {
-				"rgba2": [
-					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.6, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.9333, "light": "ffd50c00", "dark": "604b3f" }
-				],
-				"attachment": [
-					{ "time": 0.3667, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-bg27": {
-				"rgba2": [
-					{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
-					{ "time": 0.7333, "light": "ffd50c00", "dark": "604b3f" }
-				],
-				"attachment": [
-					{ "time": 0.3667, "name": "smoke-puff01-bg" }
-				]
-			},
-			"smoke-puff1-fg": {
-				"rgba2": [
-					{ "time": 0.0667, "light": "ffdf31ff", "dark": "ff0000" },
-					{ "time": 0.1333, "light": "fde252ff", "dark": "ff0000" },
-					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
-					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
-					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.6, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 1.0333, "light": "ab764c00", "dark": "ac8d75" }
-				],
-				"attachment": [
-					{ "time": 0.0667, "name": "smoke-puff01-fg" },
-					{ "time": 0.1667, "name": "smoke-puff02-fg" },
-					{ "time": 0.2, "name": "smoke-puff03-fg" },
-					{ "time": 0.2333, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg2": {
-				"rgba2": [
-					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
-					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
-					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
-					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.8333, "light": "ab764c00", "dark": "ac8d75" }
-				],
-				"attachment": [
-					{ "time": 0.1333, "name": "smoke-puff01-fg" },
-					{ "time": 0.1667, "name": "smoke-puff02-fg" },
-					{ "time": 0.2, "name": "smoke-puff03-fg" },
-					{ "time": 0.2333, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg3": {
-				"rgba2": [
-					{ "time": 0.1333, "light": "ffe457ff", "dark": "ff0000" },
-					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
-					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
-					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.8333, "light": "ab764c00", "dark": "ac8d75" }
-				],
-				"attachment": [
-					{ "time": 0.1333, "name": "smoke-puff01-fg" },
-					{ "time": 0.1667, "name": "smoke-puff02-fg" },
-					{ "time": 0.2, "name": "smoke-puff03-fg" },
-					{ "time": 0.2667, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg4": {
-				"rgba2": [
-					{ "time": 0.1333, "light": "fae781ff", "dark": "ff0000" },
-					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
-					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
-					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.6, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.9, "light": "ac8c7500", "dark": "604a3f" }
-				],
-				"attachment": [
-					{ "time": 0.1333, "name": "smoke-puff01-fg" },
-					{ "time": 0.1667, "name": "smoke-puff02-fg" },
-					{ "time": 0.2, "name": "smoke-puff03-fg" },
-					{ "time": 0.2667, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg5": {
-				"rgba2": [
-					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
-					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
-					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
-					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.6, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.9, "light": "ab764c00", "dark": "ac8d75" }
-				],
-				"attachment": [
-					{ "time": 0.1333, "name": "smoke-puff01-fg" },
-					{ "time": 0.1667, "name": "smoke-puff02-fg" },
-					{ "time": 0.2, "name": "smoke-puff03-fg" },
-					{ "time": 0.2667, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg6": {
-				"rgba2": [
-					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
-					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
-					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
-					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.7, "light": "ab764c00", "dark": "ac8d75" }
-				],
-				"attachment": [
-					{ "time": 0.1333, "name": "smoke-puff01-fg" },
-					{ "time": 0.1667, "name": "smoke-puff02-fg" },
-					{ "time": 0.2, "name": "smoke-puff03-fg" },
-					{ "time": 0.2667, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg7": {
-				"rgba2": [
-					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
-					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
-					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
-					{ "time": 0.3333, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.8333, "light": "ac8c7500", "dark": "604a3f" }
-				],
-				"attachment": [
-					{ "time": 0.1333, "name": "smoke-puff01-fg" },
-					{ "time": 0.1667, "name": "smoke-puff02-fg" },
-					{ "time": 0.2, "name": "smoke-puff03-fg" },
-					{ "time": 0.2333, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg8": {
-				"rgba2": [
-					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
-					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
-					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
-					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.4333, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.9333, "light": "ab764c00", "dark": "ac8d75" }
-				],
-				"attachment": [
-					{ "time": 0.1333, "name": "smoke-puff01-fg" },
-					{ "time": 0.1667, "name": "smoke-puff02-fg" },
-					{ "time": 0.2, "name": "smoke-puff03-fg" },
-					{ "time": 0.2333, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg9": {
-				"rgba2": [
-					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
-					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
-					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
-					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.5333, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.8333, "light": "ab764c00", "dark": "ac8d75" }
-				],
-				"attachment": [
-					{ "time": 0.1333, "name": "smoke-puff01-fg" },
-					{ "time": 0.1667, "name": "smoke-puff02-fg" },
-					{ "time": 0.2, "name": "smoke-puff03-fg" },
-					{ "time": 0.2333, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg10": {
-				"rgba2": [
-					{ "time": 0.1333, "light": "fce35dff", "dark": "ff0000" },
-					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
-					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
-					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.5333, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.8333, "light": "ac8c7500", "dark": "604a3f" }
-				],
-				"attachment": [
-					{ "time": 0.1333, "name": "smoke-puff01-fg" },
-					{ "time": 0.1667, "name": "smoke-puff02-fg" },
-					{ "time": 0.2, "name": "smoke-puff03-fg" },
-					{ "time": 0.2667, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg11": {
-				"rgba2": [
-					{ "time": 0.3333, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.7667, "light": "ab764c00", "dark": "ac8d75" }
-				],
-				"attachment": [
-					{ "time": 0.3333, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg12": {
-				"rgba2": [
-					{ "time": 0.3667, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.6, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.8667, "light": "ac8c7500", "dark": "604a3f" }
-				],
-				"attachment": [
-					{ "time": 0.3667, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg13": {
-				"rgba2": [
-					{ "time": 0.3667, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 1, "light": "ab764c00", "dark": "ac8d75" }
-				],
-				"attachment": [
-					{ "time": 0.3667, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg14": {
-				"rgba2": [
-					{ "time": 0.4333, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.6, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 1.0667, "light": "ab764c00", "dark": "ac8d75" }
-				],
-				"attachment": [
-					{ "time": 0.4333, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg15": {
-				"rgba2": [
-					{ "time": 0.4, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.8333, "light": "ab764c00", "dark": "ac8d75" }
-				],
-				"attachment": [
-					{ "time": 0.4, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg16": {
-				"rgba2": [
-					{ "time": 0.4, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.7, "light": "ab764c00", "dark": "ac8d75" }
-				],
-				"attachment": [
-					{ "time": 0.4, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg17": {
-				"rgba2": [
-					{ "time": 0.2333, "light": "e3c05eff", "dark": "ab7e59" },
-					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.4, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.6667, "light": "ab764c00", "dark": "ac8d75" }
-				],
-				"attachment": [
-					{ "time": 0.2333, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg18": {
-				"rgba2": [
-					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
-					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
-					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
-					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.5, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.7667, "light": "ab764c00", "dark": "ac8d75" }
-				],
-				"attachment": [
-					{ "time": 0.2333, "name": "smoke-puff03-fg" },
-					{ "time": 0.2667, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg20": {
-				"rgba2": [
-					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
-					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
-					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
-					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.8, "light": "ab764c00", "dark": "ac8d75" }
-				],
-				"attachment": [
-					{ "time": 0.3333, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg21": {
-				"rgba2": [
-					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
-					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
-					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
-					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.7, "light": "ab764c00", "dark": "ac8d75" }
-				]
-			},
-			"smoke-puff1-fg22": {
-				"rgba2": [
-					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
-					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
-					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
-					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.7, "light": "ab764c00", "dark": "ac8d75" }
-				]
-			},
-			"smoke-puff1-fg23": {
-				"rgba2": [
-					{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
-					{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
-					{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
-					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.5, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.7667, "light": "ab764c00", "dark": "ac8d75" }
-				],
-				"attachment": [
-					{ "time": 0.3, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg24": {
-				"rgba2": [
-					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.7, "light": "ab764c00", "dark": "ac8d75" }
-				],
-				"attachment": [
-					{ "time": 0.3, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg25": {
-				"rgba2": [
-					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 1, "light": "ab764c00", "dark": "ac8d75" }
-				],
-				"attachment": [
-					{ "time": 0.3667, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg26": {
-				"rgba2": [
-					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.6, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.9333, "light": "ab764c00", "dark": "ac8d75" }
-				],
-				"attachment": [
-					{ "time": 0.3667, "name": "smoke-puff04-fg" }
-				]
-			},
-			"smoke-puff1-fg27": {
-				"rgba2": [
-					{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
-					{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
-					{ "time": 0.7333, "light": "ab764c00", "dark": "ac8d75" }
-				],
-				"attachment": [
-					{ "time": 0.3667, "name": "smoke-puff04-fg" }
-				]
-			},
-			"tank-glow": {
-				"rgba": [
-					{ "time": 0.0667, "color": "fc994d84" },
-					{
-						"time": 0.1333,
-						"color": "f5b16bc8",
-						"curve": [ 0.221, 0.96, 0.252, 0.98, 0.221, 0.69, 0.252, 0.62, 0.221, 0.42, 0.252, 0.33, 0.221, 0.78, 0.252, 0.32 ]
-					},
-					{ "time": 0.2667, "color": "fc994c30" }
-				],
-				"attachment": [
-					{ "time": 0.0667, "name": "smoke-glow" },
-					{ "time": 0.2667 }
-				]
-			}
-		},
-		"bones": {
-			"cannon": {
-				"translate": [
-					{ "time": 0.0667 },
-					{ "time": 0.1667, "x": 34.77, "y": 0.9 },
-					{ "time": 0.2667, "x": 1.3 }
-				]
-			},
-			"tank-body": {
-				"rotate": [
-					{ "time": 0.0667 },
-					{
-						"time": 0.1667,
-						"value": -4.29,
-						"curve": [ 0.2, -4.29, 0.267, 2.37 ]
-					},
-					{
-						"time": 0.3,
-						"value": 2.37,
-						"curve": [ 0.333, 2.37, 0.4, 0 ]
-					},
-					{ "time": 0.4333 }
-				],
-				"translate": [
-					{ "time": 0.0667 },
-					{
-						"time": 0.1667,
-						"x": 31.04,
-						"y": 1.67,
-						"curve": [ 0.2, 31.04, 0.267, -12.05, 0.2, 1.67, 0.267, -0.23 ]
-					},
-					{ "time": 0.3, "x": -12.05, "y": -0.23 },
-					{ "time": 0.3667 }
-				]
-			},
-			"tank-treads": {
-				"rotate": [
-					{ "time": 0.0667 },
-					{ "time": 0.1667, "value": -3.08 },
-					{ "time": 0.3, "value": -0.42 }
-				]
-			},
-			"smoke1": {
-				"rotate": [
-					{ "time": 0.0667 },
-					{ "time": 0.1333, "value": 2.88 },
-					{ "time": 0.1667, "value": 2.34 },
-					{ "time": 0.2, "value": 124.36 },
-					{ "time": 0.2667, "value": 142.26 },
-					{ "time": 0.3333, "value": 86.78 },
-					{ "time": 0.4667, "value": 128.79 },
-					{ "time": 0.6333, "value": 146.22 },
-					{ "time": 1.0333, "value": 210.7 }
-				],
-				"translate": [
-					{ "time": 0.0667, "x": -9.69, "y": 1.05 },
-					{ "time": 0.1333, "x": 7.53, "y": 1.21 },
-					{ "time": 0.1667, "x": 3.26, "y": 4.07 },
-					{ "time": 0.2, "x": 29.64, "y": -17.46 },
-					{ "time": 0.2667, "x": 86.97, "y": 17.83 },
-					{ "time": 0.3333, "x": 193.74, "y": -38.98 },
-					{ "time": 0.4, "x": 341.67, "y": -39.52 },
-					{ "time": 0.6333, "x": 393.24, "y": -4.01 },
-					{ "time": 1.0333, "x": 410.76, "y": 6.35 }
-				],
-				"scale": [
-					{ "time": 0.0667 },
-					{ "time": 0.1333, "x": 3.171, "y": 0.756 },
-					{ "time": 0.1667, "x": 3.488, "y": 1.279 },
-					{ "time": 0.2, "x": 5.151, "y": 2.369 },
-					{ "time": 0.2667, "x": 4.735, "y": 3.622 },
-					{ "time": 0.3, "x": 4.735, "y": 4.019 },
-					{ "time": 0.3333, "x": 4.613, "y": 3.339 },
-					{ "time": 0.3667, "x": 4.918, "y": 3.561 },
-					{ "time": 0.4, "x": 4.6, "y": 4.263 },
-					{ "time": 0.6333, "x": 4.449, "y": 2.62 },
-					{ "time": 1.0333, "x": 3.09, "y": 1.447 }
-				]
-			},
-			"smoke2": {
-				"rotate": [
-					{ "time": 0.1667, "value": 31.55 },
-					{ "time": 0.3, "value": -22.63 },
-					{ "time": 0.4667, "value": 142.89 },
-					{ "time": 0.6, "value": 253.78 },
-					{ "time": 0.8333, "value": 299.28 }
-				],
-				"translate": [
-					{ "time": 0.1667, "x": 17.26, "y": 4.86 },
-					{ "time": 0.2333, "x": 141.22, "y": 27.27 },
-					{ "time": 0.3, "x": 178.86, "y": 56.63 },
-					{ "time": 0.3667, "x": 200.46, "y": 71.05 },
-					{ "time": 0.4333, "x": 213.12, "y": 78.39 },
-					{ "time": 0.6333, "x": 221.44, "y": 73.1 },
-					{ "time": 0.8333, "x": 223.32, "y": 73.74 }
-				],
-				"scale": [
-					{ "time": 0.1667, "x": 1.34, "y": 1.34 },
-					{ "time": 0.2333, "x": 2.81, "y": 1.317 },
-					{ "time": 0.3, "x": 2.932, "y": 1.374 },
-					{ "time": 0.4667, "x": 1.247, "y": 0.639 },
-					{ "time": 0.8333, "x": 0.778, "y": 0.515 }
-				]
-			},
-			"smoke3": {
-				"rotate": [
-					{ "time": 0.1667, "value": -5.54 },
-					{ "time": 0.2333, "value": 0.2 },
-					{ "time": 0.3333, "value": 20.27 },
-					{ "time": 0.4, "value": 31.36 },
-					{ "time": 0.4667, "value": 68.52 },
-					{ "time": 0.5333, "value": 99.74 },
-					{ "time": 0.6333, "value": 145.8 },
-					{ "time": 0.8333, "value": 193.28 }
-				],
-				"translate": [
-					{ "time": 0.1333, "x": 1.17, "y": 8.53 },
-					{ "time": 0.1667, "x": 37.53, "y": 4.84 },
-					{ "time": 0.2, "x": 67.99, "y": 9.85 },
-					{ "time": 0.2333, "x": 134.14, "y": -13.5 },
-					{ "time": 0.2667, "x": 181.31, "y": -19.93 },
-					{ "time": 0.3, "x": 238.28, "y": -8.82 },
-					{ "time": 0.3333, "x": 268.51, "y": -25.75 },
-					{ "time": 0.3667, "x": 359.06, "y": -28.49 },
-					{ "time": 0.4, "x": 432.96, "y": -24.11 },
-					{ "time": 0.4667, "x": 452.16, "y": -16.73 },
-					{ "time": 0.6333, "x": 456.28, "y": -0.41 },
-					{ "time": 0.8333, "x": 454.14, "y": 16.41 }
-				],
-				"scale": [
-					{ "time": 0.1333, "x": 2.258, "y": 1.366 },
-					{ "time": 0.1667, "x": 2.656, "y": 1.47 },
-					{ "time": 0.2, "x": 3.202, "y": 1.772 },
-					{ "time": 0.2333, "x": 3.202, "y": 1.93 },
-					{ "time": 0.2667, "x": 3.124, "y": 1.896 },
-					{ "time": 0.3, "x": 3.593, "y": 1.896 },
-					{ "time": 0.3333, "x": 2.363, "y": 1.247 },
-					{ "time": 0.3667, "x": 1.845, "y": 0.973 },
-					{ "time": 0.4, "x": 1.754, "y": 0.926 },
-					{ "time": 0.4333, "x": 1.448, "y": 0.695 },
-					{ "time": 0.4667, "x": 1.441, "y": 0.688 },
-					{ "time": 0.5333, "x": 0.865, "y": 0.456 },
-					{ "time": 0.7, "x": 0.86, "y": 0.454 },
-					{ "time": 0.8333, "x": 0.211, "y": 0.111 }
-				]
-			},
-			"smoke4": {
-				"rotate": [
-					{ "time": 0.1667, "value": -20.35 },
-					{ "time": 0.2333, "value": 18.5 },
-					{ "time": 0.3, "value": 57.77 },
-					{ "time": 0.4, "value": 105.85 },
-					{ "time": 0.6, "value": 161.28 },
-					{ "time": 0.9, "value": 208.43 }
-				],
-				"translate": [
-					{ "time": 0.1667, "x": 35.95, "y": 25.54 },
-					{ "time": 0.2333, "x": 34.17, "y": 1.87 },
-					{ "time": 0.3, "x": 136.7, "y": 21.5 },
-					{ "time": 0.4, "x": 138.61, "y": 34.8 },
-					{ "time": 0.6, "x": 160.38, "y": 37.13 },
-					{ "time": 0.9, "x": 196.41, "y": 30.36 }
-				],
-				"scale": [
-					{ "time": 0.1667, "x": 2.751, "y": 1.754 },
-					{ "time": 0.2333, "x": 3.486, "y": 2.224 },
-					{ "time": 0.2667, "x": 3.486, "y": 2.586 },
-					{ "time": 0.3, "x": 3.847, "y": 2.109 },
-					{ "time": 0.4, "x": 1.96, "y": 1.074 },
-					{ "time": 0.9, "x": 0.825, "y": 0.452 }
-				]
-			},
-			"smoke5": {
-				"rotate": [
-					{ "time": 0.2, "value": 23.09 },
-					{ "time": 0.2667, "value": 12.24 },
-					{ "time": 0.3333, "value": 36.92 },
-					{ "time": 0.4333, "value": -37.33 },
-					{ "time": 0.5333, "value": -0.66 },
-					{ "time": 0.9, "value": 64.02 }
-				],
-				"translate": [
-					{ "time": 0.1333 },
-					{ "time": 0.2333, "x": 123.76, "y": 19.44 },
-					{ "time": 0.3, "x": 239.08, "y": -49.72 },
-					{ "time": 0.3667, "x": 280.23, "y": -51.46 },
-					{ "time": 0.7, "x": 340.62, "y": -20.09 },
-					{ "time": 0.9, "x": 349.18, "y": -5.25 }
-				],
-				"scale": [
-					{ "time": 0.1333 },
-					{ "time": 0.1667, "x": 1.718, "y": 1.718 },
-					{ "time": 0.2, "x": 2.109, "y": 2.109 },
-					{ "time": 0.2333, "x": 1.781, "y": 2.183 },
-					{ "time": 0.2667, "x": 2.148, "y": 2.633 },
-					{ "time": 0.3333, "x": 2.234, "y": 2.738 },
-					{ "time": 0.3667, "x": 1.366, "y": 2.148 },
-					{ "time": 0.4, "x": 0.97, "y": 1.524 },
-					{ "time": 0.4333, "x": 1.078, "y": 1.157 },
-					{ "time": 0.4667, "x": 1.126, "y": 1.005 },
-					{ "time": 0.7, "x": 1.241, "y": 1.301 },
-					{ "time": 0.9, "x": 0.709, "y": 0.893 }
-				]
-			},
-			"smoke6": {
-				"rotate": [
-					{ "time": 0.1667, "value": -37.43 },
-					{ "time": 0.2333, "value": -18.36 },
-					{ "time": 0.3333, "value": 28.58 },
-					{ "time": 0.4, "value": 150.54 },
-					{ "time": 0.7, "value": 301.59 }
-				],
-				"translate": [
-					{ "time": 0.1333 },
-					{ "time": 0.2, "x": 68.04, "y": 16.15 },
-					{ "time": 0.2667, "x": 214.52, "y": 13.25 },
-					{ "time": 0.3333, "x": 285.4, "y": 17.95 },
-					{ "time": 0.4, "x": 202.91, "y": 101.43 },
-					{ "time": 0.4667, "x": 189.25, "y": 116.39 },
-					{ "time": 0.7, "x": 182.77, "y": 137.4 }
-				],
-				"scale": [
-					{ "time": 0.1333 },
-					{ "time": 0.1667, "x": 1.152, "y": 1.288 },
-					{ "time": 0.2, "x": 1.939, "y": 2.168 },
-					{ "time": 0.2333, "x": 2.278, "y": 2.223 },
-					{ "time": 0.2667, "x": 2.023, "y": 1.974 },
-					{ "time": 0.3, "x": 2.644, "y": 1.974 },
-					{ "time": 0.4, "x": 1.539, "y": 1.425 },
-					{ "time": 0.4667, "x": 1.14, "y": 0.939 },
-					{ "time": 0.7, "x": 0.215, "y": 0.161 }
-				]
-			},
-			"smoke7": {
-				"rotate": [
-					{ "time": 0.1667, "value": -243.11 },
-					{ "time": 0.4, "value": -182.02 },
-					{ "time": 0.8333, "value": -83.02 }
-				],
-				"translate": [
-					{ "time": 0.1333, "x": 3.19, "y": -6.53 },
-					{ "time": 0.1667, "x": 44.54, "y": 1.12 },
-					{ "time": 0.2, "x": 65.84, "y": 6.02 },
-					{ "time": 0.2333, "x": 173.84, "y": 97.51 },
-					{ "time": 0.4, "x": 167.39, "y": 74.58 },
-					{ "time": 0.8333, "x": 227.77, "y": 84.64 }
-				],
-				"scale": [
-					{ "time": 0.1333, "x": 0.878, "y": 0.878 },
-					{ "time": 0.1667, "x": 1.235, "y": 1.235 },
-					{ "time": 0.2, "x": 1.461, "y": 1.461 },
-					{ "time": 0.2333, "x": 1.114, "y": 1.114 },
-					{ "time": 0.3333, "x": 1.067, "y": 1.067 },
-					{ "time": 0.4667, "x": 0.81, "y": 0.753 },
-					{ "time": 0.8333, "x": 0.52, "y": 0.484 }
-				]
-			},
-			"smoke8": {
-				"rotate": [
-					{ "time": 0.1667, "value": -156.52 },
-					{ "time": 0.2667, "value": -154.05 },
-					{ "time": 0.3333, "value": -108.35 },
-					{ "time": 0.6, "value": -93.14 },
-					{ "time": 0.9333, "value": -70.89 }
-				],
-				"translate": [
-					{ "time": 0.1667, "x": 20.72, "y": 0.25 },
-					{ "time": 0.2333, "x": 46.1, "y": -10.06 },
-					{ "time": 0.3, "x": 149.77, "y": 0.92 },
-					{ "time": 0.3667, "x": 241.21, "y": 49.01 },
-					{ "time": 0.5333, "x": 276, "y": 58.76 },
-					{ "time": 0.7, "x": 292.02, "y": 65.91 },
-					{ "time": 0.9333, "x": 308.7, "y": 69.51 }
-				],
-				"scale": [
-					{ "time": 0.1333, "y": 1.174 },
-					{ "time": 0.1667, "x": 1.813, "y": 1.438 },
-					{ "time": 0.2, "x": 1.813, "y": 1.878 },
-					{ "time": 0.2333, "x": 1.211, "y": 1.878 },
-					{ "time": 0.2667, "x": 1.584, "y": 1.596 },
-					{ "time": 0.3, "x": 1.958, "y": 1.878 },
-					{ "time": 0.4667, "x": 1.139, "y": 0.958 },
-					{ "time": 0.9333, "x": 0.839, "y": 0.591 }
-				]
-			},
-			"smoke9": {
-				"rotate": [
-					{ "time": 0.1333, "value": -44.34 },
-					{ "time": 0.1667, "value": 14.73 },
-					{ "time": 0.2333, "value": 116.07 },
-					{ "time": 0.2667, "value": 118.29 },
-					{ "time": 0.3333, "value": 148.13 },
-					{ "time": 0.3667, "value": 172.74 },
-					{ "time": 0.4, "value": 235.69 },
-					{ "time": 0.4333, "value": 283.36 },
-					{ "time": 0.7667, "value": 358.76 }
-				],
-				"translate": [
-					{ "time": 0.1333, "x": -3.49, "y": 0.04 },
-					{ "time": 0.2, "x": 87.4, "y": -7.97 },
-					{ "time": 0.2667, "x": 233.69, "y": -33.86 },
-					{ "time": 0.3333, "x": 296.44, "y": -30.87 },
-					{ "time": 0.4, "x": 390.8, "y": 4 },
-					{ "time": 0.4667, "x": 391.42, "y": 13.17 },
-					{ "time": 0.6333, "x": 413.3, "y": 36.13 },
-					{ "time": 0.7667, "x": 408.59, "y": 40.75 }
-				],
-				"scale": [
-					{ "time": 0.1333, "x": 1.289, "y": 1.501 },
-					{ "time": 0.2, "x": 1.751, "y": 2.039 },
-					{ "time": 0.2667, "x": 2.064, "y": 2.347 },
-					{ "time": 0.3333, "x": 1.822, "y": 2.072 },
-					{ "time": 0.4, "x": 1.296, "y": 1.045 },
-					{ "time": 0.4667, "x": 1.872, "y": 1.526 },
-					{ "time": 0.6333, "x": 1.181, "y": 1.037 },
-					{ "time": 0.7667, "x": 0.716, "y": 0.615 }
-				]
-			},
-			"smoke10": {
-				"rotate": [
-					{ "time": 0.1333, "value": 12.16 },
-					{ "time": 0.2, "value": 49.19 },
-					{ "time": 0.2667, "value": 33.17 },
-					{ "time": 0.3333, "value": 42.23 },
-					{ "time": 0.4, "value": 11.69 },
-					{ "time": 0.4667, "value": 41.83 },
-					{ "time": 0.5333, "value": 54.86 },
-					{ "time": 0.6333, "value": 75.25 },
-					{ "time": 0.8333, "value": 126.4 }
-				],
-				"translate": [
-					{ "time": 0.1333, "x": 7.74, "y": 10.25 },
-					{ "time": 0.2, "x": 42.9, "y": 72.89 },
-					{ "time": 0.2667, "x": 221.58, "y": 82.27 },
-					{ "time": 0.3333, "x": 297.31, "y": 85.39 },
-					{ "time": 0.4, "x": 322.91, "y": 81.04 },
-					{ "time": 0.4667, "x": 346.62, "y": 76.68 },
-					{ "time": 0.6667, "x": 377.46, "y": 81.85 },
-					{ "time": 0.8333, "x": 402.18, "y": 101.03 }
-				],
-				"scale": [
-					{ "time": 0.1333, "x": 0.537, "y": 1.062 },
-					{ "time": 0.1667, "x": 1.042, "y": 0.841 },
-					{ "time": 0.2, "x": 1.937, "y": 1.563 },
-					{ "time": 0.2333, "x": 1.937, "y": 2.176 },
-					{ "time": 0.2667, "x": 2.254, "y": 2.532 },
-					{ "time": 0.3, "x": 2.24, "y": 2.516 },
-					{ "time": 0.5333, "x": 1.731, "y": 1.882 },
-					{ "time": 0.8333, "x": 0.855, "y": 0.867 }
-				]
-			},
-			"smoke-glow": {
-				"translate": [
-					{ "time": 0.0667, "x": -57.08, "y": 0.01 },
-					{ "time": 0.1, "x": -49.68, "y": -1.46 },
-					{ "time": 0.1333, "x": 6.3, "y": -2.92 },
-					{ "time": 0.1667, "x": 31.57, "y": 0.44 },
-					{ "time": 0.2, "x": 34.04, "y": 0.27 },
-					{ "time": 0.2333, "x": 109.29, "y": 1.02 },
-					{ "time": 0.4, "x": 119.89, "y": 1.01 },
-					{ "time": 0.4333, "x": 135.2, "y": 1.03 },
-					{ "time": 0.4667, "x": 152.86, "y": 1.06 },
-					{ "time": 0.5333, "x": 164.64, "y": 1.07 },
-					{ "time": 0.6, "x": 179.94, "y": 1.09 },
-					{ "time": 0.6333, "x": 190.54, "y": 1.1 }
-				],
-				"scale": [
-					{ "time": 0.0667, "x": 0.233, "y": 0.233 },
-					{ "time": 0.1, "x": 0.42, "y": 0.288 },
-					{ "time": 0.1333, "x": 1.669, "y": 1.072 },
-					{ "time": 0.1667, "x": 1.669, "y": 1.785, "curve": "stepped" },
-					{ "time": 0.2, "x": 1.669, "y": 1.785 },
-					{ "time": 0.2333, "x": 2.544, "y": 1.785 },
-					{ "time": 0.4333, "x": 3.48, "y": 2.22 },
-					{ "time": 0.4667, "x": 4.337, "y": 2.655 }
-				]
-			},
-			"smoke11": {
-				"rotate": [
-					{ "time": 0.4, "value": 47.07 },
-					{ "time": 0.4333, "value": 109.71 },
-					{ "time": 0.4667, "value": 164.62 },
-					{ "time": 0.8333, "value": 276.93 }
-				],
-				"translate": [
-					{ "time": 0.3333, "x": 280.31, "y": 126.85 },
-					{ "time": 0.4, "x": 296.27, "y": 125.62 },
-					{ "time": 0.4667, "x": 312.45, "y": 131.57 },
-					{ "time": 0.6667, "x": 310.5, "y": 149.67 },
-					{ "time": 0.8333, "x": 307.08, "y": 153.94 }
-				],
-				"scale": [
-					{ "time": 0.3333, "x": 1.491, "y": 1.491 },
-					{ "time": 0.4667, "x": 1.144, "y": 0.948 },
-					{ "time": 0.5667, "x": 0.491, "y": 0.491 },
-					{ "time": 0.8333, "x": 0.985, "y": 0.91 }
-				]
-			},
-			"smoke12": {
-				"rotate": [
-					{ "time": 0.3667, "value": -37.96 },
-					{ "time": 0.4333, "value": 28.55 },
-					{ "time": 0.5333, "value": 108.53 },
-					{ "time": 0.8667, "value": 191.85 }
-				],
-				"translate": [
-					{ "time": 0.3667, "x": 390.22, "y": -1.06 },
-					{ "time": 0.4333, "x": 411.78, "y": 26.39 },
-					{ "time": 0.5333, "x": 428.12, "y": 56.28 },
-					{ "time": 0.8667, "x": 444.34, "y": 68.06 }
-				],
-				"scale": [
-					{ "time": 0.3667, "x": 2.006, "y": 1.821 },
-					{ "time": 0.5333, "x": 1.719, "y": 1.293 },
-					{ "time": 0.7333, "x": 1.562, "y": 1.304 },
-					{ "time": 0.8667, "x": 0.727, "y": 0.637 }
-				]
-			},
-			"smoke13": {
-				"rotate": [
-					{ "time": 0.3667, "value": 305.8 },
-					{ "time": 0.4, "value": 478.49 },
-					{ "time": 0.4333, "value": 537.45 },
-					{ "time": 0.4667, "value": 573.84 },
-					{ "time": 0.5333, "value": 596.4 },
-					{ "time": 0.7, "value": 622.3 },
-					{ "time": 1, "value": 657.95 }
-				],
-				"translate": [
-					{ "time": 0.3667, "x": 331.84, "y": -25.82 },
-					{ "time": 0.4, "x": 417.88, "y": -42.62 },
-					{ "time": 0.4667, "x": 451.61, "y": -42.21 },
-					{ "time": 0.5333, "x": 453.81, "y": -37.03 },
-					{ "time": 0.6, "x": 451.86, "y": -31.89 },
-					{ "time": 0.7, "x": 453.37, "y": -27.28 },
-					{ "time": 1, "x": 454.04, "y": -17.89 }
-				],
-				"scale": [
-					{ "time": 0.3667, "x": 4.509, "y": 3.114 },
-					{ "time": 0.4, "x": 3.673, "y": 2.537 },
-					{ "time": 0.4333, "x": 4.201, "y": 2.638 },
-					{ "time": 0.4667, "x": 4.27, "y": 2.399 },
-					{ "time": 0.6, "x": 2.798, "y": 1.932 },
-					{ "time": 0.8333, "x": 2.316, "y": 1.599 },
-					{ "time": 1, "x": 1.081, "y": 0.746 }
-				]
-			},
-			"smoke14": {
-				"rotate": [
-					{ "time": 0.4333, "value": 271.03 },
-					{ "time": 0.7, "value": 299.97 },
-					{ "time": 1.0667, "value": 331.16 }
-				],
-				"translate": [
-					{ "time": 0.4333, "x": 371.68, "y": -29.8 },
-					{ "time": 0.7667, "x": 400.59, "y": -44.36 },
-					{ "time": 1.0667, "x": 432.26, "y": -44.79 }
-				],
-				"scale": [
-					{ "time": 0.4333, "x": 4.011, "y": 3.366 },
-					{ "time": 0.7667, "x": 2.071, "y": 1.624 },
-					{ "time": 1.0667, "x": 1.798, "y": 1.111 }
-				]
-			},
-			"smoke15": {
-				"rotate": [
-					{ "time": 0.4, "value": 111.75 },
-					{ "time": 0.4667, "value": 171.93 },
-					{ "time": 0.6, "value": 256.95 },
-					{ "time": 0.8333, "value": 299.15 }
-				],
-				"translate": [
-					{ "time": 0.4, "x": 266.71, "y": -53.04 },
-					{ "time": 0.4333, "x": 290.84, "y": -51.43 },
-					{ "time": 0.5333, "x": 305.65, "y": -44.32 },
-					{ "time": 0.6667, "x": 318.96, "y": -38.95 },
-					{ "time": 0.8333, "x": 342.65, "y": -27.33 }
-				],
-				"scale": [
-					{ "time": 0.4, "x": 2.749, "y": 2.095 },
-					{ "time": 0.4333, "x": 3.302, "y": 2.289 },
-					{ "time": 0.4667, "x": 2.591, "y": 1.895 },
-					{ "time": 0.5333, "x": 1.777, "y": 1.354 },
-					{ "time": 0.7, "x": 1.932, "y": 1.267 },
-					{ "time": 0.8333, "x": 1.002, "y": 1.546 }
-				]
-			},
-			"smoke16": {
-				"rotate": [
-					{ "time": 0.4, "value": 89.78 },
-					{ "time": 0.4667, "value": 137.83 },
-					{ "time": 0.5333, "value": 193.49 },
-					{ "time": 0.6, "value": 235.26 },
-					{ "time": 0.6333, "value": 286.8 }
-				],
-				"translate": [
-					{ "time": 0.4, "x": 217.23, "y": -21.45 },
-					{ "time": 0.4667, "x": 249.95, "y": -13.73 },
-					{ "time": 0.5333, "x": 264.96, "y": -9.87 },
-					{ "time": 0.6, "x": 278.95, "y": 6.37 },
-					{ "time": 0.6333, "x": 245.65, "y": 11.77 }
-				],
-				"scale": [
-					{ "time": 0.4, "x": 2.265, "y": 1.859 },
-					{ "time": 0.4333, "x": 2.621, "y": 1.955 },
-					{ "time": 0.4667, "x": 1.953, "y": 1.538 },
-					{ "time": 0.6, "x": 1.005, "y": 0.825 },
-					{ "time": 0.6333, "x": 0.387, "y": 0.318 }
-				]
-			},
-			"smoke17": {
-				"rotate": [
-					{ "time": 0.2333, "value": 99.02 },
-					{ "time": 0.3, "value": 58.06 },
-					{ "time": 0.3333, "value": 34.05 },
-					{ "time": 0.3667, "value": -17.34 },
-					{ "time": 0.6667, "value": -62.36 }
-				],
-				"translate": [
-					{ "time": 0.2333, "x": 18.91, "y": -62.91 },
-					{ "time": 0.3, "x": 2.43, "y": -61.54 },
-					{ "time": 0.3333, "x": 1.89, "y": -36.55 },
-					{ "time": 0.3667, "x": 6.97, "y": -29.52 },
-					{ "time": 0.4333, "x": 10.78, "y": -20.55 },
-					{ "time": 0.6667, "x": 18.65, "y": -13.19 }
-				],
-				"scale": [
-					{ "time": 0.2333, "x": 1.915, "y": 1.915 },
-					{ "time": 0.3, "x": 1.509, "y": 1.509 },
-					{ "time": 0.3333, "x": 1.01, "y": 1.01 },
-					{ "time": 0.3667, "x": 0.715, "y": 0.715 },
-					{ "time": 0.4333, "x": 0.949, "y": 0.721 },
-					{ "time": 0.5667, "x": 0.785, "y": 0.74 }
-				]
-			},
-			"smoke18": {
-				"rotate": [
-					{ "time": 0.2333, "value": 141.75 },
-					{ "time": 0.2667, "value": 134.51 },
-					{ "time": 0.3333, "value": 249.12 },
-					{ "time": 0.5, "value": 363.82 },
-					{ "time": 0.7333, "value": 450.54 }
-				],
-				"translate": [
-					{ "time": 0.2333, "x": 60.81, "y": 56.17 },
-					{ "time": 0.2667, "x": 68.74, "y": 69.4 },
-					{ "time": 0.3333, "x": 76.85, "y": 69.07 },
-					{ "time": 0.5, "x": 101.49, "y": 89.87 },
-					{ "time": 0.7333, "x": 118.58, "y": 101.16 }
-				],
-				"scale": [
-					{ "time": 0.2333, "x": 2.288, "y": 2.288 },
-					{ "time": 0.2667, "x": 2.288, "y": 1.628 },
-					{ "time": 0.3, "x": 1.524, "y": 1.308 },
-					{ "time": 0.5, "x": 1.757, "y": 1.385 },
-					{ "time": 0.5333, "x": 2.08, "y": 1.51 },
-					{ "time": 0.7333, "x": 1.405, "y": 0.896 }
-				]
-			},
-			"smoke20": {
-				"rotate": [
-					{ "time": 0.3333, "value": 95.16 },
-					{ "time": 0.3667, "value": 130.42 },
-					{ "time": 0.4, "value": 170.7 },
-					{ "time": 0.4333, "value": 266.75 },
-					{ "time": 0.4667, "value": 299.82 },
-					{ "time": 0.5333, "value": 326.88 },
-					{ "time": 0.6, "value": 350.8 },
-					{ "time": 0.9, "value": 403.14 }
-				],
-				"translate": [
-					{ "time": 0.3333, "x": 124.61, "y": -46.55 },
-					{ "time": 0.5333, "x": 173.8, "y": -36.62 },
-					{ "time": 0.7, "x": 186.5, "y": -35.41 },
-					{ "time": 0.9, "x": 188.56, "y": -37.75 }
-				],
-				"scale": [
-					{ "time": 0.3333, "x": 3.346, "y": 2.654 },
-					{ "time": 0.3667, "x": 2.661, "y": 2.111 },
-					{ "time": 0.4333, "x": 2.751, "y": 1.984 },
-					{ "time": 0.4667, "x": 3.059, "y": 2.21 },
-					{ "time": 0.5333, "x": 2.159, "y": 1.712 },
-					{ "time": 0.7, "x": 1.601, "y": 1.27 },
-					{ "time": 0.9, "x": 1.679, "y": 0.856 }
-				]
-			},
-			"smoke23": {
-				"rotate": [
-					{ "time": 0.3, "value": 115.12 },
-					{ "time": 0.3667, "value": 79.01 },
-					{ "time": 0.7667, "value": 6.96 }
-				],
-				"translate": [
-					{ "time": 0.3, "x": 75.15, "y": -50.92 },
-					{ "time": 0.3667, "x": 59.33, "y": -53.52 },
-					{ "time": 0.7667, "x": 39.68, "y": -48.64 }
-				],
-				"scale": [
-					{ "time": 0.3, "x": 3.331, "y": 2.096 },
-					{ "time": 0.4333, "x": 2.4, "y": 2.006 },
-					{ "time": 0.5, "x": 2.555, "y": 2.094 },
-					{ "time": 0.7667, "x": 1.35, "y": 1.241 }
-				]
-			},
-			"antenna1": {
-				"rotate": [
-					{ "time": 0.0667 },
-					{ "time": 0.2, "value": 11.78 },
-					{ "time": 0.3, "value": -9.52 },
-					{ "time": 0.4, "value": 8.07 },
-					{ "time": 0.5, "value": -4.45 },
-					{ "time": 0.6, "value": 1.54 },
-					{ "time": 0.7, "value": -0.34 }
-				]
-			},
-			"antenna2": {
-				"rotate": [
-					{ "time": 0.0667 },
-					{ "time": 0.2, "value": 11.78 },
-					{ "time": 0.3, "value": -9.52 },
-					{ "time": 0.4, "value": 8.07 },
-					{ "time": 0.5, "value": -4.45 },
-					{ "time": 0.6, "value": 1.54 },
-					{ "time": 0.7, "value": -0.34 }
-				]
-			},
-			"antenna3": {
-				"rotate": [
-					{ "time": 0.0667 },
-					{ "time": 0.2, "value": 11.78 },
-					{ "time": 0.3, "value": -9.52 },
-					{ "time": 0.4, "value": 8.07 },
-					{ "time": 0.5, "value": -4.45 },
-					{ "time": 0.6, "value": 1.54 },
-					{ "time": 0.7, "value": -0.34 }
-				]
-			},
-			"antenna4": {
-				"rotate": [
-					{ "time": 0.0667 },
-					{ "time": 0.2, "value": 11.78 },
-					{ "time": 0.3, "value": -9.52 },
-					{ "time": 0.4, "value": 8.07 },
-					{ "time": 0.5, "value": -4.45 },
-					{ "time": 0.6, "value": 1.54 },
-					{ "time": 0.7, "value": -0.34 }
-				]
-			},
-			"antenna5": {
-				"rotate": [
-					{ "time": 0.0667 },
-					{ "time": 0.2, "value": 11.78 },
-					{ "time": 0.3, "value": -9.52 },
-					{ "time": 0.4, "value": 8.07 },
-					{ "time": 0.5, "value": -4.45 },
-					{ "time": 0.6, "value": 1.54 },
-					{ "time": 0.7, "value": -0.34 }
-				]
-			},
-			"antenna6": {
-				"rotate": [
-					{ "time": 0.0667 },
-					{ "time": 0.2, "value": 11.78 },
-					{ "time": 0.3, "value": -9.52 },
-					{ "time": 0.4, "value": 8.07 },
-					{ "time": 0.5, "value": -4.45 },
-					{ "time": 0.6, "value": 1.54 },
-					{ "time": 0.7, "value": -0.34 }
-				]
-			},
-			"smoke24": {
-				"rotate": [
-					{ "time": 0.3, "value": 71.32 },
-					{ "time": 0.3667, "value": 112.39 },
-					{ "time": 0.4667, "value": 159.56 },
-					{ "time": 0.7, "value": 224.21 }
-				],
-				"translate": [
-					{ "time": 0.3, "x": 90.72, "y": -18.79 },
-					{ "time": 0.3667, "x": 149.69, "y": -7.78 },
-					{ "time": 0.4667, "x": 176.26, "y": 12.31 },
-					{ "time": 0.7, "x": 184.07, "y": 31.75 }
-				],
-				"scale": [
-					{ "time": 0.3, "x": 2.906, "y": 2.311 },
-					{ "time": 0.4333, "x": 3.567, "y": 2.58 },
-					{ "time": 0.4667, "x": 3.157, "y": 2.41 },
-					{ "time": 0.7, "x": 1.705, "y": 1.356 }
-				]
-			},
-			"smoke25": {
-				"rotate": [
-					{ "time": 0.3667, "value": 91.25 },
-					{ "time": 0.4333, "value": 117.56 },
-					{ "time": 0.6333, "value": 150.9 },
-					{ "time": 1, "value": 189.47 }
-				],
-				"translate": [
-					{ "time": 0.3667, "x": 187.21, "y": -51.18 },
-					{ "time": 0.5333, "x": 245.48, "y": -46.28 },
-					{ "time": 0.6667, "x": 277.36, "y": -43.12 },
-					{ "time": 1, "x": 313.27, "y": -38.14 }
-				],
-				"scale": [
-					{ "time": 0.3667, "x": 3.606, "y": 2.657 },
-					{ "time": 0.4333, "x": 4.166, "y": 2.792 },
-					{ "time": 0.5333, "x": 3.09, "y": 2.091 },
-					{ "time": 1, "x": 3.062, "y": 1.801 }
-				]
-			},
-			"smoke26": {
-				"rotate": [
-					{ "time": 0.3667, "value": 10.64 },
-					{ "time": 0.4, "value": 60.85 },
-					{ "time": 0.4667, "value": 89.45 },
-					{ "time": 0.7, "value": 125.01 },
-					{ "time": 0.9333, "value": 155.24 }
-				],
-				"translate": [
-					{ "time": 0.3667, "x": 442.07, "y": -13.19 },
-					{ "time": 0.4, "x": 453.7, "y": 0.81 },
-					{ "time": 0.4667, "x": 443.57, "y": -6.95 },
-					{ "time": 0.7, "x": 460.97, "y": 15.79 },
-					{ "time": 0.9333, "x": 465.22, "y": 20.92 }
-				],
-				"scale": [
-					{ "time": 0.3667, "x": 2.726, "y": 2.726 },
-					{ "time": 0.4333, "x": 3.729, "y": 2.822 },
-					{ "time": 0.4667, "x": 3.398, "y": 2.441 },
-					{ "time": 0.7, "x": 4.324, "y": 3.159 },
-					{ "time": 0.9, "x": 1.977, "y": 1.48 }
-				]
-			},
-			"smoke27": {
-				"rotate": [
-					{ "time": 0.3667, "value": 24.75 },
-					{ "time": 0.4333, "value": -5.43 },
-					{ "time": 0.5333, "value": -39.76 },
-					{ "time": 0.8333, "value": -56.25 }
-				],
-				"translate": [
-					{ "time": 0.3667, "x": 92.98, "y": -49.06 },
-					{ "time": 0.5333, "x": 129.81, "y": -33.09 },
-					{ "time": 0.8333, "x": 143.68, "y": -25.27 }
-				],
-				"scale": [
-					{ "time": 0.3667, "x": 3.633, "y": 2.223 },
-					{ "time": 0.4333, "x": 2.745, "y": 2.283 },
-					{ "time": 0.4667, "x": 2.962, "y": 2.122 },
-					{ "time": 0.5333, "x": 2.007, "y": 1.266 }
-				]
-			},
-			"cannon-target": {
-				"translate": [
-					{ "time": 0.1333 },
-					{
-						"time": 0.2,
-						"y": 128.38,
-						"curve": [ 0.4, 0, 0.8, 0, 0.4, 128.38, 0.8, 0 ]
-					},
-					{ "time": 1 }
-				],
-				"scale": [
-					{ "time": 0.4333, "x": 0.632, "y": 1.244 },
-					{ "time": 0.4667, "x": 0.477, "y": 1.487 }
-				]
-			},
-			"machinegun-target": {
-				"scale": [
-					{ "time": 0.4333, "x": 0.632, "y": 1.244 },
-					{ "time": 0.4667, "x": 0.477, "y": 1.487 }
-				]
-			},
-			"machinegun": {
-				"rotate": [
-					{ "value": 8.07, "curve": "stepped" },
-					{ "time": 0.0667, "value": 8.07 },
-					{
-						"time": 0.2333,
-						"value": -18.67,
-						"curve": [ 0.894, -18.44, 0.832, 7.5 ]
-					},
-					{ "time": 0.9, "value": 8.07 }
-				]
-			},
-			"tank-root": {
-				"translate": [
-					{ "time": 0.0667 },
-					{
-						"time": 0.1667,
-						"x": 46.59,
-						"curve": [ 0.192, 46.59, 0.242, 0, 0.192, 0, 0.242, 0 ]
-					},
-					{ "time": 0.2667 }
-				]
-			},
-			"tank-glow": {
-				"translate": [
-					{
-						"time": 0.1333,
-						"x": 198.14,
-						"curve": [ 0.199, 190.76, 0.222, -255.89, 0.199, 0, 0.222, 0 ]
-					},
-					{ "time": 0.2333, "x": -390 }
-				],
-				"scale": [
-					{ "time": 0.0667 },
-					{
-						"time": 0.1333,
-						"x": 1.185,
-						"y": 0.945,
-						"curve": [ 0.199, 1.182, 0.222, 1.048, 0.199, 0.939, 0.222, 0.579 ]
-					},
-					{ "time": 0.2333, "x": 1.008, "y": 0.471 }
-				]
-			}
-		},
-		"attachments": {
-			"default": {
-				"clipping": {
-					"clipping": {
-						"deform": [
-							{
-								"time": 0.0667,
-								"offset": 54,
-								"vertices": [ 4.59198, -4.59192 ]
-							},
-							{
-								"time": 0.1333,
-								"offset": 8,
-								"vertices": [ -8.97369, -1.88211, 9.11177, 1.02258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14.73321, -45.16878, -30.31448, -84.4631, -32.24969, -108.78421, 70.26825, -36.90201 ]
-							},
-							{
-								"time": 0.1667,
-								"offset": 8,
-								"vertices": [ -11.32373, -1.65065, 11.42179, 0.53259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15.36503, -69.18713, -4.45626, -121.90839, 5.46554, -115.23274, 71.78526, -33.85687 ]
-							},
-							{
-								"time": 0.2,
-								"offset": 8,
-								"vertices": [ -8.70522, 1.02196, 8.65102, -1.4101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.59198, -4.59192 ]
-							},
-							{
-								"time": 0.2333,
-								"offset": 8,
-								"vertices": [ -5.23146, 0.85796, 5.23882, -0.81519 ]
-							},
-							{
-								"time": 0.2667,
-								"offset": 54,
-								"vertices": [ 4.59198, -4.59192 ]
-							}
-						]
-					}
-				},
-				"smoke-glow": {
-					"smoke-glow": {
-						"deform": [
-							{
-								"time": 0.1333,
-								"vertices": [ -14.17073, 19.14352, 0, 0, -10.97961, -15.09065, -5.79558, -24.82121, 0.68117, -17.78759, -1.1179, -5.4463, 0, 0, 0, 0, 17.52957, 6.89397, -0.33841, -2.21582, 5.51004, 18.88118, -6.80153, 20.91101 ]
-							},
-							{
-								"time": 0.1667,
-								"vertices": [ -4.34264, 39.78125, 5.6649, -2.42686, -8.39346, -22.52338, -2.66431, 5.08595, -19.28093, 3.98568, -11.21397, 10.2879, 4.56749, 4.1329, -19.50706, -2.28786, 11.35747, 4.55941, 9.04341, -11.72194, 2.15381, 5.14344, -12.82158, 16.08209, -23.19814, 1.81836 ]
-							},
-							{
-								"time": 0.2,
-								"vertices": [ -3.95581, 36.12203, 37.20779, -0.87419, 21.29579, -15.76854, -2.02438, 6.16526, -5.92201, 4.19709, -1.39027, 9.92793, 7.70584, -0.7169, -6.69733, -2.62048, 17.91826, 7.77333, -12.2858, 3.25454, -12.75876, 3.71516, 9.67891, 15.48546 ]
-							},
-							{
-								"time": 0.2333,
-								"vertices": [ -11.9371, 26.01078, 2.91821, -0.27533, 7.69899, -17.45375, -2.02438, 6.16526, -5.92201, 4.19709, -1.39027, 9.92793, 7.70584, -0.7169, -6.69733, -2.62048, 17.91826, 7.77333, -4.30551, -6.01406, -12.75876, 3.71516, -5.10017, 17.59191 ]
-							},
-							{
-								"time": 0.2667,
-								"vertices": [ 0.5959, 23.58176, 20.74303, 0.93943, 7.69899, -17.45375, -2.02438, 6.16526, -5.92201, 4.19709, -1.39027, 9.92793, 20.51733, 2.52203, 13.35544, 2.64274, 24.32408, -1.94308, 8.50604, -20.99353, 13.14276, 5.73959, 6.31876, 19.2114, 16.98909, 0.80981 ]
-							}
-						]
-					}
-				}
-			}
-		},
-		"drawOrder": [
-			{
-				"time": 0.3,
-				"offsets": [
-					{ "slot": "smoke-puff1-bg2", "offset": 24 },
-					{ "slot": "smoke-puff1-bg8", "offset": 19 },
-					{ "slot": "smoke-puff1-bg9", "offset": 22 },
-					{ "slot": "smoke-puff1-bg3", "offset": 17 },
-					{ "slot": "smoke-puff1-fg17", "offset": 13 },
-					{ "slot": "smoke-puff1-fg2", "offset": 2 },
-					{ "slot": "smoke-puff1-fg5", "offset": 8 },
-					{ "slot": "smoke-puff1-fg6", "offset": 4 },
-					{ "slot": "smoke-puff1-fg7", "offset": -4 },
-					{ "slot": "smoke-puff1-fg4", "offset": -4 }
-				]
-			},
-			{
-				"time": 0.3333,
-				"offsets": [
-					{ "slot": "smoke-puff1-bg2", "offset": 8 },
-					{ "slot": "smoke-puff1-bg8", "offset": 5 },
-					{ "slot": "smoke-puff1-bg9", "offset": 3 },
-					{ "slot": "smoke-puff1-fg", "offset": 24 },
-					{ "slot": "smoke-puff1-fg5", "offset": -14 },
-					{ "slot": "smoke-puff1-fg6", "offset": -21 },
-					{ "slot": "smoke-puff1-fg7", "offset": -19 },
-					{ "slot": "smoke-puff1-fg10", "offset": -21 }
-				]
-			},
-			{
-				"time": 0.3667,
-				"offsets": [
-					{ "slot": "smoke-puff1-bg2", "offset": 7 },
-					{ "slot": "smoke-puff1-bg9", "offset": 4 },
-					{ "slot": "smoke-puff1-fg", "offset": 24 },
-					{ "slot": "smoke-puff1-fg2", "offset": 5 },
-					{ "slot": "smoke-puff1-fg6", "offset": -22 },
-					{ "slot": "smoke-puff1-fg7", "offset": -18 },
-					{ "slot": "smoke-puff1-fg10", "offset": -20 }
-				]
-			},
-			{
-				"time": 0.4,
-				"offsets": [
-					{ "slot": "smoke-puff1-bg2", "offset": 5 },
-					{ "slot": "smoke-puff1-bg4", "offset": 0 },
-					{ "slot": "smoke-puff1-fg", "offset": 24 },
-					{ "slot": "smoke-puff1-fg2", "offset": 5 },
-					{ "slot": "smoke-puff1-fg6", "offset": -21 },
-					{ "slot": "smoke-puff1-fg7", "offset": -18 },
-					{ "slot": "smoke-puff1-fg10", "offset": -22 }
-				]
-			},
-			{
-				"time": 0.4333,
-				"offsets": [
-					{ "slot": "smoke-puff1-bg2", "offset": 4 },
-					{ "slot": "smoke-puff1-bg9", "offset": 4 },
-					{ "slot": "smoke-puff1-fg", "offset": 24 },
-					{ "slot": "smoke-puff1-fg2", "offset": 5 },
-					{ "slot": "smoke-puff1-fg6", "offset": -17 },
-					{ "slot": "smoke-puff1-fg7", "offset": -19 },
-					{ "slot": "smoke-puff1-fg10", "offset": -23 }
-				]
-			},
-			{
-				"time": 0.5333,
-				"offsets": [
-					{ "slot": "smoke-puff1-bg2", "offset": 9 },
-					{ "slot": "smoke-puff1-bg12", "offset": 0 },
-					{ "slot": "smoke-puff1-fg", "offset": 24 },
-					{ "slot": "smoke-puff1-fg2", "offset": 6 },
-					{ "slot": "smoke-puff1-fg6", "offset": -20 },
-					{ "slot": "smoke-puff1-fg7", "offset": -19 },
-					{ "slot": "smoke-puff1-fg10", "offset": -23 },
-					{ "slot": "smoke-puff1-fg4", "offset": -5 }
-				]
-			}
-		]
-	}
-}
-}

+ 0 - 56
spine-xna/example/data/tank.atlas

@@ -1,56 +0,0 @@
-tank.png
-	size: 1024, 1024
-	filter: Linear, Linear
-	scale: 0.5
-antenna
-	bounds: 2, 712, 11, 152
-	rotate: 90
-cannon
-	bounds: 222, 694, 466, 29
-cannon-connector
-	bounds: 82, 654, 56, 68
-	rotate: 90
-ground
-	bounds: 2, 175, 512, 177
-guntower
-	bounds: 647, 347, 365, 145
-machinegun
-	bounds: 690, 694, 166, 29
-machinegun-mount
-	bounds: 858, 687, 36, 48
-	rotate: 90
-rock
-	bounds: 664, 607, 290, 64
-smoke-glow
-	bounds: 946, 673, 50, 50
-smoke-puff01-bg
-	bounds: 312, 630, 92, 62
-smoke-puff01-fg
-	bounds: 222, 633, 88, 59
-smoke-puff02-fg
-	bounds: 406, 630, 92, 62
-smoke-puff03-fg
-	bounds: 500, 630, 92, 62
-smoke-puff04-fg
-	bounds: 2, 662, 78, 48
-tank-bottom
-	bounds: 2, 354, 643, 138
-tank-bottom-shadow
-	bounds: 2, 2, 646, 171
-tank-top
-	bounds: 195, 494, 704, 111
-tread
-	bounds: 172, 708, 48, 15
-tread-inside
-	bounds: 156, 710, 13, 14
-	rotate: 90
-wheel-big
-	bounds: 97, 540, 96, 96
-wheel-big-overlay
-	bounds: 2, 559, 93, 93
-wheel-mid
-	bounds: 594, 624, 68, 68
-wheel-mid-overlay
-	bounds: 152, 638, 68, 68
-wheel-small
-	bounds: 908, 687, 36, 36

BIN
spine-xna/example/data/tank.png


+ 0 - 218
spine-xna/example/spine-xna-example.csproj

@@ -1,218 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <ProjectGuid>{29CC4385-294A-4885-A3E8-FD4825E0CFDD}</ProjectGuid>
-    <ProjectTypeGuids>{6D335F3A-9D43-41b4-9D22-F6F17C4BE596};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
-    <OutputType>WinExe</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Spine</RootNamespace>
-    <AssemblyName>spine-xna-example</AssemblyName>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
-    <XnaFrameworkVersion>v4.0</XnaFrameworkVersion>
-    <XnaPlatform>Windows</XnaPlatform>
-    <XnaProfile>HiDef</XnaProfile>
-    <XnaCrossPlatformGroupID>bf3b738e-f348-48d3-b35b-94bc118edb90</XnaCrossPlatformGroupID>
-    <XnaOutputType>Game</XnaOutputType>
-    <ApplicationIcon>Game.ico</ApplicationIcon>
-    <Thumbnail>GameThumbnail.png</Thumbnail>
-    <IsWebBootstrapper>false</IsWebBootstrapper>
-    <XnaUpgrade />
-    <PublishUrl>publish\</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Disk</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\x86\Debug</OutputPath>
-    <DefineConstants>DEBUG;TRACE;WINDOWS</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <NoStdLib>true</NoStdLib>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <PlatformTarget>x86</PlatformTarget>
-    <XnaCompressContent>True</XnaCompressContent>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\x86\Release</OutputPath>
-    <DefineConstants>TRACE;WINDOWS</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <NoStdLib>true</NoStdLib>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <PlatformTarget>x86</PlatformTarget>
-    <XnaCompressContent>True</XnaCompressContent>
-  </PropertyGroup>
-  <PropertyGroup>
-    <StartupObject>Spine.ExampleProgram</StartupObject>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="Microsoft.Xna.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="Microsoft.Xna.Framework.Game, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="Microsoft.Xna.Framework.Graphics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="Microsoft.Xna.Framework.GamerServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="Microsoft.Xna.Framework.Xact, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="Microsoft.Xna.Framework.Video, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="Microsoft.Xna.Framework.Avatar, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="Microsoft.Xna.Framework.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="Microsoft.Xna.Framework.Storage, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="mscorlib">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="System">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="System.Xml">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="System.Core">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="System.Xml.Linq">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="System.Net">
-      <Private>False</Private>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="src\ExampleGame.cs" />
-    <Compile Include="src\ExampleProgram.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="data\coin.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <None Include="data\coin-pro.skel">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <None Include="data\raptor.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <None Include="data\spineboy-pro.skel">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <None Include="data\spineboy.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <None Include="data\raptor_normals.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <Content Include="data\tank.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Game.ico" />
-    <Content Include="GameThumbnail.png" />
-    <None Include="data\tank.atlas">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <None Include="data\tank-pro.json">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\spine-csharp\spine-csharp.csproj">
-      <Project>{94144e22-2431-4a8f-ac04-dec22f7edd8f}</Project>
-      <Name>spine-csharp</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\example-content\spine-xna-example-content.contentproj">
-      <Project>{D0632D20-BC92-4A73-896B-30BB687732B8}</Project>
-      <Name>spine-xna-example-content</Name>
-      <XnaReferenceType>Content</XnaReferenceType>
-    </ProjectReference>
-    <ProjectReference Include="..\spine-xna.csproj">
-      <Project>{7F8F2327-C016-49C8-BB4D-F3F77971961E}</Project>
-      <Name>spine-xna</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include=".NETFramework,Version=v4.0,Profile=Client">
-      <Visible>False</Visible>
-      <ProductName>Microsoft .NET Framework 4 Client Profile %28x86 and x64%29</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
-      <Visible>False</Visible>
-      <ProductName>Windows Installer 3.1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Xna.Framework.4.0">
-      <Visible>False</Visible>
-      <ProductName>Microsoft XNA Framework Redistributable 4.0</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="data\coin.atlas">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <None Include="data\coin-pro.json">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <None Include="data\raptor.atlas">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <None Include="data\raptor-pro.json">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <None Include="data\spineboy.atlas">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\Microsoft.Xna.GameStudio.targets" />
-  <!--
-      To modify your build process, add your task inside one of the targets below and uncomment it. 
-      Other similar extension points exist, see Microsoft.Common.targets.
-      <Target Name="BeforeBuild">
-      </Target>
-      <Target Name="AfterBuild">
-      </Target>
-    -->
-</Project>

+ 0 - 246
spine-xna/example/src/ExampleGame.cs

@@ -1,246 +0,0 @@
-/******************************************************************************
- * Spine Runtimes License Agreement
- * Last updated September 24, 2021. Replaces all prior versions.
- *
- * Copyright (c) 2013-2021, Esoteric Software LLC
- *
- * Integration of the Spine Runtimes into software or otherwise creating
- * derivative works of the Spine Runtimes is permitted under the terms and
- * conditions of Section 2 of the Spine Editor License Agreement:
- * http://esotericsoftware.com/spine-editor-license
- *
- * Otherwise, it is permitted to integrate the Spine Runtimes into software
- * or otherwise create derivative works of the Spine Runtimes (collectively,
- * "Products"), provided that each user of the Products must obtain their own
- * Spine Editor license and redistribution of the Products in any form must
- * include this license and copyright notice.
- *
- * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
- * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-using Microsoft.Xna.Framework;
-using Microsoft.Xna.Framework.Audio;
-using Microsoft.Xna.Framework.Content;
-using Microsoft.Xna.Framework.Graphics;
-using Microsoft.Xna.Framework.Input;
-using Microsoft.Xna.Framework.Media;
-using Spine;
-using System;
-using System.Collections.Generic;
-using System.IO;
-
-namespace Spine {
-	public class Example : Microsoft.Xna.Framework.Game {
-		GraphicsDeviceManager graphics;
-		SkeletonRenderer skeletonRenderer;
-		SkeletonDebugRenderer skeletonDebugRenderer;
-		Skeleton skeleton;
-		Slot headSlot;
-		AnimationState state;
-		SkeletonBounds bounds = new SkeletonBounds();
-
-#if WINDOWS_STOREAPP
-		private string assetsFolder = @"Assets\";
-#else
-		private string assetsFolder = "data/";
-#endif
-
-		public Example () {
-			IsMouseVisible = true;
-
-			graphics = new GraphicsDeviceManager(this);
-			graphics.IsFullScreen = false;
-			graphics.PreferredBackBufferWidth = 800;
-			graphics.PreferredBackBufferHeight = 600;
-		}
-
-		protected override void Initialize () {
-			// TODO: Add your initialization logic here
-
-			base.Initialize();
-		}
-
-		protected override void LoadContent () {
-
-			bool useNormalmapShader = false;
-			Effect spineEffect;
-			if (!useNormalmapShader) {
-				// Two color tint effect. Note that you can also use the default BasicEffect instead.
-				spineEffect = Content.Load<Effect>("spine-xna-example-content\\SpineEffect");
-			} else {
-				spineEffect = Content.Load<Effect>("spine-xna-example-content\\SpineEffectNormalmap");
-				spineEffect.Parameters["Light0_Direction"].SetValue(new Vector3(-0.5265408f, 0.5735765f, -0.6275069f));
-				spineEffect.Parameters["Light0_Diffuse"].SetValue(new Vector3(1, 0.9607844f, 0.8078432f));
-				spineEffect.Parameters["Light0_Specular"].SetValue(new Vector3(1, 0.9607844f, 0.8078432f));
-				spineEffect.Parameters["Light0_SpecularExponent"].SetValue(2.0f);
-			}
-			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 = false;
-			skeletonRenderer.Effect = spineEffect;
-
-			skeletonDebugRenderer = new SkeletonDebugRenderer(GraphicsDevice);
-			skeletonDebugRenderer.DisableAll();
-			skeletonDebugRenderer.DrawClipping = true;
-
-			//String name = "spineboy-pro";
-			String name = "raptor-pro";
-			// String name = "tank-pro";
-			//String name = "coin-pro";
-			if (useNormalmapShader)
-				name = "raptor-pro"; // we only have normalmaps for raptor
-			String atlasName = name.Replace("-pro", "").Replace("-ess", "");
-
-			bool binaryData = name.Contains("spineboy");
-
-			Atlas atlas;
-			if (!useNormalmapShader) {
-				atlas = new Atlas(assetsFolder + atlasName + ".atlas", new XnaTextureLoader(GraphicsDevice));
-			} else {
-				atlas = new Atlas(assetsFolder + atlasName + ".atlas", new XnaTextureLoader(GraphicsDevice,
-								loadMultipleTextureLayers: true, textureSuffixes: new string[] { "", "_normals" }));
-			}
-			float scale = 1;
-			if (name == "spineboy-pro") scale = 0.6f;
-			if (name == "raptor-pro") scale = 0.5f;
-			if (name == "tank-pro") scale = 0.3f;
-			if (name == "coin-pro") scale = 1;
-
-			SkeletonData skeletonData;
-			if (binaryData) {
-				SkeletonBinary binary = new SkeletonBinary(atlas);
-				binary.Scale = scale;
-				skeletonData = binary.ReadSkeletonData(assetsFolder + name + ".skel");
-			} else {
-				SkeletonJson json = new SkeletonJson(atlas);
-				json.Scale = scale;
-				skeletonData = json.ReadSkeletonData(assetsFolder + name + ".json");
-			}
-			skeleton = new Skeleton(skeletonData);
-			if (name == "goblins-pro") skeleton.SetSkin("goblin");
-
-			// Define mixing between animations.
-			AnimationStateData stateData = new AnimationStateData(skeleton.Data);
-			state = new AnimationState(stateData);
-
-			if (name == "spineboy-pro") {
-				skeleton.SetAttachment("head-bb", "head");
-
-				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, "run", true);
-				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-pro") {
-				state.SetAnimation(0, "walk", true);
-				state.AddAnimation(1, "gun-grab", false, 2);
-			} else if (name == "coin-pro") {
-				state.SetAnimation(0, "animation", true);
-			} else if (name == "tank-pro") {
-				skeleton.X += 300;
-				state.SetAnimation(0, "drive", true);
-			} else {
-				state.SetAnimation(0, "walk", true);
-			}
-
-			skeleton.X += 400;
-			skeleton.Y += GraphicsDevice.Viewport.Height;
-			skeleton.UpdateWorldTransform();
-
-			headSlot = skeleton.FindSlot("head");
-		}
-
-		protected override void UnloadContent () {
-			// TODO: Unload any non ContentManager content here
-		}
-
-		protected override void Update (GameTime gameTime) {
-			// TODO: Add your update logic here
-#if (!WINDOWS_STOREAPP || WINDOWS_PHONE81) && !IOS
-			if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
-				this.Exit();
-#endif
-			base.Update(gameTime);
-		}
-
-		protected override void Draw (GameTime gameTime) {
-			GraphicsDevice.Clear(Color.Black);
-
-			state.Update((float)(gameTime.ElapsedGameTime.TotalMilliseconds / 1000.0));
-			state.Apply(skeleton);
-			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.Draw(skeleton);
-			skeletonRenderer.End();
-
-			skeletonDebugRenderer.Effect.Projection = Matrix.CreateOrthographicOffCenter(0, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height, 0, 1, 0);
-			skeletonDebugRenderer.Begin();
-			skeletonDebugRenderer.Draw(skeleton);
-			skeletonDebugRenderer.End();
-
-			bounds.Update(skeleton, true);
-			MouseState mouse = Mouse.GetState();
-			if (headSlot != null) {
-				headSlot.G = 1;
-				headSlot.B = 1;
-				if (bounds.AabbContainsPoint(mouse.X, mouse.Y)) {
-					BoundingBoxAttachment hit = bounds.ContainsPoint(mouse.X, mouse.Y);
-					if (hit != null) {
-						headSlot.G = 0;
-						headSlot.B = 0;
-					}
-				}
-			}
-
-			base.Draw(gameTime);
-		}
-
-		public void Start (TrackEntry entry) {
-#if !WINDOWS_STOREAPP
-			Console.WriteLine(entry + ": start");
-#endif
-		}
-
-		public void End (TrackEntry entry) {
-#if !WINDOWS_STOREAPP
-			Console.WriteLine(entry + ": end");
-#endif
-		}
-
-		public void Complete (TrackEntry entry) {
-#if !WINDOWS_STOREAPP
-			Console.WriteLine(entry + ": complete ");
-#endif
-		}
-
-		public void Event (TrackEntry entry, Event e) {
-#if !WINDOWS_STOREAPP
-			Console.WriteLine(entry + ": event " + e);
-#endif
-		}
-	}
-}

+ 0 - 26
spine-xna/example/src/ExampleProgram.cs

@@ -1,26 +0,0 @@
-
-using System;
-
-namespace Spine {
-#if WINDOWS || XBOX
-    static class ExampleProgram {
-        static void Main (string[] args) {
-            using (Example game = new Example()) {
-                game.Run();
-            }
-        }
-    }
-#elif WINDOWS_STOREAPP
-    public static class Program
-    {
-        /// <summary>
-        /// The main entry point for the application.
-        /// </summary>
-        static void Main()
-        {
-            var factory = new MonoGame.Framework.GameFrameworkViewSource<Example>();
-            Windows.ApplicationModel.Core.CoreApplication.Run(factory);
-        }
-    }
-#endif
-}

+ 0 - 160
spine-xna/spine-xna.csproj

@@ -1,160 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <ProjectGuid>{7F8F2327-C016-49C8-BB4D-F3F77971961E}</ProjectGuid>
-    <ProjectTypeGuids>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Spine</RootNamespace>
-    <AssemblyName>spine-xna</AssemblyName>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
-    <XnaFrameworkVersion>v4.0</XnaFrameworkVersion>
-    <XnaPlatform>Windows</XnaPlatform>
-    <XnaProfile>HiDef</XnaProfile>
-    <XnaCrossPlatformGroupID>f1fc4580-2d86-4a03-bd33-44b1703f36a1</XnaCrossPlatformGroupID>
-    <XnaOutputType>Library</XnaOutputType>
-    <XnaUpgrade />
-    <PublishUrl>publish\</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Disk</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>false</IsWebBootstrapper>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\x86\Debug</OutputPath>
-    <DefineConstants>DEBUG;TRACE;WINDOWS</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <NoStdLib>true</NoStdLib>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <PlatformTarget>x86</PlatformTarget>
-    <XnaCompressContent>false</XnaCompressContent>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\x86\Release</OutputPath>
-    <DefineConstants>TRACE;WINDOWS</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <NoStdLib>true</NoStdLib>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <PlatformTarget>x86</PlatformTarget>
-    <XnaCompressContent>true</XnaCompressContent>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="Microsoft.Xna.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="Microsoft.Xna.Framework.Game, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="Microsoft.Xna.Framework.Graphics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="Microsoft.Xna.Framework.GamerServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="Microsoft.Xna.Framework.Xact, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="Microsoft.Xna.Framework.Video, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="Microsoft.Xna.Framework.Avatar, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="Microsoft.Xna.Framework.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="Microsoft.Xna.Framework.Storage, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="mscorlib">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="System">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="System.Xml">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>4.0</RequiredTargetFramework>
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="System.Xml.Linq">
-      <RequiredTargetFramework>4.0</RequiredTargetFramework>
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="System.Net">
-      <Private>False</Private>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="src\MeshBatcher.cs" />
-    <Compile Include="src\VertexEffect.cs" />
-    <Compile Include="src\ShapeRenderer.cs" />
-    <Compile Include="src\SkeletonDebugRenderer.cs" />
-    <Compile Include="src\XnaTextureLoader.cs" />
-    <Compile Include="src\Util.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include=".NETFramework,Version=v4.0,Profile=Client">
-      <Visible>False</Visible>
-      <ProductName>Microsoft .NET Framework 4 Client Profile %28x86 and x64%29</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
-      <Visible>False</Visible>
-      <ProductName>Windows Installer 3.1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="src\SkeletonRenderer.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\spine-csharp\spine-csharp.csproj">
-      <Project>{94144e22-2431-4a8f-ac04-dec22f7edd8f}</Project>
-      <Name>spine-csharp</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\Microsoft.Xna.GameStudio.targets" />
-  <!--
-      To modify your build process, add your task inside one of the targets below and uncomment it. 
-      Other similar extension points exist, see Microsoft.Common.targets.
-      <Target Name="BeforeBuild">
-      </Target>
-      <Target Name="AfterBuild">
-      </Target>
-    -->
-</Project>

+ 0 - 71
spine-xna/spine-xna.sln

@@ -1,71 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.25420.1
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "spine-xna", "spine-xna.csproj", "{7F8F2327-C016-49C8-BB4D-F3F77971961E}"
-	ProjectSection(ProjectDependencies) = postProject
-		{94144E22-2431-4A8F-AC04-DEC22F7EDD8F} = {94144E22-2431-4A8F-AC04-DEC22F7EDD8F}
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "spine-xna-example", "example\spine-xna-example.csproj", "{29CC4385-294A-4885-A3E8-FD4825E0CFDD}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "spine-csharp", "..\spine-csharp\spine-csharp.csproj", "{94144E22-2431-4A8F-AC04-DEC22F7EDD8F}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "spine-xna-example-content", "example-content\spine-xna-example-content.contentproj", "{D0632D20-BC92-4A73-896B-30BB687732B8}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Any CPU = Debug|Any CPU
-		Debug|Mixed Platforms = Debug|Mixed Platforms
-		Debug|x86 = Debug|x86
-		Release|Any CPU = Release|Any CPU
-		Release|Mixed Platforms = Release|Mixed Platforms
-		Release|x86 = Release|x86
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{7F8F2327-C016-49C8-BB4D-F3F77971961E}.Debug|Any CPU.ActiveCfg = Debug|x86
-		{7F8F2327-C016-49C8-BB4D-F3F77971961E}.Debug|Any CPU.Build.0 = Debug|x86
-		{7F8F2327-C016-49C8-BB4D-F3F77971961E}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{7F8F2327-C016-49C8-BB4D-F3F77971961E}.Debug|Mixed Platforms.Build.0 = Debug|x86
-		{7F8F2327-C016-49C8-BB4D-F3F77971961E}.Debug|x86.ActiveCfg = Debug|x86
-		{7F8F2327-C016-49C8-BB4D-F3F77971961E}.Debug|x86.Build.0 = Debug|x86
-		{7F8F2327-C016-49C8-BB4D-F3F77971961E}.Release|Any CPU.ActiveCfg = Release|x86
-		{7F8F2327-C016-49C8-BB4D-F3F77971961E}.Release|Any CPU.Build.0 = Release|x86
-		{7F8F2327-C016-49C8-BB4D-F3F77971961E}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{7F8F2327-C016-49C8-BB4D-F3F77971961E}.Release|Mixed Platforms.Build.0 = Release|x86
-		{7F8F2327-C016-49C8-BB4D-F3F77971961E}.Release|x86.ActiveCfg = Release|x86
-		{7F8F2327-C016-49C8-BB4D-F3F77971961E}.Release|x86.Build.0 = Release|x86
-		{29CC4385-294A-4885-A3E8-FD4825E0CFDD}.Debug|Any CPU.ActiveCfg = Debug|x86
-		{29CC4385-294A-4885-A3E8-FD4825E0CFDD}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{29CC4385-294A-4885-A3E8-FD4825E0CFDD}.Debug|Mixed Platforms.Build.0 = Debug|x86
-		{29CC4385-294A-4885-A3E8-FD4825E0CFDD}.Debug|x86.ActiveCfg = Debug|x86
-		{29CC4385-294A-4885-A3E8-FD4825E0CFDD}.Debug|x86.Build.0 = Debug|x86
-		{29CC4385-294A-4885-A3E8-FD4825E0CFDD}.Release|Any CPU.ActiveCfg = Release|x86
-		{29CC4385-294A-4885-A3E8-FD4825E0CFDD}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{29CC4385-294A-4885-A3E8-FD4825E0CFDD}.Release|Mixed Platforms.Build.0 = Release|x86
-		{29CC4385-294A-4885-A3E8-FD4825E0CFDD}.Release|x86.ActiveCfg = Release|x86
-		{29CC4385-294A-4885-A3E8-FD4825E0CFDD}.Release|x86.Build.0 = Release|x86
-		{94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Debug|x86.Build.0 = Debug|Any CPU
-		{94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Release|Any CPU.Build.0 = Release|Any CPU
-		{94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Release|x86.ActiveCfg = Release|Any CPU
-		{94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Release|x86.Build.0 = Release|Any CPU
-		{D0632D20-BC92-4A73-896B-30BB687732B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{D0632D20-BC92-4A73-896B-30BB687732B8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{D0632D20-BC92-4A73-896B-30BB687732B8}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{D0632D20-BC92-4A73-896B-30BB687732B8}.Release|Any CPU.ActiveCfg = Debug|Any CPU
-		{D0632D20-BC92-4A73-896B-30BB687732B8}.Release|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{D0632D20-BC92-4A73-896B-30BB687732B8}.Release|x86.ActiveCfg = Debug|Any CPU
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal

+ 0 - 195
spine-xna/src/MeshBatcher.cs

@@ -1,195 +0,0 @@
-/******************************************************************************
- * Spine Runtimes License Agreement
- * Last updated September 24, 2021. Replaces all prior versions.
- *
- * Copyright (c) 2013-2021, Esoteric Software LLC
- *
- * Integration of the Spine Runtimes into software or otherwise creating
- * derivative works of the Spine Runtimes is permitted under the terms and
- * conditions of Section 2 of the Spine Editor License Agreement:
- * http://esotericsoftware.com/spine-editor-license
- *
- * Otherwise, it is permitted to integrate the Spine Runtimes into software
- * or otherwise create derivative works of the Spine Runtimes (collectively,
- * "Products"), provided that each user of the Products must obtain their own
- * Spine Editor license and redistribution of the Products in any form must
- * include this license and copyright notice.
- *
- * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
- * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-using Microsoft.Xna.Framework;
-using Microsoft.Xna.Framework.Graphics;
-using System;
-using System.Collections.Generic;
-
-namespace Spine {
-	public struct VertexPositionColorTextureColor : IVertexType {
-		public Vector3 Position;
-		public Color Color;
-		public Vector2 TextureCoordinate;
-		public Color Color2;
-
-		public readonly static VertexDeclaration VertexDeclaration = new VertexDeclaration
-		(
-			new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),
-			new VertexElement(12, VertexElementFormat.Color, VertexElementUsage.Color, 0),
-			new VertexElement(16, VertexElementFormat.Vector2, VertexElementUsage.TextureCoordinate, 0),
-			new VertexElement(24, VertexElementFormat.Color, VertexElementUsage.Color, 1)
-		);
-
-		VertexDeclaration IVertexType.VertexDeclaration {
-			get { return VertexDeclaration; }
-		}
-	}
-
-	// #region License
-	// /*
-	// Microsoft Public License (Ms-PL)
-	// MonoGame - Copyright � 2009 The MonoGame Team
-	//
-	// All rights reserved.
-	//
-	// This license governs use of the accompanying software. If you use the software, you accept this license. If you do not
-	// accept the license, do not use the software.
-	//
-	// 1. Definitions
-	// The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under
-	// U.S. copyright law.
-	//
-	// A "contribution" is the original software, or any additions or changes to the software.
-	// A "contributor" is any person that distributes its contribution under this license.
-	// "Licensed patents" are a contributor's patent claims that read directly on its contribution.
-	//
-	// 2. Grant of Rights
-	// (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3,
-	// each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
-	// (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3,
-	// each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
-	//
-	// 3. Conditions and Limitations
-	// (A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
-	// (B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software,
-	// your patent license from such contributor to the software ends automatically.
-	// (C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution
-	// notices that are present in the software.
-	// (D) If you distribute any portion of the software in source code form, you may do so only under this license by including
-	// a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object
-	// code form, you may only do so under a license that complies with this license.
-	// (E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees
-	// or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent
-	// permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular
-	// purpose and non-infringement.
-	// */
-	// #endregion License
-	//
-
-	/// <summary>Draws batched meshes.</summary>
-	public class MeshBatcher {
-		private readonly List<MeshItem> items;
-		private readonly Queue<MeshItem> freeItems;
-		private VertexPositionColorTextureColor[] vertexArray = { };
-		private short[] triangles = { };
-
-		public MeshBatcher () {
-			items = new List<MeshItem>(256);
-			freeItems = new Queue<MeshItem>(256);
-			EnsureCapacity(256, 512);
-		}
-
-		/// <summary>Returns a pooled MeshItem.</summary>
-		public MeshItem NextItem (int vertexCount, int triangleCount) {
-			MeshItem item = freeItems.Count > 0 ? freeItems.Dequeue() : new MeshItem();
-			if (item.vertices.Length < vertexCount) item.vertices = new VertexPositionColorTextureColor[vertexCount];
-			if (item.triangles.Length < triangleCount) item.triangles = new int[triangleCount];
-			item.vertexCount = vertexCount;
-			item.triangleCount = triangleCount;
-			items.Add(item);
-			return item;
-		}
-
-		private void EnsureCapacity (int vertexCount, int triangleCount) {
-			if (vertexArray.Length < vertexCount) vertexArray = new VertexPositionColorTextureColor[vertexCount];
-			if (triangles.Length < triangleCount) triangles = new short[triangleCount];
-		}
-
-		public void Draw (GraphicsDevice device) {
-			if (items.Count == 0) return;
-
-			int itemCount = items.Count;
-			int vertexCount = 0, triangleCount = 0;
-			for (int i = 0; i < itemCount; i++) {
-				MeshItem item = items[i];
-				vertexCount += item.vertexCount;
-				triangleCount += item.triangleCount;
-			}
-			EnsureCapacity(vertexCount, triangleCount);
-
-			vertexCount = 0;
-			triangleCount = 0;
-			Texture2D lastTexture = null;
-			for (int i = 0; i < itemCount; i++) {
-				MeshItem item = items[i];
-				int itemVertexCount = item.vertexCount;
-
-				if (item.texture != lastTexture || vertexCount + itemVertexCount > short.MaxValue) {
-					FlushVertexArray(device, vertexCount, triangleCount);
-					vertexCount = 0;
-					triangleCount = 0;
-					lastTexture = item.texture;
-					device.Textures[0] = lastTexture;
-					if (item.textureLayers != null) {
-						for (int layer = 1; layer < item.textureLayers.Length; ++layer)
-							device.Textures[layer] = item.textureLayers[layer];
-					}
-				}
-
-				int[] itemTriangles = item.triangles;
-				int itemTriangleCount = item.triangleCount;
-				for (int ii = 0, t = triangleCount; ii < itemTriangleCount; ii++, t++)
-					triangles[t] = (short)(itemTriangles[ii] + vertexCount);
-				triangleCount += itemTriangleCount;
-
-				Array.Copy(item.vertices, 0, vertexArray, vertexCount, itemVertexCount);
-				vertexCount += itemVertexCount;
-			}
-			FlushVertexArray(device, vertexCount, triangleCount);
-		}
-
-		public void AfterLastDrawPass () {
-			int itemCount = items.Count;
-			for (int i = 0; i < itemCount; i++) {
-				var item = items[i];
-				item.texture = null;
-				freeItems.Enqueue(item);
-			}
-			items.Clear();
-		}
-
-		private void FlushVertexArray (GraphicsDevice device, int vertexCount, int triangleCount) {
-			if (vertexCount == 0) return;
-			device.DrawUserIndexedPrimitives(
-				PrimitiveType.TriangleList,
-				vertexArray, 0, vertexCount,
-				triangles, 0, triangleCount / 3,
-				VertexPositionColorTextureColor.VertexDeclaration);
-		}
-	}
-
-	public class MeshItem {
-		public Texture2D texture = null;
-		public Texture2D[] textureLayers = null;
-		public int vertexCount, triangleCount;
-		public VertexPositionColorTextureColor[] vertices = { };
-		public int[] triangles = { };
-	}
-}

+ 0 - 165
spine-xna/src/ShapeRenderer.cs

@@ -1,165 +0,0 @@
-/******************************************************************************
- * Spine Runtimes License Agreement
- * Last updated September 24, 2021. Replaces all prior versions.
- *
- * Copyright (c) 2013-2021, Esoteric Software LLC
- *
- * Integration of the Spine Runtimes into software or otherwise creating
- * derivative works of the Spine Runtimes is permitted under the terms and
- * conditions of Section 2 of the Spine Editor License Agreement:
- * http://esotericsoftware.com/spine-editor-license
- *
- * Otherwise, it is permitted to integrate the Spine Runtimes into software
- * or otherwise create derivative works of the Spine Runtimes (collectively,
- * "Products"), provided that each user of the Products must obtain their own
- * Spine Editor license and redistribution of the Products in any form must
- * include this license and copyright notice.
- *
- * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
- * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-using Microsoft.Xna.Framework;
-using Microsoft.Xna.Framework.Graphics;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace Spine {
-	/// <summary>
-	/// Batch drawing of lines and shapes that can be derived from lines.
-	///
-	/// Call drawing methods in between Begin()/End()
-	/// </summary>
-	public class ShapeRenderer {
-		GraphicsDevice device;
-		List<VertexPositionColor> vertices = new List<VertexPositionColor>();
-		Color color = Color.White;
-		BasicEffect effect;
-		public BasicEffect Effect { get { return effect; } set { effect = value; } }
-
-		public ShapeRenderer (GraphicsDevice device) {
-			this.device = device;
-			this.effect = new BasicEffect(device);
-			effect.World = Matrix.Identity;
-			effect.View = Matrix.CreateLookAt(new Vector3(0.0f, 0.0f, 1.0f), Vector3.Zero, Vector3.Up);
-			effect.TextureEnabled = false;
-			effect.VertexColorEnabled = true;
-		}
-
-		public void SetColor (Color color) {
-			this.color = color;
-		}
-
-		public void Begin () {
-			device.RasterizerState = new RasterizerState();
-			device.BlendState = BlendState.AlphaBlend;
-		}
-
-		public void Line (float x1, float y1, float x2, float y2) {
-			vertices.Add(new VertexPositionColor(new Vector3(x1, y1, 0), color));
-			vertices.Add(new VertexPositionColor(new Vector3(x2, y2, 0), color));
-		}
-
-		/** Calls {@link #circle(float, float, float, int)} by estimating the number of segments needed for a smooth circle. */
-		public void Circle (float x, float y, float radius) {
-			Circle(x, y, radius, Math.Max(1, (int)(6 * (float)Math.Pow(radius, 1.0f / 3.0f))));
-		}
-
-		/** Draws a circle using {@link ShapeType#Line} or {@link ShapeType#Filled}. */
-		public void Circle (float x, float y, float radius, int segments) {
-			if (segments <= 0) throw new ArgumentException("segments must be > 0.");
-			float angle = 2 * MathUtils.PI / segments;
-			float cos = MathUtils.Cos(angle);
-			float sin = MathUtils.Sin(angle);
-			float cx = radius, cy = 0;
-			float temp = 0;
-
-			for (int i = 0; i < segments; i++) {
-				vertices.Add(new VertexPositionColor(new Vector3(x + cx, y + cy, 0), color));
-				temp = cx;
-				cx = cos * cx - sin * cy;
-				cy = sin * temp + cos * cy;
-				vertices.Add(new VertexPositionColor(new Vector3(x + cx, y + cy, 0), color));
-			}
-			vertices.Add(new VertexPositionColor(new Vector3(x + cx, y + cy, 0), color));
-
-			temp = cx;
-			cx = radius;
-			cy = 0;
-			vertices.Add(new VertexPositionColor(new Vector3(x + cx, y + cy, 0), color));
-		}
-
-		public void Triangle (float x1, float y1, float x2, float y2, float x3, float y3) {
-			vertices.Add(new VertexPositionColor(new Vector3(x1, y1, 0), color));
-			vertices.Add(new VertexPositionColor(new Vector3(x2, y2, 0), color));
-
-			vertices.Add(new VertexPositionColor(new Vector3(x2, y2, 0), color));
-			vertices.Add(new VertexPositionColor(new Vector3(x3, y3, 0), color));
-
-			vertices.Add(new VertexPositionColor(new Vector3(x3, y3, 0), color));
-			vertices.Add(new VertexPositionColor(new Vector3(x1, y1, 0), color));
-		}
-
-		public void X (float x, float y, float len) {
-			Line(x + len, y + len, x - len, y - len);
-			Line(x - len, y + len, x + len, y - len);
-		}
-
-		public void Polygon (float[] polygonVertices, int offset, int count) {
-			if (count < 3) throw new ArgumentException("Polygon must contain at least 3 vertices");
-
-			offset <<= 1;
-
-			var firstX = polygonVertices[offset];
-			var firstY = polygonVertices[offset + 1];
-			var last = offset + count;
-
-			for (int i = offset, n = offset + count; i < n; i += 2) {
-				var x1 = polygonVertices[i];
-				var y1 = polygonVertices[i + 1];
-
-				var x2 = 0f;
-				var y2 = 0f;
-
-				if (i + 2 >= last) {
-					x2 = firstX;
-					y2 = firstY;
-				} else {
-					x2 = polygonVertices[i + 2];
-					y2 = polygonVertices[i + 3];
-				}
-
-				Line(x1, y1, x2, y2);
-			}
-		}
-
-		public void Rect (float x, float y, float width, float height) {
-			Line(x, y, x + width, y);
-			Line(x + width, y, x + width, y + height);
-			Line(x + width, y + height, x, y + height);
-			Line(x, y + height, x, y);
-		}
-
-		public void End () {
-			if (vertices.Count == 0) return;
-			var verticesArray = vertices.ToArray();
-
-			foreach (EffectPass pass in effect.CurrentTechnique.Passes) {
-				pass.Apply();
-				device.DrawUserPrimitives(PrimitiveType.LineList, verticesArray, 0, verticesArray.Length / 2);
-			}
-
-			vertices.Clear();
-		}
-	}
-}

+ 0 - 228
spine-xna/src/SkeletonDebugRenderer.cs

@@ -1,228 +0,0 @@
-/******************************************************************************
- * Spine Runtimes License Agreement
- * Last updated September 24, 2021. Replaces all prior versions.
- *
- * Copyright (c) 2013-2021, Esoteric Software LLC
- *
- * Integration of the Spine Runtimes into software or otherwise creating
- * derivative works of the Spine Runtimes is permitted under the terms and
- * conditions of Section 2 of the Spine Editor License Agreement:
- * http://esotericsoftware.com/spine-editor-license
- *
- * Otherwise, it is permitted to integrate the Spine Runtimes into software
- * or otherwise create derivative works of the Spine Runtimes (collectively,
- * "Products"), provided that each user of the Products must obtain their own
- * Spine Editor license and redistribution of the Products in any form must
- * include this license and copyright notice.
- *
- * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
- * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-using Microsoft.Xna.Framework;
-using Microsoft.Xna.Framework.Graphics;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace Spine {
-	public class SkeletonDebugRenderer {
-		ShapeRenderer renderer;
-
-		public static Color boneLineColor = new Color(1f, 0f, 0f, 1f);
-		public static Color boneOriginColor = new Color(0f, 1f, 0f, 1f);
-		public static Color attachmentLineColor = new Color(0f, 0f, 1f, 0.5f);
-		public static Color triangleLineColor = new Color(1f, 0.64f, 0f, 0.5f);
-		public static Color pathColor = new Color(1f, 0.5f, 0f, 1f);
-		public static Color clipColor = new Color(0.8f, 0f, 0f, 1f);
-		public static Color clipDecomposedColor = new Color(0.8f, 0.8f, 0f, 1f);
-		public static Color aabbColor = new Color(0f, 1f, 0f, 0.5f);
-
-		public BasicEffect Effect { get { return renderer.Effect; } set { renderer.Effect = value; } }
-		public bool DrawBones { get; set; }
-		public bool DrawRegionAttachments { get; set; }
-		public bool DrawBoundingBoxes { get; set; }
-		public bool DrawMeshHull { get; set; }
-		public bool DrawMeshTriangles { get; set; }
-		public bool DrawPaths { get; set; }
-		public bool DrawClipping { get; set; }
-		public bool DrawClippingDecomposed { get; set; }
-		public bool DrawSkeletonXY { get; set; }
-		public void DisableAll () {
-			DrawBones = false;
-			DrawRegionAttachments = false;
-			DrawBoundingBoxes = false;
-			DrawMeshHull = false;
-			DrawMeshTriangles = false;
-			DrawPaths = false;
-			DrawClipping = false;
-			DrawSkeletonXY = false;
-		}
-
-		public void EnableAll () {
-			DrawBones = true;
-			DrawRegionAttachments = true;
-			DrawBoundingBoxes = true;
-			DrawMeshHull = true;
-			DrawMeshTriangles = true;
-			DrawPaths = true;
-			DrawClipping = true;
-			DrawSkeletonXY = true;
-		}
-
-		private float[] vertices = new float[1024 * 2];
-		private SkeletonBounds bounds = new SkeletonBounds();
-		private Triangulator triangulator = new Triangulator();
-
-		public SkeletonDebugRenderer (GraphicsDevice device) {
-			renderer = new ShapeRenderer(device);
-			EnableAll();
-		}
-
-		public void Begin () {
-			renderer.Begin();
-		}
-
-		public void Draw (Skeleton skeleton) {
-			var skeletonX = skeleton.X;
-			var skeletonY = skeleton.Y;
-
-			var bones = skeleton.Bones;
-			if (DrawBones) {
-				renderer.SetColor(boneLineColor);
-				for (int i = 0, n = bones.Count; i < n; i++) {
-					var bone = bones.Items[i];
-					if (bone.Parent == null) continue;
-					var x = bone.Data.Length * bone.A + bone.WorldX;
-					var y = bone.Data.Length * bone.C + bone.WorldY;
-					renderer.Line(bone.WorldX, bone.WorldY, x, y);
-				}
-				if (DrawSkeletonXY) renderer.X(skeletonX, skeletonY, 4);
-			}
-
-			if (DrawRegionAttachments) {
-				renderer.SetColor(attachmentLineColor);
-				var slots = skeleton.Slots;
-				for (int i = 0, n = slots.Count; i < n; i++) {
-					var slot = slots.Items[i];
-					var attachment = slot.Attachment;
-					if (attachment is RegionAttachment) {
-						var regionAttachment = (RegionAttachment)attachment;
-						var vertices = this.vertices;
-						regionAttachment.ComputeWorldVertices(slot.Bone, vertices, 0, 2);
-						renderer.Line(vertices[0], vertices[1], vertices[2], vertices[3]);
-						renderer.Line(vertices[2], vertices[3], vertices[4], vertices[5]);
-						renderer.Line(vertices[4], vertices[5], vertices[6], vertices[7]);
-						renderer.Line(vertices[6], vertices[7], vertices[0], vertices[1]);
-					}
-				}
-			}
-
-			if (DrawMeshHull || DrawMeshTriangles) {
-				var slots = skeleton.Slots;
-				for (int i = 0, n = slots.Count; i < n; i++) {
-					var slot = slots.Items[i];
-					var attachment = slot.Attachment;
-					if (!(attachment is MeshAttachment)) continue;
-					var mesh = (MeshAttachment)attachment;
-					var world = vertices = vertices.Length < mesh.WorldVerticesLength ? new float[mesh.WorldVerticesLength] : vertices;
-					mesh.ComputeWorldVertices(slot, 0, mesh.WorldVerticesLength, world, 0, 2);
-					int[] triangles = mesh.Triangles;
-					var hullLength = mesh.HullLength;
-					if (DrawMeshTriangles) {
-						renderer.SetColor(triangleLineColor);
-						for (int ii = 0, nn = triangles.Count(); ii < nn; ii += 3) {
-							int v1 = triangles[ii] * 2, v2 = triangles[ii + 1] * 2, v3 = triangles[ii + 2] * 2;
-							renderer.Triangle(world[v1], world[v1 + 1], //
-								world[v2], world[v2 + 1], //
-								world[v3], world[v3 + 1] //
-							);
-						}
-					}
-					if (DrawMeshHull && hullLength > 0) {
-						renderer.SetColor(attachmentLineColor);
-						hullLength = (hullLength >> 1) * 2;
-						float lastX = vertices[hullLength - 2], lastY = vertices[hullLength - 1];
-						for (int ii = 0, nn = hullLength; ii < nn; ii += 2) {
-							float x = vertices[ii], y = vertices[ii + 1];
-							renderer.Line(x, y, lastX, lastY);
-							lastX = x;
-							lastY = y;
-						}
-					}
-				}
-			}
-
-			if (DrawBoundingBoxes) {
-				var bounds = this.bounds;
-				bounds.Update(skeleton, true);
-				renderer.SetColor(aabbColor);
-				renderer.Rect(bounds.MinX, bounds.MinY, bounds.Width, bounds.Height);
-				var polygons = bounds.Polygons;
-				var boxes = bounds.BoundingBoxes;
-				for (int i = 0, n = polygons.Count; i < n; i++) {
-					var polygon = polygons.Items[i];
-					renderer.Polygon(polygon.Vertices, 0, polygon.Count);
-				}
-			}
-
-			if (DrawBones) {
-				renderer.SetColor(boneOriginColor);
-				for (int i = 0, n = bones.Count; i < n; i++) {
-					var bone = bones.Items[i];
-					renderer.Circle(bone.WorldX, bone.WorldY, 3);
-				}
-			}
-
-			if (DrawClipping) {
-				var slots = skeleton.Slots;
-				renderer.SetColor(clipColor);
-				for (int i = 0, n = slots.Count; i < n; i++) {
-					var slot = slots.Items[i];
-					var attachment = slot.Attachment;
-					if (!(attachment is ClippingAttachment)) continue;
-					var clip = (ClippingAttachment)attachment;
-					var nn = clip.WorldVerticesLength;
-					var world = vertices = vertices.Length < nn ? new float[nn] : vertices;
-					clip.ComputeWorldVertices(slot, 0, nn, world, 0, 2);
-					ExposedList<float> clippingPolygon = new ExposedList<float>();
-					for (int ii = 0; ii < nn; ii += 2) {
-						var x = world[ii];
-						var y = world[ii + 1];
-						var x2 = world[(ii + 2) % nn];
-						var y2 = world[(ii + 3) % nn];
-						renderer.Line(x, y, x2, y2);
-						clippingPolygon.Add(x);
-						clippingPolygon.Add(y);
-					}
-
-					if (DrawClippingDecomposed) {
-						SkeletonClipping.MakeClockwise(clippingPolygon);
-						var triangles = triangulator.Triangulate(clippingPolygon);
-						var clippingPolygons = triangulator.Decompose(clippingPolygon, triangles);
-						renderer.SetColor(clipDecomposedColor);
-						foreach (var polygon in clippingPolygons) {
-							SkeletonClipping.MakeClockwise(polygon);
-							polygon.Add(polygon.Items[0]);
-							polygon.Add(polygon.Items[1]);
-							renderer.Polygon(polygon.Items, 0, polygon.Count >> 1);
-						}
-					}
-				}
-			}
-		}
-
-		public void End () {
-			renderer.End();
-		}
-	}
-}

+ 0 - 226
spine-xna/src/SkeletonRenderer.cs

@@ -1,226 +0,0 @@
-/******************************************************************************
- * Spine Runtimes License Agreement
- * Last updated September 24, 2021. Replaces all prior versions.
- *
- * Copyright (c) 2013-2021, Esoteric Software LLC
- *
- * Integration of the Spine Runtimes into software or otherwise creating
- * derivative works of the Spine Runtimes is permitted under the terms and
- * conditions of Section 2 of the Spine Editor License Agreement:
- * http://esotericsoftware.com/spine-editor-license
- *
- * Otherwise, it is permitted to integrate the Spine Runtimes into software
- * or otherwise create derivative works of the Spine Runtimes (collectively,
- * "Products"), provided that each user of the Products must obtain their own
- * Spine Editor license and redistribution of the Products in any form must
- * include this license and copyright notice.
- *
- * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
- * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-using Microsoft.Xna.Framework;
-using Microsoft.Xna.Framework.Graphics;
-using System;
-using System.Collections.Generic;
-
-namespace Spine {
-	/// <summary>Draws region and mesh attachments.</summary>
-	public class SkeletonRenderer {
-		private const int TL = 0;
-		private const int TR = 1;
-		private const int BL = 2;
-		private const int BR = 3;
-
-		SkeletonClipping clipper = new SkeletonClipping();
-		GraphicsDevice device;
-		MeshBatcher batcher;
-		public MeshBatcher Batcher { get { return batcher; } }
-		RasterizerState rasterizerState;
-		float[] vertices = new float[8];
-		int[] quadTriangles = { 0, 1, 2, 2, 3, 0 };
-		BlendState defaultBlendState;
-
-		Effect effect;
-		public Effect Effect { get { return effect; } set { effect = value; } }
-		public IVertexEffect VertexEffect { get; set; }
-
-		private bool premultipliedAlpha;
-		public bool PremultipliedAlpha { get { return premultipliedAlpha; } set { premultipliedAlpha = value; } }
-
-		/// <summary>Attachments are rendered back to front in the x/y plane by the SkeletonRenderer.
-		/// Each attachment is offset by a customizable z-spacing value on the z-axis to avoid z-fighting
-		/// in shaders with ZWrite enabled. Typical values lie in the range [-0.1, 0].</summary>
-		private float zSpacing = 0.0f;
-		public float ZSpacing { get { return zSpacing; } set { zSpacing = value; } }
-
-		/// <summary>A Z position offset added at each vertex.</summary>
-		private float z = 0.0f;
-		public float Z { get { return z; } set { z = value; } }
-
-		public SkeletonRenderer (GraphicsDevice device) {
-			this.device = device;
-
-			batcher = new MeshBatcher();
-
-			var basicEffect = new BasicEffect(device);
-			basicEffect.World = Matrix.Identity;
-			basicEffect.View = Matrix.CreateLookAt(new Vector3(0.0f, 0.0f, 1.0f), Vector3.Zero, Vector3.Up);
-			basicEffect.TextureEnabled = true;
-			basicEffect.VertexColorEnabled = true;
-			effect = basicEffect;
-
-			rasterizerState = new RasterizerState();
-			rasterizerState.CullMode = CullMode.None;
-
-			Bone.yDown = true;
-		}
-
-		public void Begin () {
-			defaultBlendState = premultipliedAlpha ? BlendState.AlphaBlend : BlendState.NonPremultiplied;
-
-			device.RasterizerState = rasterizerState;
-			device.BlendState = defaultBlendState;
-		}
-
-		public void End () {
-			foreach (EffectPass pass in effect.CurrentTechnique.Passes) {
-				pass.Apply();
-				batcher.Draw(device);
-			}
-			batcher.AfterLastDrawPass();
-		}
-
-		public void Draw (Skeleton skeleton) {
-			var drawOrder = skeleton.DrawOrder;
-			var drawOrderItems = skeleton.DrawOrder.Items;
-			float skeletonR = skeleton.R, skeletonG = skeleton.G, skeletonB = skeleton.B, skeletonA = skeleton.A;
-			Color color = new Color();
-
-			if (VertexEffect != null) VertexEffect.Begin(skeleton);
-
-			for (int i = 0, n = drawOrder.Count; i < n; i++) {
-				Slot slot = drawOrderItems[i];
-				Attachment attachment = slot.Attachment;
-				float attachmentZOffset = z + zSpacing * i;
-
-				float attachmentColorR, attachmentColorG, attachmentColorB, attachmentColorA;
-				object textureObject = null;
-				int verticesCount = 0;
-				float[] vertices = this.vertices;
-				int indicesCount = 0;
-				int[] indices = null;
-				float[] uvs = null;
-
-				if (attachment is RegionAttachment) {
-					RegionAttachment regionAttachment = (RegionAttachment)attachment;
-					attachmentColorR = regionAttachment.R; attachmentColorG = regionAttachment.G; attachmentColorB = regionAttachment.B; attachmentColorA = regionAttachment.A;
-					AtlasRegion region = (AtlasRegion)regionAttachment.RendererObject;
-					textureObject = region.page.rendererObject;
-					verticesCount = 4;
-					regionAttachment.ComputeWorldVertices(slot.Bone, vertices, 0, 2);
-					indicesCount = 6;
-					indices = quadTriangles;
-					uvs = regionAttachment.UVs;
-				} else if (attachment is MeshAttachment) {
-					MeshAttachment mesh = (MeshAttachment)attachment;
-					attachmentColorR = mesh.R; attachmentColorG = mesh.G; attachmentColorB = mesh.B; attachmentColorA = mesh.A;
-					AtlasRegion region = (AtlasRegion)mesh.RendererObject;
-					textureObject = region.page.rendererObject;
-					int vertexCount = mesh.WorldVerticesLength;
-					if (vertices.Length < vertexCount) vertices = new float[vertexCount];
-					verticesCount = vertexCount >> 1;
-					mesh.ComputeWorldVertices(slot, vertices);
-					indicesCount = mesh.Triangles.Length;
-					indices = mesh.Triangles;
-					uvs = mesh.UVs;
-				} else if (attachment is ClippingAttachment) {
-					ClippingAttachment clip = (ClippingAttachment)attachment;
-					clipper.ClipStart(slot, clip);
-					continue;
-				} else {
-					continue;
-				}
-
-				// set blend state
-				BlendState blend = slot.Data.BlendMode == BlendMode.Additive ? BlendState.Additive : defaultBlendState;
-				if (device.BlendState != blend) {
-					//End();
-					//device.BlendState = blend;
-				}
-
-				// calculate color
-				float a = skeletonA * slot.A * attachmentColorA;
-				if (premultipliedAlpha) {
-					color = new Color(
-							skeletonR * slot.R * attachmentColorR * a,
-							skeletonG * slot.G * attachmentColorG * a,
-							skeletonB * slot.B * attachmentColorB * a, a);
-				} else {
-					color = new Color(
-							skeletonR * slot.R * attachmentColorR,
-							skeletonG * slot.G * attachmentColorG,
-							skeletonB * slot.B * attachmentColorB, a);
-				}
-
-				Color darkColor = new Color();
-				if (slot.HasSecondColor) {
-					if (premultipliedAlpha) {
-						darkColor = new Color(slot.R2 * a, slot.G2 * a, slot.B2 * a);
-					} else {
-						darkColor = new Color(slot.R2 * a, slot.G2 * a, slot.B2 * a);
-					}
-				}
-				darkColor.A = premultipliedAlpha ? (byte)255 : (byte)0;
-
-				// clip
-				if (clipper.IsClipping) {
-					clipper.ClipTriangles(vertices, verticesCount << 1, indices, indicesCount, uvs);
-					vertices = clipper.ClippedVertices.Items;
-					verticesCount = clipper.ClippedVertices.Count >> 1;
-					indices = clipper.ClippedTriangles.Items;
-					indicesCount = clipper.ClippedTriangles.Count;
-					uvs = clipper.ClippedUVs.Items;
-				}
-
-				if (verticesCount == 0 || indicesCount == 0)
-					continue;
-
-				// submit to batch
-				MeshItem item = batcher.NextItem(verticesCount, indicesCount);
-				if (textureObject is Texture2D)
-					item.texture = (Texture2D)textureObject;
-				else {
-					item.textureLayers = (Texture2D[])textureObject;
-					item.texture = item.textureLayers[0];
-				}
-				for (int ii = 0, nn = indicesCount; ii < nn; ii++) {
-					item.triangles[ii] = indices[ii];
-				}
-				VertexPositionColorTextureColor[] itemVertices = item.vertices;
-				for (int ii = 0, v = 0, nn = verticesCount << 1; v < nn; ii++, v += 2) {
-					itemVertices[ii].Color = color;
-					itemVertices[ii].Color2 = darkColor;
-					itemVertices[ii].Position.X = vertices[v];
-					itemVertices[ii].Position.Y = vertices[v + 1];
-					itemVertices[ii].Position.Z = attachmentZOffset;
-					itemVertices[ii].TextureCoordinate.X = uvs[v];
-					itemVertices[ii].TextureCoordinate.Y = uvs[v + 1];
-					if (VertexEffect != null) VertexEffect.Transform(ref itemVertices[ii]);
-				}
-
-				clipper.ClipEnd(slot);
-			}
-			clipper.ClipEnd();
-			if (VertexEffect != null) VertexEffect.End();
-		}
-	}
-}

+ 0 - 79
spine-xna/src/Util.cs

@@ -1,79 +0,0 @@
-/******************************************************************************
- * Spine Runtimes License Agreement
- * Last updated September 24, 2021. Replaces all prior versions.
- *
- * Copyright (c) 2013-2021, Esoteric Software LLC
- *
- * Integration of the Spine Runtimes into software or otherwise creating
- * derivative works of the Spine Runtimes is permitted under the terms and
- * conditions of Section 2 of the Spine Editor License Agreement:
- * http://esotericsoftware.com/spine-editor-license
- *
- * Otherwise, it is permitted to integrate the Spine Runtimes into software
- * or otherwise create derivative works of the Spine Runtimes (collectively,
- * "Products"), provided that each user of the Products must obtain their own
- * Spine Editor license and redistribution of the Products in any form must
- * include this license and copyright notice.
- *
- * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
- * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-using Microsoft.Xna.Framework;
-using Microsoft.Xna.Framework.Graphics;
-using System;
-using System.IO;
-
-#if WINDOWS_STOREAPP
-using System.Threading.Tasks;
-using Windows.Storage;
-#endif
-
-namespace Spine {
-
-	static public class Util {
-#if WINDOWS_STOREAPP
-		private static async Task<Texture2D> LoadFile(GraphicsDevice device, String path) {
-			var folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
-			var file = await folder.GetFileAsync(path).AsTask().ConfigureAwait(false);
-			try {
-				return Util.LoadTexture(device, await file.OpenStreamForReadAsync().ConfigureAwait(false));
-			} catch (Exception ex) {
-				throw new Exception("Error reading texture file: " + path, ex);
-			}
-		}
-
-		static public Texture2D LoadTexture (GraphicsDevice device, String path) {
-			return LoadFile(device, path).Result;
-		}
-#else
-		static public Texture2D LoadTexture (GraphicsDevice device, String path) {
-
-#if WINDOWS_PHONE
-			Stream stream = Microsoft.Xna.Framework.TitleContainer.OpenStream(path);
-			using (Stream input = stream) {
-#else
-			using (Stream input = new FileStream(path, FileMode.Open, FileAccess.Read)) {
-#endif
-				try {
-					return Util.LoadTexture(device, input);
-				} catch (Exception ex) {
-					throw new Exception("Error reading texture file: " + path, ex);
-				}
-			}
-		}
-#endif
-
-		static public Texture2D LoadTexture (GraphicsDevice device, Stream input) {
-			return Texture2D.FromStream(device, input);
-		}
-	}
-}

+ 0 - 97
spine-xna/src/VertexEffect.cs

@@ -1,97 +0,0 @@
-/******************************************************************************
- * Spine Runtimes License Agreement
- * Last updated September 24, 2021. Replaces all prior versions.
- *
- * Copyright (c) 2013-2021, Esoteric Software LLC
- *
- * Integration of the Spine Runtimes into software or otherwise creating
- * derivative works of the Spine Runtimes is permitted under the terms and
- * conditions of Section 2 of the Spine Editor License Agreement:
- * http://esotericsoftware.com/spine-editor-license
- *
- * Otherwise, it is permitted to integrate the Spine Runtimes into software
- * or otherwise create derivative works of the Spine Runtimes (collectively,
- * "Products"), provided that each user of the Products must obtain their own
- * Spine Editor license and redistribution of the Products in any form must
- * include this license and copyright notice.
- *
- * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
- * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace Spine {
-	public interface IVertexEffect {
-		void Begin (Skeleton skeleton);
-		void Transform (ref VertexPositionColorTextureColor vertex);
-		void End ();
-	}
-
-	public class JitterEffect : IVertexEffect {
-		public float JitterX { get; set; }
-		public float JitterY { get; set; }
-
-		public JitterEffect (float jitterX, float jitterY) {
-			JitterX = jitterX;
-			JitterY = jitterY;
-		}
-
-		public void Begin (Skeleton skeleton) {
-		}
-
-		public void End () {
-		}
-
-		public void Transform (ref VertexPositionColorTextureColor vertex) {
-			vertex.Position.X += MathUtils.RandomTriangle(-JitterX, JitterY);
-			vertex.Position.Y += MathUtils.RandomTriangle(-JitterX, JitterY);
-		}
-	}
-
-	public class SwirlEffect : IVertexEffect {
-		private float worldX, worldY, angle;
-
-		public float Radius { get; set; }
-		public float Angle { get { return angle; } set { angle = value * MathUtils.DegRad; } }
-		public float CenterX { get; set; }
-		public float CenterY { get; set; }
-		public IInterpolation Interpolation { get; set; }
-
-		public SwirlEffect (float radius) {
-			Radius = radius;
-			Interpolation = IInterpolation.Pow2;
-		}
-
-		public void Begin (Skeleton skeleton) {
-			worldX = skeleton.X + CenterX;
-			worldY = skeleton.Y + CenterY;
-		}
-
-		public void End () {
-		}
-
-		public void Transform (ref VertexPositionColorTextureColor vertex) {
-			float x = vertex.Position.X - worldX;
-			float y = vertex.Position.Y - worldY;
-			float dist = (float)Math.Sqrt(x * x + y * y);
-			if (dist < Radius) {
-				float theta = Interpolation.Apply(0, angle, (Radius - dist) / Radius);
-				float cos = MathUtils.Cos(theta), sin = MathUtils.Sin(theta);
-				vertex.Position.X = cos * x - sin * y + worldX;
-				vertex.Position.Y = sin * x + cos * y + worldY;
-			}
-		}
-	}
-}

+ 0 - 93
spine-xna/src/XnaTextureLoader.cs

@@ -1,93 +0,0 @@
-/******************************************************************************
- * Spine Runtimes License Agreement
- * Last updated September 24, 2021. Replaces all prior versions.
- *
- * Copyright (c) 2013-2021, Esoteric Software LLC
- *
- * Integration of the Spine Runtimes into software or otherwise creating
- * derivative works of the Spine Runtimes is permitted under the terms and
- * conditions of Section 2 of the Spine Editor License Agreement:
- * http://esotericsoftware.com/spine-editor-license
- *
- * Otherwise, it is permitted to integrate the Spine Runtimes into software
- * or otherwise create derivative works of the Spine Runtimes (collectively,
- * "Products"), provided that each user of the Products must obtain their own
- * Spine Editor license and redistribution of the Products in any form must
- * include this license and copyright notice.
- *
- * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
- * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-using Microsoft.Xna.Framework;
-using Microsoft.Xna.Framework.Graphics;
-using System;
-using System.IO;
-
-namespace Spine {
-	public class XnaTextureLoader : TextureLoader {
-		GraphicsDevice device;
-		string[] textureLayerSuffixes = null;
-
-		/// <summary>
-		/// Constructor.
-		/// </summary>
-		/// <param name="device">The graphics device to be used.</param>
-		/// <param name="loadMultipleTextureLayers">If <c>true</c> multiple textures layers
-		/// (e.g. a diffuse/albedo texture and a normal map) are loaded instead of a single texture.
-		/// Names are constructed based on suffixes added according to the <c>textureSuffixes</c> parameter.</param>
-		/// <param name="textureSuffixes">If <c>loadMultipleTextureLayers</c> is <c>true</c>, the strings of this array
-		/// define the path name suffix of each layer to be loaded. Array size must be equal to the number of layers to be loaded.
-		/// The first array entry is the suffix to be <c>replaced</c> (e.g. "_albedo", or "" for a first layer without a suffix),
-		/// subsequent array entries contain the suffix to replace the first entry with (e.g. "_normals").
-		///
-		/// An example would be:
-		/// <code>new string[] { "", "_normals" }</code> for loading a base diffuse texture named "skeletonname.png" and
-		/// a normalmap named "skeletonname_normals.png".</param>
-		public XnaTextureLoader (GraphicsDevice device, bool loadMultipleTextureLayers = false, string[] textureSuffixes = null) {
-			this.device = device;
-			if (loadMultipleTextureLayers)
-				this.textureLayerSuffixes = textureSuffixes;
-		}
-
-		public void Load (AtlasPage page, String path) {
-			Texture2D texture = Util.LoadTexture(device, path);
-			page.width = texture.Width;
-			page.height = texture.Height;
-
-			if (textureLayerSuffixes == null) {
-				page.rendererObject = texture;
-			} else {
-				Texture2D[] textureLayersArray = new Texture2D[textureLayerSuffixes.Length];
-				textureLayersArray[0] = texture;
-				for (int layer = 1; layer < textureLayersArray.Length; ++layer) {
-					string layerPath = GetLayerName(path, textureLayerSuffixes[0], textureLayerSuffixes[layer]);
-					textureLayersArray[layer] = Util.LoadTexture(device, layerPath);
-				}
-				page.rendererObject = textureLayersArray;
-			}
-		}
-
-		public void Unload (Object texture) {
-			((Texture2D)texture).Dispose();
-		}
-
-		private string GetLayerName (string firstLayerPath, string firstLayerSuffix, string replacementSuffix) {
-
-			int suffixLocation = firstLayerPath.LastIndexOf(firstLayerSuffix + ".");
-			if (suffixLocation == -1) {
-				throw new Exception(string.Concat("Error composing texture layer name: first texture layer name '", firstLayerPath,
-								"' does not contain suffix to be replaced: '", firstLayerSuffix, "'"));
-			}
-			return firstLayerPath.Remove(suffixLocation, firstLayerSuffix.Length).Insert(suffixLocation, replacementSuffix);
-		}
-	}
-}

Some files were not shown because too many files changed in this diff