PhysicsManagerConstraint.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // Magica Cloth.
  2. // Copyright (c) MagicaSoft, 2020-2022.
  3. // https://magicasoft.jp
  4. using Unity.Jobs;
  5. using UnityEngine;
  6. namespace MagicaCloth
  7. {
  8. /// <summary>
  9. /// 拘束のベースクラス
  10. /// </summary>
  11. public abstract class PhysicsManagerConstraint
  12. {
  13. // 反復1回の実行回数
  14. [Range(1, 4)]
  15. public int iteration = 1;
  16. /// <summary>
  17. /// 親マネージャ
  18. /// </summary>
  19. public MagicaPhysicsManager Manager { get; set; }
  20. //=========================================================================================
  21. /// <summary>
  22. /// 初期化
  23. /// </summary>
  24. /// <param name="manager"></param>
  25. public void Init(MagicaPhysicsManager manager)
  26. {
  27. Manager = manager;
  28. Create();
  29. }
  30. /// <summary>
  31. /// データ作成
  32. /// </summary>
  33. public abstract void Create();
  34. /// <summary>
  35. /// チームIDのデータを削除
  36. /// </summary>
  37. /// <param name="teamId"></param>
  38. public abstract void RemoveTeam(int teamId);
  39. /// <summary>
  40. /// データ開放
  41. /// </summary>
  42. public abstract void Release();
  43. /// <summary>
  44. /// 拘束の更新回数取得
  45. /// </summary>
  46. /// <returns></returns>
  47. public virtual int GetIterationCount()
  48. {
  49. return iteration;
  50. }
  51. /// <summary>
  52. /// 拘束の解決(ステップ回数実行される)
  53. /// </summary>
  54. /// <param name="dtime">ステップ時間</param>
  55. /// <param name="updatePower">90upsを基準とした更新力</param>
  56. /// <param name="iteration">同フレームでの実行カウント(0~)</param>
  57. public abstract JobHandle SolverConstraint(int runCount, float dtime, float updatePower, int iteration, JobHandle jobHandle);
  58. }
  59. }