For some reason, when my mouse is on the top surface of a block, it returns weird z values for the normal
print(normal)
if normal.X ~= 0 or normal.Z ~= 0 then -- Placed on side of slab
return PartPosition + (normal * GRID_SIZE) + Vector3.new(0, SLAB_OFFSET + part.Size.Y, 0)
elseif normal.Y > 0 then -- Placing on top face of slab
print("PLACING ON TOP")
return PartPosition + (normal * GRID_SIZE) + Vector3.new(0, SLAB_OFFSET, 0)
else -- Placing on bottom face of slab
return PartPosition + (normal * GRID_SIZE) + Vector3.new(0, GRID_SIZE + SLAB_OFFSET, 0)
end
Which means, it thinks I am placing on the side, when I am trying to place on top