protected T ReadSerializedObject <T>(int offset, NativeSerializeData data) where T : MemoryWrapper, new() { if (!IsValid) { return(default(T)); } var item = Create <T>(BaseAddress + offset); item.SetSerializationInfo(BaseAddress, data); item.ParentAddress = BaseAddress; return(item); }
protected List <T> ReadSerializedObjects <T>(int offset, NativeSerializeData serializeData, IntPtr serializeBase = default(IntPtr)) where T : MemoryWrapper, new() { if (!IsValid) { return(null); } try { var type = typeof(T); if (type == typeof(MemoryWrapper) || type.IsSubclassOf(typeof(MemoryWrapper))) { var size = TypeUtil <T> .SizeOf; if (size == 0) { Core.Logger.Error($"ReadSerializedObjects was unable to get a size for {type.Name}"); } if (serializeBase == IntPtr.Zero) { if (BaseSerializationAddress != IntPtr.Zero) { serializeBase = BaseSerializationAddress; } else if (ParentAddress != IntPtr.Zero) { serializeBase = ParentAddress; } else { serializeBase = BaseAddress; } } var count = serializeData.Length / size; var container = new List <T>(); for (int i = 0; i < count; i++) { var item = Create <T>(serializeBase + serializeData.Offset + i * size); item.SetSerializationInfo(serializeBase, serializeData); container.Add(item); } return(container); } } catch (Exception ex) { Core.Logger.Log($"Memory ReadSerializedObjects Exception. {ex.ToLogString(Environment.StackTrace)}"); } return(default(List <T>)); }
protected string ReadSerializedString(int offset, NativeSerializeData serializeData) { if (!IsValid) { return(string.Empty); } try { return(Encoding.UTF8.GetString(ZetaDia.Memory.ReadBytes(BaseSerializationAddress + serializeData.Offset, serializeData.Length)).Trim('\0')); } catch (Exception ex) { Core.Logger.Log($"Memory ReadString Exception. {ex.ToLogString(Environment.StackTrace)}"); } return(string.Empty); }
public void SetSerializationInfo(IntPtr address, NativeSerializeData info) { BaseSerializationAddress = address; BaseSeralizationInfo = info; }