ObservableJointTrigger.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System; // require keep for Windows Universal App
  2. using UnityEngine;
  3. namespace UniRx.Triggers
  4. {
  5. [DisallowMultipleComponent]
  6. public class ObservableJointTrigger : ObservableTriggerBase
  7. {
  8. Subject<float> onJointBreak;
  9. void OnJointBreak(float breakForce)
  10. {
  11. if (onJointBreak != null) onJointBreak.OnNext(breakForce);
  12. }
  13. public IObservable<float> OnJointBreakAsObservable()
  14. {
  15. return onJointBreak ?? (onJointBreak = new Subject<float>());
  16. }
  17. Subject<Joint2D> onJointBreak2D;
  18. void OnJointBreak2D(Joint2D brokenJoint)
  19. {
  20. if (onJointBreak2D != null) onJointBreak2D.OnNext(brokenJoint);
  21. }
  22. public IObservable<Joint2D> OnJointBreak2DAsObservable()
  23. {
  24. return onJointBreak2D ?? (onJointBreak2D = new Subject<Joint2D>());
  25. }
  26. protected override void RaiseOnCompletedOnDestroy()
  27. {
  28. if (onJointBreak != null)
  29. {
  30. onJointBreak.OnCompleted();
  31. }
  32. if (onJointBreak2D != null)
  33. {
  34. onJointBreak2D.OnCompleted();
  35. }
  36. }
  37. }
  38. }