예제 #1
0
        public void UseWithJoystick()
        {
            if (CanUseAbility)
            {
                if (_tpBack == null)
                {
                    var instantiatedItem = BoltNetwork.Instantiate(_tPBackSettings.Prefab);

                    var throwable = instantiatedItem.GetComponent <Throwable>();
                    _tpBack      = instantiatedItem.GetComponent <TPBackBehaviour>();
                    _tpBack.Kart = transform.root;
                    if (_throwingDirection.CurrentDirection == Direction.Default)
                    {
                        _throwableLauncher.Throw(throwable, Direction.Backward);
                    }
                    else
                    {
                        _throwableLauncher.Throw(throwable, _throwingDirection.CurrentDirection);
                    }
                }
                else // if (_tpBack.IsEnabled())
                {
                    StartCoroutine(CooldownRoutine());
                    StartCoroutine(BlinkTpBack());
                }
            }
        }
예제 #2
0
        public static void SpawnPlayerAtPosition(Player player, Vector3 position, Quaternion rotation)
        {
            //Make sure player controlled entities are destroyed.
            PlayerManager.Instance.DestroyPlayerControlledEntities(player);

            LoadOut loadOut = new LoadOut();

            loadOut.itemNames = new string[] { "Scout", "PlasmaFusor", "GrenadeLauncher", "ChainGun" };

            LoadOutToken loadOutToken = new LoadOutToken(loadOut);

            GameObject baseMech = DatabaseManager.Instance.PrefabDatabase.GetPrefabByName("BaseMech");
            BoltEntity entity   = BoltNetwork.Instantiate(baseMech, loadOutToken, position, rotation);

            if (entity != null)
            {
                Unit unit = entity.GetComponent <Unit>();
                unit.Setup(player.guid, player.teamId);
                unit.gameObject.AddComponent <AbilityVelocityRedirection>();

                if (player.connection == null)
                {
                    entity.TakeControl();
                }
                else
                {
                    entity.AssignControl(player.connection);
                }

                player.SetControlledEntity(entity);
            }
        }
예제 #3
0
    public override void SceneLoadLocalDone(string map)
    {
        PlayerObjectRegistry.ServerPlayer.Spawn();
        var game = BoltNetwork.Instantiate(BoltPrefabs.Game);

        GameManager.Instance.Game = game.GetComponent <GameBehaviour>();
    }
예제 #4
0
 private void Start()
 {
     if (PlayerPrefs.GetInt("LOGSPAWN_ENABLED", 1) == 1)
     {
         BoltNetwork.Instantiate(BoltPrefabs.Log, base.transform.position, base.transform.rotation);
     }
 }
예제 #5
0
        public override void SceneLoadLocalDone(string scene, IProtocolToken token)
        {
            var entity = BoltNetwork.Instantiate(BoltPrefabs.MoveAndShootPlayer, SpawnPointsManager.GetSpawnPosition(),
                                                 Quaternion.identity);

            entity.TakeControl();
        }
예제 #6
0
    public override void Attached()
    {
        if (entity.IsOwner)
        {
            tempGameBase = BoltNetwork.Instantiate(
                gameBasePrefab,
                transform.TransformPoint(Vector3.zero),
                transform.localRotation
                );
            tempGameBase.transform.parent = transform;

            tempArCube = BoltNetwork.Instantiate(
                arCubePrefab,
                transform.TransformPoint(new Vector3(0.86f, 0.917f, 0.45f)),
                transform.localRotation
                );
            tempArCube.transform.parent = transform;
            tempArCube = BoltNetwork.Instantiate(
                arCubePrefab,
                transform.TransformPoint(new Vector3(-0.879f, 1.189f, -0.198f)),
                transform.localRotation
                );
            tempArCube.transform.parent = transform;
            tempArCube = BoltNetwork.Instantiate(
                arCubePrefab,
                transform.TransformPoint(new Vector3(0.273f, 1.55f, -0.253f)),
                transform.localRotation
                );
            tempArCube.transform.parent = transform;
        }
    }
