Ejemplo n.º 1
0
    static void TryGetTransform(JSONClass json, BoneFrameData data)
    {
        if (json.ContainKey("transform"))
        {
            JSONClass t = json["transform"].AsObject;

            data.transPos    = t.ContainKey("x") || t.ContainKey("y");
            data.transScale  = t.ContainKey("scX") || t.ContainKey("scY");
            data.transRotate = t.ContainKey("skX");

            data.pos      = new Vector2(TryGetFloat(t, "x", 0), TryGetFloat(t, "y", 0));
            data.rotation = -TryGetFloat(t, "skX", 0);
            data.scale    = new Vector2(TryGetFloat(t, "scX", 1), TryGetFloat(t, "scY", 1));
        }
    }
Ejemplo n.º 2
0
    static BoneAnimationCollect DecodeBoneAnimationCollect(JSONClass json)
    {
        BoneAnimationCollect data = new BoneAnimationCollect();

        data.name   = json["name"];
        data.scale  = TryGetFloat(json, "scale", 1);
        data.offset = TryGetFloat(json, "offset", 1);

        JSONArray frames = json["frame"].AsArray;

        data.frames = new BoneFrameData[frames.Count];
        int start = 0;

        Debug.Log(frames.Count);
        for (int i = 0; i < frames.Count; i++)
        {
            JSONClass     jd = frames[i].AsObject;
            BoneFrameData fd = new BoneFrameData();

            fd.frameStart  = start;
            fd.duration    = TryGetInt(jd, "duration", 1);
            start         += fd.duration;
            fd.tweenType   = TryGetInt(jd, "tweenType", 0);
            fd.tweenEasing = TryGetFloat(jd, "tweenEasing", 0);
            TryGetTransform(jd, fd);

            JSONArray curve = jd["curve"].AsArray;
            fd.curve = new Vector2[curve.Count / 2];
            for (int j = 0; j < curve.Count; j += 2)
            {
                fd.curve[j / 2] = new Vector2(curve[j].AsFloat, curve[j + 1].AsFloat);
            }

            data.frames[i] = fd;
        }
        return(data);
    }
Ejemplo n.º 3
0
 internal BoneFrame(int startFrame, BoneFrameData f)
 {
     StartFrame = startFrame;
     Transform  = new DbTransform(f.Transform);
     TweenCurve = f.TweenEasing == null ? new NoTweenCurve() : TweenFactory.FromArray(f.TweenCurve);
 }
Ejemplo n.º 4
0
 /// <summary>
 ///     与えた2つのフレームから指定フレームでの補完位置を計算します。
 /// </summary>
 /// <param name="frame1"></param>
 /// <param name="frame2"></param>
 /// <param name="frame"></param>
 /// <returns></returns>
 public static Vector3 ComplementTranslate(BoneFrameData frame1, BoneFrameData frame2, Vector3 progress)
 {
     return(new Vector3(Lerp(frame1.BonePosition.X, frame2.BonePosition.X, progress.X),
                        Lerp(frame1.BonePosition.Y, frame2.BonePosition.Y, progress.Y),
                        Lerp(frame1.BonePosition.Z, frame2.BonePosition.Z, progress.Z)));
 }
Ejemplo n.º 5
0
 /// <summary>
 ///     与えた2つのフレームから、指定フレームでの回転行列を計算します。
 /// </summary>
 /// <param name="frame1">若いキーフレーム番号</param>
 /// <param name="frame2"></param>
 /// <param name="frame"></param>
 /// <returns></returns>
 public static Quaternion ComplementRotateQuaternion(BoneFrameData frame1, BoneFrameData frame2, float progress)
 {
     return(Quaternion.Slerp(frame1.BoneRotatingQuaternion, frame2.BoneRotatingQuaternion, progress));
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Add bone frame
 /// </summary>
 /// <param name="boneFrameData">Bone frame data</param>
 public void AddBoneFrameData(BoneFrameData boneFrameData)
 {
     this.frameManager.AddFrameData(boneFrameData);
 }