|
|
@ -263,21 +263,21 @@ public final function Object AllocateByReference_S( |
|
|
|
string refToClassToAllocate, |
|
|
|
string refToClassToAllocate, |
|
|
|
optional bool forceNewInstance) |
|
|
|
optional bool forceNewInstance) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return Allocate(LoadClassS(refToClassToAllocate), forceNewInstance); |
|
|
|
return Allocate(LoadClass_S(refToClassToAllocate), forceNewInstance); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Releases one reference to a given `AcediaObject`, calling its finalizers in |
|
|
|
* Releases one reference to a given `AcediaObject`, calling its finalizers in |
|
|
|
* case all references were released. |
|
|
|
* case all references were released. |
|
|
|
* |
|
|
|
* |
|
|
|
* Method will attempt to store `objectToDeallocate` in its object pool once |
|
|
|
* Method will attempt to store `objectToRelease` in its object pool once |
|
|
|
* deallocated, unless it is forbidden by its class' settings. |
|
|
|
* deallocated, unless it is forbidden by its class' settings. |
|
|
|
* |
|
|
|
* |
|
|
|
* @see `FreeMany()` |
|
|
|
* @see `FreeMany()` |
|
|
|
* |
|
|
|
* |
|
|
|
* @param objectToDeallocate Object that to deallocate. |
|
|
|
* @param objectToRelease Object, which reference method needs to release. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public final function Free(Object objectToDeallocate) |
|
|
|
public final function Free(Object objectToRelease) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// TODO: this is an old code require while we still didn't get rid of |
|
|
|
// TODO: this is an old code require while we still didn't get rid of |
|
|
|
// services - replace it later, changing argument to `AcediaObject` |
|
|
|
// services - replace it later, changing argument to `AcediaObject` |
|
|
@ -286,12 +286,12 @@ public final function Free(Object objectToDeallocate) |
|
|
|
local AcediaActor objectAsAcediaActor; |
|
|
|
local AcediaActor objectAsAcediaActor; |
|
|
|
local AcediaObject objectAsAcediaObject; |
|
|
|
local AcediaObject objectAsAcediaObject; |
|
|
|
|
|
|
|
|
|
|
|
if (objectToDeallocate == none) { |
|
|
|
if (objectToRelease == none) { |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
// Call finalizers for Acedia's objects and actors |
|
|
|
// Call finalizers for Acedia's objects and actors |
|
|
|
objectAsAcediaObject = AcediaObject(objectToDeallocate); |
|
|
|
objectAsAcediaObject = AcediaObject(objectToRelease); |
|
|
|
objectAsAcediaActor = AcediaActor(objectToDeallocate); |
|
|
|
objectAsAcediaActor = AcediaActor(objectToRelease); |
|
|
|
if (objectAsAcediaObject != none) |
|
|
|
if (objectAsAcediaObject != none) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (!objectAsAcediaObject.IsAllocated()) { |
|
|
|
if (!objectAsAcediaObject.IsAllocated()) { |
|
|
@ -320,7 +320,7 @@ public final function Free(Object objectToDeallocate) |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
// Otherwise destroy actors and forget about objects |
|
|
|
// Otherwise destroy actors and forget about objects |
|
|
|
objectAsActor = Actor(objectToDeallocate); |
|
|
|
objectAsActor = Actor(objectToRelease); |
|
|
|
if (objectAsActor != none) { |
|
|
|
if (objectAsActor != none) { |
|
|
|
objectAsActor.Destroy(); |
|
|
|
objectAsActor.Destroy(); |
|
|
|
} |
|
|
|
} |
|
|
@ -328,24 +328,25 @@ public final function Free(Object objectToDeallocate) |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Releases one reference to each `AcediaObject` inside the given array |
|
|
|
* Releases one reference to each `AcediaObject` inside the given array |
|
|
|
* `objectsToDelete`, calling finalizers for the ones that got all of their |
|
|
|
* `objectsToRelease`, calling finalizers for the ones that got all of their |
|
|
|
* references released. |
|
|
|
* references released. |
|
|
|
* |
|
|
|
* |
|
|
|
* Method will attempt to store objects inside `objectsToDelete` in their |
|
|
|
* Method will attempt to store objects inside `objectsToRelease` in their |
|
|
|
* object pools, unless it is forbidden by their class' settings. |
|
|
|
* object pools, unless it is forbidden by their class' settings. |
|
|
|
* |
|
|
|
* |
|
|
|
* @see `Free()` |
|
|
|
* @see `Free()` |
|
|
|
* |
|
|
|
* |
|
|
|
* @param objectToDeallocate Object that to deallocate. |
|
|
|
* @param objectToRelease Array of objects, which reference method needs |
|
|
|
|
|
|
|
* to release. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public final function FreeMany(array<Object> objectsToDelete) |
|
|
|
public final function FreeMany(array<Object> objectsToRelease) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// TODO: this is an old code require while we still didn't get rid of |
|
|
|
// TODO: this is an old code require while we still didn't get rid of |
|
|
|
// services - replace it later, changing argument to `AcediaObject` |
|
|
|
// services - replace it later, changing argument to `AcediaObject` |
|
|
|
local int i; |
|
|
|
local int i; |
|
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < objectsToDelete.length; i += 1) { |
|
|
|
for (i = 0; i < objectsToRelease.length; i += 1) { |
|
|
|
Free(objectsToDelete[i]); |
|
|
|
Free(objectsToRelease[i]); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|