namespace ExitGames.Demos.DemoPunVoice
{

	// [TypeInfo RVA: 0x0]
	public class FirstPersonController : BaseController
	{
		private ExitGames.Demos.DemoPunVoice.MouseLookHelper mouseLook; // 0x50
		private float oldYRotation; // 0x58
		private UnityEngine.Quaternion velRotation; // 0x5C

		// RVA: 0x3281C8C VA: 0x781896CC8C
		public UnityEngine.Vector3 get_Velocity();
		/*
		 *   UnityEngine_Vector3 UVar1;
		 *   void *obj;
		 *   long lVar2;
		 *   undefined8 uStack_30;
		 *   float fStack_28;
		 *
		 *   obj = *(void **)&this.field_0x28;
		 *   if (obj == null) {
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   if ((bRam0000000007561ebb & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_071515f0,0);
		 *     bRam0000000007561ebb = 1;
		 *   }
		 *   fStack_28 = 0.0;
		 *   uStack_30 = 0;
		 *   if (obj != null) {
		 *     lVar2 = *(long *)((long)obj + 0x10);
		 *     if (lVar2 == 0) {
		 *       UnityEngine.Bindings.ThrowHelper.ThrowNullReferenceException(obj);
		 *     }
		 *     if (pcRam0000000007561ee0 == null) {
		 *       pcRam0000000007561ee0 = (code *)func_0x031fdc50(&UNK_0138e6f3);
		 *     }
		 *     (*pcRam0000000007561ee0)(lVar2,&uStack_30);
		 *     UVar1.z = fStack_28;
		 *     UVar1.x = (float)(undefined4)uStack_30;
		 *     UVar1.y = (float)uStack_30._4_4_;
		 *     return UVar1;
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x3281CA4 VA: 0x781896CCA4
		protected override void SetCamera();
		/*
		 *   void *this_00;
		 *   void *this_01;
		 *   void *pvVar1;
		 *   UnityEngine_Vector4 UVar2;
		 *
		 *   BaseController.SetCamera((BaseController *)this);
		 *   pvVar1 = this.mouseLook;
		 *   this_00 = UnityEngine.Component.get_transform(this);
		 *   if (pvVar1 == null) {
		 *     IL2CPP.ThrowNullReferenceException();
		 *   }
		 *   this_01 = *(void **)&this.field_0x38;
		 *   if (this_00 != null) {
		 *     UVar2 = UnityEngine.Transform.get_localRotation(this_00);
		 *     *(float *)((long)pvVar1 + 0x2c) = UVar2.x;
		 *     *(float *)((long)pvVar1 + 0x30) = UVar2.y;
		 *     *(float *)((long)pvVar1 + 0x34) = UVar2.z;
		 *     *(float *)((long)pvVar1 + 0x38) = UVar2.w;
		 *     if (this_01 != null) {
		 *       UVar2 = UnityEngine.Transform.get_localRotation(this_01);
		 *       *(float *)((long)pvVar1 + 0x3c) = UVar2.x;
		 *       *(float *)((long)pvVar1 + 0x40) = UVar2.y;
		 *       *(float *)((long)pvVar1 + 0x44) = UVar2.z;
		 *       *(float *)((long)pvVar1 + 0x48) = UVar2.w;
		 *       return;
		 *     }
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x3281D38 VA: 0x781896CD38
		protected override void Move(float h, float v);
		/*
		 *   void *obj;
		 *   long lVar1;
		 *   UnityEngine_Vector3 UVar2;
		 *
		 *   if (*(void **)&this.field_0x38 != null) {
		 *     UVar2 = UnityEngine.Transform.get_forward(*(void **)&this.field_0x38);
		 *     v = UVar2.y;
		 *     h = UVar2.x;
		 *     if (*(void **)&this.field_0x38 != null) {
		 *       UVar2 = UnityEngine.Transform.get_right(*(void **)&this.field_0x38);
		 *       v = UVar2.y;
		 *       h = UVar2.x;
		 *       obj = *(void **)&this.field_0x28;
		 *       if (obj != null) {
		 *         if ((bRam0000000007561ebc & 1) == 0) {
		 *           func_0x031fdc8c(PTR_DAT_071515f0,0);
		 *           bRam0000000007561ebc = 1;
		 *         }
		 *         if (obj != null) {
		 *           lVar1 = *(long *)((long)obj + 0x10);
		 *           if (lVar1 == 0) {
		 *             UnityEngine.Bindings.ThrowHelper.ThrowNullReferenceException(obj);
		 *           }
		 *           if (pcRam0000000007561ee8 == null) {
		 *             pcRam0000000007561ee8 = (code *)func_0x031fdc50(&UNK_0137cfc7);
		 *           }
		 *           (*pcRam0000000007561ee8)(lVar1,&stack0xffffffffffffffd4);
		 *           return;
		 *         }
		 *         IL2CPP.ThrowNullReferenceException();
		 *       }
		 *     }
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x3281DC0 VA: 0x781896CDC0
		private void Update();
		/*
		 *   void *pvVar1;
		 *   void *in_x3;
		 *   long lVar2;
		 *   MouseLookHelper *this_00;
		 *   float fVar3;
		 *   UnityEngine_Vector3 UVar4;
		 *   UnityEngine_Vector4 rotation;
		 *
		 *   pvVar1 = UnityEngine.Component.get_transform(this);
		 *   if (pvVar1 != null) {
		 *     UVar4 = UnityEngine.Transform.get_eulerAngles(pvVar1);
		 *     this_00 = this.mouseLook;
		 *     this.oldYRotation = UVar4.y;
		 *     pvVar1 = UnityEngine.Component.get_transform(this);
		 *     if (this_00 != null) {
		 *       MouseLookHelper.LookRotation(this_00,pvVar1,*(void **)&this.field_0x38);
		 *       pvVar1 = UnityEngine.Component.get_transform(this);
		 *       if (pvVar1 != null) {
		 *         UVar4 = UnityEngine.Transform.get_eulerAngles(pvVar1);
		 *         fVar3 = this.oldYRotation;
		 *         if (cRam000000000754a7cb == '\0') {
		 *           func_0x031fdc8c(UVar4.x,UVar4.y,UVar4.z,
		 *                           typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08);
		 *           cRam000000000754a7cb = '\x01';
		 *         }
		 *         rotation = UnityEngine.Quaternion.AngleAxis(UVar4.y - fVar3,*(UnityEngine_Vector3 *)
		 *                                (*(long *)(*(long *)
		 *                                            typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08 +
		 *                                          0xb8) + 0x18));
		 *         pvVar1 = *(void **)&this.field_0x28;
		 *         (this.velRotation).x = rotation.x;
		 *         (this.velRotation).y = rotation.y;
		 *         (this.velRotation).z = rotation.z;
		 *         (this.velRotation).w = rotation.w;
		 *         if (pvVar1 != null) {
		 *           UVar4 = UnityEngine.Rigidbody.get_linearVelocity(pvVar1);
		 *           UnityEngine.Quaternion.op_Multiply(rotation,UVar4);
		 *           if ((bRam0000000007561ebc & 1) == 0) {
		 *             func_0x031fdc8c(PTR_DAT_071515f0,0);
		 *             bRam0000000007561ebc = 1;
		 *           }
		 *           if (pvVar1 != null) {
		 *             lVar2 = *(long *)((long)pvVar1 + 0x10);
		 *             if (lVar2 == 0) {
		 *               UnityEngine.Bindings.ThrowHelper.ThrowNullReferenceException(pvVar1);
		 *             }
		 *             if (pcRam0000000007561ee8 == null) {
		 *               pcRam0000000007561ee8 = (code *)func_0x031fdc50(&UNK_0137cfc7);
		 *             }
		 *             (*pcRam0000000007561ee8)(lVar2,&stack0xffffffffffffffd4);
		 *             return;
		 *           }
		 *           IL2CPP.ThrowNullReferenceException();
		 *         }
		 *       }
		 *     }
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x3281DC4 VA: 0x781896CDC4
		private void RotateView();
		/*
		 *   void *pvVar1;
		 *   void *in_x3;
		 *   long lVar2;
		 *   MouseLookHelper *this_00;
		 *   float fVar3;
		 *   UnityEngine_Vector3 UVar4;
		 *   UnityEngine_Vector4 rotation;
		 *
		 *   pvVar1 = UnityEngine.Component.get_transform(this);
		 *   if (pvVar1 != null) {
		 *     UVar4 = UnityEngine.Transform.get_eulerAngles(pvVar1);
		 *     this_00 = this.mouseLook;
		 *     this.oldYRotation = UVar4.y;
		 *     pvVar1 = UnityEngine.Component.get_transform(this);
		 *     if (this_00 != null) {
		 *       MouseLookHelper.LookRotation(this_00,pvVar1,*(void **)&this.field_0x38);
		 *       pvVar1 = UnityEngine.Component.get_transform(this);
		 *       if (pvVar1 != null) {
		 *         UVar4 = UnityEngine.Transform.get_eulerAngles(pvVar1);
		 *         fVar3 = this.oldYRotation;
		 *         if (cRam000000000754a7cb == '\0') {
		 *           func_0x031fdc8c(UVar4.x,UVar4.y,UVar4.z,
		 *                           typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08);
		 *           cRam000000000754a7cb = '\x01';
		 *         }
		 *         rotation = UnityEngine.Quaternion.AngleAxis(UVar4.y - fVar3,*(UnityEngine_Vector3 *)
		 *                                (*(long *)(*(long *)
		 *                                            typeinfo_ptr_UnityEngine_CoreModule_Vector3_6FC0A08 +
		 *                                          0xb8) + 0x18));
		 *         pvVar1 = *(void **)&this.field_0x28;
		 *         (this.velRotation).x = rotation.x;
		 *         (this.velRotation).y = rotation.y;
		 *         (this.velRotation).z = rotation.z;
		 *         (this.velRotation).w = rotation.w;
		 *         if (pvVar1 != null) {
		 *           UVar4 = UnityEngine.Rigidbody.get_linearVelocity(pvVar1);
		 *           UnityEngine.Quaternion.op_Multiply(rotation,UVar4);
		 *           if ((bRam0000000007561ebc & 1) == 0) {
		 *             func_0x031fdc8c(PTR_DAT_071515f0,0);
		 *             bRam0000000007561ebc = 1;
		 *           }
		 *           if (pvVar1 != null) {
		 *             lVar2 = *(long *)((long)pvVar1 + 0x10);
		 *             if (lVar2 == 0) {
		 *               UnityEngine.Bindings.ThrowHelper.ThrowNullReferenceException(pvVar1);
		 *             }
		 *             if (pcRam0000000007561ee8 == null) {
		 *               pcRam0000000007561ee8 = (code *)func_0x031fdc50(&UNK_0137cfc7);
		 *             }
		 *             (*pcRam0000000007561ee8)(lVar2,&stack0xffffffffffffffd4);
		 *             return;
		 *           }
		 *           IL2CPP.ThrowNullReferenceException();
		 *         }
		 *       }
		 *     }
		 *   }
		 *   IL2CPP.ThrowNullReferenceException();
		 */
		// RVA: 0x3282260 VA: 0x781896D260
		public void .ctor();
		/*
		 *   undefined8 uVar1;
		 *   undefined *puVar2;
		 *   void *this_00;
		 *   void *extraout_x1;
		 *
		 *   puVar2 = PTR_DAT_070c5980;
		 *   if ((bRam000000000754acab & 1) == 0) {
		 *     func_0x031fdc8c(PTR_DAT_070c5980);
		 *     bRam000000000754acab = 1;
		 *     methodInfo = extraout_x1;
		 *   }
		 *   this_00 = (void *)func_0x031fdf24(*(undefined8 *)puVar2,methodInfo);
		 *   uVar1 = _UNK_0134e2a0;
		 *   *(undefined1 *)((long)this_00 + 0x18) = 1;
		 *   *(undefined8 *)((long)this_00 + 0x1c) = uVar1;
		 *   *(undefined8 *)((long)this_00 + 0x10) = 0x4000000040000000;
		 *   *(undefined4 *)((long)this_00 + 0x28) = 0x40a00000;
		 *   System.Object..ctor(this_00);
		 *   this.mouseLook = this_00;
		 *   func_0x031fdc38(&this.mouseLook,this_00);
		 *   *(undefined4 *)&this.field_0x48 = 0x40a00000;
		 *   puVar2 = typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8;
		 *   if ((bRam000000000755f76f & 1) == 0) {
		 *     func_0x031fdc8c(typeinfo_ptr_UnityEngine_CoreModule_Object_6FC07E8,0);
		 *     bRam000000000755f76f = 1;
		 *   }
		 *   if (*(int *)(*(long *)puVar2 + 0xe4) == 0) {
		 *     func_0x031fde08();
		 *   }
		 *   return;
		 */
	}
}
