Esempio n. 1
0
        private void DestroySelf()
        {
            DestroyEntity destroyEntityEvent = DestroyEntity.Create();

            destroyEntityEvent.Entity = entity;
            destroyEntityEvent.Send();
        }
Esempio n. 2
0
 public override void OnEvent(DestroyEntity evnt)
 {
     if (evnt.Entity != null &&
         evnt.Entity.IsOwner)
     {
         BoltNetwork.Destroy(evnt.Entity);
     }
 }
Esempio n. 3
0
        IEnumerator SelfDestruct(float wallDuration)
        {
            yield return(new WaitForSeconds(wallDuration));

            DestroyEntity destroyEntityEvent = DestroyEntity.Create();

            destroyEntityEvent.Entity = GetComponent <BoltEntity>();
            destroyEntityEvent.Send();
        }
Esempio n. 4
0
        private IEnumerator DestroyAfterXSeconds(float x)
        {
            yield return(new WaitForSeconds(x));

            DestroyEntity destroyEntityEvent = DestroyEntity.Create();

            destroyEntityEvent.Entity = entity;
            destroyEntityEvent.Send();
        }
Esempio n. 5
0
        protected override JobHandle OnUpdate(JobHandle inputDeps)
        {
            var job = new DestroyEntity
            {
                CommandBuffer = m_Barrier.CreateCommandBuffer().ToConcurrent()
            }.Schedule(this, inputDeps);

            m_Barrier.AddJobHandleForProducer(job);
            return(job);
        }
Esempio n. 6
0
        async Task IHandle <DestroyEntity> .Handle(DestroyEntity message)
        {
            await AttachedObject.Tell(Disable.Default);

            AttachedObject.QueueOperation(() =>
            {
                AttachedObject.Destroy();
                return(Task.CompletedTask);
            });
        }
        Task IHandle <DestroyEntity> .Handle(DestroyEntity message)
        {
            if (AttachedObject.EntityId != 0)
            {
                return(AttachedObject.GetComponent <ChunkEventBroadcastComponent>().GetGenerator()
                       .DestroyEntities(new[] { AttachedObject.EntityId }));
            }

            return(Task.CompletedTask);
        }
Esempio n. 8
0
        /*
         * private void OnTriggerEnter(Collider other)
         * {
         *  if (BoltNetwork.IsServer && entity.isAttached)
         *  {
         *      if (other.gameObject.CompareTag(Constants.Tag.ItemCollisionHitBox)) // It is an item collision
         *      {
         *          var itemCollisionTrigger = other.GetComponent<ItemCollisionTrigger>();
         *
         *          if (itemCollisionTrigger.ItemCollision.HitsPlayer) // It is an item that damages the player
         *          {
         *              BoltEntity itemEntity = other.GetComponentInParent<BoltEntity>();
         *              Ownership itemOwnership = itemEntity.GetComponent<Ownership>();
         *
         *              if (itemEntity.isAttached) // It is a concrete item & it is attached
         *              {
         *                //   Hit Ourself
         *                //  if (itemState.OwnerID == state.OwnerID)
         *                //  {
         *                //      if (itemCollisionTrigger.ItemCollision.ItemName == ItemCollisionName.Disk)
         *                //      {
         *                //          if (other.GetComponentInParent<DiskBehaviour>().CanHitOwner)
         *                //          {
         *                //              if (!_health.IsInvincible) // The server checks that this kart is not invincible
         *                //              {
         *                //                  SendPlayerHitEvent(itemState);
         *                //              }
         *                //              DestroyColliderObject(other);
         *                //          }
         *                //      }
         *                //  }
         *
         *                  if ((int)itemOwnership.Team != state.Team)
         *                  {
         *                      if (!_health.IsInvincible) // The server checks that this kart is not invincible
         *                      {
         *                          SendPlayerHitEvent(itemOwnership);
         *                      }
         *                      DestroyColliderObject(other);
         *                  }
         *              }
         *          }
         *      }
         *  }
         * } */

        private void DestroyColliderObject(Collider other)
        {
            var otherItemCollision = other.GetComponent <ItemCollisionTrigger>().ItemCollision;

            if (otherItemCollision.ShouldBeDestroyed(_itemCollision) &&
                otherItemCollision.ItemName != ItemCollisionName.IonBeamLaser)    // The item should be destroyed
            {
                DestroyEntity destroyEntityEvent = DestroyEntity.Create();
                destroyEntityEvent.Entity = other.GetComponentInParent <BoltEntity>();
                destroyEntityEvent.Send();
            }
        }
