Входове и изходи - Общност на разработчиците на клапани
Една от най-важните промени за двигателя на източника беше I/O обектът. Докато по-старата версия на двигателя разчита на ключовите полета target и targetname, за да изпрати прост импулс към обекта, системата за вход/изход на обекта позволява по-сложни взаимодействия между обектите. Това се прави с входове и output'ov, между които има връзки. Използвайки тази проста техника, обектите могат лесно да превключват събитията въз основа на промени в състоянието и да работят заедно с други обекти по един малък, логичен и мощен начин, който преди беше невъзможен.
Обектите съдържат два метода за комуникация: чрез изпращане изход друг обект или чрез получаване вход от друг обект. Един обект може да изпрати изход, когато е убит от друг обект, чийто вход ще доведе до промяна на цвета. Същият изход може да се използва за активиране на входа за създаване (Хвърляне на хайвера) друг обект. Изходите се преобразуват във входове чрез връзки, които определят какви допълнителни данни се изпращат до получателя, колко дълго се забавят преди получаването на изхода и дали изходът трябва да бъде разрешен за изпращане на заявка по-късно. Изходите могат да бъдат свързани с всеки вход и обратно. Това позволява сложни и мощни взаимодействия между обектите.
Например обектът logic_timer може да изпрати изход OnTimer, който ще се задейства, когато дадено събитие се задейства за обекта. Изходът може да бъде обработен от входа Show в обекта env_sprite, което го прави видим, когато таймерът достигне определеното време. Можете също да обработите изхода OnTimer на същия таймер (logic_timer), като свържете обекта env_spark към входа SparkOnce, който ще излъчва искри. Използвайки свойствата на връзката, можете също така да изведете пожар след закъснение от 2 секунди или само веднъж.
За потребители, които са използвали оригиналния метод за свързване на обект на Half-Life, целевите имена и целевите полета вече са оттеглени, а системата за вход/изход на обекта има подобрена функционалност. Вместо да използвате обект trigger_multiple, който се задейства само за един целеви обект, вече можете да използвате произволен брой негови изходи, за да направите същото, включително: OnStartTouch, OnEndTouch, OnTouch и т.н. Тези изходи могат да бъдат свързани към произволен брой обекти, с уникално забавяне на изхода, което прави мулти-мениджъри остаряла. Също така полето killtarget вече е заменено чрез свързване на изхода Kill към входа на друг обект.
Изходите са събития, които се задействат, когато състоянието на обекта се промени. Това може да е таймер, който е достигнал крайната си стойност, натиснат бутон или врата, която се е затворила. Програмистът в обекта може да посочи произволен брой изходи, задействани за произволен брой критерии. Изходите са посочени в раздела Изходи свойства на обекта. Раздел Изходи на диалоговия прозорец Свойства на обекта показва всички изходи, които свързват обект с друг обект.
- Име на задействания изход.
- Името на обекта, който ще получи изхода (щракнете върху обекта с инструмента Eye Dropper, за да поставите името му тук).
- Въведете в друг обект, който ще получи изхода. Трябва да изберете кое действие на целевия обект да активира изхода. Например, ако искате войникът npc_combine_s да се спусне по въже, трябва да използвате Input BeginRappel.
- Параметърът се претоварва, ако данните се получават от въвеждане на дестинация. По-често това е числото, използвано от функцията за въвеждане (вижте раздела Въвеждане по-долу).
- Задайте закъснението за изпращане на изхода (в секунди). 1/10 секунда се записва като "0,1" сек.
- Извежда ли огън веднъж.