public void OnEnable() { localSyncObject = GetComponent <RemoteEntitySyncObject>(); localStateOverride = GetComponent <ARRHierarchicalStateOverrideComponent>(); if (localStateOverride == null) { localStateOverride = gameObject.AddComponent <ARRHierarchicalStateOverrideComponent>(); var remoteStateOverride = localSyncObject.Entity.FindComponentOfType <HierarchicalStateOverrideComponent>(); if (remoteStateOverride == null) { // if there is no HierarchicalStateOverrideComponent on the remote side yet, create one localStateOverride.Create(RemoteManagerUnity.CurrentSession); } else { // otherwise, bind our local stateOverride component to the remote component localStateOverride.Bind(remoteStateOverride); } } localStateOverride.RemoteComponent.TintColor = HighlightColor.toRemote(); localSyncObject.SyncEveryFrame = true; }
public override void RemoveOverride() { var remoteStateOverride = TargetEntity.Entity.FindComponentOfType <HierarchicalStateOverrideComponent>(); if (remoteStateOverride != null) { remoteStateOverride.Destroy(); } if (localOverride == null) { localOverride = gameObject.GetComponent <ARRHierarchicalStateOverrideComponent>(); } if (localOverride != null) { Destroy(localOverride); } }