OSDN Git Service

40f1a9d59c0f7c575e4f36eaa28f28957c7729de
[mikumikustudio/MikuMikuStudio.git] / src / projectkyoto / mmd / file / VMDMotion.java
1 /*
2  * Copyright (c) 2011 Kazuhiko Kobayashi
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  *   notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  *   notice, this list of conditions and the following disclaimer in the
14  *   documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of 'MMDLoaderJME' nor the names of its contributors
17  *   may be used to endorse or promote products derived from this software
18  *   without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32
33 package projectkyoto.mmd.file;
34
35 import java.io.IOException;
36 import java.io.Serializable;
37 import java.nio.ByteBuffer;
38 import javax.vecmath.Point3f;
39 import javax.vecmath.Quat4f;
40 import projectkyoto.mmd.file.util2.BufferUtil;
41
42 /**
43  *
44  * @author kobayasi
45  */
46 public class VMDMotion implements Serializable{
47
48     private String boneName; // char[15]
49     private int frameNo;
50     private Point3f location;
51     private Quat4f rotation;
52     private byte[] interpolation = new byte[64];
53     public VMDMotion() {
54         location = new Point3f();
55         rotation = new Quat4f();
56     }
57     public VMDMotion(DataInputStreamLittleEndian is) throws IOException {
58         boneName = is.readString(15);
59 //        System.out.println("boneName = "+boneName);
60         frameNo = is.readInt();
61         location = new Point3f();
62         location.x = is.readFloat();
63         location.y = is.readFloat();
64         location.z = -is.readFloat();
65         rotation = new Quat4f(is.readFloat(), is.readFloat(), -is.readFloat(), -is.readFloat());
66         is.read(interpolation);
67     }
68 //    public VMDMotion readFromBuffer(ByteBuffer bb) {
69 //        boneName = BufferUtil.readString(bb, 15);
70 //        frameNo = bb.getInt();
71 //        BufferUtil.readPoint3f(bb, location);
72 //        BufferUtil.readQuat4f(bb, rotation);
73 //        bb.get(interpolation);
74 //        return this;
75 //    }
76 //    public VMDMotion writeToBuffer(ByteBuffer bb) {
77 //        BufferUtil.writeString(bb, boneName, 15);
78 //        bb.putInt(frameNo);
79 //        
80 //        return this;
81 //    }
82
83     @Override
84     public String toString() {
85         StringBuffer sb = new StringBuffer();
86         sb.append("{boneName = " + boneName
87                 + " frameNo = " + frameNo
88                 + " location = " + location
89                 + " rotation = " + rotation
90                 + " interpolation = {");
91         for (int i = 0; i < 64; i++) {
92             sb.append(interpolation[i]).append(',');
93         }
94         sb.append("}}\n");
95
96         return sb.toString();
97     }
98
99     public String getBoneName() {
100         return boneName;
101     }
102
103     public void setBoneName(String boneName) {
104         this.boneName = boneName;
105     }
106
107     public int getFrameNo() {
108         return frameNo;
109     }
110
111     public void setFlameNo(int frameNo) {
112         this.frameNo = frameNo;
113     }
114
115     public byte[] getInterpolation() {
116         return interpolation;
117     }
118
119     public void setInterpolation(byte[] interpolation) {
120         this.interpolation = interpolation;
121     }
122
123     public Point3f getLocation() {
124         return location;
125     }
126
127     public void setLocation(Point3f location) {
128         this.location = location;
129     }
130
131     public Quat4f getRotation() {
132         return rotation;
133     }
134
135     public void setRotation(Quat4f rotation) {
136         this.rotation = rotation;
137     }
138     
139 }