BsScriptRenderTexture2D.h 2.0 KB

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