123456789101112131415161718192021222324252627282930313233343536373839 |
- // idle object that rarely gets dirty
- using UnityEngine;
- namespace Mirror.Examples.BenchmarkIdle
- {
- public class Npc : NetworkBehaviour
- {
- // component to assign in inspector
- public Renderer rend;
- // the value to set dirty
- [SyncVar] ulong value;
- [Tooltip("Probability that this object just sleeps the whole time without ever getting dirty. (Npcs, Item drops, etc.)")]
- [Range(0, 1)] public float sleepingProbability = 0.80f; // 80% of the objects are sleeping
- bool sleeping;
- [Header("Colors")]
- public Color activeColor = Color.white;
- public Color sleepingColor = Color.red;
- public override void OnStartServer()
- {
- sleeping = Random.value < sleepingProbability;
- // color coding
- // can't do this in update, it's too expensive
- rend.material.color = sleeping ? sleepingColor : activeColor;
- }
- [ServerCallback]
- void Update()
- {
- // set dirty if not sleeping.
- // only counts as dirty every 'syncInterval'.
- if (!sleeping) ++value;
- }
- }
- }
|