Include - Trigger , Signalformen mit Timer

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Include - Trigger , Signalformen mit Timer

Beitrag von STARGÅTE »

Downloads: Warum gibt es dieses Include?
  • Immer wieder möchten PurePasic-Programmierer, irgedwelche zeitlichen Ereignisse ausführen.
    Meist endet das dann in einem wilden If-Gewirr mit vielen Countervariablen.
    Um diesen Leuten eine alternative zu bieten habe ich dieses Include geschreiben,
    deren Funktionssammlung sich stark an dem PureBasic-Stil orientiert.
    Man kann Trigger-Nummern benutzen oder mit #PB_Any arbeiten
Was ist mit Triggern möglich?
  • Erzeugung verschiedener Trigger-Signal-Typen (Tick, Rechteck, Welle, Sägezahn, ...) mit Länge und Verzögerung
  • Kopplung von Trigger an Vorläufer-Tigger (ParentTrigger)
  • Variation der Wiederholungen (Iteration) des Signals und deren Abstände
  • Anhalten, Fortfahren, Neustarten
Welche Informationen erhält man über ein Trigger?
  • Den aktuellen Signalwert (Float zwischen 0 und 1)
  • Die abgelaufene Zeit des Triggers (in Millisekunden)
  • Den Status des Triggers (Wartend, Ruhe, Signalausgabe)
Wie kann man diese Informationen nutzen?
  • Einblendeffekt
    Mit Hilfe des Types "Slope" wird ein Trigger erzeugt, der in der angegebenen Länge steigend Werte zwischen 0 und 1 ausgibt.
    Diese können dann direkt an den Transparenzwert eines Sprite3Ds multipliziert werden.
  • Ereignise
    Mit dem Typ "Tick" kann ein einmaliger 1-Wert nach der angegebenen Verzögerung ausgegeben werden.
    Da dies ein Punkt-Trigger ist, kommt das signal auch wenn die Zeit etwas drüber ist.
    Damit können gezieht Sachen nach einer bestimmten zeit ausgeführt werden.
  • Hover-Effekt
    Wird mit der Maus über ein Button gegangen kann ein Trigger neugestartet werden, dieser ist dann vom Typ "Noise" und erzeugt so z.B ein Wackeleffekt.
  • Trigger kombinieren
    Mit "ParentTrigger" können Trigger auf andere Trigger synchronisiert werden bzw. auf den anderen warten.
    Außerdem können mehrere Trigger-Signal-Werte in belibigen Rechnungen zu neuen Signalen verarbeitet werden.
    Multipliziert man z.B. den Sägezahn-Trigger mit dem Rauschen, erhält man Rauschen, welches am Anfang kleiner ist als am Ende.
    Mit Hilfe der Iteration können Trigger-Signale in einer bestimmten Anzahl in bestimmten Abständen wiederholt werden.
Wie sieht der Laufplan eines Trigger aus?
Bild

Wie sehen die verschiedenen Trigger aus?
Bild
Außerdem gibt es ein Benutzerdefinierten Trigger.

ToDo-List für nächstes Update:
  • Typen nicht mehr über Select filtern, sonden direkt als Prozedure übergeben.
Zuletzt geändert von STARGÅTE am 04.11.2011 14:21, insgesamt 4-mal geändert.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: Include - Trigger , Signalformen mit Timer

Beitrag von CSHW89 »

ist auf jeden fall ne richtig coole idee :allright:
tja, nur leider ist so ne include wirklich nur für jemandem, der genau sowas braucht. ich brauchs zur zeit nicht, aber ich weiß, wo ich suchen muss, wenn ich triggern will :wink: . also erweiter das ruhig noch ein bissl.
lg kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
tft
Beiträge: 650
Registriert: 08.09.2004 20:18
Computerausstattung: GFX 3060 Ti , i7 12700F , 32 GB Ram , 900 GB SSD , TV
Wohnort: Dachsen
Kontaktdaten:

Re: Include - Trigger , Signalformen mit Timer

Beitrag von tft »

Hallo,

genau das richtige ... läst sich gut zur ereigniss steuerung gebrauchen.

Gruss TFT

EDIT: Leider scheitert das Beispiel schon an der 38. Zeile CreatSprite3D()
TFT seid 1989 , Turgut Frank Temucin , CH-Dachsen/DE-Berlin/TR-Antalya
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung

PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler :-)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Include - Trigger , Signalformen mit Timer

Beitrag von STARGÅTE »

Naja da wird das Sprite3D erstellt, vllt lädt er bei dir das BIld nicht ("OFF.png")
oder du hast es nicht mit drin ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Include - Trigger , Signalformen mit Timer

Beitrag von STARGÅTE »

So kleines Update:
- CreateCustomTrigger()
Zum Erstellen eines eigenen Signals (übergeben wird dort eine Funktion die Werte von 0.0-1.0 (Normierte Zeit des Signals) übergeben bekommt und Werte zwischen 0.0 und 1.0 ausspuckt)
- Außerdem gabs noch n kleines Bug-Fix
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Josef Sniatecki
Beiträge: 657
Registriert: 02.06.2008 21:29
Kontaktdaten:

Re: Include - Trigger , Signalformen mit Timer

Beitrag von Josef Sniatecki »

Hi STARGÅTE,
habe mir mal dein Include angeschaut und mir ist etwas aufgefallen:

Anstatt "Type" zu verwenden, um zwischen den Signalformen zu unterscheiden, könntest du einfach einen Zeiger auf eine Prozedur verwenden (so wie bei CustomTrigger). Dadurch würdest du dir das ständige "Select/Case" erspaaren. Falls du bei "CreateTrigger" dann trotzdem noch für "Type" die Konstanten verwenden möchtest, kannst du ja einfach innerhalb der Prozedur eine Datasection mit den Prozeduradressen einbauen und über "PeekI(?TriggerProcedures + Type*SizeOf(Integer))" auslesen.

Und dann noch ein kleiner Tippfehler: CurrentParrentTriggerTime... da ist wohl das Doppel-R schon zum Reflex geworden :wink:

Auf jeden Fall gefällt mir der PB getreue Stil deiner Quellcodes.

Gruß Josef
PB 4.61 | Windows Vista - 32Bit
Homepage

"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Include - Trigger , Signalformen mit Timer

Beitrag von STARGÅTE »

Josef Sniatecki hat geschrieben:Anstatt "Type" zu verwenden, um zwischen den Signalformen zu unterscheiden, könntest du einfach einen Zeiger auf eine Prozedur verwenden (so wie bei CustomTrigger).
Darüber habe ich auch schon nachgedacht, nachdem ich CustomTrigger() "erfunden" hab.
Zumal ich ja auch einfach für die jeweiligen Type n Prozedur schreiben kann, die dann beim erstellen als Pointer übergeben wird.

An der Benutzung würde sich dann wenig änden, aber der Select-Block wärde dann weg, weil alles nur noch über den Prototype geht.
Danke für den Hinweis.

wegen CurrentParrentTriggerTime, die Procedure ist eh nur "privat", aber ich änder es dann mit dem kommenden Update.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten