internal static void ManagedObjectFetched(ManagedObject managedObject) { lock (ManagedObject._managedObjectFirstReferences) { if (Managed.Closing) { return; } ManagedObject._managedObjectFirstReferences[0].Add(managedObject); } }
internal static void ApplicationTick(float dt) { ManagedObject.HandleManagedObjects(); DotNetObject.HandleDotNetObjects(); NativeObject.HandleNativeObjects(); ManagedObjectOwner.GarbageCollect(); Managed.TelemetryLevelMask = LibraryApplicationInterface.ITelemetry.GetTelemetryLevelMask(); for (int index = 0; index < Managed._components.Count; ++index) { Managed._components[index].OnApplicationTick(dt); } }
internal static void ManagedObjectGarbageCollected( ManagedObjectOwner owner, ManagedObject managedObject) { lock (ManagedObjectOwner._managedObjectOwnerReferences) { if (owner == null || owner._managedObjectLongReference.Target as ManagedObject != managedObject) { return; } ManagedObjectOwner._lastframedeletedManagedObjects.Add(owner); ManagedObjectOwner._managedObjectOwnerReferences.Remove(owner); } }
internal static ManagedObject GetManagedObjectWithId(int id) { if (id == 0) { return((ManagedObject)null); } lock (ManagedObjectOwner._managedObjectOwnerReferences) { if (ManagedObjectOwner._managedObjectOwners[id].Target is ManagedObjectOwner target1) { ManagedObject managedObject = target1.TryGetManagedObject(); ManagedObject.ManagedObjectFetched(managedObject); return(managedObject); } } return((ManagedObject)null); }
internal static ManagedObjectOwner CreateManagedObjectOwner( UIntPtr ptr, ManagedObject managedObject) { ManagedObjectOwner managedObjectOwner; if (ManagedObjectOwner._pool.Count > 0) { managedObjectOwner = ManagedObjectOwner._pool[ManagedObjectOwner._pool.Count - 1]; ManagedObjectOwner._pool.RemoveAt(ManagedObjectOwner._pool.Count - 1); } else { managedObjectOwner = new ManagedObjectOwner(); } managedObjectOwner.Construct(ptr, managedObject); lock (ManagedObjectOwner._managedObjectOwnerReferences) { ++ManagedObjectOwner._numberOfAliveManagedObjects; ManagedObjectOwner._managedObjectOwnerReferences.Add(managedObjectOwner); } return(managedObjectOwner); }
internal static void OnFinalize() { ManagedObject.FinalizeManagedObjects(); Common.MemoryCleanup(); ManagedObjectOwner.LogFinalize(); }
private void Initialize() => ManagedObject.ManagedObjectFetched(this);