Polymers هي مكتبة من المكونات والأنظمة لمولد نظام المكون من Polymorph.
توفر المكتبة مكونات للمهام الشائعة لدعم تطوير البرامج بأسلوب موجه للبيانات. يمكن دمج هذه المكونات بحرية وبناء على المكونات والأنظمة التي صنعها المستخدم.
تدعم المكونات في المقام الأول Windows ولكن سيتم تشغيل بعضها أيضًا على منصات أخرى إذا كانت هناك واجهة خلفية متاحة.
سيتيح استيراد المكتبة الوصول إلى جميع القوالب المحددة ، ولكن لا يحدد أي شيء أو إنشاء أي رمز ما لم يتم استخدام هذه القوالب.
باستخدام قوالب DEFINE سوف يسجل مكوناتها مع ECS الحالية. توفر بعض المكونات قوالب منفصلة لتسجيل أنظمتها بحيث يمكن التحكم في ترتيب التنفيذ.
على سبيل المثال ، قد ترغب في تسجيل مكونات الرسومات الخاصة بـ 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 : يستخدم مكونات وحدة التحكم لإنشاء واجهة مستخدم زر تستند إلى نص يمكن التفاعل معها باستخدام الماوس.
netspeedtest : يقيس سرعة إرسال/استلام حزم UDP على مضيف محلي عن طريق حساب عدد يصلون في إطار زمني محدد.
jsonrpc_ecsinfo : يستخدم مكونات الشبكات لخدمة JSON RPC عبر HTTP لإدراج الكيانات الحالية.
simplewebsite : يستخدم مكونات الشبكات لخدمة صفحة ويب مع صفحة افتراضية تعرض عدد العرض وعنوان A /time الذي يعرض الوقت الحالي.
spaceshooter2d : لعبة إطلاق نار 2D باستخدام مكونات OpenGL.
particlelife : تنفيذ "نظام الجسيمات البدائية" الموصوفة هناchipmunkballpit : يستخدم مكونات Chipmunk2D و OpenGL لمحاكاة الكرات في صندوق. استخدم الماوس لتحريكها.يستخدم glbits لتقديم النماذج والقوام مع OpenGL.
مرر في مكون الموضع الخاص بك أو استخدم Position الافتراضي.
النموذج : يعرض نموذج ثلاثي الأبعاد في الإحداثيات في مكون الموضع. يتم تقديم النموذج باستخدام كائنات عازلة/صفيف في قمة الرأس وتقديمها ، لذلك هو أداء حتى مع مئات الآلاف من الحالات.
الملمس : يعرض مثيل لوحة إعلانات الملمس في الإحداثيات في مكون الموضع.
يستخدم chipmunk2d لمحاكاة الفيزياء.
Physicsbody : غلاف لكائن chipmunk.body .
Physicsshape : غلاف ل chipmunk.shape كائنات.
bodytemplate : استبدال البناء مع PhysicsBody .
ShapeTemplate : استبدال على البناء مع PhysicsShape .
هناك إصداران من مكونات قاعدة البيانات ، ecs_db_threads للاستعلامات الخيطية و ecs_db للاستعلامات غير المتقدمة.
هذه تستخدم مكتبة odbc الموجودة هنا.
ConnectToDB : يبدأ اتصال بقاعدة البيانات مع المعلمات الموجودة لها. بمجرد إنشاء الاتصال ، تتم إزالته وإضافة مكون DatabasEconnection إلى الكيان.
الاستعلام : يقوم باستعلام عند وجود DatabAseConnection . عند الحصول على نتيجة ، يتم وضعه داخل مكون QueryResult وإضافته إلى الكيان.
يستخدم منافذ إكمال 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 . يتيح هذا إنشاء واجهات أو مخرجات مدفوعة بشكل سهل تشبه العرض بشكل أوثق مع الرسومات.
RenderString : سلسلة من الكيانات التي تحتوي على مكونات RenderChar ، تتم إدارتها حتى تتمكن من تعيين خاصية text وإحداثيات (x ، y) تطبيعها. يمكن الوصول إلى الكيانات والمكونات المكونة لتحريرها ، وتتعامل مع القطع إلى العرض/الحدود المطلوبة.
Densychar : يقوم هذا المكون بتحديث الحرف المعروض في RenderChar وفقًا لعدد كيانات RenderChar الموجودة في موضع حرف معين. هذا يعطي طريقة بسيطة لعرض كيانات متعددة قريبة من بعضها البعض.
ConsoleInput : تلقي مكونات حدث إدخال وحدة التحكم.
keyinput ، keychange : استقبل أحداث الصحافة الرئيسية.
MouseInput : تلقي جميع مكونات حدث الماوس.
mousemoving ، mousebuttons : تلقي أحداث ماوس محددة.
WindowChange : تلقي الأحداث لنافذ وحدة التحكم في تغيير حجم.
تستخدم هذه الوحدة ecs_renderchar و ecs_consoleevents لإنشاء "أزرار" مستخدمة نصية مدفوعة بالماوس.
MouseButton : يسمح بتحديد حجم ، محاذاة النص ، الخلفية والخيارات الحدودية. يتم إعطاء الوصول الكامل إلى كيانات Renderchar حتى يتم تحريرها. يولد مكونات الأحداث مثل MouseButtoncked و MouseButtonMouseover للأنظمة للاستجابة لها.
DrawMouse : وضع علامة على كيان بهذا المكون بحيث يتم رسم طابعه في موقع الماوس.
EditString : سلسلة قابلة للتحرير لقراءة الإدخال من المستخدم في وحدة التحكم.
InputFinished : يشير إلى أن EditString قد تلقى إدخال أو إدخال إدخال.
construction (قالب من الكيانات) بعد إطار زمني معين. مفيد لأداء بعض المهام بعد بعض التأخير دون الحظر. قتل : يمكن استخدام مكون العلامة هذا للتعامل مع عمليات التنظيف ضمن إطار من التنفيذ. قم بإنشاء أنظمة تستخدم Killed جنبًا إلى جنب مع مكونات أخرى للتعامل مع أشياء مثل تحرير الموارد التي يملكها مكون في المرحلة الصحيحة من تنفيذ النظام ، بدلاً من استدعاء delete مباشرة. استدعاء addKillingSystem في الوقت المناسب delete الكيانات فعليًا بعد الانتهاء من أي عمل تنظيف.
Killafter : أضف Killed إلى كيان بعد مدة محددة. مفيد للكيانات المؤقتة التي قد يكون لها موارد تحتاج إلى وضع اللمسات الأخيرة المناسبة ، أو مجرد "النار ونسيان" الكيانات المؤقتة.