public int MaskBuilds(BuildSlot.PlaceSlotType t, bool def = true) { if (def) { switch (t) { case BuildSlot.PlaceSlotType.Foundation: return(LayerMask.GetMask("BuildSlot Foundation", "Default", "Building")); case BuildSlot.PlaceSlotType.Wall: return(LayerMask.GetMask("BuildSlot Wall", "Default", "Building")); case BuildSlot.PlaceSlotType.Floor: return(LayerMask.GetMask("BuildSlot Floor", "Default", "Building")); case BuildSlot.PlaceSlotType.Main: return(LayerMask.GetMask("BuildSlot Inner", "Default", "Building")); default: return(LayerMask.GetMask("Default", "Building")); } } else { switch (t) { case BuildSlot.PlaceSlotType.Foundation: return(LayerMask.GetMask("BuildSlot Foundation", "Building")); case BuildSlot.PlaceSlotType.Wall: return(LayerMask.GetMask("BuildSlot Wall", "Building")); case BuildSlot.PlaceSlotType.Floor: return(LayerMask.GetMask("BuildSlot Floor", "Building")); case BuildSlot.PlaceSlotType.Main: return(LayerMask.GetMask("BuildSlot Inner", "Building")); default: return(LayerMask.GetMask("Default", "Building")); } } }
public void UpdatePreview() { if (buildingType == BuildSlot.PlaceSlotType.Main) { rot = Quaternion.identity * Quaternion.Euler(0, 0, rotation * 90); } else if (buildingType == BuildSlot.PlaceSlotType.Wall) { rot = Quaternion.identity * Quaternion.Euler(0, 0, rotation * 180); } else { rot = Quaternion.identity; } buildingType = buildingParts[selectedPart].type; preview.GetComponent <Entity>().additionalData = buildingParts[selectedPart].part.ToString(); RaycastHit hit; if (Physics.Raycast(look.position, look.forward, out hit, 10f, MaskBuilds(buildingType))) { List <int> layers = new List <int>(); layers.AddRange(new int[] { LayerMask.NameToLayer("BuildSlot Foundation"), LayerMask.NameToLayer("BuildSlot Wall"), LayerMask.NameToLayer("BuildSlot Floor"), LayerMask.NameToLayer("BuildSlot Inner") }); if (layers.Contains(hit.collider.gameObject.layer)) { preview.transform.position = hit.collider.transform.position; preview.transform.rotation = hit.collider.transform.rotation * rot; } else { preview.transform.position = Vector3.zero; } } else { preview.GetComponent <Entity>().additionalData = "0"; } }