module CUnityInputs
    ! use CVoidEventHandlerCollection
    implicit none    
    type :: UnityInputsType
        logical :: ElevatorConnectionPossible
        logical :: JointConnectionPossible
        logical :: IsKellyBushingSetInTable
        logical :: ElevatorPickup 
        logical :: NearFloorPosition 
        logical :: SingleSetInMouseHole
        logical :: TdsConnectionPossible
        logical :: TdsStemIn
        
        ! private :: ElevatorConnectionPossible
        ! private :: JointConnectionPossible
        ! private :: IsKellyBushingSetInTable
        ! private :: ElevatorPickup 
        ! private :: NearFloorPosition 
        ! private :: SingleSetInMouseHole
        ! private :: TdsConnectionPossible
        ! private :: TdsStemIn
            
        ! public
        
        ! type(VoidEventHandlerCollection) :: OnElevatorConnectionPossibleChange
        ! type(VoidEventHandlerCollection) :: OnJointConnectionPossibleChange
        ! type(VoidEventHandlerCollection) :: OnIsKellyBushingSetInTableChange
        ! type(VoidEventHandlerCollection) :: OnElevatorPickupChange
        ! type(VoidEventHandlerCollection) :: OnNearFloorPositionChange
        ! type(VoidEventHandlerCollection) :: OnSingleSetInMouseHoleChange
        
        ! type(VoidEventHandlerCollection) :: OnTdsConnectionPossibleChange
        ! type(VoidEventHandlerCollection) :: OnTdsStemInChange
    end type UnityInputsType

    type(UnityInputsType)::UnityInputs
    
    contains
    
    ! Input routines
    
    
!     subroutine Set_OutOfMouseHole(v)
!     !DEC$ ATTRIBUTES DLLEXPORT :: Set_OutOfMouseHole
!     !DEC$ ATTRIBUTES ALIAS: 'Set_OutOfMouseHole' :: Set_OutOfMouseHole
! 	    implicit none
! 	    logical, intent(in) :: v
! !#ifdef ExcludeExtraChanges
! !        if(OutOfMouseHole == v) return
! !#endif
! !	    OutOfMouseHole = v
! !        call OnOutOfMouseHoleChange%RunAll()
! !#ifdef deb
! !	    print*, 'OutOfMouseHole=', OutOfMouseHole
! !#endif
!     end subroutine
    
!     !logical function Get_OutOfMouseHole()
!     !    implicit none
!     !    Get_OutOfMouseHole = OutOfMouseHole
!     !end function
    
    
    
    
    
    
    
    
    
    
    
    
!     subroutine Set_Unlatch(v)
!     !DEC$ ATTRIBUTES DLLEXPORT :: Set_Unlatch
!     !DEC$ ATTRIBUTES ALIAS: 'Set_Unlatch' :: Set_Unlatch
! 	    implicit none
! 	    logical, intent(in) :: v
! !#ifdef ExcludeExtraChanges
! !        if(Unlatch == v) return
! !#endif
! !	    Unlatch = v
! !        call OnUnlatchChange%RunAll()
! !#ifdef deb
! !	    print*, 'Unlatch=', Unlatch
! !#endif
!     end subroutine
    
!     !logical function Get_Unlatch()
!     !    implicit none
!     !    Get_Unlatch = Unlatch
!     !end function
    
    
    
    
    
    
    
    
    
    
    
    
    
    
!     subroutine Set_Latch(v)
!     !DEC$ ATTRIBUTES DLLEXPORT :: Set_Latch
!     !DEC$ ATTRIBUTES ALIAS: 'Set_Latch' :: Set_Latch
! 	    implicit none
! 	    logical, intent(in) :: v
! !#ifdef ExcludeExtraChanges
! !        if(Latch == v) return
! !#endif
! !	    Latch = v
! !        call OnLatchChange%RunAll()
! !#ifdef deb
! !	    print*, 'Latch=', Latch
! !#endif
!     end subroutine
    
!     !logical function Get_Latch()
!     !    implicit none
!     !    Get_Latch = Latch
!     !end function
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
!     subroutine Set_SlipsUnSet(v)
!     !DEC$ ATTRIBUTES DLLEXPORT :: Set_SlipsUnSet
!     !DEC$ ATTRIBUTES ALIAS: 'Set_SlipsUnSet' :: Set_SlipsUnSet
! 	    implicit none
! 	    logical, intent(in) :: v
! !#ifdef ExcludeExtraChanges
! !        if(SlipsUnSet == v) return
! !#endif
! !	    SlipsUnSet = v
! !        call OnSlipsUnSetChange%RunAll()
! !#ifdef deb
! !	    print*, 'SlipsUnSet=', SlipsUnSet
! !#endif
!     end subroutine
    
