コード例 #1
0
        // Token: 0x06001E6C RID: 7788 RVA: 0x0008F9C8 File Offset: 0x0008DBC8
        private void FireProjectileServer(FireProjectileInfo fireProjectileInfo, NetworkConnection clientAuthorityOwner = null, ushort predictionId = 0, double fastForwardTime = 0.0)
        {
            GameObject           gameObject = UnityEngine.Object.Instantiate <GameObject>(fireProjectileInfo.projectilePrefab, fireProjectileInfo.position, fireProjectileInfo.rotation);
            ProjectileController component  = gameObject.GetComponent <ProjectileController>();

            component.NetworkpredictionId = predictionId;
            ProjectileManager.InitializeProjectile(component, fireProjectileInfo);
            if (clientAuthorityOwner != null)
            {
                NetworkServer.SpawnWithClientAuthority(gameObject, clientAuthorityOwner);
                return;
            }
            NetworkServer.Spawn(gameObject);
        }
コード例 #2
0
        // Token: 0x06001E6A RID: 7786 RVA: 0x0008F6F8 File Offset: 0x0008D8F8
        private void FireProjectileClient(FireProjectileInfo fireProjectileInfo, NetworkClient client)
        {
            int num = this.FindProjectilePrefabIndex(fireProjectileInfo.projectilePrefab);

            if (num == -1)
            {
                Debug.LogErrorFormat(fireProjectileInfo.projectilePrefab, "Prefab {0} is not a registered projectile prefab.", new object[]
                {
                    fireProjectileInfo.projectilePrefab
                });
                return;
            }
            bool   allowPrediction = ProjectileManager.projectilePrefabProjectileControllers[num].allowPrediction;
            ushort predictionId    = 0;

            if (allowPrediction)
            {
                ProjectileController component = UnityEngine.Object.Instantiate <GameObject>(fireProjectileInfo.projectilePrefab, fireProjectileInfo.position, fireProjectileInfo.rotation).GetComponent <ProjectileController>();
                ProjectileManager.InitializeProjectile(component, fireProjectileInfo);
                this.predictionManager.RegisterPrediction(component);
                predictionId = component.predictionId;
            }
            this.fireMsg.sendTime         = (double)Run.instance.time;
            this.fireMsg.prefabIndex      = (byte)num;
            this.fireMsg.position         = fireProjectileInfo.position;
            this.fireMsg.rotation         = fireProjectileInfo.rotation;
            this.fireMsg.owner            = fireProjectileInfo.owner;
            this.fireMsg.predictionId     = predictionId;
            this.fireMsg.damage           = fireProjectileInfo.damage;
            this.fireMsg.force            = fireProjectileInfo.force;
            this.fireMsg.crit             = fireProjectileInfo.crit;
            this.fireMsg.damageColorIndex = fireProjectileInfo.damageColorIndex;
            this.fireMsg.speedOverride    = fireProjectileInfo.speedOverride;
            this.fireMsg.fuseOverride     = fireProjectileInfo.fuseOverride;
            this.fireMsg.target           = HurtBoxReference.FromRootObject(fireProjectileInfo.target);
            NetworkWriter networkWriter = new NetworkWriter();

            networkWriter.StartMessage(49);
            networkWriter.Write(this.fireMsg);
            networkWriter.FinishMessage();
            client.SendWriter(networkWriter, 0);
        }