NetworkPriority.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // Copyright (c) 2008-2023 the Urho3D project
  2. // License: MIT
  3. #pragma once
  4. #include "../Scene/Component.h"
  5. namespace Urho3D
  6. {
  7. /// %Network interest management settings component.
  8. class URHO3D_API NetworkPriority : public Component
  9. {
  10. URHO3D_OBJECT(NetworkPriority, Component);
  11. public:
  12. /// Construct.
  13. explicit NetworkPriority(Context* context);
  14. /// Destruct.
  15. ~NetworkPriority() override;
  16. /// Register object factory.
  17. /// @nobind
  18. static void RegisterObject(Context* context);
  19. /// Set base priority. Default 100 (send updates at full frequency).
  20. /// @property
  21. void SetBasePriority(float priority);
  22. /// Set priority reduction distance factor. Default 0 (no effect).
  23. /// @property
  24. void SetDistanceFactor(float factor);
  25. /// Set minimum priority. Default 0 (no updates when far away enough).
  26. /// @property
  27. void SetMinPriority(float priority);
  28. /// Set whether updates to owner should be sent always at full rate. Default true.
  29. /// @property
  30. void SetAlwaysUpdateOwner(bool enable);
  31. /// Return base priority.
  32. /// @property
  33. float GetBasePriority() const { return basePriority_; }
  34. /// Return priority reduction distance factor.
  35. /// @property
  36. float GetDistanceFactor() const { return distanceFactor_; }
  37. /// Return minimum priority.
  38. /// @property
  39. float GetMinPriority() const { return minPriority_; }
  40. /// Return whether updates to owner should be sent always at full rate.
  41. /// @property
  42. bool GetAlwaysUpdateOwner() const { return alwaysUpdateOwner_; }
  43. /// Increment and check priority accumulator. Return true if should update. Called by Connection.
  44. bool CheckUpdate(float distance, float& accumulator);
  45. private:
  46. /// Base priority.
  47. float basePriority_;
  48. /// Priority reduction distance factor.
  49. float distanceFactor_;
  50. /// Minimum priority.
  51. float minPriority_;
  52. /// Update owner at full rate flag.
  53. bool alwaysUpdateOwner_;
  54. };
  55. }