An easy to use Unity 3D library for creating illustrated Interactive Fiction games and more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
2.0 KiB

// This code is part of the Fungus library (http://fungusgames.com) maintained by Chris Gregan (http://twitter.com/gofungus).
// It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE)
using UnityEngine;
namespace Fungus
{
/// <summary>
/// Defines a camera view point.
/// The position and rotation are specified using the game object's transform, so this class only needs to specify the ortographic view size.
/// </summary>
[ExecuteInEditMode]
public class View : MonoBehaviour
{
[Tooltip("Orthographic size of the camera view in world units.")]
[SerializeField] protected float viewSize = 0.5f;
[Tooltip("Aspect ratio of the primary view rectangle. (e.g. 4:3 aspect ratio = 1.333)")]
[SerializeField] protected Vector2 primaryAspectRatio = new Vector2(4, 3);
[Tooltip("Aspect ratio of the secondary view rectangle. (e.g. 2:1 aspect ratio = 2.0)")]
[SerializeField] protected Vector2 secondaryAspectRatio = new Vector2(2, 1);
protected virtual void Update()
{
// Disable scaling to avoid complicating the orthographic size calculations
transform.localScale = new Vector3(1,1,1);
}
#region Public methods
/// <summary>
/// Orthographic size of the camera view in world units.
/// </summary>
public virtual float ViewSize { get { return viewSize; } set { viewSize = value; } }
/// <summary>
/// Aspect ratio of the primary view rectangle. e.g. a 4:3 aspect ratio = 1.333.
/// </summary>
public virtual Vector2 PrimaryAspectRatio { get { return primaryAspectRatio; } set { primaryAspectRatio = value; } }
/// <summary>
/// Aspect ratio of the secondary view rectangle. e.g. a 2:1 aspect ratio = 2/1 = 2.0.
/// </summary>
public virtual Vector2 SecondaryAspectRatio { get { return secondaryAspectRatio; } set { secondaryAspectRatio = value; } }
#endregion
}
}