// Autogenerated from CppHeaderCreator
// Created by Sc2ad
// =========================================================================
#pragma once
// Begin includes
#include "extern/beatsaber-hook/shared/utils/typedefs.h"
#include "extern/beatsaber-hook/shared/utils/byref.hpp"
// Including type: UnityEngine.Vector3
#include "UnityEngine/Vector3.hpp"
#include "extern/beatsaber-hook/shared/utils/il2cpp-utils-methods.hpp"
#include "extern/beatsaber-hook/shared/utils/il2cpp-utils-properties.hpp"
#include "extern/beatsaber-hook/shared/utils/il2cpp-utils-fields.hpp"
#include "extern/beatsaber-hook/shared/utils/utils.h"
// Completed includes
// Begin forward declares
// Forward declaring namespace: UnityEngine
namespace UnityEngine {
  // Forward declaring type: Transform
  class Transform;
}
// Completed forward declares
// Type namespace: RootMotion.FinalIK
namespace RootMotion::FinalIK {
  // Size: 0x58
  #pragma pack(push, 1)
  // Autogenerated type: RootMotion.FinalIK.Constraints
  // [TokenAttribute] Offset: FFFFFFFF
  class Constraints : public ::Il2CppObject {
    public:
    // public UnityEngine.Transform transform
    // Size: 0x8
    // Offset: 0x10
    UnityEngine::Transform* transform;
    // Field size check
    static_assert(sizeof(UnityEngine::Transform*) == 0x8);
    // public UnityEngine.Transform target
    // Size: 0x8
    // Offset: 0x18
    UnityEngine::Transform* target;
    // Field size check
    static_assert(sizeof(UnityEngine::Transform*) == 0x8);
    // public UnityEngine.Vector3 positionOffset
    // Size: 0xC
    // Offset: 0x20
    UnityEngine::Vector3 positionOffset;
    // Field size check
    static_assert(sizeof(UnityEngine::Vector3) == 0xC);
    // public UnityEngine.Vector3 position
    // Size: 0xC
    // Offset: 0x2C
    UnityEngine::Vector3 position;
    // Field size check
    static_assert(sizeof(UnityEngine::Vector3) == 0xC);
    // [RangeAttribute] Offset: 0xE9F494
    // public System.Single positionWeight
    // Size: 0x4
    // Offset: 0x38
    float positionWeight;
    // Field size check
    static_assert(sizeof(float) == 0x4);
    // public UnityEngine.Vector3 rotationOffset
    // Size: 0xC
    // Offset: 0x3C
    UnityEngine::Vector3 rotationOffset;
    // Field size check
    static_assert(sizeof(UnityEngine::Vector3) == 0xC);
    // public UnityEngine.Vector3 rotation
    // Size: 0xC
    // Offset: 0x48
    UnityEngine::Vector3 rotation;
    // Field size check
    static_assert(sizeof(UnityEngine::Vector3) == 0xC);
    // [RangeAttribute] Offset: 0xE9F4AC
    // public System.Single rotationWeight
    // Size: 0x4
    // Offset: 0x54
    float rotationWeight;
    // Field size check
    static_assert(sizeof(float) == 0x4);
    // Creating value type constructor for type: Constraints
    Constraints(UnityEngine::Transform* transform_ = {}, UnityEngine::Transform* target_ = {}, UnityEngine::Vector3 positionOffset_ = {}, UnityEngine::Vector3 position_ = {}, float positionWeight_ = {}, UnityEngine::Vector3 rotationOffset_ = {}, UnityEngine::Vector3 rotation_ = {}, float rotationWeight_ = {}) noexcept : transform{transform_}, target{target_}, positionOffset{positionOffset_}, position{position_}, positionWeight{positionWeight_}, rotationOffset{rotationOffset_}, rotation{rotation_}, rotationWeight{rotationWeight_} {}
    // Get instance field: public UnityEngine.Transform transform
    UnityEngine::Transform* _get_transform();
    // Set instance field: public UnityEngine.Transform transform
    void _set_transform(UnityEngine::Transform* value);
    // Get instance field: public UnityEngine.Transform target
    UnityEngine::Transform* _get_target();
    // Set instance field: public UnityEngine.Transform target
    void _set_target(UnityEngine::Transform* value);
    // Get instance field: public UnityEngine.Vector3 positionOffset
    UnityEngine::Vector3 _get_positionOffset();
    // Set instance field: public UnityEngine.Vector3 positionOffset
    void _set_positionOffset(UnityEngine::Vector3 value);
    // Get instance field: public UnityEngine.Vector3 position
    UnityEngine::Vector3 _get_position();
    // Set instance field: public UnityEngine.Vector3 position
    void _set_position(UnityEngine::Vector3 value);
    // Get instance field: public System.Single positionWeight
    float _get_positionWeight();
    // Set instance field: public System.Single positionWeight
    void _set_positionWeight(float value);
    // Get instance field: public UnityEngine.Vector3 rotationOffset
    UnityEngine::Vector3 _get_rotationOffset();
    // Set instance field: public UnityEngine.Vector3 rotationOffset
    void _set_rotationOffset(UnityEngine::Vector3 value);
    // Get instance field: public UnityEngine.Vector3 rotation
    UnityEngine::Vector3 _get_rotation();
    // Set instance field: public UnityEngine.Vector3 rotation
    void _set_rotation(UnityEngine::Vector3 value);
    // Get instance field: public System.Single rotationWeight
    float _get_rotationWeight();
    // Set instance field: public System.Single rotationWeight
    void _set_rotationWeight(float value);
    // public System.Boolean IsValid()
    // Offset: 0x187DED4
    bool IsValid();
    // public System.Void Initiate(UnityEngine.Transform transform)
    // Offset: 0x187C958
    void Initiate(UnityEngine::Transform* transform);
    // public System.Void Update()
    // Offset: 0x187CB34
    void Update();
    // public System.Void .ctor()
    // Offset: 0x187D25C
    // Implemented from: System.Object
    // Base method: System.Void Object::.ctor()
    template<::il2cpp_utils::CreationType creationType = ::il2cpp_utils::CreationType::Temporary>
    static Constraints* New_ctor() {
      static auto ___internal__logger = ::Logger::get().WithContext("RootMotion::FinalIK::Constraints::.ctor");
      return THROW_UNLESS((::il2cpp_utils::New<Constraints*, creationType>()));
    }
  }; // RootMotion.FinalIK.Constraints
  #pragma pack(pop)
  static check_size<sizeof(Constraints), 84 + sizeof(float)> __RootMotion_FinalIK_ConstraintsSizeCheck;
  static_assert(sizeof(Constraints) == 0x58);
}
DEFINE_IL2CPP_ARG_TYPE(RootMotion::FinalIK::Constraints*, "RootMotion.FinalIK", "Constraints");
#include "extern/beatsaber-hook/shared/utils/il2cpp-utils-methods.hpp"
// Writing MetadataGetter for method: RootMotion::FinalIK::Constraints::IsValid
// Il2CppName: IsValid
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (RootMotion::FinalIK::Constraints::*)()>(&RootMotion::FinalIK::Constraints::IsValid)> {
  static const MethodInfo* get() {
    return ::il2cpp_utils::FindMethod(classof(RootMotion::FinalIK::Constraints*), "IsValid", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
  }
};
// Writing MetadataGetter for method: RootMotion::FinalIK::Constraints::Initiate
// Il2CppName: Initiate
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (RootMotion::FinalIK::Constraints::*)(UnityEngine::Transform*)>(&RootMotion::FinalIK::Constraints::Initiate)> {
  static const MethodInfo* get() {
    static auto* transform = &::il2cpp_utils::GetClassFromName("UnityEngine", "Transform")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(RootMotion::FinalIK::Constraints*), "Initiate", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{transform});
  }
};
// Writing MetadataGetter for method: RootMotion::FinalIK::Constraints::Update
// Il2CppName: Update
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (RootMotion::FinalIK::Constraints::*)()>(&RootMotion::FinalIK::Constraints::Update)> {
  static const MethodInfo* get() {
    return ::il2cpp_utils::FindMethod(classof(RootMotion::FinalIK::Constraints*), "Update", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
  }
};
// Writing MetadataGetter for method: RootMotion::FinalIK::Constraints::New_ctor
// Il2CppName: .ctor
// Cannot get method pointer of value based method overload from template for constructor!
// Try using FindMethod instead!
