using System.Numerics; using System.Runtime.InteropServices; namespace Raylib_cs { /// <summary> /// Camera system modes /// </summary> public enum CameraMode { CAMERA_CUSTOM = 0, CAMERA_FREE, CAMERA_ORBITAL, CAMERA_FIRST_PERSON, CAMERA_THIRD_PERSON } /// <summary> /// Camera projection /// </summary> public enum CameraProjection { CAMERA_PERSPECTIVE = 0, CAMERA_ORTHOGRAPHIC } /// <summary> /// Camera3D, defines position/orientation in 3d space /// </summary> [StructLayout(LayoutKind.Sequential)] public partial struct Camera3D { /// <summary> /// Camera position /// </summary> public Vector3 position; /// <summary> /// Camera target it looks-at /// </summary> public Vector3 target; /// <summary> /// Camera up vector (rotation over its axis) /// </summary> public Vector3 up; /// <summary> /// Camera field-of-view apperture in Y (degrees) in perspective, used as near plane width in orthographic /// </summary> public float fovy; /// <summary> /// Camera type, defines projection type: CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC /// </summary> public CameraProjection projection; public Camera3D(Vector3 position, Vector3 target, Vector3 up, float fovy, CameraProjection projection) { this.position = position; this.target = target; this.up = up; this.fovy = fovy; this.projection = projection; } } }