text: ﻿using System; // require keep for Windows Universal App
  using UnityEngine;
  
  namespace UniRx.Triggers
  {
      [DisallowMultipleComponent]
      public class ObservableJointTrigger : ObservableTriggerBase
      {
          Subject<float> onJointBreak;
  
          void OnJointBreak(float breakForce)
          {
              if (onJointBreak != null) onJointBreak.OnNext(breakForce);
          }
  
          public IObservable<float> OnJointBreakAsObservable()
          {
              return onJointBreak ?? (onJointBreak = new Subject<float>());
          }
          
          
          Subject<Joint2D> onJointBreak2D;
  
          void OnJointBreak2D(Joint2D brokenJoint)
          {
              if (onJointBreak2D != null) onJointBreak2D.OnNext(brokenJoint);
          }
  
          public IObservable<Joint2D> OnJointBreak2DAsObservable()
          {
              return onJointBreak2D ?? (onJointBreak2D = new Subject<Joint2D>());
          }
          
  
          protected override void RaiseOnCompletedOnDestroy()
          {
              if (onJointBreak != null)
              {
                  onJointBreak.OnCompleted();
              }
              if (onJointBreak2D != null)
              {
                  onJointBreak2D.OnCompleted();
              }
          }
      }
  }