void InitializeSender() { renderers = new List <SkinnedMeshRenderer>(); if (targetGameObject != null) { SkinnedMeshRenderer[] psmrs = targetGameObject.GetComponents <SkinnedMeshRenderer>(); SkinnedMeshRenderer[] csmrs = targetGameObject.GetComponentsInChildren <SkinnedMeshRenderer>(); if (psmrs.Length != 0) { renderers.AddRange(psmrs); } if (csmrs.Length != 0) { renderers.AddRange(csmrs); } } else { Debug.LogError("Target GameObject is null!"); return; } serializer = gameObject.GetComponent <STMHttpSerializer>(); oldVertsBuf = new Vector3[renderers.Count][]; oldMatrix = new float[renderers.Count][]; linedIndices = new List <int>(); }
void InitializeReceiver() { serializer = gameObject.GetComponent <STMHttpSerializer>(); serializer.OnChannelInfoReceived = OnInitialDataReceived; serializer.OnMeshInfoReceived = OnMeshInfoReceived; serializer.OnMaterialInfoReceived = OnMaterialInfoReceived; serializer.OnTextureReceived = OnTextureReceived; serializer.OnStreamListReceived = OnStreamListReceived; serializer.OnStreamReceived = OnStreamDataReceived; }
void InitializeReceiver() { m_serializer = gameObject.GetComponent <STMHttpSerializer>(); m_serializer.OnChannelInfoReceived = OnChannelInfoReceived; //m_serializer.OnMeshInfoReceived = OnMeshInfoReceived; //m_serializer.OnMaterialInfoReceived = OnMaterialInfoReceived; //m_serializer.OnTextureReceived = OnTextureReceived; m_serializer.OnCombinedDataReceived = OnCombinedDataReceived; m_serializer.OnStreamListReceived = OnStreamListReceived; m_serializer.OnStreamReceived = OnStreamDataReceived; #if !UNITY_WEBGL m_serializer.OnAudioListReceived = OnAudioListReceived; #endif m_serializer.OnAudioReceived = OnAudioDataReceived; }
void InitializeSender() { if (packageSize > 255) { packageSize = 255; } byteSize = new List <int>(); combinedBinary = new List <byte>(); renderers = new List <SkinnedMeshRenderer>(); serializer = gameObject.GetComponent <STMHttpSerializer>(); if (targetGameObject != null) { SkinnedMeshRenderer[] psmrs = targetGameObject.GetComponents <SkinnedMeshRenderer>(); SkinnedMeshRenderer[] csmrs = targetGameObject.GetComponentsInChildren <SkinnedMeshRenderer>(); if (psmrs.Length != 0) { renderers.AddRange(psmrs); } if (csmrs.Length != 0) { renderers.AddRange(csmrs); } } else { if (Application.isPlaying) { Debug.LogError("Target GameObject is null, set target GameObject."); } else { Debug.LogWarning("Target GameObject is null, set target GameObject."); } return; } oldVertsBuf = new Vector3[renderers.Count][]; oldMatrix = new float[renderers.Count][]; linedIndices = new List <int>(); }
void CreateInfos() { if (serializer == null || renderers == null || targetGameObject == null) { string errorString = ""; errorString += (serializer == null ? "serializer " : ""); errorString += (renderers == null ? "rendrers " : ""); errorString += (targetGameObject == null ? "target GameObject " : ""); errorString += "is null on create channel!"; Debug.LogError(errorString); } Dictionary <string, Material> materials = new Dictionary <string, Material>(); Dictionary <string, Texture> textures = new Dictionary <string, Texture>(); List <MeshInfo> meshInfos = new List <MeshInfo>(); List <MaterialInfo> materialInfos = new List <MaterialInfo>(); List <string> meshNames = new List <string>(); List <string> materialNames = new List <string>(); List <string> textureNames = new List <string>(); for (int i = 0; i < renderers.Count; i++) { SkinnedMeshRenderer renderer = renderers[i]; if (renderer != null) { MeshInfo meshInfo = serializer.CreateMeshInfo(renderer); if (meshInfo == null) { continue; } meshInfos.Add(meshInfo); meshNames.Add("mesh" + i); for (int j = 0; j < renderer.sharedMaterials.Length; j++) { Material mat = renderer.sharedMaterials[j]; Material dummy; if (materials.TryGetValue(mat.name, out dummy)) { continue; } materials.Add(mat.name, mat); MaterialInfo materialInfo = serializer.CreateMaterialInfo(mat); if (materialInfo == null) { continue; } materialInfos.Add(materialInfo); materialNames.Add("material" + materialNames.Count); List <KeyValuePair <string, Texture> > texturePairs = serializer.GetTexturesFromMaterial(mat); foreach (KeyValuePair <string, Texture> texturePair in texturePairs) { Texture dummyTexture; if (textures.TryGetValue(texturePair.Key, out dummyTexture)) { continue; } textures.Add(texturePair.Key, texturePair.Value); textureNames.Add(texturePair.Key); } } } } List <int> meshBuffersSize = new List <int>(); List <int> matBuffersSize = new List <int>(); List <int> texBuffersSize = new List <int>(); List <byte> combinedBuffer = new List <byte>(); foreach (KeyValuePair <string, Texture> texturePair in textures) { Texture texture = texturePair.Value; byte[] buffer = STMHttpSerializer.GetTextureToPNGByteArray(texture, true); texBuffersSize.Add(buffer.Length); combinedBuffer.AddRange(buffer); } for (int i = 0; i < materialInfos.Count; i++) { MaterialInfo matInfo = materialInfos[i]; string matString = JsonUtility.ToJson(matInfo); byte[] buffer = Encoding.UTF8.GetBytes(matString); matBuffersSize.Add(buffer.Length); combinedBuffer.AddRange(buffer); } for (int i = 0; i < meshInfos.Count; i++) { MeshInfo meshInfo = meshInfos[i]; string meshString = JsonUtility.ToJson(meshInfo); byte[] buffer = Encoding.UTF8.GetBytes(meshString); meshBuffersSize.Add(buffer.Length); combinedBuffer.AddRange(buffer); } byte[] compressedBuffer = StreamingMesh.Lib.ExternalTools.Compress(combinedBuffer.ToArray()); ChannelInfo channelInfo = serializer.CreateChannelInfo( containerSize, packageSize, frameInterval, combinedFrames, meshNames, materialNames, textureNames, meshBuffersSize, matBuffersSize, texBuffersSize ); serializer.Send(channelInfo); serializer.Send(compressedBuffer); }