/// <summary> /// Writes new serialized object in to memory. /// </summary> public static void WriteSerializedObjectToMemory(QNetWorldSerializerObject obj) { if (QNetManager.IsHostActive) // if host is active, we will ignore this one { return; } if (WorldIsSerialized) { Instance.StartCoroutine(InternalFromSerializedObject(obj, () => { })); } else { InternalSerializedObjectsInMemory.Add(obj); } }
/// <summary> /// Removes serialized object from memory. /// </summary> public static void RemoveSerializedObjectFromMemory(short objectIdentity) { if (QNetManager.IsHostActive) // if host is active, we will ignore this one { return; } if (WorldIsSerialized) { var qNetObject = QNetObjectBehaviour.GetSpawnedObject(objectIdentity) ?? QNetObjectBehaviour.GetPredefinedObject(objectIdentity); if (qNetObject == null) { JEMLogger.LogError( $"System was trying to destroy de-serialized object but target of identity {objectIdentity} not exists in current world."); } else { InternalDestroySerializedObject(qNetObject); } } else { var serializedObject = default(QNetWorldSerializerObject); for (var index = 0; index < InternalSerializedObjectsInMemory.Count; index++) { if (InternalSerializedObjectsInMemory[index].Object.ObjectIdentity == objectIdentity) { serializedObject = InternalSerializedObjectsInMemory[index]; break; } } if (serializedObject.Equals(default(QNetWorldSerializerObject))) { JEMLogger.LogWarning( $"System was trying to remove object from world serializer memory but target of identity {objectIdentity} not exist."); } else { InternalSerializedObjectsInMemory.Remove(serializedObject); } } }
/// <summary> /// Clear memory of serialized objects. /// </summary> public static void ClearSerializedObjectsFromMemory() { InternalSerializedObjectsInMemory.Clear(); }