c_api_camera.h - Engine C API Reference

c_api_camera.h
  1. #pragma once
  2. #include "c_api_types.h"
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. struct CameraCApi
  7. {
  8. ConstVector3Ptr (*local_position)(ConstCameraPtr camera_pointer);
  9. CApiQuaternion (*local_rotation)(ConstCameraPtr camera_pointer);
  10. ConstVector3Ptr (*local_scale)(ConstCameraPtr camera_pointer);
  11. ConstLocalTransformPtr (*local_pose)(ConstCameraPtr camera_pointer);
  12. void (*set_local_position)(CameraPtr camera_pointer, UnitRef unit_ref, ConstVector3Ptr position_pointer);
  13. void (*set_local_rotation)(CameraPtr camera_pointer, UnitRef unit_ref, ConstQuaternionPtr quaternion_pointer);
  14. void (*set_local_scale)(CameraPtr camera_pointer, UnitRef unit_ref, ConstVector3Ptr scale_pointer);
  15. void (*set_local_pose)(CameraPtr camera_pointer, UnitRef unit_ref, ConstLocalTransformPtr local_transform_pointer);
  16. ConstVector3Ptr (*world_position)(ConstCameraPtr camera_pointer);
  17. ConstMatrix4x4Ptr (*world_pose)(ConstCameraPtr camera_pointer);
  18. // Performance-warning; Fetches the world_pose, extracts a Matrix3x3 from it and returns a copy on the stack.
  19. CApiQuaternion (*world_rotation)(ConstCameraPtr camera_pointer);
  20. float (*near_range)(ConstCameraPtr camera_pointer);
  21. float (*far_range)(ConstCameraPtr camera_pointer);
  22. void (*set_near_range)(CameraPtr camera_pointer, float near_range);
  23. void (*set_far_range)(CameraPtr camera_pointer, float far_range);
  24. float (*vertical_fov)(ConstCameraPtr camera_pointer, unsigned index);
  25. void (*set_vertical_fov)(CameraPtr camera_pointer, float fov, unsigned index);
  26. enum CameraProjectionType (*projection_type)(ConstCameraPtr camera_pointer);
  27. void (*set_projection_type)(CameraPtr camera_pointer, enum CameraProjectionType camera_projection_type);
  28. void (*set_orthographic_view)(CameraPtr camera_pointer, float min_x, float max_x, float min_z, float max_z, unsigned index);
  29. void (*set_post_projection_transform)(CameraPtr camera_pointer, ConstMatrix4x4Ptr transform);
  30. void (*set_frustum)(CameraPtr camera_pointer, float left, float right, float bottom, float top, unsigned index);
  31. void (*set_frustum_half_angles)(CameraPtr camera_pointer, float left_tan, float right_tan, float bottom_tan, float top_tan, unsigned index);
  32. float (*inside_frustum)(ConstCameraPtr camera_pointer, ConstVector3Ptr point, ConstWindowPtr optional_window);
  33. CApiMatrix4x4 (*projection)(ConstCameraPtr camera_pointer, float aspect_ratio);
  34. unsigned (*node)(ConstCameraPtr camera_pointer);
  35. enum CameraMode (*mode)(ConstCameraPtr camera_pointer);
  36. void (*set_mode)(CameraPtr camera_pointer, enum CameraMode mode);
  37. void (*set_local)(CameraPtr camera_pointer, ConstMatrix4x4Ptr m, unsigned index);
  38. CApiVector3 (*screen_to_world)(CameraPtr camera_pointer, ConstVector3Ptr point, float depth, unsigned screen_width, unsigned screen_height);
  39. };
  40. #ifdef __cplusplus
  41. }
  42. #endif