using System.Collections;
using System.Collections.Generic;
[RequireComponent(typeof(BoxCollider))]
public class DroneEngine : MonoBehaviour, IEngine
[Header("Engine Properties")]
[SerializeField] private float maxPower = 4f;
[SerializeField] private float speed = 1.25f;
[Header("Propeller Properties")]
[SerializeField] private Transform propeller;
[SerializeField] private float propRotSpeed = 300f;
#region Interface Methods
public void UpdateEngine(Rigidbody rb, DroneInputs input)
Vector3 upVec = transform.up;
float diff = 1 - upVec.magnitude;
float finalDiff = Physics.gravity.magnitude * diff;
Vector3 forVec = transform.forward;
Vector3 rightVec = transform.right;
Vector3 engineForce = transform.up * ((rb.mass * Physics.gravity.magnitude + finalDiff / 1.9f) + (input.Throttle * maxPower)) / 4f;
engineForce = engineForce + (forVec * input.Cyclic.y * speed) + (rightVec * input.Cyclic.x * speed);
rb.AddForce(engineForce, ForceMode.Force);
propeller.Rotate(Vector3.up, propRotSpeed);