using System;
using UnityEngine;
    /// 
    /// Settings of mouse input.
    /// 
    [Serializable]
    public struct MouseSettings
    {
        /// 
        /// ID of mouse button.
        /// 
        public int mouseButtonID;
        /// 
        /// Sensitivity of mouse pointer.
        /// 
        public float pointerSensitivity;
        /// 
        /// Sensitivity of mouse ScrollWheel.
        /// 
        public float wheelSensitivity;
        /// 
        /// Constructor.
        /// 
        /// ID of mouse button.
        /// Sensitivity of mouse pointer.
        /// Sensitivity of mouse ScrollWheel.
        public MouseSettings(int mouseButtonID, float pointerSensitivity, float wheelSensitivity)
        {
            this.mouseButtonID = mouseButtonID;
            this.pointerSensitivity = pointerSensitivity;
            this.wheelSensitivity = wheelSensitivity;
        }
    }
    /// 
    /// Range form min to max.
    /// 
    [Serializable]
    public struct Range
    {
        /// 
        /// Min value of range.
        /// 
        public float min;
        /// 
        /// Max value of range.
        /// 
        public float max;
        /// 
        /// Constructor.
        /// 
        /// Min value of range.
        /// Max value of range.
        public Range(float min, float max)
        {
            this.min = min;
            this.max = max;
        }
    }
    /// 
    /// Rectangle area on plane.
    /// 
    [Serializable]
    public struct PlaneArea
    {
        /// 
        /// Center of area.
        /// 
        public Transform center;
        /// 
        /// Width of area.
        /// 
        public float width;
        /// 
        /// Length of area.
        /// 
        public float length;
        /// 
        /// Constructor.
        /// 
        /// Center of area.
        /// Width of area.
        /// Length of area.
        public PlaneArea(Transform center, float width, float length)
        {
            this.center = center;
            this.width = width;
            this.length = length;
        }
    }
/// 
/// Target of camera align.
/// 
[Serializable]
public struct AlignTarget
{
    /// 
    /// Center of align target.
    /// 
    public Transform center;
    /// 
    /// Angles of align.
    /// 
    public Vector2 angles;
    /// 
    /// Distance from camera to target center.
    /// 
    public float distance;
    /// 
    /// Range limit of angle.
    /// 
    public Range angleRange;
    /// 
    /// Range limit of distance.
    /// 
    public Range distanceRange;
    /// 
    /// Constructor.
    /// 
    /// Center of align target.
    /// Angles of align.
    /// Distance from camera to target center.
    /// Range limit of angle.
    /// Range limit of distance.
    public AlignTarget(Transform center, Vector2 angles, float distance, Range angleRange, Range distanceRange)
    {
        this.center = center;
        this.angles = angles;
        this.distance = distance;
        this.angleRange = angleRange;
        this.distanceRange = distanceRange;
    }
}