private void getMaterialsByteArray() { materialsByteData = new byte[0]; foreach (MaterialPackage matPack in materialList) { byte[] matByteData = new byte[SceneDataHandler.size_int + SceneDataHandler.size_int + matPack.name.Length + SceneDataHandler.size_int + matPack.src.Length]; int dstIdx = 0; // type Buffer.BlockCopy(BitConverter.GetBytes(matPack.type), 0, matByteData, dstIdx, SceneDataHandler.size_int); dstIdx += SceneDataHandler.size_int; // name length Buffer.BlockCopy(BitConverter.GetBytes(matPack.name.Length), 0, matByteData, dstIdx, SceneDataHandler.size_int); dstIdx += SceneDataHandler.size_int; // name byte[] nameByte = Encoding.ASCII.GetBytes(matPack.name); Buffer.BlockCopy(nameByte, 0, matByteData, dstIdx, matPack.name.Length); dstIdx += matPack.name.Length; // src length Buffer.BlockCopy(BitConverter.GetBytes(matPack.src.Length), 0, matByteData, dstIdx, SceneDataHandler.size_int); dstIdx += SceneDataHandler.size_int; // src nameByte = Encoding.ASCII.GetBytes(matPack.src); Buffer.BlockCopy(nameByte, 0, matByteData, dstIdx, matPack.src.Length); dstIdx += matPack.src.Length; // concate materialsByteData = SceneDataHandler.Concat <byte>(materialsByteData, matByteData); } }
private void getTexturesByteArray() { texturesByteData = BitConverter.GetBytes(textureBinaryType); foreach (TexturePackage texPack in textureList) { byte[] texByteData = new byte[4 * SceneDataHandler.size_int + texPack.colorMapDataSize]; int dstIdx = 0; // width Buffer.BlockCopy(BitConverter.GetBytes(texPack.width), 0, texByteData, dstIdx, SceneDataHandler.size_int); dstIdx += SceneDataHandler.size_int; // height Buffer.BlockCopy(BitConverter.GetBytes(texPack.height), 0, texByteData, dstIdx, SceneDataHandler.size_int); dstIdx += SceneDataHandler.size_int; // format Buffer.BlockCopy(BitConverter.GetBytes((int)texPack.format), 0, texByteData, dstIdx, SceneDataHandler.size_int); dstIdx += SceneDataHandler.size_int; // pixel data Buffer.BlockCopy(BitConverter.GetBytes(texPack.colorMapDataSize), 0, texByteData, dstIdx, SceneDataHandler.size_int); dstIdx += SceneDataHandler.size_int; Buffer.BlockCopy(texPack.colorMapData, 0, texByteData, dstIdx, texPack.colorMapDataSize); dstIdx += texPack.colorMapDataSize; // concate texturesByteData = SceneDataHandler.Concat <byte>(texturesByteData, texByteData); } }
private byte[] getNodesByteArrayV1100() { Byte[] nodesByteData = new byte[0]; foreach (SceneNode node in sceneDataHandler.NodeList) { byte[] nodeBinary; byte[] nodeTypeBinary; if (node.GetType() == typeof(SceneNodeGeo)) { nodeTypeBinary = BitConverter.GetBytes((int)NodeType.GEO); SceneNodeGeo nodeGeo = (SceneNodeGeo)Convert.ChangeType(node, typeof(SceneNodeGeo)); // change to V1100 geo node SceneNodeGeoV1100 nodeGeoV1100 = new SceneNodeGeoV1100(); copyProperties(nodeGeo, nodeGeoV1100); nodeGeoV1100.materialId = -1; //PrintProperties(nodeGeoV1100); nodeBinary = SceneDataHandler.StructureToByteArray <SceneNodeGeoV1100>(nodeGeoV1100); } else if (node.GetType() == typeof(SceneNodeLight)) { nodeTypeBinary = BitConverter.GetBytes((int)NodeType.LIGHT); SceneNodeLight nodeLight = (SceneNodeLight)Convert.ChangeType(node, typeof(SceneNodeLight)); nodeBinary = SceneDataHandler.StructureToByteArray <SceneNodeLight>(nodeLight); } else if (node.GetType() == typeof(SceneNodeCam)) { nodeTypeBinary = BitConverter.GetBytes((int)NodeType.CAMERA); SceneNodeCam nodeCam = (SceneNodeCam)Convert.ChangeType(node, typeof(SceneNodeCam)); nodeBinary = SceneDataHandler.StructureToByteArray <SceneNodeCam>(nodeCam); } else if (node.GetType() == typeof(SceneNodeMocap)) { nodeTypeBinary = BitConverter.GetBytes((int)NodeType.MOCAP); SceneNodeMocap nodeMocap = (SceneNodeMocap)Convert.ChangeType(node, typeof(SceneNodeMocap)); nodeBinary = SceneDataHandler.StructureToByteArray <SceneNodeMocap>(nodeMocap); } else { nodeTypeBinary = BitConverter.GetBytes((int)NodeType.GROUP); nodeBinary = SceneDataHandler.StructureToByteArray <SceneNode>(node); } // concate arrays nodesByteData = SceneDataHandler.Concat <byte>(nodesByteData, nodeTypeBinary); nodesByteData = SceneDataHandler.Concat <byte>(nodesByteData, nodeBinary); } return(nodesByteData); }
private void getObjectsByteArray() { objectsByteData = new byte[0]; foreach (ObjectPackage objPack in objectList) { byte[] objByteData = new byte[5 * SceneDataHandler.size_int + objPack.vSize * 3 * SceneDataHandler.size_float + objPack.iSize * SceneDataHandler.size_int + objPack.nSize * 3 * SceneDataHandler.size_float + objPack.uvSize * 2 * SceneDataHandler.size_float + objPack.bWSize * 4 * SceneDataHandler.size_float + objPack.bWSize * 4 * SceneDataHandler.size_int]; int dstIdx = 0; // vertices Buffer.BlockCopy(BitConverter.GetBytes(objPack.vSize), 0, objByteData, dstIdx, SceneDataHandler.size_int); dstIdx += SceneDataHandler.size_int; Buffer.BlockCopy(objPack.vertices, 0, objByteData, dstIdx, objPack.vSize * 3 * SceneDataHandler.size_float); dstIdx += objPack.vSize * 3 * SceneDataHandler.size_float; // indices Buffer.BlockCopy(BitConverter.GetBytes(objPack.iSize), 0, objByteData, dstIdx, SceneDataHandler.size_int); dstIdx += SceneDataHandler.size_int; Buffer.BlockCopy(objPack.indices, 0, objByteData, dstIdx, objPack.iSize * SceneDataHandler.size_int); dstIdx += objPack.iSize * SceneDataHandler.size_int; // normals Buffer.BlockCopy(BitConverter.GetBytes(objPack.nSize), 0, objByteData, dstIdx, SceneDataHandler.size_int); dstIdx += SceneDataHandler.size_int; Buffer.BlockCopy(objPack.normals, 0, objByteData, dstIdx, objPack.nSize * 3 * SceneDataHandler.size_float); dstIdx += objPack.nSize * 3 * SceneDataHandler.size_float; // uvs Buffer.BlockCopy(BitConverter.GetBytes(objPack.uvSize), 0, objByteData, dstIdx, SceneDataHandler.size_int); dstIdx += SceneDataHandler.size_int; Buffer.BlockCopy(objPack.uvs, 0, objByteData, dstIdx, objPack.uvSize * 2 * SceneDataHandler.size_float); dstIdx += objPack.uvSize * 2 * SceneDataHandler.size_float; // bone weights Buffer.BlockCopy(BitConverter.GetBytes(objPack.bWSize), 0, objByteData, dstIdx, SceneDataHandler.size_int); dstIdx += SceneDataHandler.size_int; Buffer.BlockCopy(objPack.boneWeights, 0, objByteData, dstIdx, objPack.bWSize * 4 * SceneDataHandler.size_float); dstIdx += objPack.bWSize * 4 * SceneDataHandler.size_float; // bone indices Buffer.BlockCopy(objPack.boneIndices, 0, objByteData, dstIdx, objPack.bWSize * 4 * SceneDataHandler.size_int); dstIdx += objPack.bWSize * 4 * SceneDataHandler.size_int; // concate objectsByteData = SceneDataHandler.Concat <byte>(objectsByteData, objByteData); } }
private void getNodesByteArray() { nodesByteData = new byte[0]; foreach (SceneNode node in nodeList) { byte[] nodeBinary; byte[] nodeTypeBinary; byte[] nodeLengthBinary; if (node.GetType() == typeof(SceneNodeGeo)) { nodeTypeBinary = BitConverter.GetBytes((int)NodeType.GEO); SceneNodeGeo nodeGeo = (SceneNodeGeo)Convert.ChangeType(node, typeof(SceneNodeGeo)); nodeBinary = SceneDataHandler.StructToByteArray <SceneNodeGeo>(nodeGeo); } else if (node.GetType() == typeof(SceneNodeSkinnedGeo)) { nodeTypeBinary = BitConverter.GetBytes((int)NodeType.SKINNEDMESH); SceneNodeSkinnedGeo nodeGeo = (SceneNodeSkinnedGeo)Convert.ChangeType(node, typeof(SceneNodeSkinnedGeo)); nodeBinary = SceneDataHandler.StructToByteArray <SceneNodeSkinnedGeo>(nodeGeo); } else if (node.GetType() == typeof(SceneNodeLight)) { nodeTypeBinary = BitConverter.GetBytes((int)NodeType.LIGHT); SceneNodeLight nodeLight = (SceneNodeLight)Convert.ChangeType(node, typeof(SceneNodeLight)); nodeBinary = SceneDataHandler.StructToByteArray <SceneNodeLight>(nodeLight); } else if (node.GetType() == typeof(SceneNodeCam)) { nodeTypeBinary = BitConverter.GetBytes((int)NodeType.CAMERA); SceneNodeCam nodeCam = (SceneNodeCam)Convert.ChangeType(node, typeof(SceneNodeCam)); nodeBinary = SceneDataHandler.StructToByteArray <SceneNodeCam>(nodeCam); } else { nodeTypeBinary = BitConverter.GetBytes((int)NodeType.GROUP); nodeBinary = SceneDataHandler.StructToByteArray <SceneNode>(node); } nodeLengthBinary = BitConverter.GetBytes(nodeBinary.Length); // concate arrays nodesByteData = SceneDataHandler.Concat <byte>(nodesByteData, nodeLengthBinary); nodesByteData = SceneDataHandler.Concat <byte>(nodesByteData, nodeTypeBinary); nodesByteData = SceneDataHandler.Concat <byte>(nodesByteData, nodeBinary); } }
private void getCharacterByteArray() { charactersByteData = new byte[0]; foreach (CharacterPackage chrPack in characterList) { byte[] characterByteData = new byte[SceneDataHandler.size_int * 3 + chrPack.boneMapping.Length * SceneDataHandler.size_int + chrPack.skeletonMapping.Length * SceneDataHandler.size_int + chrPack.sSize * SceneDataHandler.size_float * 10]; int dstIdx = 0; // bone mapping size Buffer.BlockCopy(BitConverter.GetBytes(chrPack.bMSize), 0, characterByteData, dstIdx, SceneDataHandler.size_int); dstIdx += SceneDataHandler.size_int; // skeleton mapping size Buffer.BlockCopy(BitConverter.GetBytes(chrPack.sSize), 0, characterByteData, dstIdx, SceneDataHandler.size_int); dstIdx += SceneDataHandler.size_int; // root dag id Buffer.BlockCopy(BitConverter.GetBytes(chrPack.rootId), 0, characterByteData, dstIdx, SceneDataHandler.size_int); dstIdx += SceneDataHandler.size_int; Buffer.BlockCopy(chrPack.boneMapping, 0, characterByteData, dstIdx, chrPack.bMSize * SceneDataHandler.size_int); dstIdx += chrPack.bMSize * SceneDataHandler.size_int; //foreach (string dag in chrPack.boneMapping) //{ // if (dag != null) // { // byte[] dagByte = Encoding.ASCII.GetBytes(dag); // Buffer.BlockCopy(dagByte, 0, characterByteData, dstIdx, dag.Length); // dstIdx += dag.Length; // } //} // skeleton Mapping Buffer.BlockCopy(chrPack.skeletonMapping, 0, characterByteData, dstIdx, chrPack.sSize * SceneDataHandler.size_int); dstIdx += chrPack.sSize * SceneDataHandler.size_int; //foreach (string sdag in chrPack.skeletonMapping) //{ // if (sdag != null) // { // byte[] sdagByte = Encoding.ASCII.GetBytes(sdag); // Buffer.BlockCopy(sdagByte, 0, characterByteData, dstIdx, sdag.Length); // dstIdx += sdag.Length; // } //} //skelton bone positions Buffer.BlockCopy(chrPack.bonePosition, 0, characterByteData, dstIdx, chrPack.sSize * 3 * SceneDataHandler.size_float); dstIdx += chrPack.sSize * 3 * SceneDataHandler.size_float; //skelton bone rotations Buffer.BlockCopy(chrPack.boneRotation, 0, characterByteData, dstIdx, chrPack.sSize * 4 * SceneDataHandler.size_float); dstIdx += chrPack.sSize * 4 * SceneDataHandler.size_float; //skelton bone scales Buffer.BlockCopy(chrPack.boneScale, 0, characterByteData, dstIdx, chrPack.sSize * 3 * SceneDataHandler.size_float); dstIdx += chrPack.sSize * 3 * SceneDataHandler.size_float; // concate charactersByteData = SceneDataHandler.Concat <byte>(charactersByteData, characterByteData); } }
private void getCharacterByteArray() { charactersByteData = new byte[0]; foreach (CharacterPackage chrPack in characterList) { int boneMappingLength = 0; foreach (int s in chrPack.dagSizes) { boneMappingLength += s; } int skeletonMappingLength = 0; foreach (int s in chrPack.sdagSizes) { skeletonMappingLength += s; } byte[] characterByteData = new byte[SceneDataHandler.size_int * 3 + chrPack.rootDag.Length + chrPack.dagSizes.Length * SceneDataHandler.size_int + boneMappingLength + chrPack.sdagSizes.Length * SceneDataHandler.size_int + skeletonMappingLength + chrPack.sdagSizes.Length * SceneDataHandler.size_float * 10]; int dstIdx = 0; // bone mapping size Buffer.BlockCopy(BitConverter.GetBytes(chrPack.bMSize), 0, characterByteData, dstIdx, SceneDataHandler.size_int); dstIdx += SceneDataHandler.size_int; // skeleton mapping size Buffer.BlockCopy(BitConverter.GetBytes(chrPack.sSize), 0, characterByteData, dstIdx, SceneDataHandler.size_int); dstIdx += SceneDataHandler.size_int; // root dag size Buffer.BlockCopy(BitConverter.GetBytes(chrPack.rootDagSize), 0, characterByteData, dstIdx, SceneDataHandler.size_int); dstIdx += SceneDataHandler.size_int; // root dag path byte[] nameByte = Encoding.ASCII.GetBytes(chrPack.rootDag); Buffer.BlockCopy(nameByte, 0, characterByteData, dstIdx, chrPack.rootDag.Length); dstIdx += chrPack.rootDag.Length; // dag sizes Buffer.BlockCopy(chrPack.dagSizes, 0, characterByteData, dstIdx, chrPack.bMSize * SceneDataHandler.size_int); dstIdx += chrPack.bMSize * SceneDataHandler.size_int; // bone Mapping foreach (string dag in chrPack.boneMapping) { if (dag != null) { byte[] dagByte = Encoding.ASCII.GetBytes(dag); Buffer.BlockCopy(dagByte, 0, characterByteData, dstIdx, dag.Length); dstIdx += dag.Length; } } // dag sizes Buffer.BlockCopy(chrPack.sdagSizes, 0, characterByteData, dstIdx, chrPack.sSize * SceneDataHandler.size_int); dstIdx += chrPack.sSize * SceneDataHandler.size_int; // bone Mapping foreach (string sdag in chrPack.skeletonMapping) { if (sdag != null) { byte[] sdagByte = Encoding.ASCII.GetBytes(sdag); Buffer.BlockCopy(sdagByte, 0, characterByteData, dstIdx, sdag.Length); dstIdx += sdag.Length; } } //skelton bone positions Buffer.BlockCopy(chrPack.bonePosition, 0, characterByteData, dstIdx, chrPack.sdagSizes.Length * 3 * SceneDataHandler.size_float); dstIdx += chrPack.sdagSizes.Length * 3 * SceneDataHandler.size_float; //skelton bone rotations Buffer.BlockCopy(chrPack.boneRotation, 0, characterByteData, dstIdx, chrPack.sdagSizes.Length * 4 * SceneDataHandler.size_float); dstIdx += chrPack.sdagSizes.Length * 4 * SceneDataHandler.size_float; //skelton bone scales Buffer.BlockCopy(chrPack.boneScale, 0, characterByteData, dstIdx, chrPack.sdagSizes.Length * 3 * SceneDataHandler.size_float); dstIdx += chrPack.sdagSizes.Length * 3 * SceneDataHandler.size_float; // concate charactersByteData = SceneDataHandler.Concat <byte>(charactersByteData, characterByteData); } }