Exemplo n.º 1
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="t"> Transform of the lod sprite GO </param>
 /// <param name="type"></param>
 /// <param name="lodPackIndex"></param>
 public void AddObject(Transform t, ModelType type, short lodPackIndex)
 {
     if (t == null) return;
     ModelWithLOD newModel = new ModelWithLOD(t, type, false, 0, lodPackIndex);
     //GameMaster.realMaster.standartSpritesList.Add(t.gameObject);
     models.Add(newModel);
     switch (type)
     {
         case ModelType.Tree:
             TreeCheck(models.Count - 1); break;
         case ModelType.Boulder:
             SpriteRenderer sr = newModel.transform.GetChild(1).GetComponent<SpriteRenderer>();
             sr.sprite = lodPacks[lodPackIndex][0];
             sr.sharedMaterial = PoolMaster.billboardMaterial;
             BoulderCheck(models.Count - 1);
             break;
     }               
 }
Exemplo n.º 2
0
  void TreeCheck(int index)
 {
     ModelWithLOD tree = models[index];
     Transform modelParent = tree.transform.parent, spriteTransform = tree.transform;
     Vector3 treePos = spriteTransform.position;
     if ((treePos - camPos).magnitude > lodDistance)
     {
         if (!tree.spriteIsActive)
         {
             modelParent.GetChild(0).gameObject.SetActive(false);
             modelParent.GetChild(1).gameObject.SetActive(false);
             spriteTransform.gameObject.SetActive(true);
             tree.spriteIsActive = true;
         }
         byte spriteStatus = 0;
         float angle = Vector3.Angle(Vector3.up, camPos - treePos);
         if (angle < 30)
         {
             if (angle < 10) spriteStatus = 3;
             else spriteStatus = 2;
         }
         else
         {
             if (angle > 80) spriteStatus = 0;
             else spriteStatus = 1;
         }
         if (spriteStatus != tree.drawingSpriteIndex)
         {
             spriteTransform.GetComponent<SpriteRenderer>().sprite = lodPacks[tree.lodPackIndex][spriteStatus];
             tree.drawingSpriteIndex = spriteStatus;
         }
     }
     else
     {
         if (tree.spriteIsActive)
         {
             modelParent.GetChild(0).gameObject.SetActive(true);            
             modelParent.GetChild(1).gameObject.SetActive(true);
             spriteTransform.gameObject.SetActive(false);
             tree.spriteIsActive = false;
         }
     }
 }
Exemplo n.º 3
0
 void BoulderCheck(int index)
 {
     ModelWithLOD m = models[index];
     Vector3 pos = m.transform.position;
     if ((camPos - pos).magnitude > lodDistance)
     {
         if ( !m.spriteIsActive )
         {
             m.transform.GetChild(1).gameObject.SetActive(true);
             m.transform.GetChild(0).gameObject.SetActive(false);
             m.spriteIsActive = true;
         }
         //m.transform.GetChild(1).LookAt(camPos);
     }
     else
     {
         if (m.spriteIsActive)
         {
             m.transform.GetChild(1).gameObject.SetActive(false);
             m.transform.GetChild(0).gameObject.SetActive(true);
             m.spriteIsActive = false;
         }
     }
 }