Polymers adalah perpustakaan komponen dan sistem untuk generator sistem-komponen polimorf.
Perpustakaan menyediakan komponen untuk tugas umum untuk mendukung pengembangan perangkat lunak dalam gaya berorientasi data. Komponen -komponen ini dapat secara bebas digabungkan dan dibangun dengan komponen dan sistem yang dibuat oleh pengguna.
Komponen -komponen tersebut terutama mendukung Windows tetapi beberapa juga akan berjalan di platform lain jika ada backend yang tersedia.
Mengimpor perpustakaan akan memberikan akses ke semua templat define, tetapi tidak menentukan apa pun atau menghasilkan kode apa pun kecuali jika templat ini digunakan.
Menggunakan Templat Define akan mendaftarkan komponen mereka dengan EC saat ini. Beberapa komponen menyediakan templat terpisah untuk mendaftarkan sistem mereka sehingga urutan eksekusi dapat dikontrol.
Misalnya, Anda mungkin ingin mendaftarkan komponen grafis untuk ECS Anda, kemudian jalankan sistem pembaruan GPU pada titik tertentu dalam eksekusi Anda.
Untuk informasi lebih lanjut tentang penggunaan polimorf, lihat manual.
Di bawah ini adalah contoh komponen TCP/IP yang mengirim dan menerima data:
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 () Parameter tllEvents membuat log aktivitas paket:

