Ejemplo n.º 1
0
 /// <summary>
 /// Invokes all listeners of this event
 /// </summary>
 public override void Raise(GameNetworkObject Value0)
 {
     for (int i = listeners.Count - 1; i >= 0; i--)
     {
         listeners[i].OnEventRaised(Value0);
     }
 }
 /// <summary>
 /// Invokes all listeners of this event
 /// </summary>
 public override void Raise(GameNetworkObject Value0)
 {
     if (Event != null)
     {
         Event.Invoke(Value0);
     }
 }
Ejemplo n.º 3
0
    private void OnEnable()
    {
        if (!networkId)
        {
            networkId = GetComponent <GameNetworkObject>();
        }

        randomSpawnTimer = Random.Range(0f, 5.0f);
        Life             = Stats.MaxHealth;
        Destroy          = false;
        Recycling        = false;
    }
Ejemplo n.º 4
0
    private void Start()
    {
        gnObject = GetComponent <GameNetworkObject>();

        if (Client.IsHost)
        {
            networkState = HostState;
        }
        else
        {
            networkState = ClientState;
        }
    }
Ejemplo n.º 5
0
    private void OnEnable()
    {
        if (!myTransform)
        {
            gnObject    = GetComponent <GameNetworkObject>();
            myTransform = transform;
        }
        if (Client.IsHost)
        {
            StartCoroutine(SendTransform());
        }

        startPos   = endPos = transform.position;
        startRot   = endRot = transform.rotation;
        prediction = new Prediction(startPos, startRot);
    }
Ejemplo n.º 6
0
    //public GameObject EnemyCreation(GameObject obj, GameObject parent) //TODO: is this needed ? no one calls it
    //{
    //    GameObject o = Instantiate(obj, parent.transform);
    //    //if (OnEnemyAddEvent != null)
    //    //    OnEnemyAddEvent.Invoke(o.GetComponent<GameNetworkObject>());
    //    return o;
    //}

    //InstantiateEnemy will be called when command EnemySpawn is received from host
    private void InstantiateEnemy(byte[] data, uint length, CSteamID senderId)
    {
        if (!poolRoot && PoolRoot)
        {
            poolRoot      = GameObject.Instantiate(PoolRoot).transform;
            poolRoot.name = "Enemies Root";
        }

        int Id = ByteManipulator.ReadInt32(data, 0);
        //Debug.Log("received: " + Id);
        float   positionX = ByteManipulator.ReadSingle(data, 4);
        float   positionY = ByteManipulator.ReadSingle(data, 8);
        float   positionZ = ByteManipulator.ReadSingle(data, 12);
        Vector3 position  = new Vector3(positionX, positionY, positionZ);

        SOPool pool = EnemyPools[UnityEngine.Random.Range(0, EnemyPools.Length)];

        bool       parented;
        int        nullObjsRemovedFromPool;
        GameObject enemy = pool.DirectGet(poolRoot, out nullObjsRemovedFromPool, out parented);

        enemy.GetComponent <Enemy>().Pool = pool;
        GameNetworkObject NObj = enemy.GetComponent <GameNetworkObject>();

        NObj.SetNetworkId(Id);
        //cb.transform.position = position;
        NavMeshHit hit;

        if (NavMesh.SamplePosition(position, out hit, 1f, Mask))
        {
            enemy.GetComponent <NavMeshAgent>().Warp(hit.position);
        }
        else
        {
            Debug.LogWarning("NavMesh point for enemy spawn not found , souce pos = " + position);
        }

        enemy.SetActive(true);
        OnEnemyAddEvent.Raise(NObj);
        //if (!activeEnemyList.Contains(enemy.GetComponent<Enemy>()))
        //    enemiesToAdd.Add(enemy.GetComponent<Enemy>());
    }
