Пример #1
0
 public void returnItemToStack(string tag, returnableObject returnable)
 {
     if (returnable.gameObject.activeSelf)
     {
         ObjectPooling.instance.addToPool(tag, returnable);
     }
 }
Пример #2
0
    //TODO: Make rotation not so severe
    //Throws item, since enemy use different versions this is virtual
    public virtual void throwItem(string tag, bool flipThrowableX = false)
    {
        returnableObject throwable      = ObjectPooling.instance.SpawnFromPool(tag, throwHolder.transform.position, Quaternion.identity, true, true, transform.localScale.x);
        Transform        throwableTrans = throwable.gameObject.transform;

        throwableTrans.DOMove(new Vector3(transform.position.x + (enemyRangedRange * transform.localScale.x), Target.position.y, transform.position.z), throwSpeed).OnComplete(() => returnItemToStack(tag, throwable));
    }
Пример #3
0
 private void Sets()
 {
     canAttack      = false;
     currentTrigger = TriggerStates.None;
     animEvents.SetAgent(agent);
     me = new returnableObject(gameObject, GetComponent <Rigidbody>(), GetComponent <NavMeshAgent>());
 }
Пример #4
0
 private void Awake()
 {
     player = PlayerManager.instance.Player.GetComponent <PlayerController>();
     if (me == null)
     {
         me = new returnableObject(gameObject, null, null);
     }
 }
Пример #5
0
 private void ReturnToPool()
 {
     if (me == null)
     {
         me = new returnableObject(gameObject, null, null);
     }
     ObjectPooling.instance.addToPool(poolTag, me);
 }
Пример #6
0
    private void Start()
    {
        poolDictionary = new Dictionary <string, Queue <returnableObject> >();
        CreateParent();
        Transform sceneParentTransform = sceneParent.transform;

        foreach (Pool pool in pools)
        {
            Queue <returnableObject> objectPool = new Queue <returnableObject>();
            for (int i = 0; i < pool.size; i++)
            {
                GameObject   obj   = Instantiate(pool.prefab, sceneParentTransform);
                Rigidbody    rb    = null;
                NavMeshAgent agent = null;
                if (pool.getRigidBody)
                {
                    rb = obj.GetComponent <Rigidbody>();
                }
                if (pool.getAgent)
                {
                    agent = obj.GetComponent <NavMeshAgent>();
                }
                returnableObject ourReturnable = new returnableObject(obj, rb, agent);
                if (pool.setreturnable)
                {
                    if (obj.CompareTag("Enemy"))
                    {
                        obj.GetComponent <Enemy>().me = ourReturnable;
                    }
                    else if (obj.CompareTag("Coin"))
                    {
                        obj.GetComponent <PickUpCoin>().me = ourReturnable;
                    }
                    else if (obj.CompareTag("Ranged"))
                    {
                        obj.GetComponent <SlimeBall>().me = ourReturnable;
                    }
                    else if (obj.CompareTag("Food"))
                    {
                        obj.GetComponent <PickUpFood>().me = ourReturnable;
                    }
                    else if (obj.CompareTag("Throwable"))
                    {
                        obj.GetComponent <ThrowableObject>().me = ourReturnable;
                    }
                    else if (obj.CompareTag("HomingMissle"))
                    {
                        obj.GetComponent <HomingMissle>().me = ourReturnable;
                    }
                }

                obj.SetActive(false);

                objectPool.Enqueue(ourReturnable);
            }
            poolDictionary.Add(pool.tag, objectPool);
        }
    }
Пример #7
0
 private void Awake()
 {
     Target     = PlayerManager.instance.Player.transform;
     targetCont = Target.GetComponent <PlayerController>();
     if (me == null)
     {
         me = new returnableObject(gameObject, null, null);
     }
 }
Пример #8
0
    public override void throwItem(string tag, bool flipThrowableX = false)
    {
        float            Rand           = Random.Range(transform.position.z - .5f, transform.position.z + .5f);
        returnableObject throwable      = ObjectPooling.instance.SpawnFromPool(tag, throwHolder.transform.position, Quaternion.identity, true, true, transform.localScale.x);
        Transform        throwableTrans = throwable.gameObject.transform;

        throwableTrans.DOMove(new Vector3(transform.position.x + (enemyRangedRange * transform.localScale.x), Target.position.y, Rand), 1).OnComplete(() => returnItemToStack(tag, throwable));
        //anim.SetInteger(stateHash, 0);
    }
Пример #9
0
 private void attackTree()
 {
     if (!hit)
     {
         hit = true;
         returnableObject item = ObjectPooling.instance.SpawnFromPool(dropTag, itemHeight, Quaternion.identity, true);
         StartCoroutine(falling(item.gameObject.transform));
     }
 }
Пример #10
0
    //Change to using Initialize in the future
    public override void Activate()
    {
        thrownPrefab = ObjectPooling.instance.SpawnFromPool("Grenade", player.position, Quaternion.identity, false);
        trans        = thrownPrefab.gameObject.transform;
        Vector3 throwDis = trans.position;

        throwDis.x += 3 * player.localScale.x;
        throwDis.y += .2f;
        trans.DOJump(throwDis, 3, 1, 1).OnComplete(explode);
    }
