public void SetTarget(WorldObject worldObject)
    {
        // Unset old target.
        if (targetWorldObject != null)
        {
            WorldObjectText previousObjectText = targetWorldObject.GetComponentInParent <WorldObjectText>();
            if (previousObjectText != null)
            {
                previousObjectText.currentColor = WorldObjectText.DEFAULT_COLOR;
            }
        }

        // Set new target.
        targetWorldObject = worldObject;
        if (targetWorldObject != null)
        {
            WorldObjectText worldObjectText = targetWorldObject.GetComponentInParent <WorldObjectText>();
            if (worldObjectText != null)
            {
                worldObjectText.currentColor = WorldObjectText.SELECTED_COLOR;
            }

            // Send new target id to server.
            NetworkManager.ChannelSend(new TargetUpdateRequest(targetWorldObject.objectId));
        }
        else // Target has been unset.
        {
            NetworkManager.ChannelSend(new TargetUpdateRequest(-1));
        }

        // Update UI target information.
        StatusInformationManager.Instance.UpdateTargetInformation(targetWorldObject);
    }
示例#2
0
    private IEnumerator CreationQueueCoroutine()
    {
        while (true)
        {
            yield return(new WaitForSeconds(0.5f));

            lock (WorldManager.UPDATE_OBJECT_LOCK)
            {
                foreach (KeyValuePair <long, CharacterDataHolder> entry in _characterCreationQueue)
                {
                    // Object does not exist. Instantiate.
                    GameObject newObj = CreateCharacter(entry.Value).gameObject;

                    // Assign object id and name.
                    WorldObject worldObject = newObj.AddComponent <WorldObject>();
                    worldObject.SetObjectId(entry.Key);
                    worldObject.SetCharacterData(entry.Value);
                    WorldObjectText worldObjectText = newObj.AddComponent <WorldObjectText>();
                    worldObjectText.SetWorldObjectName(entry.Value.GetName());
                    worldObjectText.SetAttachedObject(newObj);
                    worldObjectText.SetWorldObject(worldObject);

                    ((IDictionary <long, GameObject>)WorldManager.Instance.GetGameObjects()).Remove(entry.Key);
                    WorldManager.Instance.GetGameObjects().TryAdd(entry.Key, newObj);

                    ((IDictionary <long, CharacterDataHolder>)_characterCreationQueue).Remove(entry.Key);
                }
            }
        }
    }