Esempio n. 9
0
        //PRIVATE

        private void OnTriggerEnter(Collider other)
        {
            if (BoltNetwork.IsServer)
            {
                if (other.gameObject.CompareTag(Constants.Tag.ItemCollisionHitBox)) // It is an item collision
                {
                    if (other.GetComponentInParent <NetworkDestroyable>())
                    {
                        var itemNetworkDestroyable = other.GetComponentInParent <NetworkDestroyable>();
                        itemNetworkDestroyable.DestroyObject();
                    }

                    StopAllCoroutines();
                    DestroyEntity destroyEntityEvent = DestroyEntity.Create();
                    destroyEntityEvent.Entity = GetComponent <BoltEntity>();
                    destroyEntityEvent.Send();
                }
            }
        }
Esempio n. 10
0
 public void DestroyObject(float timeBeforeDestroy = 0f)
 {
     if (BoltNetwork.IsConnected && entity.isAttached && BoltNetwork.IsServer)
     {
         if (timeBeforeDestroy != 0)
         {
             StartCoroutine(DestroyAfterXSeconds(timeBeforeDestroy));
         }
         else
         {
             DestroyEntity destroyEntityEvent = DestroyEntity.Create();
             destroyEntityEvent.Entity = entity;
             destroyEntityEvent.Send();
         }
     }
     else if (!BoltNetwork.IsConnected)
     {
         MonoBehaviour.Destroy(gameObject, timeBeforeDestroy);
     }
 }
Esempio n. 11
0
        //PRIVATE

        private void OnCollisionEnter(Collision collision)
        {
            if (BoltNetwork.IsServer)
            {
                if (collision.gameObject.layer == LayerMask.NameToLayer(Constants.Layer.Ground))
                {
                    CanHitOwner = true;
                    Vector3 contactPoint = collision.contacts[0].point;
                    CollisionParticles.transform.position = contactPoint;
                    CollisionParticles.Emit(ParticlesToEmit);
                    ReboundsBeforeEnd--;
                    PlayCollisionSound();

                    if (ReboundsBeforeEnd <= 0)
                    {
                        DestroyEntity destroyEntityEvent = DestroyEntity.Create();
                        destroyEntityEvent.Entity = entity;
                        destroyEntityEvent.Send();
                    }
                }
            }
        }
Esempio n. 12
0
        private IEnumerator LaserDuration(float duration)
        {
            yield return(new WaitForSeconds(_laserSettings.CollisionDuration));

            if (_laserCollider)
            {
                _laserCollider.enabled = false;
            }
            yield return(new WaitForSeconds(_laserSettings.FlashDuration));

            if (_laserRenderer)
            {
                _laserRenderer.enabled = false;
            }
            // if (_laserColliderBack)
            //     _laserColliderBack.enabled = false;
            yield return(new WaitForSeconds(duration));

            DestroyEntity destroyEntityEvent = DestroyEntity.Create();

            destroyEntityEvent.Entity = entity;
            destroyEntityEvent.Send();
        }
Esempio n. 13
0
 async Task IHandle <DestroyEntity> .Handle(DestroyEntity message)
 {
     await AttachedObject.Tell(Disable.Default);
 }
