public void Update() { for (int i = DelayedFXPieces.LastIndex(); i >= 0; i--) { FXPiece piece = DelayedFXPieces [i]; if (WorldClock.AdjustedRealTime > (piece.TimeAdded + piece.Delay)) { //Debug.Log ("piece was ready to be spawned at " + WorldClock.AdjustedRealTime.ToString ()); DelayedFXPieces.RemoveAt(i); if (piece.Explosion) { if (piece.JustForShow) { SpawnExplosionFX(piece.FXName, piece.FXParent, piece.Position); } else { DefaultExplosionDamage.Point = piece.Position; DefaultExplosionDamage.Origin = piece.Position; SpawnExplosion(piece.FXName, piece.FXParent.position + piece.Position, piece.Scale, DefaultExplosionForceAtEdge, DefaultExplosionMinimumForce, DefaultExplosionRTDuration, DefaultExplosionDamage); } } else { SpawnFX(piece.FXParent.gameObject, piece.FXName, piece.Position); } if (!string.IsNullOrEmpty(piece.SoundName)) { SoundOrigin.position = piece.FXParent.position + piece.Position; MasterAudio.PlaySound(piece.SoundType, SoundOrigin, piece.SoundName); } } } }
public void SpawnFX(Transform parentObject, string fxName, float delay) { FXPiece fxPiece = new FXPiece(); fxPiece.FXName = fxName; fxPiece.Delay = delay; fxPiece.FXParent = parentObject; fxPiece.Position = Vector3.zero; fxPiece.TimeAdded = WorldClock.AdjustedRealTime; DelayedFXPieces.Add(fxPiece); }
public void Initialize(FXPiece piece) { FXName = piece.FXName; SoundName = piece.SoundName; SoundType = piece.SoundType; FXDelay = piece.Delay; FXDuration = piece.Duration; FXColor = piece.FXColor; Explosion = piece.Explosion; JustForShow = piece.JustForShow; transform.localPosition = piece.Position; transform.localRotation = Quaternion.Euler(piece.Rotation); transform.localScale = Vector3.one * piece.Scale; }
public void SpawnFX(Transform parentObject, FXPiece piece) { piece.TimeAdded = WorldClock.AdjustedRealTime; piece.FXParent = parentObject; DelayedFXPieces.Add(piece); }