public readKeys ( byte data, int &i, int keycount, float min, float max ) : OpenMetaverse.binBVHJointKey[] | ||
data | byte | Animation Byte array |
i | int | Offset in the Byte Array. Will be advanced |
keycount | int | Number of Keyframes |
min | float | Scaling Min to pass to the Uint16ToFloat method |
max | float | Scaling Max to pass to the Uint16ToFloat method |
return | OpenMetaverse.binBVHJointKey[] |
public binBVHJointKey[] readKeys(byte[] data, ref int i, int keycount, float min, float max)
{
float x;
float y;
float z;
/*
17 255 <-- Time Code
17 255 <-- Time Code
255 255 <-- X
127 127 <-- X
255 255 <-- Y
127 127 <-- Y
213 213 <-- Z
142 142 <---Z
*/
binBVHJointKey[] m_keys = new binBVHJointKey[keycount];
for (int j = 0; j < keycount; j++)
{
binBVHJointKey pJKey = new binBVHJointKey();
if (!BitConverter.IsLittleEndian)
{
pJKey.time = Utils.UInt16ToFloat(EndianSwap(data, i, 2), 0, InPoint, OutPoint); i += 2;
x = Utils.UInt16ToFloat(EndianSwap(data, i, 2), 0, min, max); i += 2;
y = Utils.UInt16ToFloat(EndianSwap(data, i, 2), 0, min, max); i += 2;
z = Utils.UInt16ToFloat(EndianSwap(data, i, 2), 0, min, max); i += 2;
}
else
{
pJKey.time = Utils.UInt16ToFloat(data, i, InPoint, OutPoint); i += 2;
x = Utils.UInt16ToFloat(data, i, min, max); i += 2;
y = Utils.UInt16ToFloat(data, i, min, max); i += 2;
z = Utils.UInt16ToFloat(data, i, min, max); i += 2;
}
pJKey.key_element = new Vector3(x, y, z);
m_keys[j] = pJKey;
}
return m_keys;
}