!     !logical function Get_SlipsUnSet()
!     !    implicit none
!     !    Get_SlipsUnSet = SlipsUnSet
!     !end function
    
    
    
    
    
    
    
    
    
    
    
    
    
!     subroutine Set_SlipsSet(v)
!     !DEC$ ATTRIBUTES DLLEXPORT :: Set_SlipsSet
!     !DEC$ ATTRIBUTES ALIAS: 'Set_SlipsSet' :: Set_SlipsSet
! 	    implicit none
! 	    logical, intent(in) :: v
! !#ifdef ExcludeExtraChanges
! !        if(SlipsSet == v) return
! !#endif
! !	    SlipsSet = v
! !        call OnSlipsSetChange%RunAll()
! !#ifdef deb
! !	    print*, 'SlipsSet=', SlipsSet
! !#endif
!     end subroutine
    
!     !logical function Get_SlipsSet()
!     !    implicit none
!     !    Get_SlipsSet = SlipsSet
!     !end function
    
    
    
    
    
    
    
    
    
    
    
!     subroutine Set_BreakupTong(v)
!     !DEC$ ATTRIBUTES DLLEXPORT :: Set_BreakupTong
!     !DEC$ ATTRIBUTES ALIAS: 'Set_BreakupTong' :: Set_BreakupTong
! 	    implicit none
! 	    logical, intent(in) :: v
! !#ifdef ExcludeExtraChanges
! !        if(BreakupTong == v) return
! !#endif
! !	    BreakupTong = v
! !        call OnBreakupTongChange%RunAll()
! !#ifdef deb
! !	    print*, 'BreakupTong=', BreakupTong
! !#endif
!     end subroutine
    
!     !logical function Get_BreakupTong()
!     !    implicit none
!     !    Get_BreakupTong = BreakupTong
!     !end function
    
    
    
    
    
    
    
    
    
!     subroutine Set_MakeupTong(v)
!     !DEC$ ATTRIBUTES DLLEXPORT :: Set_MakeupTong
!     !DEC$ ATTRIBUTES ALIAS: 'Set_MakeupTong' :: Set_MakeupTong
! 	    implicit none
! 	    logical, intent(in) :: v
! !#ifdef ExcludeExtraChanges
! !        if(MakeupTong == v) return
! !#endif
! !	    MakeupTong = v
! !        call OnMakeupTongChange%RunAll()
! !#ifdef deb
! !	    print*, 'MakeupTong=', MakeupTong
! !#endif
!     end subroutine
    
!     !logical function Get_MakeupTong()
!     !    implicit none
!     !    Get_MakeupTong = MakeupTong
!     !end function
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
!     subroutine Set_NewHookHeight(v)
!     !DEC$ ATTRIBUTES DLLEXPORT :: Set_NewHookHeight
!     !DEC$ ATTRIBUTES ALIAS: 'Set_NewHookHeight' :: Set_NewHookHeight
! 	    implicit none
! 	    real(8), intent(in) :: v
! !#ifdef ExcludeExtraChanges
! !        if(NewHookHeight == v) return
! !#endif
! !	    NewHookHeight = v
! !        call OnNewHookHeightChange%RunAll()
! !#ifdef deb
! !	    print*, 'NewHookHeight=', NewHookHeight
! !#endif
!     end subroutine
    
!     !real(8) function Get_NewHookHeight()
!     !    implicit none
!     !    Get_NewHookHeight = NewHookHeight
!     !end function
    
    
    
    
    
    
    
    
    
