Exemple #1
0
 internal static void ManagedObjectFetched(ManagedObject managedObject)
 {
     lock (ManagedObject._managedObjectFirstReferences)
     {
         if (Managed.Closing)
         {
             return;
         }
         ManagedObject._managedObjectFirstReferences[0].Add(managedObject);
     }
 }
Exemple #2
0
 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);
     }
 }
Exemple #3
0
 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);
     }
 }
Exemple #4
0
 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);
 }
Exemple #5
0
        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);
        }
Exemple #6
0
 internal static void OnFinalize()
 {
     ManagedObject.FinalizeManagedObjects();
     Common.MemoryCleanup();
     ManagedObjectOwner.LogFinalize();
 }
Exemple #7
0
 private void Initialize() => ManagedObject.ManagedObjectFetched(this);