예제 #1
0
    // Actor ID -> which NPC to load from the database.
    void SpawnActor()
    {
        ActorSpawnToken token = new ActorSpawnToken();

        token.actorID  = actor.GetComponent <ActorNPC>().npcID;
        token.actorPos = transform.position;

        var evnt = SpawnActorEvent.Create();

        evnt.ActorSpawnToken = token;
        evnt.ActorPrefab     = actor.GetComponent <BoltEntity>().prefabId;

        Debug.Log("Spawning Actor " + actor.name);
        evnt.Send();
    }
예제 #2
0
    /// <summary>
    /// Spawns a player prefab with the given actor token.
    /// </summary>
    /// <param name="prefab"></param>
    /// <param name="token"></param>
    public void Spawn(Bolt.PrefabId prefab, ActorSpawnToken token)
    {
        if (!actor)
        {
            //actor = BoltNetwork.Instantiate(BoltPrefabs.Player, token);
            //actor = BoltNetwork.Instantiate(token.actorPrefab, token, token.actorPos, Quaternion.identity);
            actor = BoltNetwork.Instantiate(prefab, token, token.actorPos, Quaternion.identity);
        }

        // Server takes control of the char it spawns;
        // client is GIVEN control of the char it spawns.
        if (isServer)
        {
            Debug.Log("Server taking control of " + actor.prefabId);
            actor.TakeControl();
        }
        else
        {
            BoltConsole.Write("Server has NOT taken control of the actor.");
        }
    }