text: // Autogenerated from CppHeaderCreator
  // Created by Sc2ad
  // =========================================================================
  #pragma once
  // Begin includes
  #include "beatsaber-hook/shared/utils/typedefs.h"
  #include "beatsaber-hook/shared/utils/byref.hpp"
  // Including type: OVRLipSyncContextBase
  #include "GlobalNamespace/OVRLipSyncContextBase.hpp"
  // Including type: UnityEngine.KeyCode
  #include "UnityEngine/KeyCode.hpp"
  // Including type: OVRTouchpad
  #include "GlobalNamespace/OVRTouchpad.hpp"
  #include "beatsaber-hook/shared/utils/il2cpp-utils-methods.hpp"
  #include "beatsaber-hook/shared/utils/il2cpp-utils-properties.hpp"
  #include "beatsaber-hook/shared/utils/il2cpp-utils-fields.hpp"
  #include "beatsaber-hook/shared/utils/utils.h"
  #include "beatsaber-hook/shared/utils/typedefs-array.hpp"
  // Completed includes
  // Type namespace: 
  namespace GlobalNamespace {
    // Forward declaring type: OVRLipSyncContext
    class OVRLipSyncContext;
  }
  #include "beatsaber-hook/shared/utils/il2cpp-type-check.hpp"
  NEED_NO_BOX(::GlobalNamespace::OVRLipSyncContext);
  DEFINE_IL2CPP_ARG_TYPE(::GlobalNamespace::OVRLipSyncContext*, "", "OVRLipSyncContext");
  // Type namespace: 
  namespace GlobalNamespace {
    // Size: 0x60
    #pragma pack(push, 1)
    // Autogenerated type: OVRLipSyncContext
    // [TokenAttribute] Offset: FFFFFFFF
    // [RequireComponent] Offset: 5E0F68
    class OVRLipSyncContext : public ::GlobalNamespace::OVRLipSyncContextBase {
      public:
      #ifdef USE_CODEGEN_FIELDS
      public:
      #else
      #ifdef CODEGEN_FIELD_ACCESSIBILITY
      CODEGEN_FIELD_ACCESSIBILITY:
      #else
      protected:
      #endif
      #endif
      // [TooltipAttribute] Offset: 0x5E21A0
      // public System.Boolean enableKeyboardInput
      // Size: 0x1
      // Offset: 0x38
      bool enableKeyboardInput;
      // Field size check
      static_assert(sizeof(bool) == 0x1);
      // [TooltipAttribute] Offset: 0x5E21D8
      // public System.Boolean enableTouchInput
      // Size: 0x1
      // Offset: 0x39
      bool enableTouchInput;
      // Field size check
      static_assert(sizeof(bool) == 0x1);
      // [TooltipAttribute] Offset: 0x5E2210
      // public System.Boolean audioLoopback
      // Size: 0x1
      // Offset: 0x3A
      bool audioLoopback;
      // Field size check
      static_assert(sizeof(bool) == 0x1);
      // Padding between fields: audioLoopback and: loopbackKey
      char __padding2[0x1] = {};
      // [TooltipAttribute] Offset: 0x5E2248
      // public UnityEngine.KeyCode loopbackKey
      // Size: 0x4
      // Offset: 0x3C
      ::UnityEngine::KeyCode loopbackKey;
      // Field size check
      static_assert(sizeof(::UnityEngine::KeyCode) == 0x4);
      // [TooltipAttribute] Offset: 0x5E2280
      // public System.Boolean showVisemes
      // Size: 0x1
      // Offset: 0x40
      bool showVisemes;
      // Field size check
      static_assert(sizeof(bool) == 0x1);
      // Padding between fields: showVisemes and: debugVisemesKey
      char __padding4[0x3] = {};
      // [TooltipAttribute] Offset: 0x5E22B8
      // public UnityEngine.KeyCode debugVisemesKey
      // Size: 0x4
      // Offset: 0x44
      ::UnityEngine::KeyCode debugVisemesKey;
      // Field size check
      static_assert(sizeof(::UnityEngine::KeyCode) == 0x4);
      // [TooltipAttribute] Offset: 0x5E22F0
      // public System.Boolean skipAudioSource
      // Size: 0x1
      // Offset: 0x48
      bool skipAudioSource;
      // Field size check
      static_assert(sizeof(bool) == 0x1);
      // Padding between fields: skipAudioSource and: gain
      char __padding6[0x3] = {};
      // [TooltipAttribute] Offset: 0x5E2328
      // public System.Single gain
      // Size: 0x4
      // Offset: 0x4C
      float gain;
      // Field size check
      static_assert(sizeof(float) == 0x4);
      // private System.Boolean hasDebugConsole
      // Size: 0x1
      // Offset: 0x50
      bool hasDebugConsole;
      // Field size check
      static_assert(sizeof(bool) == 0x1);
      // Padding between fields: hasDebugConsole and: debugLaughterKey
      char __padding8[0x3] = {};
      // public UnityEngine.KeyCode debugLaughterKey
      // Size: 0x4
      // Offset: 0x54
      ::UnityEngine::KeyCode debugLaughterKey;
      // Field size check
      static_assert(sizeof(::UnityEngine::KeyCode) == 0x4);
      // public System.Boolean showLaughter
      // Size: 0x1
      // Offset: 0x58
      bool showLaughter;
      // Field size check
      static_assert(sizeof(bool) == 0x1);
      // Padding between fields: showLaughter and: laughterScore
      char __padding10[0x3] = {};
      // public System.Single laughterScore
      // Size: 0x4
      // Offset: 0x5C
      float laughterScore;
      // Field size check
      static_assert(sizeof(float) == 0x4);
      public:
      // Get instance field reference: public System.Boolean enableKeyboardInput
      bool& dyn_enableKeyboardInput();
      // Get instance field reference: public System.Boolean enableTouchInput
      bool& dyn_enableTouchInput();
      // Get instance field reference: public System.Boolean audioLoopback
      bool& dyn_audioLoopback();
      // Get instance field reference: public UnityEngine.KeyCode loopbackKey
      ::UnityEngine::KeyCode& dyn_loopbackKey();
      // Get instance field reference: public System.Boolean showVisemes
      bool& dyn_showVisemes();
      // Get instance field reference: public UnityEngine.KeyCode debugVisemesKey
      ::UnityEngine::KeyCode& dyn_debugVisemesKey();
      // Get instance field reference: public System.Boolean skipAudioSource
      bool& dyn_skipAudioSource();
      // Get instance field reference: public System.Single gain
      float& dyn_gain();
      // Get instance field reference: private System.Boolean hasDebugConsole
      bool& dyn_hasDebugConsole();
      // Get instance field reference: public UnityEngine.KeyCode debugLaughterKey
      ::UnityEngine::KeyCode& dyn_debugLaughterKey();
      // Get instance field reference: public System.Boolean showLaughter
      bool& dyn_showLaughter();
      // Get instance field reference: public System.Single laughterScore
      float& dyn_laughterScore();
      // private System.Void Start()
      // Offset: 0x12AA8A0
      void Start();
      // private System.Void HandleKeyboard()
      // Offset: 0x12AAA00
      void HandleKeyboard();
      // private System.Void Update()
      // Offset: 0x12AAF04
      void Update();
      // public System.Void PreprocessAudioSamples(System.Single[] data, System.Int32 channels)
      // Offset: 0x12AB22C
      void PreprocessAudioSamples(::ArrayW<float> data, int channels);
      // public System.Void PostprocessAudioSamples(System.Single[] data, System.Int32 channels)
      // Offset: 0x12AB290
      void PostprocessAudioSamples(::ArrayW<float> data, int channels);
      // public System.Void ProcessAudioSamplesRaw(System.Single[] data, System.Int32 channels)
      // Offset: 0x12AB2FC
      void ProcessAudioSamplesRaw(::ArrayW<float> data, int channels);
      // public System.Void ProcessAudioSamplesRaw(System.Int16[] data, System.Int32 channels)
      // Offset: 0x12AB4A0
      void ProcessAudioSamplesRaw(::ArrayW<int16_t> data, int channels);
      // public System.Void ProcessAudioSamples(System.Single[] data, System.Int32 channels)
      // Offset: 0x12AB644
      void ProcessAudioSamples(::ArrayW<float> data, int channels);
      // private System.Void OnAudioFilterRead(System.Single[] data, System.Int32 channels)
      // Offset: 0x12AB77C
      void OnAudioFilterRead(::ArrayW<float> data, int channels);
      // private System.Void DebugShowVisemesAndLaughter()
      // Offset: 0x12AAF48
      void DebugShowVisemesAndLaughter();
      // private System.Void ToggleAudioLoopback()
      // Offset: 0x12AAD24
      void ToggleAudioLoopback();
      // private System.Void LocalTouchEventCallback(OVRTouchpad/TouchEvent touchEvent)
      // Offset: 0x12AB78C
      void LocalTouchEventCallback(::GlobalNamespace::OVRTouchpad::TouchEvent touchEvent);
      // public System.Void .ctor()
      // Offset: 0x12AB8AC
      // Implemented from: OVRLipSyncContextBase
      // Base method: System.Void OVRLipSyncContextBase::.ctor()
      // Base method: System.Void MonoBehaviour::.ctor()
      // Base method: System.Void Behaviour::.ctor()
      // Base method: System.Void Component::.ctor()
      // Base method: System.Void Object::.ctor()
      // Base method: System.Void Object::.ctor()
      template<::il2cpp_utils::CreationType creationType = ::il2cpp_utils::CreationType::Temporary>
      static OVRLipSyncContext* New_ctor() {
        static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::OVRLipSyncContext::.ctor");
        return THROW_UNLESS((::il2cpp_utils::New<OVRLipSyncContext*, creationType>()));
      }
    }; // OVRLipSyncContext
    #pragma pack(pop)
    static check_size<sizeof(OVRLipSyncContext), 92 + sizeof(float)> __GlobalNamespace_OVRLipSyncContextSizeCheck;
    static_assert(sizeof(OVRLipSyncContext) == 0x60);
  }
  #include "beatsaber-hook/shared/utils/il2cpp-utils-methods.hpp"
  // Writing MetadataGetter for method: GlobalNamespace::OVRLipSyncContext::Start
  // Il2CppName: Start
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (GlobalNamespace::OVRLipSyncContext::*)()>(&GlobalNamespace::OVRLipSyncContext::Start)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(GlobalNamespace::OVRLipSyncContext*), "Start", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: GlobalNamespace::OVRLipSyncContext::HandleKeyboard
  // Il2CppName: HandleKeyboard
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (GlobalNamespace::OVRLipSyncContext::*)()>(&GlobalNamespace::OVRLipSyncContext::HandleKeyboard)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(GlobalNamespace::OVRLipSyncContext*), "HandleKeyboard", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: GlobalNamespace::OVRLipSyncContext::Update
  // Il2CppName: Update
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (GlobalNamespace::OVRLipSyncContext::*)()>(&GlobalNamespace::OVRLipSyncContext::Update)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(GlobalNamespace::OVRLipSyncContext*), "Update", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: GlobalNamespace::OVRLipSyncContext::PreprocessAudioSamples
  // Il2CppName: PreprocessAudioSamples
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (GlobalNamespace::OVRLipSyncContext::*)(::ArrayW<float>, int)>(&GlobalNamespace::OVRLipSyncContext::PreprocessAudioSamples)> {
    static const MethodInfo* get() {
      static auto* data = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Single"), 1)->byval_arg;
      static auto* channels = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(GlobalNamespace::OVRLipSyncContext*), "PreprocessAudioSamples", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{data, channels});
    }
  };
  // Writing MetadataGetter for method: GlobalNamespace::OVRLipSyncContext::PostprocessAudioSamples
  // Il2CppName: PostprocessAudioSamples
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (GlobalNamespace::OVRLipSyncContext::*)(::ArrayW<float>, int)>(&GlobalNamespace::OVRLipSyncContext::PostprocessAudioSamples)> {
    static const MethodInfo* get() {
      static auto* data = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Single"), 1)->byval_arg;
      static auto* channels = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(GlobalNamespace::OVRLipSyncContext*), "PostprocessAudioSamples", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{data, channels});
    }
  };
  // Writing MetadataGetter for method: GlobalNamespace::OVRLipSyncContext::ProcessAudioSamplesRaw
  // Il2CppName: ProcessAudioSamplesRaw
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (GlobalNamespace::OVRLipSyncContext::*)(::ArrayW<float>, int)>(&GlobalNamespace::OVRLipSyncContext::ProcessAudioSamplesRaw)> {
    static const MethodInfo* get() {
      static auto* data = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Single"), 1)->byval_arg;
      static auto* channels = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(GlobalNamespace::OVRLipSyncContext*), "ProcessAudioSamplesRaw", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{data, channels});
    }
  };
  // Writing MetadataGetter for method: GlobalNamespace::OVRLipSyncContext::ProcessAudioSamplesRaw
  // Il2CppName: ProcessAudioSamplesRaw
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (GlobalNamespace::OVRLipSyncContext::*)(::ArrayW<int16_t>, int)>(&GlobalNamespace::OVRLipSyncContext::ProcessAudioSamplesRaw)> {
    static const MethodInfo* get() {
      static auto* data = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Int16"), 1)->byval_arg;
      static auto* channels = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(GlobalNamespace::OVRLipSyncContext*), "ProcessAudioSamplesRaw", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{data, channels});
    }
  };
  // Writing MetadataGetter for method: GlobalNamespace::OVRLipSyncContext::ProcessAudioSamples
  // Il2CppName: ProcessAudioSamples
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (GlobalNamespace::OVRLipSyncContext::*)(::ArrayW<float>, int)>(&GlobalNamespace::OVRLipSyncContext::ProcessAudioSamples)> {
    static const MethodInfo* get() {
      static auto* data = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Single"), 1)->byval_arg;
      static auto* channels = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(GlobalNamespace::OVRLipSyncContext*), "ProcessAudioSamples", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{data, channels});
    }
  };
  // Writing MetadataGetter for method: GlobalNamespace::OVRLipSyncContext::OnAudioFilterRead
  // Il2CppName: OnAudioFilterRead
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (GlobalNamespace::OVRLipSyncContext::*)(::ArrayW<float>, int)>(&GlobalNamespace::OVRLipSyncContext::OnAudioFilterRead)> {
    static const MethodInfo* get() {
      static auto* data = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Single"), 1)->byval_arg;
      static auto* channels = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(GlobalNamespace::OVRLipSyncContext*), "OnAudioFilterRead", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{data, channels});
    }
  };
  // Writing MetadataGetter for method: GlobalNamespace::OVRLipSyncContext::DebugShowVisemesAndLaughter
  // Il2CppName: DebugShowVisemesAndLaughter
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (GlobalNamespace::OVRLipSyncContext::*)()>(&GlobalNamespace::OVRLipSyncContext::DebugShowVisemesAndLaughter)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(GlobalNamespace::OVRLipSyncContext*), "DebugShowVisemesAndLaughter", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: GlobalNamespace::OVRLipSyncContext::ToggleAudioLoopback
  // Il2CppName: ToggleAudioLoopback
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (GlobalNamespace::OVRLipSyncContext::*)()>(&GlobalNamespace::OVRLipSyncContext::ToggleAudioLoopback)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(GlobalNamespace::OVRLipSyncContext*), "ToggleAudioLoopback", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: GlobalNamespace::OVRLipSyncContext::LocalTouchEventCallback
  // Il2CppName: LocalTouchEventCallback
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (GlobalNamespace::OVRLipSyncContext::*)(::GlobalNamespace::OVRTouchpad::TouchEvent)>(&GlobalNamespace::OVRLipSyncContext::LocalTouchEventCallback)> {
    static const MethodInfo* get() {
      static auto* touchEvent = &::il2cpp_utils::GetClassFromName("", "OVRTouchpad/TouchEvent")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(GlobalNamespace::OVRLipSyncContext*), "LocalTouchEventCallback", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{touchEvent});
    }
  };
  // Writing MetadataGetter for method: GlobalNamespace::OVRLipSyncContext::New_ctor
  // Il2CppName: .ctor
  // Cannot get method pointer of value based method overload from template for constructor!
  // Try using FindMethod instead!
  