Material.generated.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. using System;
  2. using System.Runtime.CompilerServices;
  3. using System.Runtime.InteropServices;
  4. namespace BansheeEngine
  5. {
  6. /** @addtogroup Rendering
  7. * @{
  8. */
  9. /// <summary>
  10. /// Material that controls how objects are rendered. It is represented by a shader and parameters used to set up that
  11. /// shader. It provides a simple interface for manipulating the parameters.
  12. /// </summary>
  13. [ShowInInspector]
  14. public partial class Material : Resource
  15. {
  16. private Material(bool __dummy0) { }
  17. /// <summary>Creates a new empty material.</summary>
  18. public Material()
  19. {
  20. Internal_create(this);
  21. }
  22. /// <summary>Creates a new material with the specified shader.</summary>
  23. public Material(RRef<Shader> shader)
  24. {
  25. Internal_create0(this, shader);
  26. }
  27. /// <summary>Returns a reference wrapper for this resource.</summary>
  28. public RRef<Material> Ref
  29. {
  30. get { return Internal_GetRef(mCachedPtr); }
  31. }
  32. /// <summary>
  33. /// Sets a shader that will be used by the material. Material will be initialized using all compatible techniques from
  34. /// the shader. Shader must be set before doing any other operations with the material.
  35. /// </summary>
  36. [ShowInInspector]
  37. [NativeWrapper]
  38. public RRef<Shader> Shader
  39. {
  40. get { return Internal_getShader(mCachedPtr); }
  41. set { Internal_setShader(mCachedPtr, value); }
  42. }
  43. /// <summary>Returns a reference wrapper for this resource.</summary>
  44. public static implicit operator RRef<Material>(Material x)
  45. { return Internal_GetRef(x.mCachedPtr); }
  46. /// <summary>Creates a deep copy of the material and returns the new object.</summary>
  47. public RRef<Material> Clone()
  48. {
  49. return Internal_clone(mCachedPtr);
  50. }
  51. /// <summary>
  52. /// Assigns a float value to the shader parameter with the specified name.
  53. ///
  54. /// Optionally if the parameter is an array you may provide an array index to assign the value to.
  55. /// </summary>
  56. public void SetFloat(string name, float value, uint arrayIdx = 0)
  57. {
  58. Internal_setFloat(mCachedPtr, name, value, arrayIdx);
  59. }
  60. public void SetFloatCurve(string name, AnimationCurve value, uint arrayIdx = 0)
  61. {
  62. Internal_setFloatCurve(mCachedPtr, name, value, arrayIdx);
  63. }
  64. /// <summary>
  65. /// Assigns a color to the shader parameter with the specified name.
  66. ///
  67. /// Optionally if the parameter is an array you may provide an array index to assign the value to.
  68. /// </summary>
  69. public void SetColor(string name, Color value, uint arrayIdx = 0)
  70. {
  71. Internal_setColor(mCachedPtr, name, ref value, arrayIdx);
  72. }
  73. /// <summary>
  74. /// Assigns a color gradient to the shader parameter with the specified name. The system will automatically evaluate the
  75. /// gradient with the passage of time and apply the evaluated value to the parameter.
  76. ///
  77. /// Optionally if the parameter is an array you may provide an array index to assign the value to.
  78. /// </summary>
  79. public void SetColorGradient(string name, ColorGradient value, uint arrayIdx = 0)
  80. {
  81. Internal_setColorGradient(mCachedPtr, name, value, arrayIdx);
  82. }
  83. /// <summary>
  84. /// Assigns a 2D vector to the shader parameter with the specified name.
  85. ///
  86. /// Optionally if the parameter is an array you may provide an array index to assign the value to.
  87. /// </summary>
  88. public void SetVector2(string name, Vector2 value, uint arrayIdx = 0)
  89. {
  90. Internal_setVec2(mCachedPtr, name, ref value, arrayIdx);
  91. }
  92. /// <summary>
  93. /// Assigns a 3D vector to the shader parameter with the specified name.
  94. ///
  95. /// Optionally if the parameter is an array you may provide an array index to assign the value to.
  96. /// </summary>
  97. public void SetVector3(string name, Vector3 value, uint arrayIdx = 0)
  98. {
  99. Internal_setVec3(mCachedPtr, name, ref value, arrayIdx);
  100. }
  101. /// <summary>
  102. /// Assigns a 4D vector to the shader parameter with the specified name.
  103. ///
  104. /// Optionally if the parameter is an array you may provide an array index to assign the value to.
  105. /// </summary>
  106. public void SetVector4(string name, Vector4 value, uint arrayIdx = 0)
  107. {
  108. Internal_setVec4(mCachedPtr, name, ref value, arrayIdx);
  109. }
  110. /// <summary>
  111. /// Assigns a 3x3 matrix to the shader parameter with the specified name.
  112. ///
  113. /// Optionally if the parameter is an array you may provide an array index to assign the value to.
  114. /// </summary>
  115. public void SetMatrix3(string name, Matrix3 value, uint arrayIdx = 0)
  116. {
  117. Internal_setMat3(mCachedPtr, name, ref value, arrayIdx);
  118. }
  119. /// <summary>
  120. /// Assigns a 4x4 matrix to the shader parameter with the specified name.
  121. ///
  122. /// Optionally if the parameter is an array you may provide an array index to assign the value to.
  123. /// </summary>
  124. public void SetMatrix4(string name, Matrix4 value, uint arrayIdx = 0)
  125. {
  126. Internal_setMat4(mCachedPtr, name, ref value, arrayIdx);
  127. }
  128. /// <summary>
  129. /// Returns a float value assigned with the parameter with the specified name. If a curve is assigned to this parameter,
  130. /// returns the curve value evaluated at time 0. Use getBoundParamType() to determine the type of the parameter.
  131. ///
  132. /// Optionally if the parameter is an array you may provide an array index you which to retrieve.
  133. /// </summary>
  134. public float GetFloat(string name, uint arrayIdx = 0)
  135. {
  136. return Internal_getFloat(mCachedPtr, name, arrayIdx);
  137. }
  138. /// <summary>
  139. /// Returns a curve value assigned to the parameter with the specified name. If the parameter has a constant value bound
  140. /// instead of a curve then this method returns an empty curve. Use getBoundParamType() to determine the type of the
  141. /// parameter.
  142. ///
  143. /// Optionally if the parameter is an array you may provide an array index you which to retrieve.
  144. /// </summary>
  145. public AnimationCurve GetFloatCurve(string name, uint arrayIdx = 0)
  146. {
  147. return Internal_getFloatCurve(mCachedPtr, name, arrayIdx);
  148. }
  149. /// <summary>
  150. /// Returns a color assigned with the parameter with the specified name. If a color gradient is assigned to this
  151. /// parameter, returns the gradient color evaluated at time 0. Use getBoundParamType() to determine the type of the
  152. /// parameter.
  153. ///
  154. /// Optionally if the parameter is an array you may provide an array index you which to retrieve.
  155. /// </summary>
  156. public Color GetColor(string name, uint arrayIdx = 0)
  157. {
  158. Color temp;
  159. Internal_getColor(mCachedPtr, name, arrayIdx, out temp);
  160. return temp;
  161. }
  162. /// <summary>
  163. /// Returns a color gradient assigned with the parameter with the specified name. If the parameter has a constant value
  164. /// bound instead of a gradient then this method returns an empty gradient. Use getBoundParamType() to determine the type
  165. /// of the parameter.
  166. ///
  167. /// Optionally if the parameter is an array you may provide an array index you which to retrieve.
  168. /// </summary>
  169. public ColorGradient GetColorGradient(string name, uint arrayIdx = 0)
  170. {
  171. return Internal_getColorGradient(mCachedPtr, name, arrayIdx);
  172. }
  173. /// <summary>
  174. /// Returns a 2D vector assigned with the parameter with the specified name.
  175. ///
  176. /// Optionally if the parameter is an array you may provide an array index you which to retrieve.
  177. /// </summary>
  178. public Vector2 GetVector2(string name, uint arrayIdx = 0)
  179. {
  180. Vector2 temp;
  181. Internal_getVec2(mCachedPtr, name, arrayIdx, out temp);
  182. return temp;
  183. }
  184. /// <summary>
  185. /// Returns a 3D vector assigned with the parameter with the specified name.
  186. ///
  187. /// Optionally if the parameter is an array you may provide an array index you which to retrieve.
  188. /// </summary>
  189. public Vector3 GetVector3(string name, uint arrayIdx = 0)
  190. {
  191. Vector3 temp;
  192. Internal_getVec3(mCachedPtr, name, arrayIdx, out temp);
  193. return temp;
  194. }
  195. /// <summary>
  196. /// Returns a 4D vector assigned with the parameter with the specified name.
  197. ///
  198. /// Optionally if the parameter is an array you may provide an array index you which to retrieve.
  199. /// </summary>
  200. public Vector4 GetVector4(string name, uint arrayIdx = 0)
  201. {
  202. Vector4 temp;
  203. Internal_getVec4(mCachedPtr, name, arrayIdx, out temp);
  204. return temp;
  205. }
  206. /// <summary>
  207. /// Returns a 3x3 matrix assigned with the parameter with the specified name.
  208. ///
  209. /// Optionally if the parameter is an array you may provide an array index you which to retrieve.
  210. /// </summary>
  211. public Matrix3 GetMatrix3(string name, uint arrayIdx = 0)
  212. {
  213. Matrix3 temp;
  214. Internal_getMat3(mCachedPtr, name, arrayIdx, out temp);
  215. return temp;
  216. }
  217. /// <summary>
  218. /// Returns a 4x4 matrix assigned with the parameter with the specified name.
  219. ///
  220. /// Optionally if the parameter is an array you may provide an array index you which to retrieve.
  221. /// </summary>
  222. public Matrix4 GetMatrix4(string name, uint arrayIdx = 0)
  223. {
  224. Matrix4 temp;
  225. Internal_getMat4(mCachedPtr, name, arrayIdx, out temp);
  226. return temp;
  227. }
  228. [MethodImpl(MethodImplOptions.InternalCall)]
  229. private static extern RRef<Material> Internal_GetRef(IntPtr thisPtr);
  230. [MethodImpl(MethodImplOptions.InternalCall)]
  231. private static extern void Internal_setShader(IntPtr thisPtr, RRef<Shader> shader);
  232. [MethodImpl(MethodImplOptions.InternalCall)]
  233. private static extern RRef<Material> Internal_clone(IntPtr thisPtr);
  234. [MethodImpl(MethodImplOptions.InternalCall)]
  235. private static extern RRef<Shader> Internal_getShader(IntPtr thisPtr);
  236. [MethodImpl(MethodImplOptions.InternalCall)]
  237. private static extern void Internal_setFloat(IntPtr thisPtr, string name, float value, uint arrayIdx);
  238. [MethodImpl(MethodImplOptions.InternalCall)]
  239. private static extern void Internal_setFloatCurve(IntPtr thisPtr, string name, AnimationCurve value, uint arrayIdx);
  240. [MethodImpl(MethodImplOptions.InternalCall)]
  241. private static extern void Internal_setColor(IntPtr thisPtr, string name, ref Color value, uint arrayIdx);
  242. [MethodImpl(MethodImplOptions.InternalCall)]
  243. private static extern void Internal_setColorGradient(IntPtr thisPtr, string name, ColorGradient value, uint arrayIdx);
  244. [MethodImpl(MethodImplOptions.InternalCall)]
  245. private static extern void Internal_setVec2(IntPtr thisPtr, string name, ref Vector2 value, uint arrayIdx);
  246. [MethodImpl(MethodImplOptions.InternalCall)]
  247. private static extern void Internal_setVec3(IntPtr thisPtr, string name, ref Vector3 value, uint arrayIdx);
  248. [MethodImpl(MethodImplOptions.InternalCall)]
  249. private static extern void Internal_setVec4(IntPtr thisPtr, string name, ref Vector4 value, uint arrayIdx);
  250. [MethodImpl(MethodImplOptions.InternalCall)]
  251. private static extern void Internal_setMat3(IntPtr thisPtr, string name, ref Matrix3 value, uint arrayIdx);
  252. [MethodImpl(MethodImplOptions.InternalCall)]
  253. private static extern void Internal_setMat4(IntPtr thisPtr, string name, ref Matrix4 value, uint arrayIdx);
  254. [MethodImpl(MethodImplOptions.InternalCall)]
  255. private static extern float Internal_getFloat(IntPtr thisPtr, string name, uint arrayIdx);
  256. [MethodImpl(MethodImplOptions.InternalCall)]
  257. private static extern AnimationCurve Internal_getFloatCurve(IntPtr thisPtr, string name, uint arrayIdx);
  258. [MethodImpl(MethodImplOptions.InternalCall)]
  259. private static extern void Internal_getColor(IntPtr thisPtr, string name, uint arrayIdx, out Color __output);
  260. [MethodImpl(MethodImplOptions.InternalCall)]
  261. private static extern ColorGradient Internal_getColorGradient(IntPtr thisPtr, string name, uint arrayIdx);
  262. [MethodImpl(MethodImplOptions.InternalCall)]
  263. private static extern void Internal_getVec2(IntPtr thisPtr, string name, uint arrayIdx, out Vector2 __output);
  264. [MethodImpl(MethodImplOptions.InternalCall)]
  265. private static extern void Internal_getVec3(IntPtr thisPtr, string name, uint arrayIdx, out Vector3 __output);
  266. [MethodImpl(MethodImplOptions.InternalCall)]
  267. private static extern void Internal_getVec4(IntPtr thisPtr, string name, uint arrayIdx, out Vector4 __output);
  268. [MethodImpl(MethodImplOptions.InternalCall)]
  269. private static extern void Internal_getMat3(IntPtr thisPtr, string name, uint arrayIdx, out Matrix3 __output);
  270. [MethodImpl(MethodImplOptions.InternalCall)]
  271. private static extern void Internal_getMat4(IntPtr thisPtr, string name, uint arrayIdx, out Matrix4 __output);
  272. [MethodImpl(MethodImplOptions.InternalCall)]
  273. private static extern void Internal_create(Material managedInstance);
  274. [MethodImpl(MethodImplOptions.InternalCall)]
  275. private static extern void Internal_create0(Material managedInstance, RRef<Shader> shader);
  276. [MethodImpl(MethodImplOptions.InternalCall)]
  277. private static extern void Internal_setTexture(IntPtr thisPtr, string name, RRef<Texture> value, uint mipLevel, uint numMipLevels, uint arraySlice, uint numArraySlices);
  278. [MethodImpl(MethodImplOptions.InternalCall)]
  279. private static extern RRef<Texture> Internal_getTexture(IntPtr thisPtr, string name);
  280. [MethodImpl(MethodImplOptions.InternalCall)]
  281. private static extern void Internal_setSpriteTexture(IntPtr thisPtr, string name, RRef<SpriteTexture> value);
  282. [MethodImpl(MethodImplOptions.InternalCall)]
  283. private static extern RRef<SpriteTexture> Internal_getSpriteTexture(IntPtr thisPtr, string name);
  284. }
  285. /** @} */
  286. }