Explain to me how the MVC structure should be organized for small syncs.
How can I get a cosmetic to sync between clients?
TrailColorModel.csTrailColorSync.csTrailColorSyncGetComponent<TrailColorSync>().SetColor(newColor)using Normal.Realtime;
using UnityEngine;
[RealtimeModel]
public partial class CosmeticModel {
[RealtimeProperty(1, true)]
private Color _color;
// Add other cosmetic properties as needed
}using UnityEngine;
using Normal.Realtime;
[RealtimeModel]
public partial class TrailColorModel {
[RealtimeProperty(1, true)]
private Color _color;
}using UnityEngine;
using Normal.Realtime;
public class TrailColorSync : RealtimeComponent<TrailColorModel> {
private TrailRenderer _trailRenderer;
private void Awake() {
_trailRenderer = GetComponent<TrailRenderer>();
}
protected override void OnRealtimeModelReplaced(TrailColorModel previousModel, TrailColorModel currentModel) {
if (previousModel != null) {
previousModel.colorDidChange -= ColorDidChange;
}
if (currentModel != null) {
if (currentModel.isFreshModel)
currentModel.color = _trailRenderer.startColor;
UpdateTrailColor();
currentModel.colorDidChange += ColorDidChange;
}
}
private void ColorDidChange(TrailColorModel model, Color value) {
UpdateTrailColor();
}
private void UpdateTrailColor() {
_trailRenderer.startColor = model.color;
_trailRenderer.endColor = model.color;
}
public void SetColor(Color color) {
model.color = color;
}
}