Ejemplo n.º 7
0
    public void PerformShoot()
    {
        UnityEngine.Random.InitState(Time.frameCount);
        for (int i = 0; i < rays.Count; i++)
        {
            float distance = rays[i].Speed * Time.deltaTime;
            distance          = rays[i].Distance + distance > rays[i].MaxDistance ? rays[i].MaxDistance - rays[i].Distance : distance;
            rays[i].Distance += distance;

            //if (Application.isEditor)
            //  Debug.DrawRay(rays[i].Ray.origin, rays[i].Ray.direction * distance, Color.red, 0.5f);

            if (Physics.Raycast(rays[i].Ray, out raycastHit, distance))
            {
                //if (Application.isEditor)
                //  Debug.Log(raycastHit.collider);

                if (rays[i].ActivateCallbacks)
                {
                    GameNetworkObject obj = raycastHit.collider.gameObject.GetComponent <GameNetworkObject>();
                    if (obj != null)
                    {
                        SendHitToHost(obj.NetworkId);
                    }
                }
                removeRays.Add(rays[i]);
            }
            if (rays[i].Distance >= rays[i].MaxDistance)
            {
                removeRays.Add(rays[i]);
            }

            rays[i].Ray.origin += rays[i].Ray.direction * distance;
        }
        for (int j = 0; j < removeRays.Count; j++)
        {
            rays.Remove(removeRays[j]);
        }
        removeRays.Clear();
    }
 //InstantiateEnemy will be called when command EnemySpawn is received from host
 private void InstantiateEnemy(byte[] data, uint length, CSteamID senderId)
 {
     int Id = data[0];
     //Debug.Log("received: " + Id);
     float      positionX = BitConverter.ToSingle(data, 1);
     float      positionY = BitConverter.ToSingle(data, 5);
     float      positionZ = BitConverter.ToSingle(data, 9);
     Vector3    position  = new Vector3(positionX, positionY, positionZ);
     GameObject enemy     = enemies.Get((cb) =>
     {
         //function called on the instance of the object that will be returned with the pool.Get() method
         GameNetworkObject NObj = cb.GetComponent <GameNetworkObject>();
         NObj.NetworkId         = Id;
         //cb.transform.position = position;
         cb.GetComponent <NavMeshAgent>().Warp(position);
         cb.SetActive(true);
         cb.GetComponent <NavMeshAgent>().enabled = true;
         OnEnemyAddEvent.Invoke(NObj);
     });
     //if (!activeEnemyList.Contains(enemy.GetComponent<Enemy>()))
     //    enemiesToAdd.Add(enemy.GetComponent<Enemy>());
 }
Ejemplo n.º 9
0
    public void Shoot(bool activateCallbacks = false)
    {
        //rotate muzzle transform
        float r = gun.values.Range;

        muzzle.transform.localRotation = Quaternion.Euler(UnityEngine.Random.Range(-r, r), 0, UnityEngine.Random.Range(-r, r));
        //instanziate ray
        Ray ray = new Ray(muzzle.transform.position, muzzle.transform.forward);

        //method for start shooting
        float distance = shootingType == ShootingType.Single ? gun.values.MaxDistance : gun.values.Speed * Time.deltaTime;

        //if (Application.isEditor)
        //  Debug.DrawRay(ray.origin, ray.direction * distance, Color.red, 0.5f);

        //if it shot someone
        if (Physics.Raycast(ray, out raycastHit, distance))
        {
            //this method went call when
            if (activateCallbacks)
            {
                GameNetworkObject obj = raycastHit.collider.gameObject.GetComponent <GameNetworkObject>();
                if (obj != null)
                {
                    SendHitToHost(obj.NetworkId);
                }
            }
        }
        else if (shootingType == ShootingType.Consecutive) // else add the ray in a list
        {
            ShootsMgr.AddRay(new RayPlus(ray.origin + ray.direction * distance, ray.direction, distance, gun.values.Damage, gun.values.Speed, gun.values.MaxDistance, activateCallbacks));
        }
        //set rotation on identity
        muzzle.transform.localRotation = Quaternion.identity;

        gun.Shoot();
    }
 public void RemoveEnemyFromScene(GameNetworkObject toRemove)
 {
     IdEnemies.Remove(toRemove.NetworkId);
 }
 public void AddEnemyInScene(GameNetworkObject toAdd)
 {
     //enemiesInScene.Add(toAdd);
     IdEnemies.Add(toAdd.NetworkId, toAdd);
 }
Ejemplo n.º 12
0
 private void Start()
 {
     gnOnject = GetComponent <GameNetworkObject>();
 }
 /// <summary>
 /// Invokes all listeners of this event
 /// </summary>
 public abstract void Raise(GameNetworkObject Value0);
Ejemplo n.º 14
0
 /// <summary>
 /// Invokes unity event
 /// </summary>
 internal void OnEventRaised(GameNetworkObject Value0)
 {
     Actions.Invoke(Value0);
 }