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 IncreaseReferenceCount(int dotnetObjectId) { lock (DotNetObject.Locker) { if (DotNetObject.DotnetObjectReferences.ContainsKey(dotnetObjectId)) { DotNetObjectReferenceCounter dotnetObjectReference = DotNetObject.DotnetObjectReferences[dotnetObjectId]; ++dotnetObjectReference.ReferenceCount; DotNetObject.DotnetObjectReferences[dotnetObjectId] = dotnetObjectReference; } else { DotNetObject fromFirstReferences = DotNetObject.GetDotNetObjectFromFirstReferences(dotnetObjectId); DotNetObject.DotnetObjectReferences.Add(dotnetObjectId, new DotNetObjectReferenceCounter() { ReferenceCount = 1, DotNetObject = fromFirstReferences }); } } }
internal static DotNetObject GetManagedObjectWithId(int dotnetObjectId) { lock (DotNetObject.Locker) { DotNetObjectReferenceCounter referenceCounter; return(DotNetObject.DotnetObjectReferences.TryGetValue(dotnetObjectId, out referenceCounter) ? referenceCounter.DotNetObject : DotNetObject.GetDotNetObjectFromFirstReferences(dotnetObjectId)); } }