Ejemplo n.º 1
0
        private void UpdatePiece(Entity piece)
        {
            var wrapper = GetPieceWrapper(piece.creationIndex);

            piece.ReplaceInScene(wrapper.gameObject);

            var renderer = wrapper.Volume;
            var b        = piece.pieceBounds;
            var data     = new VoxelData(16, 16, 16);
            var red      = new Color32(255, 55, 55, 255);

            data.Clear();

            for (int i = 0; i < piece.piece.Dots.Length; i++)
            {
                var d    = piece.piece.Dots[i];
                var npos = d.Position + Vector3i.one * 8;
//                var npos = d.Position + b.Offset + Vector3i.one * 8;
                data.SetVoxel(npos.x, npos.y, npos.z, red);
            }

            renderer.Data = data;
            renderer.Data.CommitChanges();

            var offset  = new Vector3(-b.Offset.x, -b.Offset.y, -b.Offset.z);
            var colSize = new Vector3(b.Size.x + 1, b.Size.y + 1, b.Size.z + 1);

            var n1 = colSize - Vector3.one;
            var n2 = n1 * 0.5f;
            var n3 = n2 + offset;

            piece.ReplaceRotation(Vector3.zero);

//            wrapper.UpdateCollision(colSize, n3);
        }