public void Play(int state) { if (state == m_State) { return; } m_State = state; index = 0; meshSeq = meshSeqArray[m_State]; mesh = meshSeq.meshs[index]; }
public static MeshSequence[] LoadMeshSequences(string name) { byte[] bytes = LoadFile(name); ByteReader br = new ByteReader(bytes); int verCount = br.ReadInt(); int triCount = br.ReadInt(); int uvCount = br.ReadInt(); int[] tris = new int[triCount]; Vector2[] uvs = new Vector2[uvCount]; for (int i = 0; i < triCount; i++) { tris[i] = br.ReadShort(); } for (int i = 0; i < uvCount; i++) { uvs[i] = new Vector2(br.ReadByte() * 0.01f, br.ReadByte() * 0.01f); } byte clipCount = br.ReadByte(); MeshSequence[] animationList = new MeshSequence[clipCount]; for (int i = 0; i < clipCount; i++) { int clipFrame = br.ReadShort(); float frameTime = br.ReadShort() * 0.001f; MeshSequence meshSeq = new MeshSequence(clipFrame, frameTime); for (int j = 0; j < clipFrame; j++) { Vector3[] verArray = new Vector3[verCount]; Mesh mesh = new Mesh(); for (int k = 0; k < verCount; k++) { verArray[k] = new Vector3(br.ReadShort() / 100.0f, br.ReadShort() / 100.0f, br.ReadShort() / 100.0f); } mesh.vertices = verArray; mesh.triangles = tris; mesh.uv = uvs; meshSeq.meshs[j] = mesh; } animationList[i] = meshSeq; } return(animationList); }