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添加到一個實體中。對於可能需要適當完成的資源或只是“火與忘記”臨時實體的臨時實體有用。