ExportedProperties.cs 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. using System;
  2. using System.Diagnostics.CodeAnalysis;
  3. #pragma warning disable CS0169
  4. #pragma warning disable CS0414
  5. namespace Godot.SourceGenerators.Sample
  6. {
  7. [SuppressMessage("ReSharper", "BuiltInTypeReferenceStyle")]
  8. [SuppressMessage("ReSharper", "RedundantNameQualifier")]
  9. [SuppressMessage("ReSharper", "ArrangeObjectCreationWhenTypeEvident")]
  10. [SuppressMessage("ReSharper", "InconsistentNaming")]
  11. public partial class ExportedProperties : GodotObject
  12. {
  13. // Do not generate default value
  14. private String _notGeneratePropertyString = new string("not generate");
  15. [Export]
  16. public String NotGenerateComplexLambdaProperty
  17. {
  18. get => _notGeneratePropertyString + Convert.ToInt32("1");
  19. set => _notGeneratePropertyString = value;
  20. }
  21. [Export]
  22. public String NotGenerateLambdaNoFieldProperty
  23. {
  24. get => new string("not generate");
  25. set => _notGeneratePropertyString = value;
  26. }
  27. [Export]
  28. public String NotGenerateComplexReturnProperty
  29. {
  30. get
  31. {
  32. return _notGeneratePropertyString + Convert.ToInt32("1");
  33. }
  34. set
  35. {
  36. _notGeneratePropertyString = value;
  37. }
  38. }
  39. private int _notGeneratePropertyInt = 1;
  40. [Export]
  41. public string NotGenerate_Returns_Property
  42. {
  43. get
  44. {
  45. if (_notGeneratePropertyInt == 1)
  46. {
  47. return "a";
  48. }
  49. else
  50. {
  51. return "b";
  52. }
  53. }
  54. set
  55. {
  56. _notGeneratePropertyInt = value == "a" ? 1 : 2;
  57. }
  58. }
  59. // Full Property
  60. private String _fullPropertyString = "FullPropertyString";
  61. [Export]
  62. public String FullPropertyString
  63. {
  64. get
  65. {
  66. return _fullPropertyString;
  67. }
  68. set
  69. {
  70. _fullPropertyString = value;
  71. }
  72. }
  73. private String _fullPropertyStringComplex = new string("FullPropertyString_Complex") + Convert.ToInt32("1");
  74. [Export]
  75. public String FullPropertyStringComplex
  76. {
  77. get
  78. {
  79. return _fullPropertyStringComplex;
  80. }
  81. set
  82. {
  83. _fullPropertyStringComplex = value;
  84. }
  85. }
  86. // Lambda Property
  87. private String _lamdaPropertyString = "LamdaPropertyString";
  88. [Export]
  89. public String LamdaPropertyString
  90. {
  91. get => _lamdaPropertyString;
  92. set => _lamdaPropertyString = value;
  93. }
  94. // Auto Property
  95. [Export] private Boolean PropertyBoolean { get; set; } = true;
  96. [Export] private Char PropertyChar { get; set; } = 'f';
  97. [Export] private SByte PropertySByte { get; set; } = 10;
  98. [Export] private Int16 PropertyInt16 { get; set; } = 10;
  99. [Export] private Int32 PropertyInt32 { get; set; } = 10;
  100. [Export] private Int64 PropertyInt64 { get; set; } = 10;
  101. [Export] private Byte PropertyByte { get; set; } = 10;
  102. [Export] private UInt16 PropertyUInt16 { get; set; } = 10;
  103. [Export] private UInt32 PropertyUInt32 { get; set; } = 10;
  104. [Export] private UInt64 PropertyUInt64 { get; set; } = 10;
  105. [Export] private Single PropertySingle { get; set; } = 10;
  106. [Export] private Double PropertyDouble { get; set; } = 10;
  107. [Export] private String PropertyString { get; set; } = "foo";
  108. // Godot structs
  109. [Export] private Vector2 PropertyVector2 { get; set; } = new(10f, 10f);
  110. [Export] private Vector2I PropertyVector2I { get; set; } = Vector2I.Up;
  111. [Export] private Rect2 PropertyRect2 { get; set; } = new(new Vector2(10f, 10f), new Vector2(10f, 10f));
  112. [Export] private Rect2I PropertyRect2I { get; set; } = new(new Vector2I(10, 10), new Vector2I(10, 10));
  113. [Export] private Transform2D PropertyTransform2D { get; set; } = Transform2D.Identity;
  114. [Export] private Vector3 PropertyVector3 { get; set; } = new(10f, 10f, 10f);
  115. [Export] private Vector3I PropertyVector3I { get; set; } = Vector3I.Back;
  116. [Export] private Basis PropertyBasis { get; set; } = new Basis(Quaternion.Identity);
  117. [Export] private Quaternion PropertyQuaternion { get; set; } = new Quaternion(Basis.Identity);
  118. [Export] private Transform3D PropertyTransform3D { get; set; } = Transform3D.Identity;
  119. [Export] private Vector4 PropertyVector4 { get; set; } = new(10f, 10f, 10f, 10f);
  120. [Export] private Vector4I PropertyVector4I { get; set; } = Vector4I.One;
  121. [Export] private Projection PropertyProjection { get; set; } = Projection.Identity;
  122. [Export] private Aabb PropertyAabb { get; set; } = new Aabb(10f, 10f, 10f, new Vector3(1f, 1f, 1f));
  123. [Export] private Color PropertyColor { get; set; } = Colors.Aquamarine;
  124. [Export] private Plane PropertyPlane { get; set; } = Plane.PlaneXZ;
  125. [Export] private Callable PropertyCallable { get; set; } = new Callable(Engine.GetMainLoop(), "_process");
  126. [Export] private Signal PropertySignal { get; set; } = new Signal(Engine.GetMainLoop(), "Propertylist_changed");
  127. // Enums
  128. [SuppressMessage("ReSharper", "UnusedMember.Local")]
  129. public enum MyEnum
  130. {
  131. A,
  132. B,
  133. C
  134. }
  135. [Export] private MyEnum PropertyEnum { get; set; } = MyEnum.C;
  136. [Flags]
  137. [SuppressMessage("ReSharper", "UnusedMember.Local")]
  138. public enum MyFlagsEnum
  139. {
  140. A,
  141. B,
  142. C
  143. }
  144. [Export] private MyFlagsEnum PropertyFlagsEnum { get; set; } = MyFlagsEnum.C;
  145. // Arrays
  146. [Export] private Byte[] PropertyByteArray { get; set; } = { 0, 1, 2, 3, 4, 5, 6 };
  147. [Export] private Int32[] PropertyInt32Array { get; set; } = { 0, 1, 2, 3, 4, 5, 6 };
  148. [Export] private Int64[] PropertyInt64Array { get; set; } = { 0, 1, 2, 3, 4, 5, 6 };
  149. [Export] private Single[] PropertySingleArray { get; set; } = { 0f, 1f, 2f, 3f, 4f, 5f, 6f };
  150. [Export] private Double[] PropertyDoubleArray { get; set; } = { 0d, 1d, 2d, 3d, 4d, 5d, 6d };
  151. [Export] private String[] PropertyStringArray { get; set; } = { "foo", "bar" };
  152. [Export(PropertyHint.Enum, "A,B,C")] private String[] PropertyStringArrayEnum { get; set; } = { "foo", "bar" };
  153. [Export] private Vector2[] PropertyVector2Array { get; set; } = { Vector2.Up, Vector2.Down, Vector2.Left, Vector2.Right };
  154. [Export] private Vector3[] PropertyVector3Array { get; set; } = { Vector3.Up, Vector3.Down, Vector3.Left, Vector3.Right };
  155. [Export] private Color[] PropertyColorArray { get; set; } = { Colors.Aqua, Colors.Aquamarine, Colors.Azure, Colors.Beige };
  156. [Export] private GodotObject[] PropertyGodotObjectOrDerivedArray { get; set; } = { null };
  157. [Export] private StringName[] PropertyStringNameArray { get; set; } = { "foo", "bar" };
  158. [Export] private NodePath[] PropertyNodePathArray { get; set; } = { "foo", "bar" };
  159. [Export] private Rid[] PropertyRidArray { get; set; } = { default, default, default };
  160. // Variant
  161. [Export] private Variant PropertyVariant { get; set; } = "foo";
  162. // Classes
  163. [Export] private GodotObject PropertyGodotObjectOrDerived { get; set; }
  164. [Export] private Godot.Texture PropertyGodotResourceTexture { get; set; }
  165. [Export] private StringName PropertyStringName { get; set; } = new StringName("foo");
  166. [Export] private NodePath PropertyNodePath { get; set; } = new NodePath("foo");
  167. [Export] private Rid PropertyRid { get; set; }
  168. [Export]
  169. private Godot.Collections.Dictionary PropertyGodotDictionary { get; set; } =
  170. new() { { "foo", 10 }, { Vector2.Up, Colors.Chocolate } };
  171. [Export]
  172. private Godot.Collections.Array PropertyGodotArray { get; set; } =
  173. new() { "foo", 10, Vector2.Up, Colors.Chocolate };
  174. [Export]
  175. private Godot.Collections.Dictionary<string, bool> PropertyGodotGenericDictionary { get; set; } =
  176. new() { { "foo", true }, { "bar", false } };
  177. [Export]
  178. private Godot.Collections.Array<int> PropertyGodotGenericArray { get; set; } =
  179. new() { 0, 1, 2, 3, 4, 5, 6 };
  180. }
  181. }