Example #1
0
        public static void Explode(VoxelContainer voxelContainer)
        {
            var vc = voxelContainer;
            var cd = vc.ContainerData;

            for (var x = 1; x < cd.Size - 1; x += 2)
            {
                for (var y = 1; y < cd.Size - 1; y += 2)
                {
                    for (var z = 1; z < cd.Size - 1; z += 2)
                    {
                        if (cd.Voxels[x, y, z] == null)
                        {
                            continue;
                        }
                        if (cd.Voxels[x, y, z].IsActive)
                        {
                            var pos = new Vector3(cd.Position.x + x, cd.Position.y + y, cd.Position.z + z);
                            var go  = ObjectPool.Instance.GetObjectForType <Fraction>(parent: voxelContainer.transform.parent);
                            go.Init(pos, 2.0f, MaterialRegistry.Instance.MaterialFromId(cd.Voxels[x, y, z].BlockType).Color, voxelContainer.GetCenter());
                        }
                    }
                }
            }
            DestroyImmediate(voxelContainer.gameObject);
        }