.data_start

    .export lightToggle
    .export lightSound

    __refl_const_intnl_udonTypeID: %SystemInt64, null
    __refl_const_intnl_udonTypeName: %SystemString, null
    lightSound: %UnityEngineAudioSource, null
    lightToggle: %UnityEngineLight, null
    doUpdate: %SystemBoolean, null
    isOn: %SystemBoolean, null
    rotMax: %SystemSingle, null
    rotMin: %SystemSingle, null
    target: %SystemSingle, null
    value: %SystemSingle, null
    velocity: %SystemSingle, null
    __0_this_intnl_UnityEngineTransform: %UnityEngineTransform, this
    __0_on_Boolean: %SystemBoolean, null
    __0_interpValue_Single: %SystemSingle, null
    __0_const_intnl_SystemSingle: %SystemSingle, null
    __1_const_intnl_SystemSingle: %SystemSingle, null
    __0_const_intnl_SystemString: %SystemString, null
    __0_const_intnl_SystemUInt32: %SystemUInt32, null
    __0_intnl_SystemBoolean: %SystemBoolean, null
    __1_intnl_SystemBoolean: %SystemBoolean, null
    __2_intnl_SystemBoolean: %SystemBoolean, null
    __0_intnl_UnityEngineQuaternion: %UnityEngineQuaternion, null
    __1_intnl_UnityEngineQuaternion: %UnityEngineQuaternion, null
    __2_intnl_UnityEngineQuaternion: %UnityEngineQuaternion, null
    __3_intnl_UnityEngineQuaternion: %UnityEngineQuaternion, null
    __0_intnl_SystemSingle: %SystemSingle, null
    __1_intnl_SystemSingle: %SystemSingle, null
    __2_intnl_SystemSingle: %SystemSingle, null
    __3_intnl_SystemSingle: %SystemSingle, null
    __4_intnl_SystemSingle: %SystemSingle, null
    __5_intnl_SystemSingle: %SystemSingle, null
    __6_intnl_SystemSingle: %SystemSingle, null
    __7_intnl_SystemSingle: %SystemSingle, null
    __8_intnl_SystemSingle: %SystemSingle, null
    __0_intnl_SystemString: %SystemString, null
    __1_intnl_SystemString: %SystemString, null
    __0_intnl_returnTarget_UInt32: %SystemUInt32, null
    __0_intnl_UnityEngineVector3: %UnityEngineVector3, null
    __1_intnl_UnityEngineVector3: %UnityEngineVector3, null
    __2_intnl_UnityEngineVector3: %UnityEngineVector3, null

.data_end

        
         #  using UdonSharp;
        
         #  using UnityEngine;
        
         #  using VRC.SDKBase;
        
         #  using VRC.Udon;
        
         #  public class LightSwitch : UdonSharpBehaviour
