Example #1
0
    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);
    }
Example #2
0
    /// <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);
    }
Example #3
0
    /// <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);
    }