public void UnregisterNetworkedEntityView(ExampleNetworkedEntity model) { if (string.IsNullOrEmpty(model.id) || _entities.ContainsKey(model.id) == false) { LSLog.LogError("Cannot Find Entity in Room"); return; } ExampleNetworkedEntityView view = _entityViews[model.id]; _entityViews.Remove(model.id); view.SendMessage("OnEntityViewUnregistered", SendMessageOptions.DontRequireReceiver); }
/// <summary> /// Registers the <see cref="ExampleNetworkedEntityView"/> with the manager for tracking. /// <para>Initializes the <see cref="ExampleNetworkedEntityView"/> if it has not yet been initialized.</para> /// </summary> /// <param name="model"></param> /// <param name="view"></param> public void RegisterNetworkedEntityView(ExampleNetworkedEntity model, ColyseusNetworkedEntityView view) { if (string.IsNullOrEmpty(model.id) || view == null || _entities.ContainsKey(model.id) == false) { LSLog.LogError("Cannot Find Entity in Room"); return; } ExampleNetworkedEntityView entityView = (ExampleNetworkedEntityView)view; if (entityView && !entityView.HasInit) { entityView.InitiView(model); } _entityViews.Add(model.id, (ExampleNetworkedEntityView)view); view.SendMessage("OnEntityViewRegistered", SendMessageOptions.DontRequireReceiver); }
/// <summary> /// Creates a GameObject using the <see cref="ExampleNetworkedEntityView"/>'s prefab. /// <para>Requires that the entity has a "prefab" attribute defined.</para> /// </summary> /// <param name="entity"></param> public async Task CreateFromPrefab(ExampleNetworkedEntity entity) { LSLog.LogError($"Factory - Create From Prefab - {entity.id}"); ResourceRequest asyncItem = Resources.LoadAsync <ExampleNetworkedEntityView>(entity.attributes["prefab"]); while (asyncItem.isDone == false) { await Task.Yield(); } ExampleNetworkedEntityView view = UnityEngine.Object.Instantiate((ExampleNetworkedEntityView)asyncItem.asset); if (view == null) { LSLog.LogError("Instantiated Object is not of VMENetworkedEntityView Type"); asyncItem = null; return; } RegisterNetworkedEntityView(entity, view); }