예제 #7
0
    public void PickupPart()
    {
        if (BoltNetwork.IsRunning)
        {
            BoltEntity entity = pickup.GetComponent <BoltEntity>();

            if (!entity.IsOwner)
            {
                Vector3    pos    = entity.gameObject.transform.position;
                Quaternion rot    = entity.gameObject.transform.rotation;
                int        tempID = entity.gameObject.GetComponent <Part>().TemplateID;

                var destroy = BlockDestroy.Create(entity);
                destroy.Send();

                PartToken token = new PartToken();
                token.TemplateID = tempID;
                //token.Free = true;
                //token.Position = pos;
                //token.Rotation = rot;

                GameObject go = BoltNetwork.Instantiate(BoltPrefabs.AbstractBlock, token, pos, rot);
                pickup = go;
            }
        }

        Pickup();
    }
예제 #8
0
    void Die()
    {
        BoltNetwork.Destroy(gameObject);

        var spawnPosition = new Vector3(Random.Range(-5f, 5f), Random.Range(15f, 30f), 0f);
        var player        = BoltNetwork.Instantiate(BoltPrefabs.Vampire, spawnPosition, Quaternion.identity);
    }
예제 #9
0
    private void Update()
    {
        if (!connected)
        {
            return;
        }

        if (newPosRecv)
        {
            float thisTime = Time.time * 1000;
            float dif      = thisTime - lastTime;
            Debug.Log("Received camera position at " + Time.time * 1000 + " ms with a delta of " + dif + " ms");
            lastTime   = thisTime;
            newPosRecv = false;
        }

        if (shouldSpawnSphere)
        {
            shouldSpawnSphere = false;
            var obj = BoltNetwork.Instantiate(BoltPrefabs.Sphere, spawnPos, Quaternion.identity);
        }

        RenderCamera.position    = cameraPos;
        RenderCamera.eulerAngles = cameraRot;

        //SpherePos = ballGO.transform.position;
    }
예제 #10
0
        public override void Connected(BoltConnection connection)
        {
            if (BoltNetwork.IsClient)
            {
                BoltConsole.Write("Connected Client: " + connection, Color.blue);
                infoPanel.gameObject.SetActive(false);
                string prevMatch = PreviousMatchName();
                BoltConsole.Write("Previous match if any: " + prevMatch);

                if (prevMatch != matchName)
                {
                    BoltConsole.Write("New Game");
                    ChangeTo(lobbyPanel);
                }
                else
                {
                    BoltConsole.Write("Joining previous match");
                    var returnPlayerEvnt = ReturnPlayerEvent.Create(Bolt.GlobalTargets.OnlyServer);
                    returnPlayerEvnt.Send();
                }
            }
            else if (BoltNetwork.IsServer)
            {
                BoltConsole.Write("Connected Server: " + connection, Color.blue);
                BoltEntity entity = BoltNetwork.Instantiate(BoltPrefabs.CharacterSelectionEntity);
                entity.AssignControl(connection);
                int numPlayers     = gameStateEntity.GetComponent <NetworkGameState>().onPlayerJoined();
                var playerTurnEvnt = PlayerJoinedEvent.Create(Bolt.GlobalTargets.Everyone);
                playerTurnEvnt.numOfPlayers = numPlayers;
                playerTurnEvnt.Send();
            }
        }
예제 #11
0
 // Spawner
 private void SpawnGamePlayer()
 {
     playerEntity = BoltNetwork.Instantiate(BoltPrefabs.LocalPlayer);
     playerEntity.TakeControl();
     CrisisHandler.instance.CallCrisis(NetworkGameState.instance.getCurrentCrisis());
     playerEntity.GetComponent <Player>().setup(localPlayerSpellcasterID);
 }
예제 #12
0
    public GameObject SpawnTower(TowerType towerType, PlayerObject player, Vector3 position)
    {
        TowerData data = DataManager.Instance.GetTowerData(towerType);

        Vector2Int coord = GridManager.Instance.GetCoordFromPosition(position);

        if (GridManager.Instance.IsEmpty(coord.x, coord.y) && player.behavior.state.Gold >= data.cost)
        {
            var tower = BoltNetwork.Instantiate(BoltPrefabs.BaseTower);
            tower.transform.position = position;

            if (GridManager.Instance.CanPlaceObject(tower))
            {
                GridManager.Instance.SetEmpty(coord.x, coord.y, false);
                player.behavior.state.Gold -= data.cost;
                SetControl(player, tower);
                _towers.Add(tower);
                tower.GetComponent <TowerBehaviour>().Init_Server(data);
                return(tower);
            }
            else
            {
                BoltNetwork.Destroy(tower);
            }
        }
        return(null);
    }
