Polymers是多晶型实体系统生成器的组件和系统库。
该库为以数据为导向的样式支持开发软件的常见任务提供了组件。这些组件可以与用户制造的组件和系统自由合并并构建。
这些组件主要支持窗口,但如果有后端,则有些组件也将在其他平台上运行。
导入库将访问所有定义模板,但除非使用这些模板,否则不会定义任何内容或生成任何代码。
使用定义模板将在当前的EC中注册其组件。一些组件提供单独的模板以注册其系统,以便可以控制执行顺序。
例如,您可能希望注册ECS的图形组件,然后在执行中的特定点运行GPU更新系统。
有关使用polymorph的更多信息,请参见手册。
以下是发送和接收数据的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 :使用控制台组件创建基于文本的按钮UI,该按钮可以与鼠标进行交互。
netspeedtest :通过计算在设定的时间范围内到达的速度,可以测量Localhost上发送/接收UDP数据包的速度。
jsonrpc_ecsinfo :使用网络组件在HTTP上使用JSON RPC列出当前实体。
simplewebsite :使用网络组件使用默认页面提供网页,该网页显示视图计数和显示当前时间的a /time URL。
spaceshooter2d :使用OpenGL组件的2D太空射击游戏。
particlelife :此处描述的“原始粒子系统”的实现chipmunkballpit :使用Chipmunk2D和OpenGL组件模拟盒子中的球。使用鼠标移动它们。使用GLBITS渲染具有OpenGL的模型和纹理。
传递您自己的位置组件或使用默认Position 。
模型:在位置组件中的坐标处显示3D模型。该模型使用顶点缓冲区/数组对象和实例渲染渲染,即使有成千上万的实例,性能也是如此。
纹理:在位置组件中的坐标处显示纹理广告牌实例。
使用Chipmunk2D模拟物理。
物理机构: chipmunk.body对象的包装器。
物理形状: chipmunk.shape的包装器。形状对象。
BodyTemplate :用PhysicsBody在构造上取代。
Shapetemplate :用PhysicsShape在构造上取代。
有两个版本的数据库组件,用于线程查询的ecs_db_threads和非线程查询的ecs_db 。
这些使用此处找到的odbc库。
ConnectTODB :启动与其包含参数的数据库的连接。建立连接后,将其删除,并将databaseconnection组件添加到实体中。
查询:存在数据库共连接时执行查询。获得结果后,将其放置在QueryResult组件中并添加到实体中。
使用Windows IO完成端口进行高速网络。
TCPConnection :用于连接到地址。
TCPConnected :指示连接已完成。
TCPRECV :从接受连接中读取数据。
TCPRECVCOMPLETE :指示已收到的数据已完成。
TCPSEND :将一些数据发送到TcpConnection 。
TCPSENDCOMPLETE :指示已完成的发送操作已完成。
TCPLISTEN :等待传入的连接并在接受连接时产生ComponentList 。
TCPerrors :记录TCP错误。
UDPREAD :标记具有此组件的实体,以订阅在UDPIncoming组件中传递的传入的UDPData包。
udpsend :添加此组件会导致将UDP消息发送到参数主机和端口。
RenderChar :此组件有效地将单个字符输出到控制台,可控制X和Y坐标为-1.0 .. 1.0 。这可以轻松地创建文本驱动的接口或更类似于图形渲染的输出。
RenderString :具有RenderChar组件的一串实体,进行管理,以便您可以设置text属性和归一化(X,Y)坐标。组成的实体和组件可访问以编辑,并处理剪辑到所需的宽度/边界。
密度char :此组件根据特定字符位置中存在的RenderChar实体数量更新RenderChar中显示的字符。这提供了一种简单的方式来显示靠近的多个实体。
控制台:接收控制台输入事件组件。
键入,键换:接收钥匙按事件。
MouseInput :接收所有鼠标事件组件。
Mousemoving , MouseButtons :接收特定的鼠标事件。
WindowChange :接收Console窗口更改大小的事件。
该模块使用ecs_renderchar和ecs_consoleevents创建鼠标驱动的文本UI'按钮'。
MouseButton :允许定义大小,文本对齐,背景和边框选项。提供了对RenderChar实体的完全访问权限,因此可以进行编辑。生成事件组件,例如MouseButtonClicked和MouseButtonMouseover ,以响应系统。
DrawMouse :使用此组件标记实体,以便在鼠标位置绘制其字符。
编辑:可编辑字符串,用于读取控制台中用户的输入。
输入文件:指示EditString已收到返回或逃生输入。
construction (实体模板)。在某些延迟后执行某些任务而不阻止。杀死:此标签组件可用于处理执行框架内的清理操作。创建与其他组件一起Killed的系统,以处理在系统执行正确阶段由组件拥有的资源释放资源,而不是直接调用delete 。在任何清理工作完成后,请在适当的时间调用addKillingSystem ,以实际delete实体。
Killafter :固定持续时间后,将Killed添加到一个实体中。对于可能需要适当完成的资源或只是“火与忘记”临时实体的临时实体有用。