rott/kf_sources/HideMut/Classes/HideObjectPool.uc
2026-07-14 20:27:09 +07:00

111 lines
1.8 KiB
Ucode

class HideObjectPool extends object;
var array<Object> Objects;
// AllocateObject
simulated function Object AllocateObject(class ObjectClass)
{
local Object Result;
local int i;
for (i = 0; i < Objects.Length; i++)
{
if (Objects[i].Class == ObjectClass)
{
Result = Objects[i];
Objects.Remove(i,1);
break;
}
}
if (Result == none)
Result = new(Outer) ObjectClass;
return Result;
}
// create object with given name
simulated function Object AllocateObjectParam(class ObjectClass, string objName)
{
local Object Result;
local int i;
for (i = 0; i < Objects.Length; i++)
{
if (Objects[i].Class == ObjectClass)
{
Result = Objects[i];
Objects.Remove(i, 1);
break;
}
}
if (Result == none)
{
Result = new(outer, objName) ObjectClass;
StoreObj(Result);
}
return Result;
}
simulated function StoreObj(object Obj)
{
local int i;
for (i = 0; i < Objects.Length; i++)
{
// we already have it
if (Obj.Class == Obj)
{
log(string(Obj) $ " was found in Objects array!");
return;
}
}
// else add it to array
Objects[Objects.Length] = Obj;
log(string(Obj) $ " was added to Objects array!");
}
// FreeObject
simulated function FreeObject(Object Obj)
{
Objects.Length = Objects.Length + 1;
Objects[Objects.Length - 1] = Obj;
}
// Shrink
simulated function Shrink()
{
while (Objects.Length > 0)
{
// delete Objects[Objects.Length - 1];
Objects.Remove(Objects.Length - 1, 1);
};
}
final function string PrintObjList()
{
local string s;
local int i;
for (i = 0; i < Objects.Length; i++)
{
s $= string(Objects[i]);
}
return s;
}
defaultproperties
{
}