private void ResizeSprite(IUserObject aUserObject)
        {
            GameObject    gameObject    = aUserObject.GetGameObject();
            RectTransform rectTransform = gameObject.GetComponent <RectTransform> ();
            IShape        shape         = aUserObject.GetShape();
            float         newWidth      = 1f;
            float         newHeight     = 1f;

            if (typeof(IRectangle).IsAssignableFrom(aUserObject.GetShape().GetType()))
            {
                newWidth  = ((IRectangle)shape).GetWidth();
                newHeight = ((IRectangle)shape).GetHeight();
            }
            else if (typeof(ICircle).IsAssignableFrom(aUserObject.GetShape().GetType()))
            {
                newWidth  = 2 * ((ICircle)shape).GetRadius();
                newHeight = newWidth;
            }
            SpriteRenderer spriteRenderer = gameObject.GetComponent <SpriteRenderer> ();
            Vector3        localScale     = rectTransform.localScale;

            localScale.x             = newWidth / spriteRenderer.sprite.bounds.size.x;
            localScale.y             = newHeight / spriteRenderer.sprite.bounds.size.y;
            rectTransform.localScale = localScale;
        }
        public void Visit(IQuadTree aQuadTree)
        {
            IUserObject insertedUserObject = this.insertedPoint.GetUserObject();
            IShape      insertedShape      = insertedUserObject.GetShape();
            IRectangle  targetBoundary     = CalculateTargetBoundary(insertedShape);

            if (null != aQuadTree.GetRootPoints())
            {
                List <IPoint <IUserObject> > pointsToBeDeleted = new List <IPoint <IUserObject> > ();
                foreach (IPoint <IUserObject> currentPoint in aQuadTree.GetRootPoints())
                {
                    Visit(currentPoint);
                    if (currentPoint.GetUserObject().GetHealth() < 1)
                    {
                        pointsToBeDeleted.Add(currentPoint);
                        this.userObjectSpawner.PushBackDeadObject(currentPoint.GetUserObject());
                    }
                    if (insertedUserObject.GetHealth() < 1)
                    {
                        this.userObjectSpawner.PushBackDeadObject(insertedUserObject);
                        break;
                    }
                }
                aQuadTree.RemovePointsFromRoot(pointsToBeDeleted);
            }
        }
 public void Visit(IQuadTree aQuadTree)
 {
     if (null != this.insertedPoint)
     {
         IUserObject insertedUserObject             = this.insertedPoint.GetUserObject();
         IShape      insertedShape                  = insertedUserObject.GetShape();
         IRectangle  targetBoundary                 = calculateTargetBoundary(insertedShape);
         ICollection <IPoint <IUserObject> > points = aQuadTree.GetPoints(targetBoundary, false);
         foreach (IPoint <IUserObject> currentPoint in points)
         {
             visit(currentPoint);
             if (currentPoint.GetUserObject().GetHealth() < 1)
             {
                 aQuadTree.RemovePointFromRoot(currentPoint);
                 this.userObjectSpawner.PushBackDeadObject(currentPoint.GetUserObject());
             }
             if (insertedUserObject.GetHealth() < 1)
             {
                 aQuadTree.RemovePointFromRoot(this.insertedPoint);
                 this.userObjectSpawner.PushBackDeadObject(insertedUserObject);
                 break;
             }
         }
     }
 }
Example #4
0
    // Update is called once per frame
    void Update()
    {
        IUserObject          userObject = userObjectSpawner.Spawn();
        IPoint <IUserObject> point      = new Point <IUserObject>(userObject.GetShape().GetCenterX(), userObject.GetShape().GetCenterY(), userObject);

        quadTree.Insert(point, insertQuadTreeVisitor);
    }
    private void visit(IPoint <IUserObject> aPoint)
    {
        IUserObject currentUserObject  = aPoint.GetUserObject();
        IShape      currentShape       = currentUserObject.GetShape();
        IUserObject insertedUserObject = this.insertedPoint.GetUserObject();
        IShape      insertedShape      = insertedUserObject.GetShape();
        bool        collision          = checkCollision(currentShape, insertedShape);

        if (collision)
        {
            insertedUserObject.TakeDamage(this.damagePoint);
            currentUserObject.TakeDamage(this.damagePoint);
        }
    }
Example #6
0
 private IEnumerator Spawn()
 {
     while (suitableForSpawn)
     {
         try {
             IUserObject          userObject = userObjectSpawner.Spawn();
             IPoint <IUserObject> point      = new Point <IUserObject> (userObject.GetShape().GetCenterX(), userObject.GetShape().GetCenterY(), userObject);
             insertQuadTreeVisitor.SetInsertedPoint(point);
             quadTree.Insert(point, insertQuadTreeVisitor);
         } catch (OverLimitSpawnException exception) {
             suitableForSpawn = false;
             Debug.Log(exception);
             EditorUtility.DisplayDialog("Info", exception.Message, "OK");
         }
         yield return(waitForObjectCreation);
     }
 }
        private void Visit(IPoint <IUserObject> aPoint)
        {
            IUserObject currentUserObject  = aPoint.GetUserObject();
            IShape      currentShape       = currentUserObject.GetShape();
            IUserObject insertedUserObject = this.insertedPoint.GetUserObject();
            IShape      insertedShape      = insertedUserObject.GetShape();
            bool        collision          = CheckCollision(currentShape, insertedShape);

            if (collision)
            {
                insertedUserObject.TakeDamage(this.damagePoint);
                currentUserObject.TakeDamage(this.damagePoint);
                ParticleSystem particleSystem = currentUserObject.GetGameObject().GetComponent <ParticleSystem> ();
                particleSystem.Play();
                ChangeTransparencyAccordingToHealth(insertedUserObject);
                ChangeTransparencyAccordingToHealth(currentUserObject);
            }
        }