public static void RemoveSpawnArea(LightningSpawnArea area) { if (m_SpawnAreas.Contains(area)) { m_SpawnAreas.Remove(area); } }
public static void AddSpawnArea(LightningSpawnArea area) { if (m_SpawnAreas.Contains(area) == false) { m_SpawnAreas.Add(area); } }
float CalculateLightningBoltScaleForArea(LightningSpawnArea area) { if (m_Style.alignment == LightningArtItem.Alignment.ScaleToFit) { return(area.lightningArea.y / 2.0f); } else { return(m_Style.size); } }
Vector3 GetRandomWorldPositionInsideSpawnArea(LightningSpawnArea area) { float xPos = Random.Range(-area.lightningArea.x, area.lightningArea.x) / 2.0f; float zPos = Random.Range(-area.lightningArea.z, area.lightningArea.z) / 2.0f; float yPos = 0; if (m_Style.alignment == LightningArtItem.Alignment.TopAlign) { yPos = (area.lightningArea.y / 2.0f) - (m_Style.size / 2.0f); } return(area.transform.TransformPoint(new Vector3(xPos, yPos, zPos))); }
// Select where the next sprite will be rendered at. protected override void CalculateSpriteTRS(BaseSpriteItemData data, out Vector3 spritePosition, out Quaternion spriteRotation, out Vector3 spriteScale) { LightningSpawnArea area = GetRandomLightningSpawnArea(); float boltScale = CalculateLightningBoltScaleForArea(area); spriteScale = new Vector3(boltScale, boltScale, boltScale); spritePosition = GetRandomWorldPositionInsideSpawnArea(area); // Always face the sprite textures towards the main camera. if (Camera.main == null) { Debug.LogError("Can't billboard lightning to viewer since there is no main camera tagged."); spriteRotation = area.transform.rotation; } else { spriteRotation = Quaternion.LookRotation(spritePosition - Camera.main.transform.position, Vector3.up); } }
private bool ContainsLightningSpawnArea() { LightningSpawnArea area = GameObject.FindObjectOfType <LightningSpawnArea>(); return(area != null); }