Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
To repozytorium jest zarchiwizowane. Możesz wyświetlać pliki i je sklonować, ale nie możesz do niego przepychać zmian lub otwierać zgłoszeń/Pull Requestów.

Action.cs 3.3KB

10 lat temu
10 lat temu
10 lat temu
10 lat temu
10 lat temu
10 lat temu
10 lat temu
10 lat temu
10 lat temu
10 lat temu
10 lat temu
10 lat temu
10 lat temu
10 lat temu
10 lat temu
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. using System;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. namespace coa4u
  5. {
  6. /// <summary>
  7. /// Basic action class for subclassing. To inherit interval actions, consider using the ActionInterval as the base class.
  8. /// </summary>
  9. public class ActionInstant
  10. {
  11. protected Actor target;
  12. protected Transform transform;
  13. protected Renderer renderer;
  14. protected bool is2d = false;
  15. private float durationValue = 0;
  16. private float dtrValue = 0;
  17. private bool isRunning = false;
  18. public ActionInstant()
  19. {
  20. }
  21. /// <summary>
  22. /// Returns a copy of the action.
  23. /// </summary>
  24. public virtual ActionInstant clone()
  25. {
  26. return new ActionInstant();
  27. }
  28. /// <summary>
  29. /// Returns the reversed version of the action, if it is possible.
  30. /// </summary>
  31. public virtual ActionInstant reverse()
  32. {
  33. throw new Exception("Can reverse only the reversable interval actions");
  34. }
  35. /// <summary>
  36. /// This method is called at the action start. Usable for instant and interval actions.
  37. /// </summary>
  38. public virtual void start()
  39. {
  40. if (target == null)
  41. throw new Exception("Can start the action only after it's atached to the actor");
  42. transform = target.transformCached;
  43. renderer = target.rendererCached;
  44. }
  45. /// <summary>
  46. /// This method is called at every frame update. Not usable for instant actions.
  47. /// </summary>
  48. public virtual void step(float dt)
  49. {
  50. if (target == null)
  51. throw new Exception("Can update the action only after it's atached to the actor");
  52. }
  53. /// <summary>
  54. /// This method is called after the interval action is stopped. Not usable for instant actions.
  55. /// </summary>
  56. public virtual void stop()
  57. {
  58. if (target == null)
  59. throw new Exception("Can stop the action only after it's atached to the actor");
  60. }
  61. /// <summary>
  62. /// This method sets the actor for the action.
  63. /// </summary>
  64. public void setActor(Actor actor)
  65. {
  66. target = actor;
  67. }
  68. /// <summary>
  69. /// Readonly property. Shows the remaining time of the action.
  70. /// </summary>
  71. public float duration
  72. {
  73. get
  74. {
  75. return durationValue;
  76. }
  77. protected set
  78. {
  79. durationValue = value;
  80. }
  81. }
  82. /// <summary>
  83. /// Readonly property. Shows if the action is running or not.
  84. /// </summary>
  85. public bool running
  86. {
  87. get
  88. {
  89. return isRunning;
  90. }
  91. protected set
  92. {
  93. isRunning = value;
  94. }
  95. }
  96. /// <summary>
  97. /// Readonly property. Contains the remaining tick time after action finished.
  98. /// </summary>
  99. public float dtr
  100. {
  101. get
  102. {
  103. return dtrValue;
  104. }
  105. protected set
  106. {
  107. dtrValue = value;
  108. }
  109. }
  110. }
  111. }