//--------------- Serialize -------------------- public static byte[] Serialize(MaterialDataSnapshot input) { if (input == null) return null; ComposedByteStream stream = ComposedByteStream.FetchStream(); foreach (SMaterial material in input.materials) stream.AddStream(SMaterial.Serialize(material)); return stream.Compose(); }
public static SMaterial GetMaterialByInstanceID(MaterialDataSnapshot materialData, int instanceID) { if (materialData == null || materialData.materials == null || materialData.materials.Length == 0) return null; SMaterial[] materials = materialData.materials; int i =materials.Length; while(--i > -1){ if (materials[i] != null && materials[i].instanceID == instanceID) return materials[i]; } return null; }
public static MaterialDataSnapshot Deserialize(byte[] input) { if (input == null || input.Length == 0) return null; MaterialDataSnapshot result = new MaterialDataSnapshot(); ComposedByteStream stream = ComposedByteStream.FromByteArray(input); int iMax = stream.streamCount; result.materials = new SMaterial[iMax]; for (int i = 0; i < iMax; i++) result.materials[i] = SMaterial.Deserialize(stream.ReadNextStream<byte>()); stream.Dispose(); return result; }
//Todo:Add material data and make all dispose calls recursive. public override void Dispose() { base.Dispose(); if (header != null) header.Dispose(); if (systemInfo != null) systemInfo.Dispose(); if (debugLogs != null) debugLogs.Dispose(); if (humanInput != null) humanInput.Dispose(); if (meshData != null) meshData.Dispose(); if (particleData != null) particleData.Dispose(); if (materialData != null) materialData.Dispose(); if (gameObjectsSnapshot != null) gameObjectsSnapshot.Dispose(); header = null; systemInfo = null; debugLogs = null; humanInput = null; meshData = null; particleData = null; materialData = null; gameObjectsSnapshot = null; screenCapture = null; }