protected void Explode(float delay) { for (int i = m_explodeVoxels.Count - 1; i >= 0; --i) { ExplodeCmd explodeCmd = m_explodeVoxels[i]; m_explodeVoxels.RemoveAt(i); if (explodeCmd.VoxelData.VoxelRef != null) { if (explodeCmd.VoxelData.IsAlive) { explodeCmd.VoxelData.VoxelRef.Health = explodeCmd.VoxelData.Health; } else { explodeCmd.VoxelData.VoxelRef.Explode(delay, explodeCmd.Health); } } } }
protected override void OnVoxelRefResetOverride(Voxel voxel) { base.OnVoxelRefResetOverride(voxel); for (int i = 0; i < m_eatCommands.Count; ++i) { EatCmd cmd = m_eatCommands[i]; if (cmd.Voxel != null && cmd.Voxel.VoxelRef != null) { cmd.Voxel.VoxelRef.Kill(); } } m_eatCommands.Clear(); //not cleared eat commands may lead to spawing of new objects CollapseEatExpandClear(m_currentTick); for (int i = m_explodeVoxels.Count - 1; i >= 0; --i) { ExplodeCmd explodeCmd = m_explodeVoxels[i]; if (explodeCmd.VoxelData != m_controlledVoxel.VoxelData) { if (explodeCmd.VoxelData.VoxelRef != null) { if (explodeCmd.VoxelData.IsAlive) { explodeCmd.VoxelData.VoxelRef.Health = explodeCmd.VoxelData.Health; } else { explodeCmd.VoxelData.VoxelRef.Kill(); } } } } m_explodeVoxels.Clear(); }