Material.generated.cs 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  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. public partial class Material : Resource
  14. {
  15. private Material(bool __dummy0) { }
  16. /// <summary>Creates a new empty material.</summary>
  17. public Material()
  18. {
  19. Internal_create(this);
  20. }
  21. /// <summary>Creates a new material with the specified shader.</summary>
  22. public Material(Shader shader)
  23. {
  24. Internal_create0(this, shader);
  25. }
  26. /// <summary>
  27. /// Sets a shader that will be used by the material. Material will be initialized using all compatible techniques from
  28. /// the shader. Shader must be set before doing any other operations with the material.
  29. /// </summary>
  30. public Shader Shader
  31. {
  32. get { return Internal_getShader(mCachedPtr); }
  33. set { Internal_setShader(mCachedPtr, value); }
  34. }
  35. /// <summary>Creates a deep copy of the material and returns the new object.</summary>
  36. public Material Clone()
  37. {
  38. return Internal_clone(mCachedPtr);
  39. }
  40. /// <summary>
  41. /// Assigns a float value to the shader parameter with the specified name.
  42. ///
  43. /// Optionally if the parameter is an array you may provide an array index to assign the value to.
  44. /// </summary>
  45. public void SetFloat(string name, float value, uint arrayIdx = 0)
  46. {
  47. Internal_setFloat(mCachedPtr, name, value, arrayIdx);
  48. }
  49. /// <summary>
  50. /// Assigns a color to the shader parameter with the specified name.
  51. ///
  52. /// Optionally if the parameter is an array you may provide an array index to assign the value to.
  53. /// </summary>
  54. public void SetColor(string name, Color value, uint arrayIdx = 0)
  55. {
  56. Internal_setColor(mCachedPtr, name, ref value, arrayIdx);
  57. }
  58. /// <summary>
  59. /// Assigns a 2D vector to the shader parameter with the specified name.
  60. ///
  61. /// Optionally if the parameter is an array you may provide an array index to assign the value to.
  62. /// </summary>
  63. public void SetVector2(string name, Vector2 value, uint arrayIdx = 0)
  64. {
  65. Internal_setVec2(mCachedPtr, name, ref value, arrayIdx);
  66. }
  67. /// <summary>
  68. /// Assigns a 3D vector to the shader parameter with the specified name.
  69. ///
  70. /// Optionally if the parameter is an array you may provide an array index to assign the value to.
  71. /// </summary>
  72. public void SetVector3(string name, Vector3 value, uint arrayIdx = 0)
  73. {
  74. Internal_setVec3(mCachedPtr, name, ref value, arrayIdx);
  75. }
  76. /// <summary>
  77. /// Assigns a 4D vector to the shader parameter with the specified name.
  78. ///
  79. /// Optionally if the parameter is an array you may provide an array index to assign the value to.
  80. /// </summary>
  81. public void SetVector4(string name, Vector4 value, uint arrayIdx = 0)
  82. {
  83. Internal_setVec4(mCachedPtr, name, ref value, arrayIdx);
  84. }
  85. /// <summary>
  86. /// Assigns a 3x3 matrix to the shader parameter with the specified name.
  87. ///
  88. /// Optionally if the parameter is an array you may provide an array index to assign the value to.
  89. /// </summary>
  90. public void SetMatrix3(string name, Matrix3 value, uint arrayIdx = 0)
  91. {
  92. Internal_setMat3(mCachedPtr, name, ref value, arrayIdx);
  93. }
  94. /// <summary>
  95. /// Assigns a 4x4 matrix to the shader parameter with the specified name.
  96. ///
  97. /// Optionally if the parameter is an array you may provide an array index to assign the value to.
  98. /// </summary>
  99. public void SetMatrix4(string name, Matrix4 value, uint arrayIdx = 0)
  100. {
  101. Internal_setMat4(mCachedPtr, name, ref value, arrayIdx);
  102. }
  103. /// <summary>
  104. /// Returns a float value assigned with the parameter with the specified name.
  105. ///
  106. /// Optionally if the parameter is an array you may provide an array index you which to retrieve.
  107. /// </summary>
  108. public float GetFloat(string name, uint arrayIdx = 0)
  109. {
  110. return Internal_getFloat(mCachedPtr, name, arrayIdx);
  111. }
  112. /// <summary>
  113. /// Returns a color assigned with the parameter with the specified name.
  114. ///
  115. /// Optionally if the parameter is an array you may provide an array index you which to retrieve.
  116. /// </summary>
  117. public Color GetColor(string name, uint arrayIdx = 0)
  118. {
  119. Color temp;
  120. Internal_getColor(mCachedPtr, name, arrayIdx, out temp);
  121. return temp;
  122. }
  123. /// <summary>
  124. /// Returns a 2D vector assigned with the parameter with the specified name.
  125. ///
  126. /// Optionally if the parameter is an array you may provide an array index you which to retrieve.
  127. /// </summary>
  128. public Vector2 GetVector2(string name, uint arrayIdx = 0)
  129. {
  130. Vector2 temp;
  131. Internal_getVec2(mCachedPtr, name, arrayIdx, out temp);
  132. return temp;
  133. }
  134. /// <summary>
  135. /// Returns a 3D vector assigned with the parameter with the specified name.
  136. ///
  137. /// Optionally if the parameter is an array you may provide an array index you which to retrieve.
  138. /// </summary>
  139. public Vector3 GetVector3(string name, uint arrayIdx = 0)
  140. {
  141. Vector3 temp;
  142. Internal_getVec3(mCachedPtr, name, arrayIdx, out temp);
  143. return temp;
  144. }
  145. /// <summary>
  146. /// Returns a 4D vector assigned with the parameter with the specified name.
  147. ///
  148. /// Optionally if the parameter is an array you may provide an array index you which to retrieve.
  149. /// </summary>
  150. public Vector4 GetVector4(string name, uint arrayIdx = 0)
  151. {
  152. Vector4 temp;
  153. Internal_getVec4(mCachedPtr, name, arrayIdx, out temp);
  154. return temp;
  155. }
  156. /// <summary>
  157. /// Returns a 3x3 matrix assigned with the parameter with the specified name.
  158. ///
  159. /// Optionally if the parameter is an array you may provide an array index you which to retrieve.
  160. /// </summary>
  161. public Matrix3 GetMatrix3(string name, uint arrayIdx = 0)
  162. {
  163. Matrix3 temp;
  164. Internal_getMat3(mCachedPtr, name, arrayIdx, out temp);
  165. return temp;
  166. }
  167. /// <summary>
  168. /// Returns a 4x4 matrix assigned with the parameter with the specified name.
  169. ///
  170. /// Optionally if the parameter is an array you may provide an array index you which to retrieve.
  171. /// </summary>
  172. public Matrix4 GetMatrix4(string name, uint arrayIdx = 0)
  173. {
  174. Matrix4 temp;
  175. Internal_getMat4(mCachedPtr, name, arrayIdx, out temp);
  176. return temp;
  177. }
  178. [MethodImpl(MethodImplOptions.InternalCall)]
  179. private static extern void Internal_setShader(IntPtr thisPtr, Shader shader);
  180. [MethodImpl(MethodImplOptions.InternalCall)]
  181. private static extern Material Internal_clone(IntPtr thisPtr);
  182. [MethodImpl(MethodImplOptions.InternalCall)]
  183. private static extern Shader Internal_getShader(IntPtr thisPtr);
  184. [MethodImpl(MethodImplOptions.InternalCall)]
  185. private static extern void Internal_setFloat(IntPtr thisPtr, string name, float value, uint arrayIdx);
  186. [MethodImpl(MethodImplOptions.InternalCall)]
  187. private static extern void Internal_setColor(IntPtr thisPtr, string name, ref Color value, uint arrayIdx);
  188. [MethodImpl(MethodImplOptions.InternalCall)]
  189. private static extern void Internal_setVec2(IntPtr thisPtr, string name, ref Vector2 value, uint arrayIdx);
  190. [MethodImpl(MethodImplOptions.InternalCall)]
  191. private static extern void Internal_setVec3(IntPtr thisPtr, string name, ref Vector3 value, uint arrayIdx);
  192. [MethodImpl(MethodImplOptions.InternalCall)]
  193. private static extern void Internal_setVec4(IntPtr thisPtr, string name, ref Vector4 value, uint arrayIdx);
  194. [MethodImpl(MethodImplOptions.InternalCall)]
  195. private static extern void Internal_setMat3(IntPtr thisPtr, string name, ref Matrix3 value, uint arrayIdx);
  196. [MethodImpl(MethodImplOptions.InternalCall)]
  197. private static extern void Internal_setMat4(IntPtr thisPtr, string name, ref Matrix4 value, uint arrayIdx);
  198. [MethodImpl(MethodImplOptions.InternalCall)]
  199. private static extern float Internal_getFloat(IntPtr thisPtr, string name, uint arrayIdx);
  200. [MethodImpl(MethodImplOptions.InternalCall)]
  201. private static extern void Internal_getColor(IntPtr thisPtr, string name, uint arrayIdx, out Color __output);
  202. [MethodImpl(MethodImplOptions.InternalCall)]
  203. private static extern void Internal_getVec2(IntPtr thisPtr, string name, uint arrayIdx, out Vector2 __output);
  204. [MethodImpl(MethodImplOptions.InternalCall)]
  205. private static extern void Internal_getVec3(IntPtr thisPtr, string name, uint arrayIdx, out Vector3 __output);
  206. [MethodImpl(MethodImplOptions.InternalCall)]
  207. private static extern void Internal_getVec4(IntPtr thisPtr, string name, uint arrayIdx, out Vector4 __output);
  208. [MethodImpl(MethodImplOptions.InternalCall)]
  209. private static extern void Internal_getMat3(IntPtr thisPtr, string name, uint arrayIdx, out Matrix3 __output);
  210. [MethodImpl(MethodImplOptions.InternalCall)]
  211. private static extern void Internal_getMat4(IntPtr thisPtr, string name, uint arrayIdx, out Matrix4 __output);
  212. [MethodImpl(MethodImplOptions.InternalCall)]
  213. private static extern void Internal_create(Material managedInstance);
  214. [MethodImpl(MethodImplOptions.InternalCall)]
  215. private static extern void Internal_create0(Material managedInstance, Shader shader);
  216. [MethodImpl(MethodImplOptions.InternalCall)]
  217. private static extern void Internal_setTexture(IntPtr thisPtr, string name, Texture value, uint mipLevel, uint numMipLevels, uint arraySlice, uint numArraySlices);
  218. [MethodImpl(MethodImplOptions.InternalCall)]
  219. private static extern Texture Internal_getTexture(IntPtr thisPtr, string name);
  220. }
  221. /** @} */
  222. }