BsScriptCamera.h 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsScriptEnginePrerequisites.h"
  5. #include "BsScriptObject.h"
  6. #include "BsVector2.h"
  7. #include "BsVector3.h"
  8. #include "BsVector2I.h"
  9. #include "BsRay.h"
  10. #include "BsDegree.h"
  11. #include "BsMatrix4.h"
  12. #include "BsRect2.h"
  13. #include "BsColor.h"
  14. #include "BsPostProcessSettings.h"
  15. namespace BansheeEngine
  16. {
  17. /** @addtogroup ScriptInteropEngine
  18. * @{
  19. */
  20. /** Interop class between C++ & CLR for Camera. */
  21. class BS_SCR_BE_EXPORT ScriptCamera : public ScriptObject<ScriptCamera>
  22. {
  23. public:
  24. SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "NativeCamera")
  25. /** Returns the wrapped native Camera object. */
  26. SPtr<Camera> getInternal() const { return mCamera; }
  27. private:
  28. ScriptCamera(MonoObject* managedInstance, const HSceneObject& parentSO);
  29. ~ScriptCamera();
  30. /** Updates the internal camera handler from the transform of the provided scene object. */
  31. void updateView(const HSceneObject& parent);
  32. /** Destroys the internal camera handler object. */
  33. void destroy();
  34. /** @copydoc ScriptObject::_onManagedInstanceDeleted */
  35. void _onManagedInstanceDeleted() override;
  36. SPtr<Camera> mCamera;
  37. UINT32 mLastUpdateHash;
  38. /************************************************************************/
  39. /* CLR HOOKS */
  40. /************************************************************************/
  41. static void internal_Create(MonoObject* managedInstance, ScriptSceneObject* parentSO);
  42. static float internal_GetAspect(ScriptCamera* instance);
  43. static void internal_SetAspect(ScriptCamera* instance, float value);
  44. static float internal_GetNearClip(ScriptCamera* instance);
  45. static void internal_SetNearClip(ScriptCamera* instance, float value);
  46. static float internal_GetFarClip(ScriptCamera* instance);
  47. static void internal_SetFarClip(ScriptCamera* instance, float value);
  48. static void internal_GetFieldOfView(ScriptCamera* instance, Degree* value);
  49. static void internal_SetFieldOfView(ScriptCamera* instance, Degree* value);
  50. static void internal_GetViewportRect(ScriptCamera* instance, Rect2* value);
  51. static void internal_SetViewportRect(ScriptCamera* instance, Rect2* value);
  52. static UINT32 internal_GetProjectionType(ScriptCamera* instance);
  53. static void internal_SetProjectionType(ScriptCamera* instance, UINT32 value);
  54. static float internal_GetOrthographicHeight(ScriptCamera* instance);
  55. static void internal_SetOrthographicHeight(ScriptCamera* instance, float value);
  56. static float internal_GetOrthographicWidth(ScriptCamera* instance);
  57. static void internal_GetClearColor(ScriptCamera* instance, Color* value);
  58. static void internal_SetClearColor(ScriptCamera* instance, Color* value);
  59. static float internal_GetDepthClearValue(ScriptCamera* instance);
  60. static void internal_SetDepthClearValue(ScriptCamera* instance, float value);
  61. static UINT16 internal_GetStencilClearValue(ScriptCamera* instance);
  62. static void internal_SetStencilClearValue(ScriptCamera* instance, UINT16 value);
  63. static UINT32 internal_GetClearFlags(ScriptCamera* instance);
  64. static void internal_SetClearFlags(ScriptCamera* instance, UINT32 value);
  65. static int internal_GetPriority(ScriptCamera* instance);
  66. static void internal_SetPriority(ScriptCamera* instance, int value);
  67. static bool internal_GetHDR(ScriptCamera* instance);
  68. static void internal_SetHDR(ScriptCamera* instance, bool value);
  69. static MonoObject* internal_GetPostProcessSettings(ScriptCamera* instance);
  70. static void internal_SetPostProcessSettings(ScriptCamera* instance, MonoObject* value);
  71. static UINT64 internal_GetLayers(ScriptCamera* instance);
  72. static void internal_SetLayers(ScriptCamera* instance, UINT64 value);
  73. static void internal_GetProjMatrix(ScriptCamera* instance, Matrix4* value);
  74. static void internal_GetProjMatrixInv(ScriptCamera* instance, Matrix4* value);
  75. static void internal_GetViewMatrix(ScriptCamera* instance, Matrix4* value);
  76. static void internal_GetViewMatrixInv(ScriptCamera* instance, Matrix4* value);
  77. static int internal_GetWidthPixels(ScriptCamera* instance);
  78. static int internal_GetHeightPixels(ScriptCamera* instance);
  79. static void internal_WorldToViewport(ScriptCamera* instance, Vector3* value, Vector2I* output);
  80. static void internal_WorldToNDC(ScriptCamera* instance, Vector3* value, Vector2* output);
  81. static void internal_WorldToView(ScriptCamera* instance, Vector3* value, Vector3* output);
  82. static void internal_ScreenToViewport(ScriptCamera* instance, Vector2I* value, Vector2I* output);
  83. static void internal_ViewportToWorld(ScriptCamera* instance, Vector2I* value, float depth, Vector3* output);
  84. static void internal_ViewportToView(ScriptCamera* instance, Vector2I* value, float depth, Vector3* output);
  85. static void internal_ViewportToNDC(ScriptCamera* instance, Vector2I* value, Vector2* output);
  86. static void internal_ViewToWorld(ScriptCamera* instance, Vector3* value, Vector3* output);
  87. static void internal_ViewToViewport(ScriptCamera* instance, Vector3* value, Vector2I* output);
  88. static void internal_ViewToNDC(ScriptCamera* instance, Vector3* value, Vector2* output);
  89. static void internal_NDCToWorld(ScriptCamera* instance, Vector2* value, float depth, Vector3* output);
  90. static void internal_NDCToView(ScriptCamera* instance, Vector2* value, float depth, Vector3* output);
  91. static void internal_NDCToViewport(ScriptCamera* instance, Vector2* value, Vector2I* output);
  92. static void internal_ViewportToWorldRay(ScriptCamera* instance, Vector2I* value, Ray* output);
  93. static void internal_ScreenToWorldRay(ScriptCamera* instance, Vector2I* value, Ray* output);
  94. static void internal_ProjectPoint(ScriptCamera* instance, Vector3* value, Vector3* output);
  95. static void internal_UnprojectPoint(ScriptCamera* instance, Vector3* value, Vector3* output);
  96. static void internal_SetRenderTarget(ScriptCamera* instance, ScriptRenderTarget* target);
  97. static bool internal_GetMain(ScriptCamera* instance);
  98. static void internal_SetMain(ScriptCamera* instance, bool main);
  99. static void internal_UpdateView(ScriptCamera* instance, ScriptSceneObject* parent);
  100. static void internal_OnDestroy(ScriptCamera* instance);
  101. };
  102. /** @} */
  103. }