Esempio n. 14
0
        public void NetThread()
        {
            SessionIDRequest sessionID = new SessionIDRequest(Storage.Network.UserName, Storage.Network.Password);

            sessionID.SendRequest();

            SharedSecretGenerator sharedSecret = new SharedSecretGenerator();              //random byte[16] gen

            Timer positionUpdater = new Timer(PositionSender, null, Timeout.Infinite, 50); //create position updater

            Socket networkSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            networkSocket.Connect(Storage.Network.Server, Storage.Network.Port);
            _stream = new EnhancedStream(networkSocket);

            Handshake handshake = new Handshake(_stream);

            handshake.Send(Storage.Network.UserName, Storage.Network.Server, Storage.Network.Port); // connect

            Storage.Network.IsConnected = true;

            while (Storage.Network.IsConnected)
            {
                switch (_packetIDbuffer = (byte)_stream.ReadByte())
                {
                case 0x00:
                    KeepAlive keepAlive = new KeepAlive(_stream);
                    break;

                case 0x01:
                    LoginRequest loginRequest = new LoginRequest(_stream);
                    //positionUpdater.Change(0, 50);
                    ClientSettings clientSettings = new ClientSettings(_stream);
                    clientSettings.Send();
                    break;

                case 0x03:
                    ChatMessage chatMessage = new ChatMessage(_stream);
                    break;

                case 0x04:
                    TimeUpdate timeUpdate = new TimeUpdate(_stream);
                    break;

                case 0x05:
                    EntityEquipment entityEquipment = new EntityEquipment(_stream);
                    break;

                case 0x06:
                    SpawnPosition spawnPosition = new SpawnPosition(_stream);
                    break;

                case 0x08:
                    UpdateHealth updateHealth = new UpdateHealth(_stream);
                    break;

                case 0x09:
                    RespawnPacket respawnPacket = new RespawnPacket(_stream);
                    break;

                case 0x0D:
                    _playerPositionLook = new PlayerPositionLook(_stream);
                    break;

                case 0x10:
                    HeldItemChange heldItemChange = new HeldItemChange(_stream);
                    break;

                case 0x11:
                    UseBed useBed = new UseBed(_stream);
                    break;

                case 0x12:
                    Animation animation = new Animation(_stream);
                    break;

                case 0x14:
                    SpawnNamedEntity spawnNamedEntity = new SpawnNamedEntity(_stream);
                    break;

                case 0x16:
                    CollectItem collectItem = new CollectItem(_stream);
                    break;

                case 0x17:
                    SpawnObjectVehicle spawnObjectVehicle = new SpawnObjectVehicle(_stream);
                    break;

                case 0x18:
                    SpawnMob spawnMob = new SpawnMob(_stream);
                    break;

                case 0x19:
                    SpawnPainting spawnPainting = new SpawnPainting(_stream);
                    break;

                case 0x1A:
                    SpawnExperienceOrb spawnExperienceOrb = new SpawnExperienceOrb(_stream);
                    break;

                case 0x1C:
                    EntityVelocity entityVelocity = new EntityVelocity(_stream);
                    break;

                case 0x1D:
                    DestroyEntity destroyEntity = new DestroyEntity(_stream);
                    break;

                case 0x1E:
                    Entity entity = new Entity(_stream);
                    break;

                case 0x1F:
                    EntityRelativeMove entityRelativeMove = new EntityRelativeMove(_stream);
                    break;

                case 0x20:
                    EntityLook entityLook = new EntityLook(_stream);
                    break;

                case 0x21:
                    EntityLookRelativeMove entityLookRelativeMove = new EntityLookRelativeMove(_stream);
                    break;

                case 0x22:
                    EntityTeleport entityTeleport = new EntityTeleport(_stream);
                    break;

                case 0x23:
                    EntityHeadLook entityHeadLook = new EntityHeadLook(_stream);
                    break;

                case 0x26:
                    EntityStatus entityStatus = new EntityStatus(_stream);
                    break;

                case 0x27:
                    AttachEntity attachEntity = new AttachEntity(_stream);
                    break;

                case 0x28:
                    EntityMetadata entityMetadata = new EntityMetadata(_stream);
                    break;

                case 0x29:
                    EntityEffect entityEffect = new EntityEffect(_stream);
                    break;

                case 0x2A:
                    RemoveEntityEffect removeEntityEffect = new RemoveEntityEffect(_stream);
                    break;

                case 0x2B:
                    SetExperience setExperience = new SetExperience(_stream);
                    break;

                case 0x33:
                    ChunkData mapChunk = new ChunkData(_stream);
                    break;

                case 0x34:
                    MultiBlockChange multiBlockChange = new MultiBlockChange(_stream);
                    break;

                case 0x35:
                    BlockChange blockChange = new BlockChange(_stream);
                    break;

                case 0x36:
                    BlockAction blockAction = new BlockAction(_stream);
                    break;

                case 0x37:
                    BlockBreakAnimation blockBreakAnimation = new BlockBreakAnimation(_stream);
                    break;

                case 0x38:
                    MapChunkBulk mapChunkBulk = new MapChunkBulk(_stream);
                    break;

                case 0x3C:
                    Explosion explosion = new Explosion(_stream);
                    break;

                case 0x3D:
                    SoundParticleEffect soundParticleEffect = new SoundParticleEffect(_stream);
                    break;

                case 0x3E:
                    NamedSoundEffect namedSoundEffect = new NamedSoundEffect(_stream);
                    break;

                case 0x46:
                    ChangeGameState changeGameState = new ChangeGameState(_stream);
                    break;

                case 0x47:
                    Thunderbolt thunderbolt = new Thunderbolt(_stream);
                    break;

                case 0x64:
                    OpenWindow openWindow = new OpenWindow(_stream);
                    break;

                case 0x65:
                    CloseWindow closeWindow = new CloseWindow(_stream);
                    break;

                case 0x67:
                    SetSlot setSlot = new SetSlot(_stream);
                    break;

                case 0x68:
                    SetWindowItems setWindowItems = new SetWindowItems(_stream);
                    break;

                case 0x69:
                    UpdateWindowProperty updateWindowProperty = new UpdateWindowProperty(_stream);
                    break;

                case 0x6A:
                    ConfirmTransaction confirmTransaction = new ConfirmTransaction(_stream);
                    break;

                case 0x6B:
                    CreativeInventoryAction creativeInventoryAction = new CreativeInventoryAction(_stream);
                    break;

                case 0x6C:
                    EnchantItem enchantItem = new EnchantItem(_stream);
                    break;

                case 0x82:
                    UpdateSign updateSign = new UpdateSign(_stream);
                    break;

                case 0x83:
                    ItemData itemData = new ItemData(_stream);
                    break;

                case 0x84:
                    UpdateTileEntity updateTileEntity = new UpdateTileEntity(_stream);
                    break;

                case 0xC8:
                    IncrementStatistic incrementStatistic = new IncrementStatistic(_stream);
                    break;

                case 0xC9:
                    PlayerListItem playerListItem = new PlayerListItem(_stream);
                    break;

                case 0xCA:
                    PlayerAbilities playerAbilities = new PlayerAbilities(_stream);
                    break;

                case 0xCB:
                    TabComplete tabcomplete = new TabComplete(_stream);
                    break;

                case 0xFA:
                    PluginMessage pluginMessage = new PluginMessage(_stream);
                    break;

                case 0xFC:
                    EncryptionKeyResponse encryptionKeyResponse = new EncryptionKeyResponse(_stream);
                    encryptionKeyResponse.Get();
                    _stream = new AesStream(networkSocket, _stream, sharedSecret.Get);
                    ClientStatuses clientStatuses = new ClientStatuses(_stream);
                    clientStatuses.Send(0);
                    break;

                case 0xFD:
                    EncryptionKeyRequest encryptionKeyRequest = new EncryptionKeyRequest(_stream, sharedSecret.Get, sessionID.GetID(), Storage.Network.UserName);     //
                    encryptionKeyResponse = new EncryptionKeyResponse(_stream);
                    encryptionKeyResponse.Send(encryptionKeyRequest.GetEncSharedSecret(), encryptionKeyRequest.GetEncToken());
                    break;

                case 0xFF:
                    positionUpdater = null;
                    DisconnectKick disconnectKick = new DisconnectKick(_stream);
                    networkSocket.Disconnect(false);
                    break;

                default:
                    throw new Exception("We got a Unknown Packet (" + _packetIDbuffer + ")from the Server. This should not happen: Error in Packet parser");
                }
            }
        }