.code_start
        
         #  public Light lightToggle;
        
         #  public AudioSource lightSound;
        
         #  private float value;
        
         #  private float target;
        
         #  private bool isOn;
        
         #  private bool doUpdate;
        
         #  private const float rotMin = 35f;
        
         #  private const float rotMax = -35f;
        
         #  private float velocity = 0f;
        
         #  public void OnChangeUpdate()
    .export OnChangeUpdate
        
    OnChangeUpdate:
        
        PUSH, __0_const_intnl_SystemUInt32
        
         #  {
        
         #  transform.localRotation = Quaternion.AngleAxis((rotMax - rotMin) * value + rotMin, Vector3.up);
        PUSH, rotMax
        PUSH, rotMin
        PUSH, __0_intnl_SystemSingle
        EXTERN, "SystemSingle.__op_Subtraction__SystemSingle_SystemSingle__SystemSingle"
        PUSH, __0_intnl_SystemSingle
        PUSH, value
        PUSH, __1_intnl_SystemSingle
        EXTERN, "SystemSingle.__op_Multiplication__SystemSingle_SystemSingle__SystemSingle"
        PUSH, __1_intnl_SystemSingle
        PUSH, rotMin
        PUSH, __2_intnl_SystemSingle
        EXTERN, "SystemSingle.__op_Addition__SystemSingle_SystemSingle__SystemSingle"
        PUSH, __0_intnl_UnityEngineVector3
        EXTERN, "UnityEngineVector3.__get_up__UnityEngineVector3"
        PUSH, __2_intnl_SystemSingle
        PUSH, __0_intnl_UnityEngineVector3
        PUSH, __0_intnl_UnityEngineQuaternion
        EXTERN, "UnityEngineQuaternion.__AngleAxis__SystemSingle_UnityEngineVector3__UnityEngineQuaternion"
        PUSH, __0_this_intnl_UnityEngineTransform
        PUSH, __0_intnl_UnityEngineQuaternion
        EXTERN, "UnityEngineTransform.__set_localRotation__UnityEngineQuaternion__SystemVoid"
        PUSH, __0_intnl_returnTarget_UInt32 # Function epilogue
        COPY
        JUMP_INDIRECT, __0_intnl_returnTarget_UInt32
        
        
         #  public void OnChange()
    .export OnChange
        
    OnChange:
        
        PUSH, __0_const_intnl_SystemUInt32
        
         #  {
        
         #  Debug.Log("[LIGHT SWITCH] On Change called with value: " + value);
        PUSH, value
        PUSH, __0_intnl_SystemString
        EXTERN, "SystemSingle.__ToString__SystemString"
        PUSH, __0_const_intnl_SystemString
        PUSH, __0_intnl_SystemString
        PUSH, __1_intnl_SystemString
        EXTERN, "SystemString.__op_Addition__SystemString_SystemString__SystemString"
        PUSH, __1_intnl_SystemString
        EXTERN, "UnityEngineDebug.__Log__SystemObject__SystemVoid"
        
         #  if (target != value)
        PUSH, target
        PUSH, value
        PUSH, __0_intnl_SystemBoolean
        EXTERN, "SystemSingle.__op_Inequality__SystemSingle_SystemSingle__SystemBoolean"
        PUSH, __0_intnl_SystemBoolean
        JUMP_IF_FALSE, 0x000001C8
        
         #  {
        
         #  target = value;
        PUSH, value
        PUSH, target
        COPY
        
         #  var on = value > 0.5f;
        PUSH, value
        PUSH, __0_const_intnl_SystemSingle
        PUSH, __1_intnl_SystemBoolean
        EXTERN, "SystemSingle.__op_GreaterThan__SystemSingle_SystemSingle__SystemBoolean"
        PUSH, __1_intnl_SystemBoolean
        PUSH, __0_on_Boolean
        COPY
        
         #  lightToggle.enabled = on;
        PUSH, lightToggle
        PUSH, __0_on_Boolean
        EXTERN, "UnityEngineLight.__set_enabled__SystemBoolean__SystemVoid"
        
         #  lightSound.Play();
        PUSH, lightSound
        EXTERN, "UnityEngineAudioSource.__Play__SystemVoid"
        
         #  isOn = on;
        PUSH, __0_on_Boolean
        PUSH, isOn
        COPY
        PUSH, __0_intnl_returnTarget_UInt32 # Function epilogue
        COPY
        JUMP_INDIRECT, __0_intnl_returnTarget_UInt32
        
        
         #  void Update()
    .export _update
        
    _update:
        
        PUSH, __0_const_intnl_SystemUInt32
        
         #  {
        
         #  if (transform.localRotation.y != target)
        PUSH, __0_this_intnl_UnityEngineTransform
        PUSH, __1_intnl_UnityEngineQuaternion
        EXTERN, "UnityEngineTransform.__get_localRotation__UnityEngineQuaternion"
        PUSH, __1_intnl_UnityEngineQuaternion
        PUSH, __3_intnl_SystemSingle
        EXTERN, "UnityEngineQuaternion.__get_y__SystemSingle"
        PUSH, __3_intnl_SystemSingle
        PUSH, target
        PUSH, __2_intnl_SystemBoolean
        EXTERN, "SystemSingle.__op_Inequality__SystemSingle_SystemSingle__SystemBoolean"
        PUSH, __2_intnl_SystemBoolean
        JUMP_IF_FALSE, 0x00000378
        
         #  {
        
         #  var interpValue = Mathf.SmoothDampAngle(transform.localRotation.eulerAngles.y, (rotMax - rotMin) * target + rotMin, ref velocity, 0.05f);
        PUSH, __0_this_intnl_UnityEngineTransform
        PUSH, __2_intnl_UnityEngineQuaternion
        EXTERN, "UnityEngineTransform.__get_localRotation__UnityEngineQuaternion"
        PUSH, __2_intnl_UnityEngineQuaternion
        PUSH, __1_intnl_UnityEngineVector3
        EXTERN, "UnityEngineQuaternion.__get_eulerAngles__UnityEngineVector3"
        PUSH, __1_intnl_UnityEngineVector3
        PUSH, __4_intnl_SystemSingle
        EXTERN, "UnityEngineVector3.__get_y__SystemSingle"
        PUSH, rotMax
        PUSH, rotMin
        PUSH, __5_intnl_SystemSingle
        EXTERN, "SystemSingle.__op_Subtraction__SystemSingle_SystemSingle__SystemSingle"
        PUSH, __5_intnl_SystemSingle
        PUSH, target
        PUSH, __6_intnl_SystemSingle
        EXTERN, "SystemSingle.__op_Multiplication__SystemSingle_SystemSingle__SystemSingle"
        PUSH, __6_intnl_SystemSingle
        PUSH, rotMin
        PUSH, __7_intnl_SystemSingle
        EXTERN, "SystemSingle.__op_Addition__SystemSingle_SystemSingle__SystemSingle"
        PUSH, __4_intnl_SystemSingle
        PUSH, __7_intnl_SystemSingle
        PUSH, velocity
        PUSH, __1_const_intnl_SystemSingle
        PUSH, __8_intnl_SystemSingle
        EXTERN, "UnityEngineMathf.__SmoothDampAngle__SystemSingle_SystemSingle_SystemSingleRef_SystemSingle__SystemSingle"
        PUSH, __8_intnl_SystemSingle
        PUSH, __0_interpValue_Single
        COPY
        
         #  transform.localRotation = Quaternion.AngleAxis(interpValue, Vector3.up);
        PUSH, __2_intnl_UnityEngineVector3
        EXTERN, "UnityEngineVector3.__get_up__UnityEngineVector3"
        PUSH, __0_interpValue_Single
        PUSH, __2_intnl_UnityEngineVector3
        PUSH, __3_intnl_UnityEngineQuaternion
        EXTERN, "UnityEngineQuaternion.__AngleAxis__SystemSingle_UnityEngineVector3__UnityEngineQuaternion"
        PUSH, __0_this_intnl_UnityEngineTransform
        PUSH, __3_intnl_UnityEngineQuaternion
        EXTERN, "UnityEngineTransform.__set_localRotation__UnityEngineQuaternion__SystemVoid"
        PUSH, __0_intnl_returnTarget_UInt32 # Function epilogue
        COPY
        JUMP_INDIRECT, __0_intnl_returnTarget_UInt32
        
.code_end
