SceneObject.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. using System;
  2. using System.Runtime.CompilerServices;
  3. namespace BansheeEngine
  4. {
  5. // TODO - Unfinished
  6. public sealed class SceneObject : GameObject
  7. {
  8. public SceneObject parent
  9. {
  10. set { Internal_SetParent(mCachedPtr, value); }
  11. get { return Internal_GetParent(mCachedPtr); }
  12. }
  13. public Vector3 position
  14. {
  15. get
  16. {
  17. Vector3 value;
  18. Internal_GetPosition(mCachedPtr, out value);
  19. return value;
  20. }
  21. set
  22. {
  23. Internal_SetPosition(mCachedPtr, value);
  24. }
  25. }
  26. public Vector3 localPosition
  27. {
  28. get
  29. {
  30. Vector3 value;
  31. Internal_GetLocalPosition(mCachedPtr, out value);
  32. return value;
  33. }
  34. set
  35. {
  36. Internal_SetLocalPosition(mCachedPtr, value);
  37. }
  38. }
  39. public Quaternion rotation
  40. {
  41. get
  42. {
  43. Quaternion value;
  44. Internal_GetRotation(mCachedPtr, out value);
  45. return value;
  46. }
  47. set
  48. {
  49. Internal_SetRotation(mCachedPtr, value);
  50. }
  51. }
  52. public Quaternion localRotation
  53. {
  54. get
  55. {
  56. Quaternion value;
  57. Internal_GetLocalRotation(mCachedPtr, out value);
  58. return value;
  59. }
  60. set
  61. {
  62. Internal_SetLocalRotation(mCachedPtr, value);
  63. }
  64. }
  65. public Vector3 scale
  66. {
  67. get
  68. {
  69. Vector3 value;
  70. Internal_GetScale(mCachedPtr, out value);
  71. return value;
  72. }
  73. }
  74. public Vector3 localScale
  75. {
  76. get
  77. {
  78. Vector3 value;
  79. Internal_GetLocalScale(mCachedPtr, out value);
  80. return value;
  81. }
  82. set
  83. {
  84. Internal_SetLocalScale(mCachedPtr, value);
  85. }
  86. }
  87. // For internal use
  88. private SceneObject()
  89. {
  90. }
  91. public SceneObject(string name)
  92. {
  93. Internal_CreateInstance(this, name);
  94. }
  95. public T AddComponent<T>() where T : Component
  96. {
  97. return (T)Component.Internal_AddComponent(this, typeof (T));
  98. }
  99. public T GetComponent<T>() where T : Component
  100. {
  101. return (T)Component.Internal_GetComponent(this, typeof(T));
  102. }
  103. public Component[] GetComponents()
  104. {
  105. return Component.Internal_GetComponents(this);
  106. }
  107. public void RemoveComponent<T>() where T : Component
  108. {
  109. Component.Internal_RemoveComponent(this, typeof(T));
  110. }
  111. public int GetNumChildren()
  112. {
  113. return Internal_GetNumChildren(mCachedPtr);
  114. }
  115. public SceneObject GetChild(int idx)
  116. {
  117. return Internal_GetChild(mCachedPtr, idx);
  118. }
  119. [MethodImpl(MethodImplOptions.InternalCall)]
  120. private static extern void Internal_CreateInstance(SceneObject instance, string name);
  121. [MethodImpl(MethodImplOptions.InternalCall)]
  122. private static extern void Internal_SetParent(IntPtr nativeInstance, SceneObject parent);
  123. [MethodImpl(MethodImplOptions.InternalCall)]
  124. private static extern SceneObject Internal_GetParent(IntPtr nativeInstance);
  125. [MethodImpl(MethodImplOptions.InternalCall)]
  126. private static extern int Internal_GetNumChildren(IntPtr nativeInstance);
  127. [MethodImpl(MethodImplOptions.InternalCall)]
  128. private static extern SceneObject Internal_GetChild(IntPtr nativeInstance, int idx);
  129. [MethodImpl(MethodImplOptions.InternalCall)]
  130. private static extern void Internal_GetPosition(IntPtr nativeInstance, out Vector3 value);
  131. [MethodImpl(MethodImplOptions.InternalCall)]
  132. private static extern void Internal_GetLocalPosition(IntPtr nativeInstance, out Vector3 value);
  133. [MethodImpl(MethodImplOptions.InternalCall)]
  134. private static extern void Internal_GetRotation(IntPtr nativeInstance, out Quaternion value);
  135. [MethodImpl(MethodImplOptions.InternalCall)]
  136. private static extern void Internal_GetLocalRotation(IntPtr nativeInstance, out Quaternion value);
  137. [MethodImpl(MethodImplOptions.InternalCall)]
  138. private static extern void Internal_GetScale(IntPtr nativeInstance, out Vector3 value);
  139. [MethodImpl(MethodImplOptions.InternalCall)]
  140. private static extern void Internal_GetLocalScale(IntPtr nativeInstance, out Vector3 value);
  141. [MethodImpl(MethodImplOptions.InternalCall)]
  142. private static extern void Internal_SetPosition(IntPtr nativeInstance, Vector3 value);
  143. [MethodImpl(MethodImplOptions.InternalCall)]
  144. private static extern void Internal_SetLocalPosition(IntPtr nativeInstance, Vector3 value);
  145. [MethodImpl(MethodImplOptions.InternalCall)]
  146. private static extern void Internal_SetRotation(IntPtr nativeInstance, Quaternion value);
  147. [MethodImpl(MethodImplOptions.InternalCall)]
  148. private static extern void Internal_SetLocalRotation(IntPtr nativeInstance, Quaternion value);
  149. [MethodImpl(MethodImplOptions.InternalCall)]
  150. private static extern void Internal_SetLocalScale(IntPtr nativeInstance, Vector3 value);
  151. }
  152. }