Объект material_modify_control используется для изменения значений переменных, указанных в специальных Proxy-материалах. Для этих материалов должны быть определены Proxy-действия, основанные на использовании переменных, и эти материалы должны быть отмечены как изменяемые – при помощи ключевого слова "MaterialModify".
Внимание: Функция "StartAnimSequence" работает с ошибкой, приводящей к краху игры. Возможно, есть способ заставить работать эту функцию правильно, поэтому её поддержка оставлена.
csssdk_material_modify_control.vmf
На карте поставлено два пульта со множеством кнопок, которые рекомендуется нажимать стреляя по ним. Кнопки сгруппированы "в столбик" по три кнопки. Каждая такая группа кнопок изменяет свою переменную, определённую в материалах: csssdk_material_modify_control.vmt и csssdk_material_modify_control2.vmt
Это обычные текстовые файлы, указывающие как должны быть отображаться материалы в игре, поэтому откройте эти файлы при помощи блокнота и посмотрите как они устроены. Найдите в материалах блок "Proxies". Этот блок содержит функции управляющие материалом. Например функция "Sine" изменяет какую-то переменную используя функцию синуса, функция "TextureTransform" всячески поворачивает, масштабирует и сдвигает текстуру на материале. Перед блоком "Proxies" определено несколько переменных, таких как "$CenterVector" или "$RotateAngle". Эти переменные создаёт автор материала, чтобы потом использовать их в функциях блока "Proxies". Вот именно эти переменные и изменяет объект material_modify_control во время игры, задавая им новые значения. Обратите внимание, что если в блоке "Proxies" не указать строку "MaterialModify", то материал не сможет быть изменён в игре при помощи объекта material_modify_control.
Запустите эту карту-пример и понажимайте на кнопки самого большого пульта. Самые верхние кнопки на пульте сбрасывают значения переменных к их значениям по умолчанию, то есть тем значениям, которые указаны в файлах материалов. Изменяя переменные материала, изменяется и поведение материала в игре, потому что всё что делает материал зависит от этих переменных.
Последний пульт имеет всего три кнопки. При нажатии на любую из этих кнопок игра завершит своё выполнение, выдав на экран сообщение о чтении памяти по неизвестному адресу. Это баг игры, описанный в пункте "Ошибки". Рекомендуется поикать возможность использования функции "StartAnimSequence" не приводящую к этой ошибке, но скорей всего это баг разработчиков, вызванный неправильным использованием строковых функций.