Advertisement
Guest User

TileTextureManager.cs

a guest
Aug 22nd, 2014
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.80 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. public class TileTextureManager : MonoBehaviour {
  5.  
  6.     // Sprites to use
  7.     public Sprite fullBlock;
  8.     public Sprite straightBlock;
  9.     public Sprite endBlock;
  10.     public Sprite emptyBlock;
  11.     public Sprite cornerBlock;
  12.     public Sprite tBlock;
  13.  
  14.     // Occupied sides
  15.     private bool top = false;
  16.     private bool bottom = false;
  17.     private bool left = false;
  18.     private bool right = false;
  19.  
  20.     // Other
  21.     public float blockSize;
  22.     public string Tag;
  23.     public int layerToMask = 8;
  24.  
  25.     // Initialization
  26.     void Start ()
  27.     {
  28.         blockSize /= 1.5f;
  29.  
  30.         int layerMask = ~(1 << layerToMask);
  31.  
  32.         // Find objects
  33.         RaycastHit2D topHit = Physics2D.Raycast (transform.position + Vector3.up * blockSize,
  34.                                                  Vector2.up, blockSize, layerMask);
  35.         RaycastHit2D bottomHit = Physics2D.Raycast (transform.position + -Vector3.up * blockSize,
  36.                                                     -Vector2.up, blockSize, layerMask);
  37.         RaycastHit2D leftHit = Physics2D.Raycast (transform.position + -Vector3.right * blockSize,
  38.                                                   -Vector2.right, blockSize, layerMask);
  39.         RaycastHit2D rightHit = Physics2D.Raycast (transform.position + Vector3.right * blockSize,
  40.                                                    Vector2.right, blockSize, layerMask);
  41.  
  42.         // Determine what was found
  43.         if (topHit.collider != null)
  44.             if (topHit.collider.tag == Tag)
  45.                 top = true;
  46.         if (bottomHit.collider != null)
  47.             if (bottomHit.collider.tag == Tag)
  48.                 bottom = true;
  49.         if (leftHit.collider != null)
  50.             if (leftHit.collider.tag == Tag)
  51.                 left = true;
  52.         if (rightHit.collider != null)
  53.             if (rightHit.collider.tag == Tag)
  54.                 right = true;
  55.  
  56.         SpriteRenderer renderer = GetComponent<SpriteRenderer> ();
  57.  
  58.         // Change sprite to fit based on found objects
  59.         if (top)
  60.         {
  61.             if (bottom)
  62.             {
  63.                 if (left)
  64.                 {
  65.                     if (right)
  66.                     {
  67.                         // All sides occupied
  68.                         renderer.sprite = emptyBlock;
  69.                     }
  70.                     else
  71.                     {
  72.                         // Top, bottom, left, occupied
  73.                         renderer.sprite = tBlock;
  74.                         transform.Rotate (new Vector3 (0, 0, 90));
  75.                     }
  76.                 }
  77.                 else if (right)
  78.                 {
  79.                     // Top, bottom, right occupied
  80.                     renderer.sprite = tBlock;
  81.                     transform.Rotate (new Vector3 (0, 0, -90));
  82.                 }
  83.                 else
  84.                 {
  85.                     // Top, bottom occupied
  86.                     renderer.sprite = straightBlock;
  87.                     transform.Rotate (new Vector3 (0, 0, 90));
  88.                 }
  89.             }
  90.             else if (left)
  91.             {
  92.                 if (right)
  93.                 {
  94.                     renderer.sprite = tBlock;
  95.                 }
  96.                 else
  97.                 {
  98.                     renderer.sprite = cornerBlock;
  99.                 }
  100.             }
  101.             else if (right)
  102.             {
  103.                 // Top, right occupied
  104.                 renderer.sprite = cornerBlock;
  105.                 transform.Rotate (new Vector3 (0, 0, -90));
  106.             }
  107.             else
  108.             {
  109.                 // Top occupied
  110.                 renderer.sprite = endBlock;
  111.                 transform.Rotate (new Vector3 (0, 0, -90));
  112.             }
  113.         }
  114.         else if (bottom)
  115.         {
  116.             if (left)
  117.             {
  118.                 if (right)
  119.                 {
  120.                     // Bottom, left, right occupied
  121.                     renderer.sprite = tBlock;
  122.                     transform.Rotate (new Vector3 (0, 0, 180));
  123.                 }
  124.                 else
  125.                 {
  126.                     // Bottom, left occupied
  127.                     renderer.sprite = cornerBlock;
  128.                     transform.Rotate (new Vector3 (0, 0, 90));
  129.                 }
  130.             }
  131.             else if (right)
  132.             {
  133.                 // Bottom, right occupied
  134.                 renderer.sprite = cornerBlock;
  135.                 transform.Rotate (new Vector3 (0, 0, 180));
  136.             }
  137.             else
  138.             {
  139.                 // Bottom occupied
  140.                 renderer.sprite = endBlock;
  141.                 transform.Rotate (new Vector3 (0, 0, 90));
  142.             }
  143.         }
  144.         else if (left)
  145.         {
  146.             if (right)
  147.             {
  148.                 // Left, right occupied
  149.                 renderer.sprite = straightBlock;
  150.             }
  151.             else
  152.             {
  153.                 // Left occupied
  154.                 renderer.sprite = endBlock;
  155.             }
  156.         }
  157.         else if (right)
  158.         {
  159.             // Right occupied
  160.             renderer.sprite = endBlock;
  161.             transform.Rotate (new Vector3 (0, 0, 180));
  162.         }
  163.         else
  164.         {
  165.             // None occupied
  166.         }
  167.     }
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement