mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-05 23:05:01 +08:00
SkeletonBounds refactored so state is not stored in BoundingBoxAttachment.
This commit is contained in:
parent
8883f73a10
commit
58d66e626b
@ -1,3 +1,35 @@
|
||||
/******************************************************************************
|
||||
* Spine Runtime Software License - Version 1.0
|
||||
*
|
||||
* Copyright (c) 2013, Esoteric Software
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms in whole or in part, with
|
||||
* or without modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. A Spine Single User License or Spine Professional License must be
|
||||
* purchased from Esoteric Software and the license must remain valid:
|
||||
* http://esotericsoftware.com/
|
||||
* 2. Redistributions of source code must retain this license, which is the
|
||||
* above copyright notice, this declaration of conditions and the following
|
||||
* disclaimer.
|
||||
* 3. Redistributions in binary form must reproduce this license, which is the
|
||||
* above copyright notice, this declaration of conditions and the following
|
||||
* disclaimer, in the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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.
|
||||
*****************************************************************************/
|
||||
|
||||
package com.esotericsoftware.spine;
|
||||
|
||||
@ -5,34 +37,53 @@ import com.esotericsoftware.spine.attachments.Attachment;
|
||||
import com.esotericsoftware.spine.attachments.BoundingBoxAttachment;
|
||||
|
||||
import com.badlogic.gdx.utils.Array;
|
||||
import com.badlogic.gdx.utils.FloatArray;
|
||||
|
||||
public class SkeletonBounds {
|
||||
private boolean aabb;
|
||||
private float minX, minY, maxX, maxY;
|
||||
private Array<BoundingBoxAttachment> boundingBoxAttachments = new Array();
|
||||
private Array<BoundingBoxAttachment> boundingBoxes = new Array();
|
||||
private Array<FloatArray> polygons = new Array();
|
||||
|
||||
public void update (Skeleton skeleton) {
|
||||
aabb = false;
|
||||
Array<BoundingBoxAttachment> polygons = this.boundingBoxAttachments;
|
||||
polygons.clear();
|
||||
|
||||
Array<BoundingBoxAttachment> boundingBoxes = this.boundingBoxes;
|
||||
Array<FloatArray> polygons = this.polygons;
|
||||
Array<Slot> slots = skeleton.slots;
|
||||
for (int i = 0, n = slots.size; i < n; i++) {
|
||||
int slotCount = slots.size;
|
||||
float x = skeleton.getX(), y = skeleton.getY();
|
||||
|
||||
boundingBoxes.clear();
|
||||
polygons.clear();
|
||||
polygons.ensureCapacity(slotCount);
|
||||
|
||||
for (int i = 0; i < slotCount; i++) {
|
||||
Slot slot = slots.get(i);
|
||||
Attachment attachment = slot.attachment;
|
||||
if (attachment instanceof BoundingBoxAttachment) {
|
||||
BoundingBoxAttachment boundingBox = (BoundingBoxAttachment)attachment;
|
||||
boundingBox.updateVertices(slot);
|
||||
polygons.add(boundingBox);
|
||||
boundingBoxes.add(boundingBox);
|
||||
|
||||
polygons.size = boundingBoxes.size;
|
||||
FloatArray polygon = polygons.peek();
|
||||
if (polygon == null) polygons.set(polygons.size - 1, polygon = new FloatArray());
|
||||
|
||||
int vertexCount = boundingBox.getVertices().length;
|
||||
polygon.ensureCapacity(vertexCount);
|
||||
polygon.size = vertexCount;
|
||||
boundingBox.computeWorldVertices(x, y, slot.bone, polygon.items);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void aabbCompute () {
|
||||
float minX = Integer.MAX_VALUE, minY = Integer.MAX_VALUE, maxX = Integer.MIN_VALUE, maxY = Integer.MIN_VALUE;
|
||||
Array<BoundingBoxAttachment> boundingBoxes = this.boundingBoxAttachments;
|
||||
for (int i = 0, n = boundingBoxes.size; i < n; i++) {
|
||||
float[] vertices = boundingBoxes.get(i).getVertices();
|
||||
for (int ii = 0, nn = vertices.length; ii < nn; ii += 2) {
|
||||
Array<FloatArray> polygons = this.polygons;
|
||||
for (int i = 0, n = polygons.size; i < n; i++) {
|
||||
FloatArray polygon = polygons.get(i);
|
||||
float[] vertices = polygon.items;
|
||||
for (int ii = 0, nn = polygon.size; ii < nn; ii += 2) {
|
||||
float x = vertices[ii];
|
||||
float y = vertices[ii + 1];
|
||||
minX = Math.min(minX, x);
|
||||
@ -82,21 +133,12 @@ public class SkeletonBounds {
|
||||
return minX < bounds.maxX && maxX > bounds.minX && minY < bounds.maxY && maxY > bounds.minY;
|
||||
}
|
||||
|
||||
/** Returns the first bounding box attachment that contains the point, or null. When doing many checks, it is usually more
|
||||
* efficient to only call this method if {@link #aabbContainsPoint(float, float)} return true. */
|
||||
public BoundingBoxAttachment containsPoint (float x, float y) {
|
||||
Array<BoundingBoxAttachment> boundingBoxes = this.boundingBoxAttachments;
|
||||
for (int i = 0, n = boundingBoxes.size; i < n; i++) {
|
||||
BoundingBoxAttachment attachment = boundingBoxes.get(i);
|
||||
if (containsPoint(attachment, x, y)) return attachment;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/** Returns true if the bounding box attachment contains the point. */
|
||||
public boolean containsPoint (BoundingBoxAttachment attachment, float x, float y) {
|
||||
float[] vertices = attachment.getVertices();
|
||||
int nn = vertices.length;
|
||||
public boolean containsPoint (int index, float x, float y) {
|
||||
FloatArray polygon = polygons.get(index);
|
||||
float[] vertices = polygon.items;
|
||||
int nn = polygon.size;
|
||||
|
||||
int prevIndex = nn - 2;
|
||||
boolean inside = false;
|
||||
for (int ii = 0; ii < nn; ii += 2) {
|
||||
@ -111,10 +153,25 @@ public class SkeletonBounds {
|
||||
return inside;
|
||||
}
|
||||
|
||||
/** Returns the first bounding box attachment that contains the point, or null. When doing many checks, it is usually more
|
||||
* efficient to only call this method if {@link #aabbContainsPoint(float, float)} return true. */
|
||||
public BoundingBoxAttachment containsPoint (float x, float y) {
|
||||
Array<BoundingBoxAttachment> boundingBoxes = this.boundingBoxes;
|
||||
for (int i = 0, n = boundingBoxes.size; i < n; i++)
|
||||
if (containsPoint(i, x, y)) return boundingBoxes.get(i);
|
||||
return null;
|
||||
}
|
||||
|
||||
/** Returns true if the bounding box attachment contains the point. The bounding box must be in the SkeletonBounds. */
|
||||
public boolean containsPoint (BoundingBoxAttachment attachment, float x, float y) {
|
||||
int index = boundingBoxes.indexOf(attachment, true);
|
||||
return index == -1 ? false : containsPoint(index, x, y);
|
||||
}
|
||||
|
||||
/** Returns the first bounding box attachment that contains the line segment, or null. When doing many checks, it is usually
|
||||
* more efficient to only call this method if {@link #aabbIntersectsSegment(float, float, float, float)} return true. */
|
||||
public BoundingBoxAttachment intersectsSegment (float x1, float y1, float x2, float y2) {
|
||||
Array<BoundingBoxAttachment> boundingBoxes = this.boundingBoxAttachments;
|
||||
Array<BoundingBoxAttachment> boundingBoxes = this.boundingBoxes;
|
||||
for (int i = 0, n = boundingBoxes.size; i < n; i++) {
|
||||
BoundingBoxAttachment attachment = boundingBoxes.get(i);
|
||||
if (intersectsSegment(attachment, x1, y1, x2, y2)) return attachment;
|
||||
@ -124,10 +181,18 @@ public class SkeletonBounds {
|
||||
|
||||
/** Returns true if the bounding box attachment contains the line segment. */
|
||||
public boolean intersectsSegment (BoundingBoxAttachment attachment, float x1, float y1, float x2, float y2) {
|
||||
float[] vertices = attachment.getVertices();
|
||||
int index = boundingBoxes.indexOf(attachment, true);
|
||||
return index == -1 ? false : intersectsSegment(index, x1, y1, x2, y2);
|
||||
}
|
||||
|
||||
/** Returns true if the bounding box attachment contains the line segment. */
|
||||
public boolean intersectsSegment (int index, float x1, float y1, float x2, float y2) {
|
||||
FloatArray polygon = polygons.get(index);
|
||||
float[] vertices = polygon.items;
|
||||
int nn = polygon.size;
|
||||
|
||||
float width12 = x1 - x2, height12 = y1 - y2;
|
||||
float det1 = x1 * y2 - y1 * x2;
|
||||
int nn = vertices.length;
|
||||
float x3 = vertices[nn - 2], y3 = vertices[nn - 1];
|
||||
for (int ii = 0; ii < nn; ii += 2) {
|
||||
float x4 = vertices[ii], y4 = vertices[ii + 1];
|
||||
@ -141,7 +206,6 @@ public class SkeletonBounds {
|
||||
}
|
||||
x3 = x4;
|
||||
y3 = y4;
|
||||
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -176,7 +240,17 @@ public class SkeletonBounds {
|
||||
return maxY - minY;
|
||||
}
|
||||
|
||||
public Array<BoundingBoxAttachment> getBoundingBoxAttachments () {
|
||||
return boundingBoxAttachments;
|
||||
public Array<BoundingBoxAttachment> getBoundingBoxes () {
|
||||
return boundingBoxes;
|
||||
}
|
||||
|
||||
public Array<FloatArray> getPolygons () {
|
||||
return polygons;
|
||||
}
|
||||
|
||||
/** Returns the polygon for the specified bounding box, or null. */
|
||||
public FloatArray getPolygon (BoundingBoxAttachment boundingBox) {
|
||||
int index = boundingBoxes.indexOf(boundingBox, true);
|
||||
return index == -1 ? null : polygons.get(index);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,15 +1,23 @@
|
||||
/*******************************************************************************
|
||||
/******************************************************************************
|
||||
* Spine Runtime Software License - Version 1.0
|
||||
*
|
||||
* Copyright (c) 2013, Esoteric Software
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* Redistribution and use in source and binary forms in whole or in part, with
|
||||
* or without modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 1. A Spine Single User License or Spine Professional License must be
|
||||
* purchased from Esoteric Software and the license must remain valid:
|
||||
* http://esotericsoftware.com/
|
||||
* 2. Redistributions of source code must retain this license, which is the
|
||||
* above copyright notice, this declaration of conditions and the following
|
||||
* disclaimer.
|
||||
* 3. Redistributions in binary form must reproduce this license, which is the
|
||||
* above copyright notice, this declaration of conditions and the following
|
||||
* disclaimer, in the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
@ -21,38 +29,32 @@
|
||||
* 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.
|
||||
******************************************************************************/
|
||||
*****************************************************************************/
|
||||
|
||||
package com.esotericsoftware.spine.attachments;
|
||||
|
||||
import com.esotericsoftware.spine.Bone;
|
||||
import com.esotericsoftware.spine.Skeleton;
|
||||
import com.esotericsoftware.spine.Slot;
|
||||
|
||||
public class BoundingBoxAttachment extends Attachment {
|
||||
private float[] points;
|
||||
private float[] vertices;
|
||||
|
||||
public BoundingBoxAttachment (String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
public void updateVertices (Slot slot) {
|
||||
Bone bone = slot.getBone();
|
||||
Skeleton skeleton = slot.getSkeleton();
|
||||
float x = bone.getWorldX() + skeleton.getX();
|
||||
float y = bone.getWorldY() + skeleton.getY();
|
||||
public void computeWorldVertices (float x, float y, Bone bone, float[] worldVertices) {
|
||||
x += bone.getWorldX();
|
||||
y += bone.getWorldY();
|
||||
float m00 = bone.getM00();
|
||||
float m01 = bone.getM01();
|
||||
float m10 = bone.getM10();
|
||||
float m11 = bone.getM11();
|
||||
float[] vertices = this.vertices;
|
||||
float[] points = this.points;
|
||||
for (int i = 0, n = points.length; i < n; i += 2) {
|
||||
float px = points[i];
|
||||
float py = points[i + 1];
|
||||
vertices[i] = px * m00 + py * m01 + x;
|
||||
vertices[i + 1] = px * m10 + py * m11 + y;
|
||||
for (int i = 0, n = vertices.length; i < n; i += 2) {
|
||||
float px = vertices[i];
|
||||
float py = vertices[i + 1];
|
||||
worldVertices[i] = px * m00 + py * m01 + x;
|
||||
worldVertices[i + 1] = px * m10 + py * m11 + y;
|
||||
}
|
||||
}
|
||||
|
||||
@ -60,12 +62,7 @@ public class BoundingBoxAttachment extends Attachment {
|
||||
return vertices;
|
||||
}
|
||||
|
||||
public float[] getPoints () {
|
||||
return points;
|
||||
}
|
||||
|
||||
public void setPoints (float[] points) {
|
||||
this.points = points;
|
||||
if (vertices == null || vertices.length != points.length) vertices = new float[points.length];
|
||||
public void setVertices (float[] vertices) {
|
||||
this.vertices = vertices;
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,10 +8,10 @@
|
||||
{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 93.92 },
|
||||
{ "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "x": 56.34, "y": 0.98, "rotation": -16.65 },
|
||||
{ "name": "left shoulder", "parent": "torso", "length": 35.43, "x": 74.04, "y": -20.38, "rotation": -156.96 },
|
||||
{ "name": "neck", "parent": "torso", "length": 18.38, "x": 81.67, "y": -6.34, "rotation": -1.51 },
|
||||
{ "name": "neck", "parent": "torso", "length": 18.38, "x": 81.67, "y": -6.34, "rotation": -13.92 },
|
||||
{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 42.99, "y": -0.61, "rotation": -14.34 },
|
||||
{ "name": "right shoulder", "parent": "torso", "length": 37.24, "x": 76.02, "y": 18.14, "rotation": 133.88 },
|
||||
{ "name": "head", "parent": "neck", "length": 68.28, "x": 20.93, "y": 11.59, "rotation": -13.92 },
|
||||
{ "name": "head", "parent": "neck", "length": 68.28, "x": 20.93, "y": 11.59 },
|
||||
{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 37.85, "y": -2.34, "rotation": 28.16 },
|
||||
{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 58.94, "y": -7.61, "rotation": 102.43 },
|
||||
{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 37.6, "y": 0.31, "rotation": 36.32 },
|
||||
@ -26,7 +26,7 @@
|
||||
{ "name": "left hand", "bone": "left hand", "attachment": "left hand" },
|
||||
{ "name": "left foot", "bone": "left foot", "attachment": "left foot" },
|
||||
{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left lower leg" },
|
||||
{ "name": "left upper leg", "bone": "left upper leg", "attachment": "left upper leg" },
|
||||
{ "name": "left upper leg", "bone": "left upper leg", "attachment": "boundingbox" },
|
||||
{ "name": "neck", "bone": "neck", "attachment": "neck" },
|
||||
{ "name": "torso", "bone": "torso", "attachment": "torso" },
|
||||
{ "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" },
|
||||
@ -40,14 +40,70 @@
|
||||
{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right shoulder" },
|
||||
{ "name": "right arm", "bone": "right arm", "attachment": "right arm" },
|
||||
{ "name": "right hand item", "bone": "right hand", "attachment": "dagger" },
|
||||
{ "name": "right hand", "bone": "right hand", "attachment": "right hand" }
|
||||
{ "name": "right hand", "bone": "right hand", "attachment": "right hand" },
|
||||
{ "name": "bounding box", "bone": "head", "attachment": "bbox" }
|
||||
],
|
||||
"skins": {
|
||||
"default": {
|
||||
"bounding box": {
|
||||
"bbox": {
|
||||
"type": "boundingbox",
|
||||
"points": [
|
||||
-7.2252045,
|
||||
-34.808647,
|
||||
-1.9847412,
|
||||
-40.70198,
|
||||
12.63089,
|
||||
-37.503178,
|
||||
13.559738,
|
||||
-44.273937,
|
||||
21.15651,
|
||||
-45.197586,
|
||||
25.916733,
|
||||
-36.59557,
|
||||
30.31987,
|
||||
-37.271088,
|
||||
31.82283,
|
||||
-47.966175,
|
||||
36.74109,
|
||||
-47.863335,
|
||||
37.828888,
|
||||
-37.763573,
|
||||
52.86676,
|
||||
-18.987732,
|
||||
54.687653,
|
||||
4.058235,
|
||||
42.064606,
|
||||
24.16484,
|
||||
37.09868,
|
||||
25.39936,
|
||||
36.084442,
|
||||
44.725235,
|
||||
28.417389,
|
||||
53.716904,
|
||||
23.382614,
|
||||
49.773712,
|
||||
28.766006,
|
||||
39.868294,
|
||||
25.873352,
|
||||
27.605164,
|
||||
8.960373,
|
||||
14.733994,
|
||||
-0.746933,
|
||||
1.7576027
|
||||
]
|
||||
}
|
||||
},
|
||||
"left hand item": {
|
||||
"dagger": { "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 },
|
||||
"spear": { "x": -4.55, "y": 39.2, "rotation": 13.04, "width": 22, "height": 368 }
|
||||
},
|
||||
"left upper leg": {
|
||||
"boundingbox": {
|
||||
"type": "boundingbox",
|
||||
"points": [ -73.94766, 8.514406, -49.917465, 25.294191, -79.28125, 46.664314, -95.755325, 34.604897, -74.9664, 27.453112 ]
|
||||
}
|
||||
},
|
||||
"right hand item": {
|
||||
"dagger": { "x": 6.51, "y": -24.15, "rotation": -8.06, "width": 26, "height": 108 }
|
||||
}
|
||||
@ -499,9 +555,9 @@
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{ "time": 0.46666667, "name": "test1" },
|
||||
{ "time": 0.53333336, "name": "test2" },
|
||||
{ "time": 0.93333334, "name": "test1" }
|
||||
{ "time": 0.4666, "name": "test1" },
|
||||
{ "time": 0.5333, "name": "test2" },
|
||||
{ "time": 0.9333, "name": "test1" }
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
@ -3,21 +3,21 @@
|
||||
{ "name": "root" },
|
||||
{ "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 },
|
||||
{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
|
||||
{ "name": "left lower leg", "parent": "left upper leg", "length": 56.45, "x": 51.78, "y": 3.46, "rotation": -16.65 },
|
||||
{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 64.02, "y": -8.67, "rotation": 102.43 },
|
||||
{ "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 },
|
||||
{ "name": "right upper leg", "parent": "hip", "length": 45.76, "x": -18.27, "rotation": -101.13 },
|
||||
{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 50.21, "y": 0.6, "rotation": -10.7 },
|
||||
{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
|
||||
{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 94.95 },
|
||||
{ "name": "neck", "parent": "torso", "length": 18.38, "x": 83.64, "y": -1.78, "rotation": 0.9 },
|
||||
{ "name": "head", "parent": "neck", "length": 68.28, "x": 19.09, "y": 6.97, "rotation": -8.94 },
|
||||
{ "name": "right shoulder", "parent": "torso", "length": 49.95, "x": 81.9, "y": 6.79, "rotation": 130.6 },
|
||||
{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 49.95, "y": -0.12, "rotation": 40.12 },
|
||||
{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
|
||||
{ "name": "left lower leg", "parent": "left upper leg", "length": 56.45, "x": 51.78, "y": 3.46, "rotation": -16.65 },
|
||||
{ "name": "left shoulder", "parent": "torso", "length": 44.19, "x": 78.96, "y": -15.75, "rotation": -156.96 },
|
||||
{ "name": "neck", "parent": "torso", "length": 18.38, "x": 83.64, "y": -1.78, "rotation": 0.9 },
|
||||
{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 50.21, "y": 0.6, "rotation": -10.7 },
|
||||
{ "name": "right shoulder", "parent": "torso", "length": 49.95, "x": 81.9, "y": 6.79, "rotation": 130.6 },
|
||||
{ "name": "head", "parent": "neck", "length": 68.28, "x": 19.09, "y": 6.97, "rotation": -8.94 },
|
||||
{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 44.19, "y": -0.01, "rotation": 28.16 },
|
||||
{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 64.02, "y": -8.67, "rotation": 102.43 },
|
||||
{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 49.95, "y": -0.12, "rotation": 40.12 },
|
||||
{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
|
||||
{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
|
||||
{ "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }
|
||||
{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 }
|
||||
],
|
||||
"slots": [
|
||||
{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left-shoulder" },
|
||||
@ -34,351 +34,284 @@
|
||||
{ "name": "neck", "bone": "neck", "attachment": "neck" },
|
||||
{ "name": "head", "bone": "head", "attachment": "head" },
|
||||
{ "name": "eyes", "bone": "head", "attachment": "eyes" },
|
||||
{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right-shoulder" },
|
||||
{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right-shoulder", "additive": true },
|
||||
{ "name": "right arm", "bone": "right arm", "attachment": "right-arm" },
|
||||
{ "name": "right hand", "bone": "right hand", "attachment": "right-hand" }
|
||||
{ "name": "right hand", "bone": "right hand", "attachment": "right-hand" },
|
||||
{ "name": "bb-head", "bone": "head", "attachment": "bb-head" }
|
||||
],
|
||||
"skins": {
|
||||
"default": {
|
||||
"left shoulder": {
|
||||
"left-shoulder": { "x": 23.74, "y": 0.11, "rotation": 62.01, "width": 34, "height": 53 }
|
||||
"bb-head": {
|
||||
"bb-head": {
|
||||
"type": "boundingbox",
|
||||
"vertices": [
|
||||
55.69696,
|
||||
-44.60648,
|
||||
8.2226715,
|
||||
-47.609646,
|
||||
-11.244263,
|
||||
-32.942703,
|
||||
-0.05206299,
|
||||
35.835804,
|
||||
61.018433,
|
||||
43.227512,
|
||||
90.35846,
|
||||
-16.054127,
|
||||
115.41275,
|
||||
-32.817406,
|
||||
78.29431,
|
||||
-56.05409
|
||||
]
|
||||
}
|
||||
},
|
||||
"eyes": {
|
||||
"eyes": { "x": 28.94, "y": -32.92, "rotation": -86.9, "width": 34, "height": 27 },
|
||||
"eyes-closed": { "x": 28.77, "y": -32.86, "rotation": -86.9, "width": 34, "height": 27 }
|
||||
},
|
||||
"head": {
|
||||
"head": { "x": 53.94, "y": -5.75, "rotation": -86.9, "width": 121, "height": 132 }
|
||||
},
|
||||
"left arm": {
|
||||
"left-arm": { "x": 15.11, "y": -0.44, "rotation": 33.84, "width": 35, "height": 29 }
|
||||
},
|
||||
"left hand": {
|
||||
"left-hand": { "x": 0.75, "y": 1.86, "rotation": 31.14, "width": 35, "height": 38 }
|
||||
},
|
||||
"left foot": {
|
||||
"left-foot": { "x": 24.35, "y": 8.88, "rotation": 3.32, "width": 65, "height": 30 }
|
||||
},
|
||||
"left hand": {
|
||||
"left-hand": { "x": 0.75, "y": 1.86, "rotation": 31.14, "width": 35, "height": 38 }
|
||||
},
|
||||
"left lower leg": {
|
||||
"left-lower-leg": { "x": 24.55, "y": -1.92, "rotation": 105.75, "width": 49, "height": 64 }
|
||||
},
|
||||
"left shoulder": {
|
||||
"left-shoulder": { "x": 23.74, "y": 0.11, "rotation": 62.01, "width": 34, "height": 53 }
|
||||
},
|
||||
"left upper leg": {
|
||||
"left-upper-leg": { "x": 26.12, "y": -1.85, "rotation": 89.09, "width": 33, "height": 67 }
|
||||
},
|
||||
"neck": {
|
||||
"neck": { "x": 9.42, "y": -3.66, "rotation": -100.15, "width": 34, "height": 28 }
|
||||
},
|
||||
"pelvis": {
|
||||
"pelvis": { "x": -4.83, "y": 10.62, "width": 63, "height": 47 }
|
||||
},
|
||||
"right arm": {
|
||||
"right-arm": { "x": 18.34, "y": -2.64, "rotation": 94.32, "width": 21, "height": 45 }
|
||||
},
|
||||
"right foot": {
|
||||
"right-foot": { "x": 19.02, "y": 8.47, "rotation": 1.52, "width": 67, "height": 30 }
|
||||
},
|
||||
"right hand": {
|
||||
"right-hand": { "x": 6.82, "y": 1.25, "rotation": 91.96, "width": 32, "height": 32 }
|
||||
},
|
||||
"right lower leg": {
|
||||
"right-lower-leg": { "x": 23.28, "y": -2.59, "rotation": 111.83, "width": 51, "height": 64 }
|
||||
},
|
||||
"right shoulder": {
|
||||
"right-shoulder": { "x": 25.86, "y": 0.03, "rotation": 134.44, "width": 52, "height": 51 }
|
||||
},
|
||||
"right upper leg": {
|
||||
"right-upper-leg": { "x": 23.03, "y": 0.25, "rotation": 101.13, "width": 44, "height": 70 }
|
||||
},
|
||||
"torso": {
|
||||
"torso": { "x": 44.57, "y": -7.08, "rotation": -94.95, "width": 68, "height": 92 }
|
||||
},
|
||||
"neck": {
|
||||
"neck": { "x": 9.42, "y": -3.66, "rotation": -100.15, "width": 34, "height": 28 }
|
||||
},
|
||||
"head": {
|
||||
"head": { "x": 53.94, "y": -5.75, "rotation": -86.9, "width": 121, "height": 132 }
|
||||
},
|
||||
"eyes": {
|
||||
"eyes": { "x": 28.94, "y": -32.92, "rotation": -86.9, "width": 34, "height": 27 },
|
||||
"eyes-closed": { "x": 28.77, "y": -32.86, "rotation": -86.9, "width": 34, "height": 27 }
|
||||
},
|
||||
"right shoulder": {
|
||||
"right-shoulder": { "x": 25.86, "y": 0.03, "rotation": 134.44, "width": 52, "height": 51 }
|
||||
},
|
||||
"right arm": {
|
||||
"right-arm": { "x": 18.34, "y": -2.64, "rotation": 94.32, "width": 21, "height": 45 }
|
||||
},
|
||||
"right hand": {
|
||||
"right-hand": { "x": 6.82, "y": 1.25, "rotation": 91.96, "width": 32, "height": 32 }
|
||||
}
|
||||
}
|
||||
},
|
||||
"events": {
|
||||
"test1": { "int": 1, "float": 2, "string": "three" },
|
||||
"test2": { "int": 123, "float": 456, "string": "789" }
|
||||
"behind": {},
|
||||
"headAttach": {},
|
||||
"headPop": {}
|
||||
},
|
||||
"animations": {
|
||||
"walk": {
|
||||
"events": [
|
||||
{ "time": 0, "name": "test1", int: 123, float: 12.3, string: "meow" },
|
||||
],
|
||||
"drawOrder": {
|
||||
"bones": {
|
||||
"left upper leg": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": -26.55 },
|
||||
{ "time": 0.1333, "angle": -8.78 },
|
||||
{ "time": 0.2666, "angle": 9.51 },
|
||||
{ "time": 0.4, "angle": 30.74 },
|
||||
{ "time": 0.5333, "angle": 25.33 },
|
||||
{ "time": 0.6666, "angle": 26.11 },
|
||||
{ "time": 0.8, "angle": -7.7 },
|
||||
{ "time": 0.9333, "angle": -21.19 },
|
||||
{ "time": 1.0666, "angle": -26.55 }
|
||||
],
|
||||
"translate": [
|
||||
{ "time": 0, "x": -3, "y": -2.25 },
|
||||
{ "time": 0.4, "x": -2.18, "y": -2.25 },
|
||||
{ "time": 1.0666, "x": -3, "y": -2.25 }
|
||||
]
|
||||
},
|
||||
"right upper leg": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": 42.45 },
|
||||
{ "time": 0.1333, "angle": 52.1 },
|
||||
{ "time": 0.2666, "angle": 5.96 },
|
||||
{ "time": 0.5333, "angle": -16.93 },
|
||||
{ "time": 0.6666, "angle": 1.89 },
|
||||
{
|
||||
"time": 0.8,
|
||||
"angle": 28.06,
|
||||
"curve": [ 0.462, 0.11, 1, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 0.9333,
|
||||
"angle": 58.68,
|
||||
"curve": [ 0.5, 0.02, 1, 1 ]
|
||||
},
|
||||
{ "time": 1.0666, "angle": 42.45 }
|
||||
],
|
||||
"translate": [
|
||||
{ "time": 0, "x": 8.11, "y": -2.36 },
|
||||
{ "time": 0.1333, "x": 10.03, "y": -2.56 },
|
||||
{ "time": 0.4, "x": 2.76, "y": -2.97 },
|
||||
{ "time": 0.5333, "x": 2.76, "y": -2.81 },
|
||||
{ "time": 0.9333, "x": 8.67, "y": -2.54 },
|
||||
{ "time": 1.0666, "x": 8.11, "y": -2.36 }
|
||||
]
|
||||
},
|
||||
"left lower leg": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": -10.21 },
|
||||
{ "time": 0.1333, "angle": -55.64 },
|
||||
{ "time": 0.2666, "angle": -68.12 },
|
||||
{ "time": 0.5333, "angle": 5.11 },
|
||||
{ "time": 0.6666, "angle": -28.29 },
|
||||
{ "time": 0.8, "angle": 4.08 },
|
||||
{ "time": 0.9333, "angle": 3.53 },
|
||||
{ "time": 1.0666, "angle": -10.21 }
|
||||
]
|
||||
},
|
||||
"left foot": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": -3.69 },
|
||||
{ "time": 0.1333, "angle": -10.42 },
|
||||
{ "time": 0.2666, "angle": -17.14 },
|
||||
{ "time": 0.4, "angle": -2.83 },
|
||||
{ "time": 0.5333, "angle": -3.87 },
|
||||
{ "time": 0.6666, "angle": 2.78 },
|
||||
{ "time": 0.8, "angle": 1.68 },
|
||||
{ "time": 0.9333, "angle": -8.54 },
|
||||
{ "time": 1.0666, "angle": -3.69 }
|
||||
]
|
||||
},
|
||||
"right shoulder": {
|
||||
"rotate": [
|
||||
{
|
||||
"time": 0,
|
||||
"angle": 20.89,
|
||||
"curve": [ 0.264, 0, 0.75, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 0.1333,
|
||||
"angle": 3.72,
|
||||
"curve": [ 0.272, 0, 0.841, 1 ]
|
||||
},
|
||||
{ "time": 0.6666, "angle": -278.28 },
|
||||
{ "time": 1.0666, "angle": 20.89 }
|
||||
],
|
||||
"translate": [
|
||||
{ "time": 0, "x": -7.84, "y": 7.19 },
|
||||
{ "time": 0.1333, "x": -6.36, "y": 6.42 },
|
||||
{ "time": 0.6666, "x": -11.07, "y": 5.25 },
|
||||
{ "time": 1.0666, "x": -7.84, "y": 7.19 }
|
||||
]
|
||||
},
|
||||
"right arm": {
|
||||
"rotate": [
|
||||
{
|
||||
"time": 0,
|
||||
"angle": -4.02,
|
||||
"curve": [ 0.267, 0, 0.804, 0.99 ]
|
||||
},
|
||||
{
|
||||
"time": 0.1333,
|
||||
"angle": -13.99,
|
||||
"curve": [ 0.341, 0, 1, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 0.6666,
|
||||
"angle": 36.54,
|
||||
"curve": [ 0.307, 0, 0.787, 0.99 ]
|
||||
},
|
||||
{ "time": 1.0666, "angle": -4.02 }
|
||||
]
|
||||
},
|
||||
"right hand": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": 22.92 },
|
||||
{ "time": 0.4, "angle": -8.97 },
|
||||
{ "time": 0.6666, "angle": 0.51 },
|
||||
{ "time": 1.0666, "angle": 22.92 }
|
||||
]
|
||||
},
|
||||
"left shoulder": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": -1.47 },
|
||||
{ "time": 0.1333, "angle": 13.6 },
|
||||
{ "time": 0.6666, "angle": 280.74 },
|
||||
{ "time": 1.0666, "angle": -1.47 }
|
||||
],
|
||||
"translate": [
|
||||
{ "time": 0, "x": -1.76, "y": 0.56 },
|
||||
{ "time": 0.6666, "x": -2.47, "y": 8.14 },
|
||||
{ "time": 1.0666, "x": -1.76, "y": 0.56 }
|
||||
]
|
||||
},
|
||||
"left hand": {
|
||||
"rotate": [
|
||||
{
|
||||
"time": 0,
|
||||
"angle": 11.58,
|
||||
"curve": [ 0.169, 0.37, 0.632, 1.55 ]
|
||||
},
|
||||
{
|
||||
"time": 0.1333,
|
||||
"angle": 28.13,
|
||||
"curve": [ 0.692, 0, 0.692, 0.99 ]
|
||||
},
|
||||
{
|
||||
"time": 0.6666,
|
||||
"angle": -27.42,
|
||||
"curve": [ 0.117, 0.41, 0.738, 1.76 ]
|
||||
},
|
||||
{ "time": 0.8, "angle": -36.32 },
|
||||
{ "time": 1.0666, "angle": 11.58 }
|
||||
]
|
||||
},
|
||||
"left arm": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": -8.27 },
|
||||
{ "time": 0.1333, "angle": 18.43 },
|
||||
{ "time": 0.6666, "angle": 0.88 },
|
||||
{ "time": 1.0666, "angle": -8.27 }
|
||||
]
|
||||
},
|
||||
"torso": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": -10.28 },
|
||||
{
|
||||
"time": 0.1333,
|
||||
"angle": -15.38,
|
||||
"curve": [ 0.545, 0, 1, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 0.4,
|
||||
"angle": -9.78,
|
||||
"curve": [ 0.58, 0.17, 1, 1 ]
|
||||
},
|
||||
{ "time": 0.6666, "angle": -15.75 },
|
||||
{ "time": 0.9333, "angle": -7.06 },
|
||||
{ "time": 1.0666, "angle": -10.28 }
|
||||
],
|
||||
"translate": [
|
||||
{ "time": 0, "x": -3.67, "y": 1.68 },
|
||||
{ "time": 0.1333, "x": -3.67, "y": 0.68 },
|
||||
{ "time": 0.4, "x": -3.67, "y": 1.97 },
|
||||
{ "time": 0.6666, "x": -3.67, "y": -0.14 },
|
||||
{ "time": 1.0666, "x": -3.67, "y": 1.68 }
|
||||
]
|
||||
},
|
||||
"right foot": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": -5.25 },
|
||||
{ "time": 0.2666, "angle": -4.08 },
|
||||
{ "time": 0.4, "angle": -6.45 },
|
||||
{ "time": 0.5333, "angle": -5.39 },
|
||||
{ "time": 0.8, "angle": -11.68 },
|
||||
{ "time": 0.9333, "angle": 0.46 },
|
||||
{ "time": 1.0666, "angle": -5.25 }
|
||||
]
|
||||
},
|
||||
"right lower leg": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": -3.39 },
|
||||
{ "time": 0.1333, "angle": -45.53 },
|
||||
{ "time": 0.2666, "angle": -2.59 },
|
||||
{ "time": 0.5333, "angle": -19.53 },
|
||||
{ "time": 0.6666, "angle": -64.8 },
|
||||
{
|
||||
"time": 0.8,
|
||||
"angle": -82.56,
|
||||
"curve": [ 0.557, 0.18, 1, 1 ]
|
||||
},
|
||||
{ "time": 1.0666, "angle": -3.39 }
|
||||
]
|
||||
},
|
||||
"hip": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": 0, "curve": "stepped" },
|
||||
{ "time": 1.0666, "angle": 0 }
|
||||
],
|
||||
"translate": [
|
||||
{ "time": 0, "x": 0, "y": 0 },
|
||||
{
|
||||
"time": 0.1333,
|
||||
"x": 0,
|
||||
"y": -7.61,
|
||||
"curve": [ 0.272, 0.86, 1, 1 ]
|
||||
},
|
||||
{ "time": 0.4, "x": 0, "y": 8.7 },
|
||||
{ "time": 0.5333, "x": 0, "y": -0.41 },
|
||||
{
|
||||
"time": 0.6666,
|
||||
"x": 0,
|
||||
"y": -7.05,
|
||||
"curve": [ 0.235, 0.89, 1, 1 ]
|
||||
},
|
||||
{ "time": 0.8, "x": 0, "y": 2.92 },
|
||||
{ "time": 0.9333, "x": 0, "y": 6.78 },
|
||||
{ "time": 1.0666, "x": 0, "y": 0 }
|
||||
]
|
||||
},
|
||||
"neck": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": 3.6 },
|
||||
{ "time": 0.1333, "angle": 17.49 },
|
||||
{ "time": 0.2666, "angle": 6.1 },
|
||||
{ "time": 0.4, "angle": 3.45 },
|
||||
{ "time": 0.5333, "angle": 5.17 },
|
||||
{ "time": 0.6666, "angle": 18.36 },
|
||||
{ "time": 0.8, "angle": 6.09 },
|
||||
{ "time": 0.9333, "angle": 2.28 },
|
||||
{ "time": 1.0666, "angle": 3.6 }
|
||||
]
|
||||
},
|
||||
"head": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": 0 },
|
||||
{ "time": 0.4827, "angle": -11.07, "curve": "stepped" },
|
||||
{ "time": 0.8965, "angle": -11.07 },
|
||||
{ "time": 1.3103, "angle": 1.38 },
|
||||
{ "time": 1.7931, "angle": 12.91 },
|
||||
{ "time": 2.1379, "angle": 1.24 },
|
||||
{ "time": 2.6206, "angle": -16.12, "curve": "stepped" },
|
||||
{ "time": 3.3103, "angle": -16.12 },
|
||||
{ "time": 3.6551, "angle": 1.31 },
|
||||
{ "time": 4, "angle": 359.99 }
|
||||
],
|
||||
"translate": [
|
||||
{
|
||||
"time": 0,
|
||||
"angle": 3.6,
|
||||
"curve": [ 0, 0, 0.704, 1.61 ]
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"curve": [ 0.19, 0.4, 0.586, 0.75 ]
|
||||
},
|
||||
{ "time": 0.1666, "angle": -0.2 },
|
||||
{ "time": 0.2666, "angle": 6.1 },
|
||||
{ "time": 0.4, "angle": 3.45 },
|
||||
{
|
||||
"time": 0.5333,
|
||||
"angle": 5.17,
|
||||
"curve": [ 0, 0, 0.704, 1.61 ]
|
||||
"time": 0.2758,
|
||||
"x": 57.88,
|
||||
"y": -35.72,
|
||||
"curve": [ 0.39, 0.54, 0.632, 0.72 ]
|
||||
},
|
||||
{ "time": 0.7, "angle": 1.1 },
|
||||
{ "time": 0.8, "angle": 6.09 },
|
||||
{ "time": 0.9333, "angle": 2.28 },
|
||||
{ "time": 1.0666, "angle": 3.6 }
|
||||
{
|
||||
"time": 0.4827,
|
||||
"x": 87.26,
|
||||
"y": -87.89,
|
||||
"curve": [ 0.325, 0.23, 0.587, 0.36 ]
|
||||
},
|
||||
{
|
||||
"time": 0.6896,
|
||||
"x": 28.89,
|
||||
"y": -114.62,
|
||||
"curve": [ 0.383, 0.23, 0.736, 0.55 ]
|
||||
},
|
||||
{
|
||||
"time": 0.8965,
|
||||
"x": -76.58,
|
||||
"y": -124.98,
|
||||
"curve": [ 0.129, 0.21, 0.547, 0.64 ]
|
||||
},
|
||||
{
|
||||
"time": 1.1034,
|
||||
"x": -154.37,
|
||||
"y": -77.13,
|
||||
"curve": [ 0.354, 0.48, 0.729, 0.9 ]
|
||||
},
|
||||
{
|
||||
"time": 1.3103,
|
||||
"x": -181.02,
|
||||
"y": 18.56,
|
||||
"curve": [ 0.063, 0.15, 0.52, 0.62 ]
|
||||
},
|
||||
{
|
||||
"time": 1.5862,
|
||||
"x": -150.38,
|
||||
"y": 128.67,
|
||||
"curve": [ 0.381, 0.54, 0.778, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 1.7931,
|
||||
"x": -112.08,
|
||||
"y": 146.28,
|
||||
"curve": [ 0.242, 0, 0.626, 0.45 ]
|
||||
},
|
||||
{
|
||||
"time": 1.931,
|
||||
"x": -63.7,
|
||||
"y": 111.22,
|
||||
"curve": [ 0.398, 0.35, 0.786, 0.76 ]
|
||||
},
|
||||
{
|
||||
"time": 2.1379,
|
||||
"x": -48.94,
|
||||
"y": -1.55,
|
||||
"curve": [ 0.188, 0.21, 0.575, 0.61 ]
|
||||
},
|
||||
{
|
||||
"time": 2.3448,
|
||||
"x": -91.69,
|
||||
"y": -91.93,
|
||||
"curve": [ 0.362, 0.51, 0.766, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 2.6206,
|
||||
"x": -142.79,
|
||||
"y": -126.83,
|
||||
"curve": [ 0.227, 0.34, 0.593, 0.75 ]
|
||||
},
|
||||
{
|
||||
"time": 2.7586,
|
||||
"x": -176.7,
|
||||
"y": -98.32,
|
||||
"curve": [ 0.26, 0.4, 0.612, 0.71 ]
|
||||
},
|
||||
{
|
||||
"time": 2.8965,
|
||||
"x": -163.95,
|
||||
"y": -24.04,
|
||||
"curve": [ 0.338, 0.37, 0.676, 0.71 ]
|
||||
},
|
||||
{
|
||||
"time": 2.9655,
|
||||
"x": -150.17,
|
||||
"y": 10.71,
|
||||
"curve": [ 0.387, 0.61, 0.741, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 3.1034,
|
||||
"x": -102.44,
|
||||
"y": 45.92,
|
||||
"curve": [ 0.31, 0.24, 0.648, 0.58 ]
|
||||
},
|
||||
{
|
||||
"time": 3.2413,
|
||||
"x": -53.99,
|
||||
"y": 70.39,
|
||||
"curve": [ 0.325, 0.29, 0.663, 0.63 ]
|
||||
},
|
||||
{
|
||||
"time": 3.3793,
|
||||
"x": 1.88,
|
||||
"y": 55.54,
|
||||
"curve": [ 0.387, 0.33, 0.769, 0.73 ]
|
||||
},
|
||||
{
|
||||
"time": 3.5862,
|
||||
"x": 34.26,
|
||||
"y": 36.13,
|
||||
"curve": [ 0.206, 0.28, 0.596, 0.67 ]
|
||||
},
|
||||
{
|
||||
"time": 3.7931,
|
||||
"x": 23.94,
|
||||
"y": 1.01,
|
||||
"curve": [ 0.373, 0.56, 0.759, 1 ]
|
||||
},
|
||||
{ "time": 4, "x": 0, "y": 0 }
|
||||
],
|
||||
"scale": [
|
||||
{ "time": 0.8275, "x": 1, "y": 1 },
|
||||
{ "time": 1.3103, "x": 0.742, "y": 0.742 },
|
||||
{ "time": 1.7931, "x": 1, "y": 1 },
|
||||
{ "time": 2.1379, "x": 1.502, "y": 1.502 },
|
||||
{ "time": 2.6206, "x": 1, "y": 1 },
|
||||
{ "time": 2.9655, "x": 0.707, "y": 0.707 },
|
||||
{ "time": 3.3793, "x": 1, "y": 1 }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{ "time": 0, "name": "headPop", "string": "pop.wav" },
|
||||
{ "time": 1.3103, "name": "behind" },
|
||||
{ "time": 2.9655, "name": "behind" },
|
||||
{ "time": 4, "name": "headAttach", "string": "attach.wav" }
|
||||
],
|
||||
"draworder": [
|
||||
{
|
||||
"time": 0.6206,
|
||||
"offsets": [
|
||||
{ "slot": "head", "offset": -12 },
|
||||
{ "slot": "eyes", "offset": -12 }
|
||||
]
|
||||
},
|
||||
{
|
||||
"time": 1.7931,
|
||||
"offsets": [
|
||||
{ "slot": "head", "offset": 3 },
|
||||
{ "slot": "eyes", "offset": 3 }
|
||||
]
|
||||
},
|
||||
{
|
||||
"time": 2.6206,
|
||||
"offsets": [
|
||||
{ "slot": "head", "offset": -12 },
|
||||
{ "slot": "eyes", "offset": -12 }
|
||||
]
|
||||
},
|
||||
{
|
||||
"time": 3.5862,
|
||||
"offsets": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"jump": {
|
||||
"bones": {
|
||||
@ -788,12 +721,285 @@
|
||||
{ "time": 1.3666, "x": 1, "y": 1 }
|
||||
]
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
{ "time": 0.4, "name": "test1", "int": 0, "float": 0, "string": "" },
|
||||
{ "time": 0.4, "name": "test2", "int": 0, "float": 0, "string": "" },
|
||||
{ "time": 0.8, "name": "test1", "int": 12, "float": 0, "string": "" },
|
||||
]
|
||||
}
|
||||
},
|
||||
"walk": {
|
||||
"bones": {
|
||||
"left upper leg": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": -26.55 },
|
||||
{ "time": 0.1333, "angle": -8.78 },
|
||||
{ "time": 0.2666, "angle": 9.51 },
|
||||
{ "time": 0.4, "angle": 30.74 },
|
||||
{ "time": 0.5333, "angle": 25.33 },
|
||||
{ "time": 0.6666, "angle": 26.11 },
|
||||
{ "time": 0.8, "angle": -7.7 },
|
||||
{ "time": 0.9333, "angle": -21.19 },
|
||||
{ "time": 1.0666, "angle": -26.55 }
|
||||
],
|
||||
"translate": [
|
||||
{ "time": 0, "x": -3, "y": -2.25 },
|
||||
{ "time": 0.4, "x": -2.18, "y": -2.25 },
|
||||
{ "time": 1.0666, "x": -3, "y": -2.25 }
|
||||
]
|
||||
},
|
||||
"right upper leg": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": 42.45 },
|
||||
{ "time": 0.1333, "angle": 52.1 },
|
||||
{ "time": 0.2666, "angle": 5.96 },
|
||||
{ "time": 0.5333, "angle": -16.93 },
|
||||
{ "time": 0.6666, "angle": 1.89 },
|
||||
{
|
||||
"time": 0.8,
|
||||
"angle": 28.06,
|
||||
"curve": [ 0.462, 0.11, 1, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 0.9333,
|
||||
"angle": 58.68,
|
||||
"curve": [ 0.5, 0.02, 1, 1 ]
|
||||
},
|
||||
{ "time": 1.0666, "angle": 42.45 }
|
||||
],
|
||||
"translate": [
|
||||
{ "time": 0, "x": 8.11, "y": -2.36 },
|
||||
{ "time": 0.1333, "x": 10.03, "y": -2.56 },
|
||||
{ "time": 0.4, "x": 2.76, "y": -2.97 },
|
||||
{ "time": 0.5333, "x": 2.76, "y": -2.81 },
|
||||
{ "time": 0.9333, "x": 8.67, "y": -2.54 },
|
||||
{ "time": 1.0666, "x": 8.11, "y": -2.36 }
|
||||
]
|
||||
},
|
||||
"left lower leg": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": -10.21 },
|
||||
{ "time": 0.1333, "angle": -55.64 },
|
||||
{ "time": 0.2666, "angle": -68.12 },
|
||||
{ "time": 0.5333, "angle": 5.11 },
|
||||
{ "time": 0.6666, "angle": -28.29 },
|
||||
{ "time": 0.8, "angle": 4.08 },
|
||||
{ "time": 0.9333, "angle": 3.53 },
|
||||
{ "time": 1.0666, "angle": -10.21 }
|
||||
]
|
||||
},
|
||||
"left foot": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": -3.69 },
|
||||
{ "time": 0.1333, "angle": -10.42 },
|
||||
{ "time": 0.2666, "angle": -17.14 },
|
||||
{ "time": 0.4, "angle": -2.83 },
|
||||
{ "time": 0.5333, "angle": -3.87 },
|
||||
{ "time": 0.6666, "angle": 2.78 },
|
||||
{ "time": 0.8, "angle": 1.68 },
|
||||
{ "time": 0.9333, "angle": -8.54 },
|
||||
{ "time": 1.0666, "angle": -3.69 }
|
||||
]
|
||||
},
|
||||
"right shoulder": {
|
||||
"rotate": [
|
||||
{
|
||||
"time": 0,
|
||||
"angle": 20.89,
|
||||
"curve": [ 0.264, 0, 0.75, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 0.1333,
|
||||
"angle": 3.72,
|
||||
"curve": [ 0.272, 0, 0.841, 1 ]
|
||||
},
|
||||
{ "time": 0.6666, "angle": -278.28 },
|
||||
{ "time": 1.0666, "angle": 20.89 }
|
||||
],
|
||||
"translate": [
|
||||
{ "time": 0, "x": -7.84, "y": 7.19 },
|
||||
{ "time": 0.1333, "x": -6.36, "y": 6.42 },
|
||||
{ "time": 0.6666, "x": -11.07, "y": 5.25 },
|
||||
{ "time": 1.0666, "x": -7.84, "y": 7.19 }
|
||||
]
|
||||
},
|
||||
"right arm": {
|
||||
"rotate": [
|
||||
{
|
||||
"time": 0,
|
||||
"angle": -4.02,
|
||||
"curve": [ 0.267, 0, 0.804, 0.99 ]
|
||||
},
|
||||
{
|
||||
"time": 0.1333,
|
||||
"angle": -13.99,
|
||||
"curve": [ 0.341, 0, 1, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 0.6666,
|
||||
"angle": 36.54,
|
||||
"curve": [ 0.307, 0, 0.787, 0.99 ]
|
||||
},
|
||||
{ "time": 1.0666, "angle": -4.02 }
|
||||
]
|
||||
},
|
||||
"right hand": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": 22.92 },
|
||||
{ "time": 0.4, "angle": -8.97 },
|
||||
{ "time": 0.6666, "angle": 0.51 },
|
||||
{ "time": 1.0666, "angle": 22.92 }
|
||||
]
|
||||
},
|
||||
"left shoulder": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": -1.47 },
|
||||
{ "time": 0.1333, "angle": 13.6 },
|
||||
{ "time": 0.6666, "angle": 280.74 },
|
||||
{ "time": 1.0666, "angle": -1.47 }
|
||||
],
|
||||
"translate": [
|
||||
{ "time": 0, "x": -1.76, "y": 0.56 },
|
||||
{ "time": 0.6666, "x": -2.47, "y": 8.14 },
|
||||
{ "time": 1.0666, "x": -1.76, "y": 0.56 }
|
||||
]
|
||||
},
|
||||
"left hand": {
|
||||
"rotate": [
|
||||
{
|
||||
"time": 0,
|
||||
"angle": 11.58,
|
||||
"curve": [ 0.169, 0.37, 0.632, 1.55 ]
|
||||
},
|
||||
{
|
||||
"time": 0.1333,
|
||||
"angle": 28.13,
|
||||
"curve": [ 0.692, 0, 0.692, 0.99 ]
|
||||
},
|
||||
{
|
||||
"time": 0.6666,
|
||||
"angle": -27.42,
|
||||
"curve": [ 0.117, 0.41, 0.738, 1.76 ]
|
||||
},
|
||||
{ "time": 0.8, "angle": -36.32 },
|
||||
{ "time": 1.0666, "angle": 11.58 }
|
||||
]
|
||||
},
|
||||
"left arm": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": -8.27 },
|
||||
{ "time": 0.1333, "angle": 18.43 },
|
||||
{ "time": 0.6666, "angle": 0.88 },
|
||||
{ "time": 1.0666, "angle": -8.27 }
|
||||
]
|
||||
},
|
||||
"torso": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": -10.28 },
|
||||
{
|
||||
"time": 0.1333,
|
||||
"angle": -15.38,
|
||||
"curve": [ 0.545, 0, 1, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 0.4,
|
||||
"angle": -9.78,
|
||||
"curve": [ 0.58, 0.17, 1, 1 ]
|
||||
},
|
||||
{ "time": 0.6666, "angle": -15.75 },
|
||||
{ "time": 0.9333, "angle": -7.06 },
|
||||
{ "time": 1.0666, "angle": -10.28 }
|
||||
],
|
||||
"translate": [
|
||||
{ "time": 0, "x": -3.67, "y": 1.68 },
|
||||
{ "time": 0.1333, "x": -3.67, "y": 0.68 },
|
||||
{ "time": 0.4, "x": -3.67, "y": 1.97 },
|
||||
{ "time": 0.6666, "x": -3.67, "y": -0.14 },
|
||||
{ "time": 1.0666, "x": -3.67, "y": 1.68 }
|
||||
]
|
||||
},
|
||||
"right foot": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": -5.25 },
|
||||
{ "time": 0.2666, "angle": -4.08 },
|
||||
{ "time": 0.4, "angle": -6.45 },
|
||||
{ "time": 0.5333, "angle": -5.39 },
|
||||
{ "time": 0.8, "angle": -11.68 },
|
||||
{ "time": 0.9333, "angle": 0.46 },
|
||||
{ "time": 1.0666, "angle": -5.25 }
|
||||
]
|
||||
},
|
||||
"right lower leg": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": -3.39 },
|
||||
{ "time": 0.1333, "angle": -45.53 },
|
||||
{ "time": 0.2666, "angle": -2.59 },
|
||||
{ "time": 0.5333, "angle": -19.53 },
|
||||
{ "time": 0.6666, "angle": -64.8 },
|
||||
{
|
||||
"time": 0.8,
|
||||
"angle": -82.56,
|
||||
"curve": [ 0.557, 0.18, 1, 1 ]
|
||||
},
|
||||
{ "time": 1.0666, "angle": -3.39 }
|
||||
]
|
||||
},
|
||||
"hip": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": 0, "curve": "stepped" },
|
||||
{ "time": 1.0666, "angle": 0 }
|
||||
],
|
||||
"translate": [
|
||||
{ "time": 0, "x": 0, "y": 0 },
|
||||
{
|
||||
"time": 0.1333,
|
||||
"x": 0,
|
||||
"y": -7.61,
|
||||
"curve": [ 0.272, 0.86, 1, 1 ]
|
||||
},
|
||||
{ "time": 0.4, "x": 0, "y": 8.7 },
|
||||
{ "time": 0.5333, "x": 0, "y": -0.41 },
|
||||
{
|
||||
"time": 0.6666,
|
||||
"x": 0,
|
||||
"y": -7.05,
|
||||
"curve": [ 0.235, 0.89, 1, 1 ]
|
||||
},
|
||||
{ "time": 0.8, "x": 0, "y": 2.92 },
|
||||
{ "time": 0.9333, "x": 0, "y": 6.78 },
|
||||
{ "time": 1.0666, "x": 0, "y": 0 }
|
||||
]
|
||||
},
|
||||
"neck": {
|
||||
"rotate": [
|
||||
{ "time": 0, "angle": 3.6 },
|
||||
{ "time": 0.1333, "angle": 17.49 },
|
||||
{ "time": 0.2666, "angle": 6.1 },
|
||||
{ "time": 0.4, "angle": 3.45 },
|
||||
{ "time": 0.5333, "angle": 5.17 },
|
||||
{ "time": 0.6666, "angle": 18.36 },
|
||||
{ "time": 0.8, "angle": 6.09 },
|
||||
{ "time": 0.9333, "angle": 2.28 },
|
||||
{ "time": 1.0666, "angle": 3.6 }
|
||||
]
|
||||
},
|
||||
"head": {
|
||||
"rotate": [
|
||||
{
|
||||
"time": 0,
|
||||
"angle": 3.6,
|
||||
"curve": [ 0, 0, 0.704, 1.61 ]
|
||||
},
|
||||
{ "time": 0.1666, "angle": -0.2 },
|
||||
{ "time": 0.2666, "angle": 6.1 },
|
||||
{ "time": 0.4, "angle": 3.45 },
|
||||
{
|
||||
"time": 0.5333,
|
||||
"angle": 5.17,
|
||||
"curve": [ 0, 0, 0.704, 1.61 ]
|
||||
},
|
||||
{ "time": 0.7, "angle": 1.1 },
|
||||
{ "time": 0.8, "angle": 6.09 },
|
||||
{ "time": 0.9333, "angle": 2.28 },
|
||||
{ "time": 1.0666, "angle": 3.6 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user