Если вы не хотите создавать элементы динамически, попробуйте создать (большой) буфер экземпляров MotionVector во время запуска и использовать их при необходимости. Тогда вы не получите штраф за создание / разрушение их динамически.
Конечно, вам нужно написать несколько небольших функций, чтобы получить «бесплатный» экземпляр и получить его, используйте для этого логическое значение в структуре (или с помощью интерфейса).
Чтобы сделать это, вы можете, например ::
Создайте во время инициализации вашего приложения векторы движения:
MotionVectors motionVectors;
Добавьте логическое значение в класс MotionVector:
public class MotionVector
{
bool InUse { get; set; }
public MotionVector()
{
InUse = false;
}
}
Определите новый класс MotionVectors:
class MotionVectors
{
MotionVector _instances[100];
public void Free(MotionVector vector)
{
var index = 'search vector in _instances'
_instances[index].Inuse = false;
}
public MotionVector GetNewInstance()
{
var index = 'first free vector in _instances'
_instances[index].Inuse = true;
return _instances[index];
}
}