public static void SpawnPlayer(Client client, GamePosition positionToSpawn = null, Action callback = null)
        {
            CharacterData characterData = client.GetData(CharacterData.CHARACTER_DATA_KEY);


            if (positionToSpawn == null)
            {
                if (characterData.GetPosition() == null)
                {
                    positionToSpawn = GetRandomSpawnPoint();
                }
                else
                {
                    positionToSpawn = new GamePosition();
                    positionToSpawn.SetPosition(characterData.GetPosition());
                    positionToSpawn.Heading = characterData.Heading.HasValue ? characterData.Heading.Value : 0;
                }
            }

            NAPI.Player.SpawnPlayer(client, positionToSpawn.GetPosition(), positionToSpawn.GetHeading());
            if (callback != null)
            {
                callback();
            }
        }