Event.hx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package hrt.prefab.fx;
  2. typedef EventInstance = {
  3. evt: Event,
  4. ?play: Void->Void,
  5. ?setTime: Float->Void
  6. };
  7. class Event extends hrt.prefab.Prefab {
  8. @:s public var time: Float = 0.0;
  9. public function new(?parent) {
  10. super(parent);
  11. this.type = "event";
  12. }
  13. public function prepare(ctx: Context) : EventInstance {
  14. return {
  15. evt: this
  16. };
  17. }
  18. public static function updateEvents(evts: Array<EventInstance>, time: Float, prevTime: Float) {
  19. if(evts == null) return;
  20. for(evt in evts) {
  21. if(evt.play != null && time > prevTime && evt.evt.time > prevTime && evt.evt.time < time)
  22. evt.play();
  23. if(evt.setTime != null)
  24. evt.setTime(time - evt.evt.time);
  25. }
  26. }
  27. #if editor
  28. override function edit( ctx ) {
  29. super.edit(ctx);
  30. var props = ctx.properties.add(new hide.Element('
  31. <div class="group" name="Event">
  32. <dl>
  33. <dt>Time</dt><dd><input type="number" value="0" field="time"/></dd>
  34. </dl>
  35. </div>
  36. '),this, function(pname) {
  37. ctx.onChange(this, pname);
  38. });
  39. }
  40. override function getHideProps() : hide.prefab.HideProps {
  41. return {
  42. icon : "bookmark", name : "Event",
  43. };
  44. }
  45. public function getDisplayInfo(ctx) {
  46. return {
  47. label: name,
  48. length: 1.0
  49. };
  50. }
  51. #end
  52. static var _ = Library.register("event", Event);
  53. }