!     subroutine Set_ElevatorConnectionPossible(v)
!     !DEC$ ATTRIBUTES DLLEXPORT :: Set_ElevatorConnectionPossible
!     !DEC$ ATTRIBUTES ALIAS: 'Set_ElevatorConnectionPossible' :: Set_ElevatorConnectionPossible
! 	    implicit none
! 	    logical, intent(in) :: v
! #ifdef ExcludeExtraChanges
!         if(UnityInputs%ElevatorConnectionPossible == v) return
! #endif
! 	    UnityInputs%ElevatorConnectionPossible = v
!         !**call UnityInputs%OnElevatorConnectionPossibleChange%RunAll()
! #ifdef deb
! 	    print*, 'ElevatorConnectionPossible=', UnityInputs%ElevatorConnectionPossible
! #endif
!     end subroutine
    
    logical function Get_ElevatorConnectionPossible()
        implicit none
        Get_ElevatorConnectionPossible = UnityInputs%ElevatorConnectionPossible
    end function
    
    ! logical function Get_ElevatorConnectionPossible_WN()
    ! !DEC$ ATTRIBUTES DLLEXPORT :: Get_ElevatorConnectionPossible_WN
    ! !DEC$ ATTRIBUTES ALIAS: 'Get_ElevatorConnectionPossible_WN' :: Get_ElevatorConnectionPossible_WN
    !     implicit none
    !     Get_ElevatorConnectionPossible_WN = UnityInputs%ElevatorConnectionPossible
    !     !Get_ElevatorConnectionPossible_WN = .true.
    ! end function
    
    
    
    
    
    
    

!     subroutine Set_JointConnectionPossible(v)
!     !DEC$ ATTRIBUTES DLLEXPORT :: Set_JointConnectionPossible
!     !DEC$ ATTRIBUTES ALIAS: 'Set_JointConnectionPossible' :: Set_JointConnectionPossible
! 	    implicit none
! 	    logical, intent(in) :: v
! #ifdef ExcludeExtraChanges
!         if(UnityInputs%JointConnectionPossible == v) return
! #endif
! 	    UnityInputs%JointConnectionPossible = v
!         !**call UnityInputs%OnJointConnectionPossibleChange%RunAll()
! #ifdef deb
! 	    print*, 'JointConnectionPossible=', UnityInputs%JointConnectionPossible
! #endif
!     end subroutine
    
    logical function Get_JointConnectionPossible()
        implicit none
        Get_JointConnectionPossible = UnityInputs%JointConnectionPossible
    end function
    
    
    ! logical function Get_JointConnectionPossible_WN()
    ! !DEC$ ATTRIBUTES DLLEXPORT :: Get_JointConnectionPossible_WN
    ! !DEC$ ATTRIBUTES ALIAS: 'Get_JointConnectionPossible_WN' :: Get_JointConnectionPossible_WN
    !     implicit none
    !     Get_JointConnectionPossible_WN = UnityInputs%JointConnectionPossible
    ! end function
    
    
    
    
    
!     subroutine Set_IsKellyBushingSetInTable(v)
!     !DEC$ ATTRIBUTES DLLEXPORT :: Set_IsKellyBushingSetInTable
!     !DEC$ ATTRIBUTES ALIAS: 'Set_IsKellyBushingSetInTable' :: Set_IsKellyBushingSetInTable
! 	    implicit none
! 	    logical, intent(in) :: v
! #ifdef ExcludeExtraChanges
!         if(UnityInputs%IsKellyBushingSetInTable == v) return
! #endif
! 	    UnityInputs%IsKellyBushingSetInTable = v
!         !**call UnityInputs%OnIsKellyBushingSetInTableChange%RunAll()
! #ifdef deb
! 	    print*, 'IsKellyBushingSetInTable=', UnityInputs%IsKellyBushingSetInTable
! #endif
!     end subroutine
    
    logical function Get_IsKellyBushingSetInTable()
        implicit none
        Get_IsKellyBushingSetInTable = UnityInputs%IsKellyBushingSetInTable
    end function
    
    ! logical function Get_IsKellyBushingSetInTable_WN()
    ! !DEC$ ATTRIBUTES DLLEXPORT :: Get_IsKellyBushingSetInTable_WN
    ! !DEC$ ATTRIBUTES ALIAS: 'Get_IsKellyBushingSetInTable_WN' :: Get_IsKellyBushingSetInTable_WN
    !     implicit none
    !     Get_IsKellyBushingSetInTable_WN = UnityInputs%IsKellyBushingSetInTable
    ! end function
    
    
    
    
    
    