예제 #13
0
 private void Spawn()
 {
     if (transform.position.z < -5)
     {
         var        spawnPosition = new Vector3(transform.position.x, 0.5f, transform.position.z - 2);
         GameObject wallClone     = BoltNetwork.Instantiate(BoltPrefabs.wall_Y_axis, spawnPosition, transform.rotation);
     }
     else
     if (transform.position.z > 5)
     {
         var        spawnPosition = new Vector3(transform.position.x, 0.5f, transform.position.z + 2);
         GameObject wallClone     = BoltNetwork.Instantiate(BoltPrefabs.wall_Y_axis, spawnPosition, transform.rotation);
     }
     else
     if (transform.position.x < 0)
     {
         var        spawnPosition = new Vector3(transform.position.x - 2, 0.5f, transform.position.z);
         GameObject wallClone     = BoltNetwork.Instantiate(BoltPrefabs.wall_X_axis, spawnPosition, transform.rotation);
     }
     else
     {
         var        spawnPosition = new Vector3(transform.position.x + 2, 0.5f, transform.position.z);
         GameObject wallClone     = BoltNetwork.Instantiate(BoltPrefabs.wall_X_axis, spawnPosition, transform.rotation);
     }
 }
예제 #14
0
    static Toolset InitializeController(GameObject preFab, Vector3 pos)
    {
        GameObject controller = Instantiate(preFab, pos, Quaternion.identity);

        ControllerReferences.Toolset          = controller.GetComponentInChildren <Toolset>();
        ControllerReferences.ControllerTarget = ControllerReferences.Toolset.ControllerTarget;
        ControllerReferences.Controller       = controller;

        if (ControllerReferences.ControllerTarget == null)
        {
            Debug.LogError("Controller Target not found");
        }
        Time.timeScale = 1;

        if (BoltNetwork.IsRunning)
        {
            GameObject          model   = BoltNetwork.Instantiate(BoltPrefabs.VR_character, new Vector3(0, 1, 2), Quaternion.identity);
            NetworkModelBinding binding = model.GetComponent <NetworkModelBinding>();

            ControllerReferences.MultiplayerCharacter = model;
            binding.Controller = GameObject.Find("FollowHead").gameObject;

            if (ControllerReferences.MultiPlayerRole != null && ControllerReferences.MultiPlayerRole != "")
            {
                binding.MultiplayerName = ControllerReferences.MultiPlayerName + "\n(" + ControllerReferences.MultiPlayerRole + ")";
            }
            else
            {
                binding.MultiplayerName = ControllerReferences.MultiPlayerName;
            }
        }

        return(controller.GetComponentInChildren <Toolset>());
    }
예제 #15
0
    private void doFastBuild()
    {
        GameObject gameObject;

        if (BoltNetwork.isRunning)
        {
            gameObject = BoltNetwork.Instantiate(this.buildThis, base.transform.position, base.transform.rotation).gameObject;
        }
        else
        {
            gameObject = UnityEngine.Object.Instantiate <GameObject>(this.buildThis, base.transform.position, base.transform.rotation);
        }
        if (gameObject && this.newBuildingDamage > 0f)
        {
            gameObject.GetComponent <BuildingHealth>().DamageOnly(new LocalizedHitData
            {
                _damage = this.newBuildingDamage
            }, 0);
        }
        if (gameObject && this.TreeId > -1)
        {
            gameObject.GetComponent <TreeStructure>().TreeId = this.TreeId;
        }
        UnityEngine.Object.Destroy(base.gameObject);
    }
