BsScriptRenderTexture2D.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #pragma once
  2. #include "BsScriptEnginePrerequisites.h"
  3. #include "BsScriptRenderTarget.h"
  4. #include "BsPixelUtil.h"
  5. namespace BansheeEngine
  6. {
  7. /**
  8. * @brief Interop class between C++ & CLR for a single or multi RenderTexture using a 2D texture.
  9. */
  10. class BS_SCR_BE_EXPORT ScriptRenderTexture2D : public ScriptObject < ScriptRenderTexture2D, ScriptRenderTargetBase >
  11. {
  12. public:
  13. SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "RenderTexture2D")
  14. /**
  15. * @copydoc ScriptRenderTargetBase::getNativeValue
  16. */
  17. RenderTargetPtr getNativeValue() const override { return mRenderTarget; }
  18. /**
  19. * @brief Returns the internal wrapped render texture. Returns null if this object
  20. * instead wraps a multi render target.
  21. */
  22. RenderTexturePtr getRenderTexture() const;
  23. /**
  24. * @brief Returns the internal wrapped multi render texture. Returns null if this object
  25. * instead wraps a single render target.
  26. */
  27. MultiRenderTexturePtr getMultiRenderTexture() const;
  28. private:
  29. ScriptRenderTexture2D(const RenderTargetPtr& target, bool isMulti, MonoObject* instance);
  30. RenderTargetPtr mRenderTarget;
  31. bool mIsMulti;
  32. /************************************************************************/
  33. /* CLR HOOKS */
  34. /************************************************************************/
  35. static void internal_createDetailed(MonoObject* instance, PixelFormat format, UINT32 width, UINT32 height,
  36. UINT32 numSamples, bool gammaCorrection, bool createDepth, PixelFormat depthStencilFormat);
  37. static void internal_create(MonoObject* instance, MonoArray* colorSurfaces, MonoObject* depthStencilSurface);
  38. static void internal_getColorSurfaces(ScriptRenderTexture2D* thisPtr, MonoArray** value);
  39. static void internal_getDepthStencilSurface(ScriptRenderTexture2D* thisPtr, MonoObject** value);
  40. };
  41. }