Polymers -это библиотека компонентов и систем для генератора полиморфа-компонента.
Библиотека предоставляет компоненты для общих задач для поддержки разработки программного обеспечения в стиле, ориентированном на данные. Эти компоненты могут быть свободно объединены и созданы с помощью пользовательских компонентов и систем.
Компоненты в основном поддерживают Windows, но некоторые также будут работать на других платформах, если есть бэкэнд.
Импорт библиотеки предоставит доступ ко всем определяемым шаблонам, но ничего не определяет и не генерирует какой -либо код, если эти шаблоны не используются.
Использование шаблонов определения зарегистрирует свои компоненты с помощью текущих ECS. Некоторые компоненты предоставляют отдельные шаблоны для регистрации своих систем, чтобы можно было контролировать порядок выполнения.
Например, вы можете зарегистрировать графические компоненты для ваших ECS, а затем запустить системы обновления графического процессора в определенной точке вашего выполнения.
Для получения дополнительной информации об использовании полиморфа, см. Руководство.
Ниже приведен пример того, как компоненты TCP/IP отправляют и получают данные:
import polymorph, polymers
defineTcpNetworking ( fixedSizeComponents ( 100 ), defaultSysOpts, tllEvents)
makeSystem ( " serverRead " , [ TcpRecv , TcpRecvComplete ]):
fields:
gotMessage: bool
all:
echo " Server received message: " , item.tcpRecv.data
sys.gotMessage = true
makeEcs ()
commitSystems " poll "
let
port = 1234 . Port
server = newEntityWith ( TcpListen (port: port))
client = newEntityWith (
TcpConnection (
remoteAddress: " 127.0.0.1 " ,
remotePort: port),
TcpSend (data: " Hello " ))
while not sysServerRead.gotMessage:
poll () Параметр tllEvents создает журнал пакетной деятельности:

Многие компонентные модули включают демонстрацию того, как их можно использовать при запуске в качестве основного модуля. Папка demos содержит различные более сложные примеры использования компонентов вместе.
Графические демо используют SDL2 для настройки окна рендеринга.
modelsandtextures : использует компоненты OpenGL для отображения миллиона частиц, которые реагируют на мышь. dbbrowser (и dbbrowserthreads ): использует компоненты консоли и базы данных для создания браузера таблицы базы данных командной строки.
consolemousebuttons : использует консольные компоненты для создания пользовательского интерфейса кнопки на основе текста, который можно взаимодействовать с использованием мыши.
netspeedtest : измеряет скорость отправки/получения пакетов UDP на LocalHost, подсчитывая, сколько поступает в установленные сроки.
jsonrpc_ecsinfo : использует сетевые компоненты для обслуживания RPC JSON через HTTP для перечисления текущих сущностей.
simplewebsite : использует сетевые компоненты для обслуживания веб -страницы со страницей по умолчанию, на которой отображается количество просмотра и A /time URL -адрес, который отображает текущее время.
spaceshooter2d : 2D -игра Space Shooter с использованием компонентов OpenGL.
particlelife : реализация «изначальной системы частиц», описанной здесьchipmunkballpit : использует компоненты Bumpmunk2D и OpenGL для имитации шариков в коробке. Используйте мышь, чтобы переместить их.Использует GLBIT для рендеринга моделей и текстур с OpenGL.
Пропустите свой собственный компонент позиции или используйте Position по умолчанию.
Модель : отображает 3D -модель на координатах в компоненте положения. Модель отображается с помощью слов -буфера/массива и инстинкционального рендеринга, так же характерно даже с сотнями тысяч экземпляров.
Текстура : отображает экземпляр рекламного щита текстуры на координатах в компоненте положения.
Использует бурундуки2D для имитации физики.
Physicsbody : обертка для объекта chipmunk.body .
Physicsshape : обертка для chipmunk.shape Objects.
Bodytemplate : заменить на строительство PhysicsBody .
SHAPETEMPLATE : заменить на строительство с помощью PhysicsShape .
Существует две версии компонентов базы данных, ecs_db_threads для резьбовых запросов и ecs_db для нечищенных запросов.
Они используют библиотеку odbc , найденную здесь.
ConnectTODB : инициирует соединение с базой данных с его содержащими параметрами. После установки подключения он удаляется, и к объекту добавляется компонент базы данных .
Запрос : выполняет запрос, когда присутствует база данных . Когда получается результат, он помещается в компонент запроса и добавляется в сущность.
Использует Windows IO завершить порты для высокоскоростных сетей.
TCPConnection : используется для подключения к адресу.
TCPConnected : Указывает, что соединение завершено.
TCPRECV : считывает данные из принятого соединения.
TCPRECVCOMPLETE : указывает, что данные завершены.
TCPSEND : отправьте некоторые данные в TcpConnection .
TCPSENDCOMPLETE : Указывает, что операция отправки завершена.
Tcplisten : ожидает входящего соединения и порождает ComponentList при принятии соединения.
Tcperrors : записывает ошибки TCP.
UDPread : отметьте объект с этим компонентом, чтобы подписаться на входящие пакеты UDPData , доставленные в компонентах UDPIncoming .
UDPSEND : добавление этого компонента вызывает отправку сообщения UDP на хост параметра и порт.
RenderChar : этот компонент эффективно выводит один символ в консоль, управляемый с координатами x и y, нормализованными до -1.0 .. 1.0 . Это позволяет легко создавать текстовые интерфейсы или выходы, которые более похожи на рендеринг с графикой.
Рендерстринг : строка сущностей с компонентами RenderChar , управляемой, чтобы вы могли установить text свойство и нормализованную (x, y) координату. Учредительные объекты и компоненты доступны для редактирования, и обрабатывает обрезку по желаемой ширине/границам.
DensityChar : этот компонент обновляет символ, отображаемый в RenderChar в соответствии с количеством объектов RenderChar , присутствующих в определенной позиции символа. Это дает простой способ отображения нескольких объектов, которые находятся близко друг к другу.
Консолиноптат : получение компонентов ввода консоли.
KeyInput , KeyChange : получение клавиш Нажмите события.
MouseInput : Получить все компоненты событий мыши.
Mousemoving , Mousebuttons : Получить конкретные события мыши.
WindowChange : Получить события для смены окна консоли.
В этом модуле используются ecs_renderchar и ecs_consoleevents для создания текстовых кнопок UI, управляемого мышью.
Mousebutton : позволяет определить размер, выравнивание текста, фон и варианты границ. Полный доступ к объектам renderChr приведен, чтобы они могли быть отредактированы. Генерирует компоненты событий, такие как MouseButtonClicked и MouseButtonMouseOver для систем для реагирования.
Drawmouse : пометьте объект с этим компонентом так, чтобы его символ был нарисован в месте мыши.
Editstring : редактируемая строка для чтения ввода от пользователя в консоли.
Входная финала : указывает, что EditString получила возврат или побег.
construction (шаблон сущностей) после заданного периода времени. Полезно для выполнения какой -то задачи после некоторой задержки без блокировки. Убитый : этот компонент тега можно использовать для обработки операций очистки в рамке выполнения. Создайте системы, которые используют Killed вместе с другими компонентами для обработки таких вещей, как освобождение ресурсов, принадлежащих компоненту на правильной стадии выполнения системы, а не вызов delete напрямую. Вызвать addKillingSystem в подходящее время, чтобы фактически delete объекты после того, как любая работа по очистке была завершена.
Killafter : добавить Killed в сущность после установленной продолжительности. Полезно для временных организаций, которые могут иметь ресурсы, которые нуждаются в соответствующей завершении, или просто «стрелять и забыть» временные организации.