Banyak modul komponen termasuk demonstrasi bagaimana mereka dapat digunakan saat dijalankan sebagai modul utama. Folder demos berisi berbagai contoh yang lebih kompleks untuk menggunakan komponen bersama.
Demo grafis menggunakan SDL2 untuk mengatur jendela rendering.
modelsandtextures : Menggunakan komponen OpenGL untuk membuat sejuta partikel yang bereaksi terhadap mouse. dbbrowser (dan dbbrowserthreads ): Menggunakan komponen konsol dan database untuk membuat browser tabel database baris perintah.
consolemousebuttons : Menggunakan komponen konsol untuk membuat tombol berbasis teks UI yang dapat berinteraksi dengan menggunakan mouse.
netspeedtest : Mengukur kecepatan pengiriman/penerima paket UDP pada localhost dengan menghitung berapa banyak yang tiba dalam kerangka waktu yang ditetapkan.
jsonrpc_ecsinfo : Menggunakan komponen jaringan untuk melayani JSON RPC melalui HTTP untuk mendaftarkan entitas saat ini.
simplewebsite : Menggunakan komponen jaringan untuk melayani halaman web dengan halaman default yang menampilkan jumlah tampilan dan URL A /time yang menampilkan waktu saat ini.
spaceshooter2d : Game penembak ruang 2D menggunakan komponen OpenGL.
particlelife : Implementasi "Sistem Partikel Primordial" yang dijelaskan di sinichipmunkballpit : Menggunakan komponen ChipMunk2D dan OpenGL untuk mensimulasikan bola dalam sebuah kotak. Gunakan mouse untuk memindahkannya.Menggunakan GLBits untuk membuat model dan tekstur dengan OpenGL.
Lewati komponen posisi Anda sendiri atau gunakan Position default.
Model : Menampilkan model 3D pada koordinat dalam komponen posisi. Model ini diterjemahkan dengan objek buffer/array vertex dan rendering instance, demikian juga performant bahkan dengan ratusan ribu contoh.
Tekstur : Menampilkan instance billboard tekstur pada koordinat di komponen posisi.
Menggunakan chipmunk2d untuk mensimulasikan fisika.
Fisika : Pembungkus untuk objek chipmunk.body .
Physicsshape : Pembungkus untuk objek chipmunk.shape .
BodyTemplate : Diganti pada konstruksi dengan PhysicsBody .
Shapetemplate : Diganti pada konstruksi dengan PhysicsShape .
Ada dua versi komponen database, ecs_db_threads untuk kueri berulir dan ecs_db untuk kueri non-utas.
Ini menggunakan pustaka odbc yang ditemukan di sini.
ConnectToDB : Memulai koneksi ke database dengan parameter yang terkandung. Setelah koneksi dibuat, itu dihapus dan komponen DatabaseConnection ditambahkan ke entitas.
Kueri : Melakukan kueri saat ada DatabaseConnection . Ketika hasil diperoleh, ditempatkan di dalam komponen QueryResult dan ditambahkan ke entitas.
Menggunakan port penyelesaian Windows IO untuk jaringan kecepatan tinggi.
TCPConnection : Digunakan untuk terhubung ke alamat.
TCPConnected : Menunjukkan koneksi telah selesai.
TCPRECV : Membaca data dari koneksi yang diterima.
TcprecvComplete : Menunjukkan data telah selesai diterima.
TCPSEND : Kirim beberapa data ke TcpConnection .
TcpsendComplete : Menunjukkan operasi pengiriman telah selesai.
TcPlisten : Menunggu koneksi yang masuk dan memunculkan ComponentList saat koneksi diterima.
TCPERRORS : Merekam kesalahan TCP.
UDPREAD : Tandai entitas dengan komponen ini untuk berlangganan paket UDPData yang masuk yang dikirimkan dalam komponen UDPIncoming .
UDPSEND : Menambahkan komponen ini menyebabkan pesan UDP dikirim ke host dan port parameter.
RenderChar : Komponen ini secara efisien menghasilkan satu karakter ke konsol, dapat dikendalikan dengan koordinat x dan y dinormalisasi ke -1.0 .. 1.0 . Ini memungkinkan pembuatan antarmuka atau output yang digerakkan oleh teks yang lebih mirip dengan rendering dengan grafik.
Renderstring : Serangkaian entitas dengan komponen RenderChar , dikelola sehingga Anda dapat mengatur properti text dan koordinat yang dinormalisasi (x, y). Entitas dan komponen konstituen dapat diakses untuk diedit, dan menangani kliping ke lebar/perbatasan yang diinginkan.
DensityChar : Komponen ini memperbarui karakter yang ditampilkan dalam RenderChar sesuai dengan jumlah entitas RenderChar yang ada dalam posisi karakter tertentu. Ini memberikan cara sederhana untuk menampilkan banyak entitas yang berdekatan.
ConsoleInput : Terima komponen acara input konsol.
KeyInput , KeyChange : Terima Key Press Events.
MouseInput : Terima semua komponen acara mouse.
Mousemoving , mousebuttons : menerima acara mouse tertentu.
WindowChange : Terima acara untuk ukuran mengubah jendela konsol.
Modul ini menggunakan ecs_renderchar dan ecs_consoleevents untuk membuat 'tombol' tekstual yang digerakkan oleh mouse.
Mousebutton : Memungkinkan mendefinisikan ukuran, penyelarasan teks, latar belakang dan opsi perbatasan. Akses penuh ke entitas renderchar diberikan sehingga dapat diedit. Menghasilkan komponen acara seperti mousebuttonklick dan mousebuttonmouseover untuk menanggapi sistem.
DrawMouse : Tandai entitas dengan komponen ini sehingga karakternya ditarik di lokasi mouse.
EditString : String yang dapat diedit untuk membaca input dari pengguna di konsol.
InputFinished : Menunjukkan EditString telah menerima input pengembalian atau pelarian.
construction (templat entitas) setelah kerangka waktu tertentu. Berguna untuk melakukan beberapa tugas setelah beberapa penundaan tanpa memblokir. Dibunuh : Komponen tag ini dapat digunakan untuk menangani operasi pembersihan dalam kerangka eksekusi. Buat sistem yang digunakan Killed bersama dengan komponen lain untuk menangani hal -hal seperti membebaskan sumber daya yang dimiliki oleh komponen pada tahap eksekusi sistem yang benar, daripada memanggil delete secara langsung. Invoke addKillingSystem pada waktu yang tepat untuk benar -benar delete entitas setelah pekerjaan pembersihan selesai.
Killafter : Tambahkan Killed ke entitas setelah durasi yang ditetapkan. Berguna untuk entitas sementara yang mungkin memiliki sumber daya yang membutuhkan finalisasi yang tepat, atau hanya 'menembak dan melupakan' entitas sementara.