예제 #16
0
 public override void Attached()
 {
     this.chunks = (from x in base.GetComponentsInChildren <TreeCutChunk>()
                    orderby int.Parse(x.transform.parent.gameObject.name)
                    select x).ToArray <TreeCutChunk>();
     base.state.AddCallback("TreeId", delegate
     {
         CoopTreeId coopTreeId = CoopPlayerCallbacks.AllTrees.FirstOrDefault((CoopTreeId x) => x.Id == base.state.TreeId);
         if (coopTreeId)
         {
             LOD_Trees component = coopTreeId.GetComponent <LOD_Trees>();
             if (component)
             {
                 component.enabled   = false;
                 component.DontSpawn = true;
                 if (component.CurrentView)
                 {
                     component.Pool.Despawn(component.CurrentView.transform);
                     component.CurrentView         = null;
                     component.CurrentLodTransform = null;
                 }
             }
         }
     });
     base.state.AddCallback("Damage", delegate
     {
         if (base.entity.isOwner && base.state.Damage == 16f)
         {
             base.entity.DestroyDelayed(10f);
             BoltEntity boltEntity = BoltNetwork.Instantiate(this.CoopTree.NetworkFallPrefab, base.entity.transform.position, base.entity.transform.rotation);
             boltEntity.GetState <ITreeFallState>().CutTree = base.entity;
             boltEntity.GetComponent <Rigidbody>().AddForce(new Vector3(UnityEngine.Random.value * 0.01f, 0f, UnityEngine.Random.value * 0.01f), ForceMode.VelocityChange);
         }
     });
 }
예제 #17
0
        public override void SceneLoadLocalDone(string scene)
        {
            //Instantiate over network
            GameObject player = BoltNetwork.Instantiate(BoltPrefabs.PlayerCharacter);

            Globals.LocalPlayer = player.GetComponent <ViewPlayer>();
        }
예제 #18
0
        public override void SceneLoadLocalDone(string scene)
        {
            var spawnPosition = Health.RandomSpawn();

            // instantiate cube
            BoltNetwork.Instantiate(BoltPrefabs.MainPlayer, spawnPosition, Quaternion.identity);
        }
예제 #19
0
 public BoltEntity SpawnPlayer()
 {
     if (PlayerEntity == null)
     {
         if (SpawnManager.HasSpawnPoints)
         {
             PlayerEntity = BoltNetwork.Instantiate(BoltPrefabs.Player, SpawnManager.GetSpawnPoint(), Quaternion.identity);
         }
         else
         {
             PlayerEntity = BoltNetwork.Instantiate(BoltPrefabs.Player);
             PlayerEntity.gameObject.SetActive(false);
         }
         if (PlayerEntity.gameObject.activeSelf)
         {
             if (IsServer)
             {
                 PlayerEntity.TakeControl();
             }
             else
             {
                 PlayerEntity.AssignControl(Connection);
             }
         }
     }
     return(PlayerEntity);
 }
예제 #20
0
    public override void SceneLoadLocalDone(string scene)
    {
        var spawnPos = new Vector3(Random.Range(-8, 8), 0, Random.Range(-8, 8));

        //instantiate for all players
        BoltNetwork.Instantiate(cubePrefab, spawnPos, Quaternion.identity);
    }
예제 #21
0
 private void GrabbedByChanged()
 {
     if (base.state.GrabbedBy)
     {
         if (base.state.GrabbedBy == LocalPlayer.Entity)
         {
             BoltEntity        boltEntity           = BoltNetwork.Instantiate(BoltPrefabs.MultiSledBuilt, base.transform.position, base.transform.rotation);
             IMultiHolderState state                = boltEntity.GetState <IMultiHolderState>();
             MultiHolder[]     componentsInChildren = boltEntity.GetComponentsInChildren <MultiHolder>(true);
             if (componentsInChildren.Length > 0)
             {
                 componentsInChildren[0]._contentActual     = base.state.LogCount;
                 componentsInChildren[0]._contentTypeActual = (MultiHolder.ContentTypes)base.state.ContentType;
                 componentsInChildren[0].ItemCountChangedMP();
                 state.Replaces = base.entity;
                 state.LogCount = base.state.LogCount;
                 state.Body0    = base.state.Body0;
                 state.Body1    = base.state.Body1;
                 state.Body2    = base.state.Body2;
             }
         }
     }
     else
     {
         MultiHolder[] componentsInChildren2 = base.GetComponentsInChildren <MultiHolder>(true);
         if (componentsInChildren2.Length > 0)
         {
             componentsInChildren2[0].ItemCountChangedMP();
         }
     }
 }