示例#3
0
    private IEnumerator CreationQueueCoroutine()
    {
        while (true)
        {
            yield return(new WaitForSeconds(0.5f));

            lock (WorldManager.updateObjectLock)
            {
                foreach (KeyValuePair <long, CharacterDataHolder> entry in characterCreationQueue)
                {
                    // Object does not exist. Instantiate.
                    GameObject newObj = CreateCharacter(entry.Value).gameObject;

                    // Assign object id and name.
                    WorldObject worldObject = newObj.AddComponent <WorldObject>();
                    worldObject.objectId      = entry.Key;
                    worldObject.characterData = entry.Value;
                    WorldObjectText worldObjectText = newObj.AddComponent <WorldObjectText>();
                    worldObjectText.worldObjectName = entry.Value.GetName();
                    worldObjectText.attachedObject  = newObj;
                    worldObjectText.worldObject     = worldObject;

                    ((IDictionary <long, GameObject>)WorldManager.Instance.gameObjects).Remove(entry.Key);
                    WorldManager.Instance.gameObjects.TryAdd(entry.Key, newObj);

                    ((IDictionary <long, CharacterDataHolder>)characterCreationQueue).Remove(entry.Key);
                }
            }
        }
    }
    private void Start()
    {
        Instance = this;

        gameObjects          = new ConcurrentDictionary <long, GameObject>();
        moveQueue            = new ConcurrentDictionary <long, MovementHolder>();
        animationQueue       = new ConcurrentDictionary <long, AnimationHolder>();
        characterUpdateQueue = new ConcurrentDictionary <long, CharacterDataHolder>();
        deleteQueue          = new List <long>();

        if (MainManager.Instance.selectedCharacterData != null)
        {
            // Create player character.
            activeCharacter = CharacterManager.Instance.CreateCharacter(MainManager.Instance.selectedCharacterData);

            // Set camera target.
            CameraController.Instance.target = activeCharacter.transform;

            // Animations.
            activeCharacter.gameObject.AddComponent <AnimationController>();

            // Movement.
            activeCharacter.gameObject.AddComponent <MovementController>();

            // Add name text.
            WorldObjectText worldObjectText = activeCharacter.gameObject.AddComponent <WorldObjectText>();
            worldObjectText.worldObjectName = ""; // MainManager.Instance.selectedCharacterData.GetName();
            worldObjectText.attachedObject  = activeCharacter.gameObject;

            // Send enter world to Network.
            NetworkManager.ChannelSend(new EnterWorldRequest(MainManager.Instance.selectedCharacterData.GetName()));
        }
    }
    private void Start()
    {
        if (Instance != null)
        {
            return;
        }
        Instance = this;

        gameObjects          = new ConcurrentDictionary <long, GameObject>();
        moveQueue            = new ConcurrentDictionary <long, MovementHolder>();
        animationQueue       = new ConcurrentDictionary <long, AnimationHolder>();
        characterUpdateQueue = new ConcurrentDictionary <long, CharacterDataHolder>();
        deleteQueue          = new List <long>();

        if (MainManager.Instance.selectedCharacterData != null)
        {
            // Create player character.
            activeCharacter = CharacterManager.Instance.CreateCharacter(MainManager.Instance.selectedCharacterData);
            // Tempfix.
            // TODO: Find why character initializes at 0, 0.
            // TODO: Try initialize with delay?
            Destroy(activeCharacter.gameObject);
            activeCharacter = CharacterManager.Instance.CreateCharacter(MainManager.Instance.selectedCharacterData);

            activeCharacter.gameObject.tag   = "Player";
            activeCharacter.gameObject.layer = 9;

            // Animations.
            activeCharacter.gameObject.AddComponent <AnimationController>();

            // Movement.
            activeCharacter.gameObject.AddComponent <MovementController>();

            // Add name text.
            WorldObjectText worldObjectText = activeCharacter.gameObject.AddComponent <WorldObjectText>();
            worldObjectText.worldObjectName = ""; // MainManager.Instance.selectedCharacterData.GetName();
            worldObjectText.attachedObject  = activeCharacter.gameObject;

            // Update status information.
            StatusInformationManager.Instance.UpdatePlayerInformation();

            // Send enter world to Network.
            NetworkManager.ChannelSend(new EnterWorldRequest(MainManager.Instance.selectedCharacterData.GetName()));

            // Send Character Inventory Request
            NetworkManager.ChannelSend(new CharacterInventoryRequest(MainManager.Instance.selectedCharacterData.GetName()));
        }
    }
    private void Start()
    {
        if (Instance != null)
        {
            return;
        }
        Instance = this;

        _gameObjects          = new ConcurrentDictionary <long, GameObject>();
        _moveQueue            = new ConcurrentDictionary <long, MovementHolder>();
        _animationQueue       = new ConcurrentDictionary <long, AnimationHolder>();
        _characterUpdateQueue = new ConcurrentDictionary <long, CharacterDataHolder>();
        _deleteQueue          = new List <long>();

        if (MainManager.Instance.GetSelectedCharacterData() != null)
        {
            // Create player character.
            _activeCharacter = CharacterManager.Instance.CreateCharacter(MainManager.Instance.GetSelectedCharacterData());
            // Tempfix.
            // TODO: Find why character initializes at 0, 0.
            // TODO: Try initialize with delay?
            Destroy(_activeCharacter.gameObject);
            _activeCharacter = CharacterManager.Instance.CreateCharacter(MainManager.Instance.GetSelectedCharacterData());

            // Animations.
            _activeCharacter.gameObject.AddComponent <AnimationController>();

            // Movement.
            _activeCharacter.gameObject.AddComponent <MovementController>();

            // Add name text.
            WorldObjectText worldObjectText = _activeCharacter.gameObject.AddComponent <WorldObjectText>();
            worldObjectText.SetWorldObjectName(""); // MainManager.Instance.selectedCharacterData.GetName();
            worldObjectText.SetAttachedObject(_activeCharacter.gameObject);

            // Update status information.
            StatusInformationManager.Instance.UpdatePlayerInformation();

            // Send enter world to Network.
            NetworkManager.SendPacket(new EnterWorldRequest(MainManager.Instance.GetSelectedCharacterData().GetName()));
        }
    }