diff --git a/Raylib-cs/interop/Raylib.cs b/Raylib-cs/interop/Raylib.cs index 019a703..77656d5 100644 --- a/Raylib-cs/interop/Raylib.cs +++ b/Raylib-cs/interop/Raylib.cs @@ -837,14 +837,11 @@ namespace Raylib_cs [DllImport(nativeLibName, CallingConvention = CallingConvention.Cdecl)] public static extern float GetGesturePinchAngle(); + //------------------------------------------------------------------------------------ // Camera System Functions (Module: camera) //------------------------------------------------------------------------------------ - /// <summary>Set camera mode (multiple camera modes available)</summary> - [DllImport(nativeLibName, CallingConvention = CallingConvention.Cdecl)] - public static extern void SetCameraMode(Camera3D camera, CameraMode mode); - /// <summary>Update camera position for selected mode</summary> [DllImport(nativeLibName, CallingConvention = CallingConvention.Cdecl)] public static extern void UpdateCamera(Camera3D* camera, CameraMode mode); @@ -853,6 +850,75 @@ namespace Raylib_cs [DllImport(nativeLibName, CallingConvention = CallingConvention.Cdecl)] public static extern void UpdateCameraPro(Camera3D* camera, Vector3 movement, Vector3 rotation, float zoom); + /// <summary>Returns the cameras forward vector (normalized)</summary> + [DllImport(nativeLibName, CallingConvention = CallingConvention.Cdecl)] + public static extern Vector3 GetCameraForward(Camera3D* camera); + + /// <summary> + /// Returns the cameras up vector (normalized)<br/> + /// NOTE: The up vector might not be perpendicular to the forward vector + /// </summary> + [DllImport(nativeLibName, CallingConvention = CallingConvention.Cdecl)] + public static extern Vector3 GetCameraUp(Camera3D* camera); + + /// <summary>Returns the cameras right vector (normalized)</summary> + [DllImport(nativeLibName, CallingConvention = CallingConvention.Cdecl)] + public static extern Vector3 GetCameraRight(Camera3D* camera); + + + // Camera movement + + /// <summary>Moves the camera in its forward direction</summary> + [DllImport(nativeLibName, CallingConvention = CallingConvention.Cdecl)] + public static extern void CameraMoveForward(Camera3D* camera, float distance, CBool moveInWorldPlane); + + /// <summary>Moves the camera in its up direction</summary> + [DllImport(nativeLibName, CallingConvention = CallingConvention.Cdecl)] + public static extern void CameraMoveUp(Camera3D* camera, float distance); + + /// <summary>Moves the camera target in its current right direction</summary> + [DllImport(nativeLibName, CallingConvention = CallingConvention.Cdecl)] + public static extern void CameraMoveRight(Camera3D* camera, float distance, CBool moveInWorldPlane); + + /// <summary>Moves the camera position closer/farther to/from the camera target</summary> + [DllImport(nativeLibName, CallingConvention = CallingConvention.Cdecl)] + public static extern void CameraMoveToTarget(Camera3D* camera, float delta); + + + // Camera rotation + + /// <summary> + /// Rotates the camera around its up vector<br/> + /// If rotateAroundTarget is false, the camera rotates around its position + /// </summary> + [DllImport(nativeLibName, CallingConvention = CallingConvention.Cdecl)] + public static extern void CameraYaw(Camera3D* camera, float angle, CBool rotateAroundTarget); + + /// <summary> + /// Rotates the camera around its right vector + /// </summary> + [DllImport(nativeLibName, CallingConvention = CallingConvention.Cdecl)] + public static extern void CameraPitch( + Camera3D* camera, + float angle, + CBool lockView, + CBool rotateAroundTarget, + CBool rotateUp + ); + + /// <summary>Rotates the camera around its forward vector</summary> + [DllImport(nativeLibName, CallingConvention = CallingConvention.Cdecl)] + public static extern void CameraRoll(Camera3D* camera, float angle); + + /// <summary>Returns the camera view matrix</summary> + [DllImport(nativeLibName, CallingConvention = CallingConvention.Cdecl)] + public static extern Matrix4x4 GetCameraViewMatrix(Camera3D* camera); + + /// <summary>Returns the camera projection matrix</summary> + [DllImport(nativeLibName, CallingConvention = CallingConvention.Cdecl)] + public static extern Matrix4x4 GetCameraProjectionMatrix(Camera3D* camera, float aspect); + + //------------------------------------------------------------------------------------ // Basic Shapes Drawing Functions (Module: shapes) //------------------------------------------------------------------------------------ @@ -1866,7 +1932,7 @@ namespace Raylib_cs /// <summary>Check if two text string are equal</summary> [DllImport(nativeLibName, CallingConvention = CallingConvention.Cdecl)] - public static extern bool TextIsEqual(sbyte* text1, sbyte* text2); + public static extern CBool TextIsEqual(sbyte* text1, sbyte* text2); /// <summary>Get text length, checks for '\0' ending</summary> [DllImport(nativeLibName, CallingConvention = CallingConvention.Cdecl)] diff --git a/Raylib-cs/types/Raylib.Utils.cs b/Raylib-cs/types/Raylib.Utils.cs index 46a8b60..93e41c8 100644 --- a/Raylib-cs/types/Raylib.Utils.cs +++ b/Raylib-cs/types/Raylib.Utils.cs @@ -235,6 +235,15 @@ namespace Raylib_cs } } + /// <summary>Update camera movement/rotation</summary> + public static void UpdateCameraPro(ref Camera3D camera, Vector3 movement, Vector3 rotation, float zoom) + { + fixed (Camera3D* c = &camera) + { + UpdateCameraPro(c, movement, rotation, zoom); + } + } + /// <summary> /// Check the collision between two lines defined by two points each, returns collision point by reference /// </summary>