aha
This commit is contained in:
39
Assets/Mirror/Examples/BenchmarkIdle/Npc.cs
Normal file
39
Assets/Mirror/Examples/BenchmarkIdle/Npc.cs
Normal file
@ -0,0 +1,39 @@
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user