Для обеспечения гладкой загрузки файлов для игровой сессии, важно чтобы движок выполнял как можно больше работы для загрузки этих данных до начала сесии. Игрок не должен замечать задержек для кэширования файлов во время сесии, часто проявляющемся в "залипании" игрока или задержках в рендеринге. Для избежания этих эффектов, энтити должны до начала сесии объявлять и кэшировать файлы используемые ними. Существуют вспомогательные функции выполняющие эту работу.
Функция Precache() доступна всем потомкам класса CBaseEntity и должна вызываться в методе Spawn() каждой энтити. Все файлы используемые энтитей (модели, звуки, VCD, декали) должны быть объявлены в этой функции. Файлы не могут подгружаться вне этой функции.
Файлы кэшируются используя такие фунции:
PrecacheModel()Используется для кэширования моделей. int CBaseEntity::PrecacheModel( Параметры name Индекс ссылающийся на модель. |
PrecacheScriptSound()Используется для кэширования звуковых скриптов объявленых в скрипте звуковых файлов. void CBaseEntity::PrecacheScriptSound( Параметры soundname Замечания Зыуковые скрипты объявляются в файле sound script manifest. Возвращаемое значениеНет. |
PrecacheInstancedScene()Используется для кэширования VCD файлов. void PrecacheInstancedScene( Параметры pszSceneИмя VCD файла для загрузки. Возвращаемое значение Нет. |
UTIL_PrecacheOther()Вспомогательная функция вызывающая функцию Precache() для энтити которая создается или ссылается во время существования вызывающей энтити. Эта функция часто используется для оружия которое динамически создает дочернюю энтить (например граната) во время сессии. void UTIL_PrecacheOther( Параметры szClassname modelName Возвращаемое значение |
UTIL_PrecacheDecal()Используется для кэширования декалей. int UTIL_PrecacheDecal( Параметры name preload Возвращаемое значение Индекс ссылающийся на модель декали. |