Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Julién

Alter Hase

  • »Julién« ist der Autor dieses Themas

Beiträge: 717

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

11

27.07.2015, 18:15

Nein,
es geht mir darum, dass die richtigen Methoden zu den jeweiligen Events aufgerufen werden, damit ich mir das Casting erspare.
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

12

27.07.2015, 18:21

Wenn das so simpel ist, warum verschickst du dann nicht einfach nur IDs, die auf einen funktion ptr in einem array verweisen?

Julién

Alter Hase

  • »Julién« ist der Autor dieses Themas

Beiträge: 717

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

13

27.07.2015, 18:25

Weil die Event bestimmte Parameter haben. Aber ich glaube dann kommen wir beim Intent-System von Android raus, oder?
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

14

27.07.2015, 18:31

Dann roll das doch ein wenig anders auf.
Statt das Event zu verschicken, übergib dem Event die Liste der Empfänger und lass das Event die Logic ausführen.

Julién

Alter Hase

  • »Julién« ist der Autor dieses Themas

Beiträge: 717

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

15

27.07.2015, 18:40

Dann sind wir wieder beim Observer-Pattern.
Ich habe da eine Idee, wie das "anders aufgerollt" aussehen könnte, nur bin ich mir nicht sicher, bei den schwächen, die mir da einfallen.

Ein fettes Danke an alle ! ;D
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

16

27.07.2015, 19:51

Aber ich glaube dann kommen wir beim Intent-System von Android raus, oder?
Da hast Du meine PN aber sehr schlecht gelesen. Bei Android-Intents wird nichts gecastet.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Julién

Alter Hase

  • »Julién« ist der Autor dieses Themas

Beiträge: 717

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

17

27.07.2015, 21:01

Entschuldige mich, ich habe mich schlecht ausgedrückt.
Ich habe es so gemeint. anti-freak meint ja, ich soll die ID's verschicken. Mit diesen könnte ich auf die Parameter zugreifen bzw. die Struktur zugreifen, oder?
Dann wäre kein dynamic_cast mehr nötig, da ich ja weis, was mich erwartet.
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

18

27.07.2015, 21:04

Ich bin davon ausgegangen, dass deine Events intern die gleichen Member haben, und dass sich lediglich die Funktionsweise ändert. Da dies aber anscheinend nicht der Fall ist, habe ich etwas anderes vorgeschlagen, dass eben diese Events die Zielobjekte selbst beeinflussen.
Vll solltest du generell mal genau beschreiben, was du vor hast.
Aber wenn man sich das Event System in z.B. Qt anschaut, kommt man ohne dynamic_casts und TypeID der Events nicht aus.

Alternativ gäbe es noch die nicht so schöne Methode, intern einfach eine union zu nutzen und dadurch die verschiedenen Member zu verschleiern/trennen.

EDIT: Natürlich gibt es in Qt auch die Möglichkeit ohne dynamic_cast an die richtigen Eventklassen zu kommen, dafür gibt es dann aber auch spezielle Methoden die man überschreibt. Allerdings liefert die Standardmethode (onEvent oder sowas) den abstrakten Typ "Event", den man sich erstmal zurecht casten muss.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »anti-freak« (27.07.2015, 21:14)


Julién

Alter Hase

  • »Julién« ist der Autor dieses Themas

Beiträge: 717

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

19

27.07.2015, 21:14

Bei mir benötigen verschiedene Events verschiedene Parameter.
Zum Beispiel, wenn eine Kollision stattfindet, dann möchten man z.B. wissen wer mit wem kollidiert. Das wäre ein Event, das vom Physiksystem emittiert wird und von einem Scriptmodul wieder empfangen wird.
Oder wenn ein Entity erstellt wird, dann möchte man seine ID, ev. seine Tags/Layers wissen; klar man könnte dies das EntityManager fragen, aber das wäre umständlich.
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

20

27.07.2015, 21:17

Bei mir benötigen verschiedene Events verschiedene Parameter.
Zum Beispiel, wenn eine Kollision stattfindet, dann möchten man z.B. wissen wer mit wem kollidiert. Das wäre ein Event, das vom Physiksystem emittiert wird und von einem Scriptmodul wieder empfangen wird.
Oder wenn ein Entity erstellt wird, dann möchte man seine ID, ev. seine Tags/Layers wissen; klar man könnte dies das EntityManager fragen, aber das wäre umständlich.

Dann wird die letztendlich nichts anders übrig bleiben als entweder:

- ein Interface Objekt "Event" durch die Gegend zu reichen und das am Ziel zurecht zu casten; oder
- entsprechende Listener anzubieten, die die korrekte derived Klasse von "Event" entgegen nehmen

PS: Anders als es andere vll sehen, empfinde ich es nicht als Verbrechen einen dynamic_cast zu benutzen. Solange das nicht Überhand nimmt ist das durchaus vertretbar. Bei reinterpret_cast würde ich schon genauer hinschauen..

Werbeanzeige