// Protected methods ///////////////// protected virtual void Init(UltimateTerrain uTerrain) { converter = uTerrain.Converter; var halfSize = new Vector3d(radius, radius, radius).Rounded; halfSize.x += 1; halfSize.y += 1; halfSize.z += 1; var startVoxelPos = start.Rounded; var endVoxelPos = end.Rounded; from = UMath.Min(startVoxelPos, endVoxelPos) - halfSize; to = UMath.Max(startVoxelPos, endVoxelPos) + halfSize; direction = (end - start).Normalized; length = (end - start).Magnitude; voxelSizeInverse = 1.0 / uTerrain.Params.SizeXVoxel; }