Пример #11
0
 public void addToPool(string tag, returnableObject objToAdd)
 {
     if (!poolDictionary.ContainsKey(tag))
     {
         Debug.LogWarning("Pool with tag " + tag + " Doesn't exist");
         return;
     }
     poolDictionary[tag].Enqueue(objToAdd);
     objToAdd.gameObject.SetActive(false);
 }
Пример #12
0
 public override void throwItem(string tag, bool flipThrowableX = false)
 {
     for (int i = 3; i < 6; i++)
     {
         float            angle          = i * Mathf.PI * 2f / 8;
         Vector3          anglePos       = new Vector3(Mathf.Cos(angle) * enemyRangedRange * transform.localScale.x * (-1), 0, Mathf.Sin(angle) * enemyRangedRange * transform.localScale.x * (-1));
         returnableObject throwable      = ObjectPooling.instance.SpawnFromPool(tag, throwHolder.transform.position, Quaternion.identity, true, true, transform.localScale.x);
         Transform        throwableTrans = throwable.gameObject.transform;
         throwableTrans.DOMove(throwHolder.transform.position + anglePos, 1).OnComplete(() => returnItemToStack(tag, throwable));
     }
 }
Пример #13
0
 private void Awake()
 {
     if (me == null)
     {
         me = new returnableObject(gameObject, GetComponent <Rigidbody>(), null);
     }
     stats       = PlayerManager.instance.Player.GetComponent <PlayerController>().myStats;
     myCol       = GetComponent <Collider>();
     ballSprite  = transform.GetChild(0).GetComponent <SpriteRenderer>();
     splatSprite = transform.GetChild(1).GetComponent <SpriteRenderer>();
 }
Пример #14
0
 public void OnTriggerEnter(Collider other)
 {
     if (other.CompareTag("Player"))
     {
         if (me == null)
         {
             me = new returnableObject(gameObject, null, null);
         }
         player.AddHealth(Mathf.Ceil(player.myStats.maxHealth * healthPercent));
         ObjectPooling.instance.addToPool(poolTag, me);
     }
 }
Пример #15
0
 private void Update()
 {
     if (compareTime > time)
     {
         if (me == null)
         {
             me = new returnableObject(gameObject, null, null);
         }
         ObjectPooling.instance.addToPool(poolTag, me);
     }
     else
     {
         compareTime += Time.deltaTime;
     }
 }
 void Awake()
 {
     sRenderer = GetComponent <SpriteRenderer>();
     col       = GetComponent <BoxCollider>();
     amount    = transform.childCount;
     for (int i = 0; i < amount; i++)
     {
         children.Add(new ChildObj());
         children[i].obj  = transform.GetChild(i).gameObject;
         children[i].tran = transform.GetChild(i);
         children[i].obj.SetActive(false);
     }
     sRenderer.enabled = false;
     col.enabled       = false;
     me = new returnableObject(gameObject, null, null);
 }
Пример #17
0
    private void Start()
    {
        Rigidbody    rb    = null;
        NavMeshAgent agent = null;

        if (getAgent)
        {
            agent = GetComponent <NavMeshAgent>();
        }
        if (getRigidBody)
        {
            rb = GetComponent <Rigidbody>();
        }

        me = new returnableObject(gameObject, rb, agent);
    }
Пример #18
0
 public returnableObject getRefrenceFromPool(string tag, Vector3 position, Quaternion rotation)
 {
     if (!poolDictionary.ContainsKey(tag))
     {
         Debug.LogWarning("Pool with tag " + tag + " Doesn't exist");
         return(null);
     }
     if (poolDictionary[tag].Count > 0)
     {
         returnableObject objToReference = poolDictionary[tag].Dequeue();
         objToReference.gameObject.transform.position = position;
         objToReference.gameObject.transform.rotation = rotation;
         return(objToReference);
     }
     else
     {
         return(null);
     }
 }
Пример #19
0
    //TODO: requeue is not actually used
    public returnableObject SpawnFromPool(string tag, Vector3 position, Quaternion rotation, bool reQueue, bool oppositeScaleX = false, float scalex = 0)
    {
        if (!poolDictionary.ContainsKey(tag))
        {
            Debug.LogWarning("Pool with tag " + tag + " Doesn't exist");
            return(null);
        }

        returnableObject objToSpawn = poolDictionary[tag].Dequeue();

        objToSpawn.gameObject.transform.position = position;
        objToSpawn.gameObject.transform.rotation = rotation;

        if (oppositeScaleX)
        {
            Vector3 flip = objToSpawn.gameObject.transform.localScale;
            flip.x = Mathf.Abs(flip.x) * scalex;
            objToSpawn.gameObject.transform.localScale = flip;
        }

        objToSpawn.gameObject.SetActive(true);
        return(objToSpawn);
    }
Пример #20
0
    public void fireRangedBlob()
    {
        returnableObject rangedShot = ObjectPooling.instance.SpawnFromPool("PlayerBlob", slimeBlobFireBox.position, slimeBlobFireBox.rotation, true);

        rangedShot.rb.AddForce(transform.right * transform.localScale.x * 3 * myStats.Range, ForceMode.Impulse);
    }
Пример #21
0
 private void Start()
 {
     apple = transform.GetChild(0).gameObject;
     me    = new returnableObject(transform.parent.gameObject, null, null);
 }
Пример #22
0
 private void OnEnable()
 {
     bottomArrow = ObjectPooling.instance.SpawnFromPool("BottomArrow", new Vector3(transform.position.x, 0, transform.position.z), Quaternion.identity, false);
 }