예제 #22
0
    public override void UpdateAbility(bool button)
    {
        base.UpdateAbility(button);

        if (_buttonDown && _timer + _abilityInterval <= BoltNetwork.ServerFrame && (state.Energy - _cost) >= 0)
        {
            _timer = BoltNetwork.ServerFrame;

            if (entity.HasControl)
            {
                _UI_cooldown.StartCooldown();
            }

            if (entity.IsOwner)
            {
                state.Energy -= _cost;

                RaycastHit hit;
                if (Physics.Raycast(_cam.position, _cam.transform.forward, out hit, _maxDistance, _layerMask))
                {
                    BoltNetwork.Instantiate(BoltPrefabs.Medikit, hit.point, Quaternion.identity).GetComponent <AOE>().laucher = GetComponent <PlayerMotor>();
                }
                else
                {
                    BoltNetwork.Instantiate(BoltPrefabs.Medikit, transform.position, Quaternion.identity).GetComponent <AOE>().laucher = GetComponent <PlayerMotor>();
                }
            }
        }
    }
예제 #23
0
        public override void SceneLoadRemoteDone(BoltConnection connection, IProtocolToken token)
        {
            var entity = BoltNetwork.Instantiate(BoltPrefabs.MoveAndShootPlayer, SpawnPointsManager.GetSpawnPosition(),
                                                 Quaternion.identity);

            entity.AssignControl(connection);
        }
예제 #24
0
        public override void BoltStartDone()
        {
            if (!BoltNetwork.IsRunning)
            {
                return;
            }

            if (BoltNetwork.IsServer)
            {
                RoomProtocolToken token = new RoomProtocolToken()
                {
                    ArbitraryData = "My DATA",
                };

                BoltLog.Info("Starting Server");
                // Start Photon Room
                BoltNetwork.SetServerInfo(_matchName, token);

                // Setup Host
                infoPanel.gameObject.SetActive(false);
                ChangeTo(lobbyPanel);

                backDelegate = Stop;
                SetServerInfo("Host", "");

                // Build Server Entity
                BoltEntity entity = BoltNetwork.Instantiate(BoltPrefabs.PlayerInfo);
                entity.TakeControl();
            }
            else if (BoltNetwork.IsClient)
            {
                backDelegate = Stop;
                SetServerInfo("Client", "");
            }
        }
예제 #25
0
        // ------------------------------------------------- //

        public void SpawnPlayer(string name)
        {
            Debug.Log("[GAME] Spawn " + name);

            // Get random spawn point for local player.
            // FOR DEBUG
            Transform spawnPoint;

            if (BoltNetwork.IsServer)
            {
                spawnPoint = spawnPoints.PlayerSpawns[1];
            }
            else if (BoltNetwork.IsClient)
            {
                spawnPoint = spawnPoints.PlayerSpawns[0];
            }
            else
            {
                spawnPoint = GetRandomSpawnPoint();
            }

            // Create player. They should have control immediately.
            // The static BoltPrefabs class is compiled and updated by Bolt, and
            // contains a unique reference to each prefab with a Bolt Entity on it.
            // You can also pass in a normal GameObject reference instead.
            var player = BoltNetwork.Instantiate(BoltPrefabs.FPSController, spawnPoint.position, spawnPoint.rotation);

            player.name = name;
        }
예제 #26
0
 public override void SceneLoadLocalDone(string scene, IProtocolToken token)
 {
     if (BoltNetwork.IsServer)
     {
         BoltNetwork.Instantiate(prefabEntity.gameObject, transform.position, Quaternion.identity);
     }
 }