!     subroutine Set_ElevatorPickup(v)
!     !DEC$ ATTRIBUTES DLLEXPORT :: Set_ElevatorPickup 
!     !DEC$ ATTRIBUTES ALIAS: 'Set_ElevatorPickup' :: Set_ElevatorPickup 
! 	    implicit none
! 	    logical, intent(in) :: v
! #ifdef ExcludeExtraChanges
!         if(UnityInputs%ElevatorPickup == v) return
! #endif
! 	    UnityInputs%ElevatorPickup  = v
!         !**call UnityInputs%OnElevatorPickupChange%RunAll()
! #ifdef deb
! 	    print*, 'ElevatorPickup =', UnityInputs%ElevatorPickup 
! #endif
!     end subroutine
    
    logical function Get_ElevatorPickup()
        implicit none
        Get_ElevatorPickup = UnityInputs%ElevatorPickup
    end function
    
    
    ! logical function Get_ElevatorPickup_WN()
    ! !DEC$ ATTRIBUTES DLLEXPORT :: Get_ElevatorPickup_WN 
    ! !DEC$ ATTRIBUTES ALIAS: 'Get_ElevatorPickup_WN' :: Get_ElevatorPickup_WN 
    !     implicit none
    !     Get_ElevatorPickup_WN = UnityInputs%ElevatorPickup
    ! end function
    
    
    
    
    
    
    
    subroutine Set_NearFloorPosition(v)
	    implicit none
	    logical, intent(in) :: v
#ifdef ExcludeExtraChanges
        if(UnityInputs%NearFloorPosition == v) return
#endif
	    UnityInputs%NearFloorPosition  = v
        !**call UnityInputs%OnNearFloorPositionChange%RunAll()
#ifdef deb
	    print*, 'NearFloorPosition =', UnityInputs%NearFloorPosition 
#endif
    end subroutine
    
    ! subroutine Set_NearFloorPosition_WN(v)
    ! !DEC$ ATTRIBUTES DLLEXPORT :: Set_NearFloorPosition_WN 
    ! !DEC$ ATTRIBUTES ALIAS: 'Set_NearFloorPosition_WN' :: Set_NearFloorPosition_WN 
	!     implicit none
	!     logical, intent(in) :: v
    !     call Set_NearFloorPosition(v)
    ! end subroutine
    
    logical function Get_NearFloorPosition()
        implicit none
        Get_NearFloorPosition = UnityInputs%NearFloorPosition
    end function
    
    
!     logical function Get_NearFloorPosition_WN()
!     !DEC$ ATTRIBUTES DLLEXPORT :: Get_NearFloorPosition_WN 
!     !DEC$ ATTRIBUTES ALIAS: 'Get_NearFloorPosition_WN' :: Get_NearFloorPosition_WN 
!         implicit none
!         Get_NearFloorPosition_WN = UnityInputs%NearFloorPosition
!     end function

    
    
    
    
    
    
    
    
!     subroutine Set_SingleSetInMouseHole(v)
!     !DEC$ ATTRIBUTES DLLEXPORT :: Set_SingleSetInMouseHole
!     !DEC$ ATTRIBUTES ALIAS: 'Set_SingleSetInMouseHole' :: Set_SingleSetInMouseHole
! 	    implicit none
! 	    logical, intent(in) :: v
! #ifdef ExcludeExtraChanges
!         if(UnityInputs%SingleSetInMouseHole == v) return
! #endif
! 	    UnityInputs%SingleSetInMouseHole = v
!         !**call UnityInputs%OnSingleSetInMouseHoleChange%RunAll()
! #ifdef deb
! 	    print*, 'singleSetInMouseHole=', UnityInputs%SingleSetInMouseHole
! #endif
!     end subroutine
    
    logical function Get_SingleSetInMouseHole()
        implicit none
        Get_SingleSetInMouseHole = UnityInputs%SingleSetInMouseHole
    end function
    
    
    
    logical function Get_TdsConnectionPossible()
        implicit none
        Get_TdsConnectionPossible = UnityInputs%TdsConnectionPossible
    end function
    
    
    logical function Get_TdsStemIn()
        implicit none
        Get_TdsStemIn = UnityInputs%TdsStemIn
    end function
    
    ! logical function Get_TdsStemIn_WN()
    ! !DEC$ ATTRIBUTES DLLEXPORT :: Get_TdsStemIn_WN
    ! !DEC$ ATTRIBUTES ALIAS: 'Get_TdsStemIn_WN' :: Get_TdsStemIn_WN
    !     implicit none
    !     Get_TdsStemIn_WN = UnityInputs%TdsStemIn
    !     !Get_TdsStemIn_WN = .true.
    ! end function
    
    
    
    
end module CUnityInputs