예제 #27
0
        public void FireIonBeam()
        {
            if (!_isFiring && entity.isOwner)
            {
                Vector3 camPosition = _ionBeamCam.transform.position;
                _ionBeamCam.GetComponent <IonBeamCamera>().enabled    = false;
                _ionBeamCam.GetComponentInChildren <Camera>().enabled = false;

                var ionBeamLaser = BoltNetwork.Instantiate(ionBeamLaserPrefab, new Vector3(camPosition.x, 0, camPosition.z), Quaternion.identity);
                var itemState    = ionBeamLaser.GetComponent <BoltEntity>().GetState <IItemState>();
                itemState.OwnerID = _ionBeamOwnership.OwnerID;

                var laserOwnership = ionBeamLaser.GetComponent <Ownership>();
                laserOwnership.Label         = _ionBeamOwnership.Label;
                laserOwnership.OwnerID       = _ionBeamOwnership.OwnerID;
                laserOwnership.OwnerNickname = _ionBeamOwnership.OwnerNickname;
                laserOwnership.Team          = _ionBeamOwnership.Team;

                ItemThrown itemThrownEvent = ItemThrown.Create();
                itemThrownEvent.OwnerNickname = _ionBeamOwnership.OwnerNickname;
                itemThrownEvent.OwnerID       = _ionBeamOwnership.OwnerID;
                itemThrownEvent.Team          = (int)_ionBeamOwnership.Team;
                itemThrownEvent.Entity        = ionBeamLaser;
                itemThrownEvent.Send();

                ionBeamLaser.transform.position = new Vector3(_ionBeamCam.transform.position.x, ionBeamLaser.transform.position.y, _ionBeamCam.transform.position.z);
                _ionBeamCam.IonBeamCameraBehaviour(false);
                if (entity.isOwner)
                {
                    StartCoroutine(DelayBeforeInputsChange());
                }
                _isFiring = true;
            }
        }
    public void Spawn()
    {
        if (!character)
        {
            // assign the colors/numbers etc for the player.
            var playerToken = new PlayerToken();
            playerToken.playerNumber = playerNumber;
            playerToken.playerColor  = playerColor;
            playerToken.playerName   = playerName;

            character = BoltNetwork.Instantiate(BoltPrefabs.PlayerMultiplayer, playerToken);

            if (IsServer)
            {
                character.TakeControl();
            }
            else
            {
                character.AssignControl(connection);
            }

            // move entity to random spawn position
            character.transform.position = GamemanagerNetwork.instance.RandomSpawnPoint();
        }
    }
예제 #29
0
 private void OnDestroy()
 {
     if (this._replaceByPrefab && (!this._onlyIfActive || base.gameObject.activeSelf) && Prefabs.Instance && !BoltNetwork.isClient)
     {
         Transform parent = base.transform.parent;
         if (BoltNetwork.isServer && this._replaceByPrefab.GetComponent <BoltEntity>())
         {
             if (this._oneFrameDelay)
             {
                 Prefabs.Instance.SpawnNextFrameMP(this._replaceByPrefab, base.transform.position, base.transform.rotation, parent);
             }
             else
             {
                 BoltEntity boltEntity = BoltNetwork.Instantiate(this._replaceByPrefab.gameObject, base.transform.position, base.transform.rotation);
                 if (parent)
                 {
                     boltEntity.transform.parent = parent;
                 }
             }
         }
         else if (this._oneFrameDelay)
         {
             Prefabs.Instance.SpawnNextFrame(this._replaceByPrefab, base.transform.position, base.transform.rotation, parent);
         }
         else
         {
             Transform transform = (Transform)UnityEngine.Object.Instantiate(this._replaceByPrefab, base.transform.position, base.transform.rotation);
             if (parent)
             {
                 transform.parent = parent;
             }
         }
     }
 }
예제 #30
0
    void Update()
    {
        enemyTimeLeft -= BoltNetwork.FrameDeltaTime;
        coinTimeLeft  -= BoltNetwork.FrameDeltaTime;
        if (enemyTimeLeft < 0)
        {
            while (Mathf.Abs(randPosX) < 15 && Mathf.Abs(randPosY) < 15)
            {
                randPosX = Random.Range(-25, 25);
                randPosY = Random.Range(-25, 25);
            }
            var enemySpawnPosition = new Vector3(randPosX, 0.5f, randPosY);
            BoltNetwork.Instantiate(BoltPrefabs.Enemy, enemySpawnPosition, Quaternion.identity);
            if (difficultyTimer < 10)
            {
                enemyTimeLeft    = 5.0f;
                difficultyTimer += 1;
            }
            else
            {
                enemyTimeLeft = 3.0f;
            }
            randPosX = 0;
            randPosY = 0;
        }

        if (coinTimeLeft < 0)
        {
            var coinSpawnPosition = new Vector3(Random.Range(-10, 10), 0.25f, Random.Range(-10, 10));
            BoltNetwork.Instantiate(BoltPrefabs.Coin, coinSpawnPosition, Quaternion.identity);
            coinTimeLeft = 2.0f;
        }
    }