Date: 2016/08/22 21:02:57 UTC-07:00
Type: Denizen Script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
DUL_cuboid_shell:
type: procedure
debug: false
DUL:
author:
- Anthony
name:
- Cuboid Shell
description:
- Supply a list of cuboids and returns the list of surface locations.
usage:
- <proc[DUL_poly_surface].context[<cuboid>|...]>
example:
- <proc[DUL_poly_surface].context[<cuboid>|...]>
script:
# Reconstruct cuboids from list
- define objects '<queue.definitions.alphanumeric>'
- define clist 'li@'
- repeat '<def[objects].size.div[2].as_int>':
- define 'cuboid%value%' '<def[objects].get[<def[value].mul[2].sub[1].as_int>]>|<def[objects].get[<def[value].mul[2].as_int>]>'
- define clist '<def[clist].include[cuboid%value%]>'
- define blocks 'li@'
- foreach '<def[clist]>':
- define cuboid '<def[%value%].as_cuboid>'
- define l '<def[cuboid].min>'
- define h '<def[cuboid].max>'
- define lx '<def[l].x>'
- define ly '<def[l].y>'
- define lz '<def[l].z>'
- define hx '<def[h].x>'
- define hy '<def[h].y>'
- define hz '<def[h].z>'
- define world '<def[l].world.name>'
- foreach '<def[clist].exclude[<def[cuboid]>]>':
- define this '<def[%value%].as_cuboid>'
- if <def[cuboid].intersects[<def[this]>]> {
-
}
- define shell 'cu@l@<def[lx]>,<def[ly]>,<def[lz]>,<def[world]>|l@<def[hx]>,<def[hy]>,<def[lz]>,<def[world]>|l@<def[lx]>,<def[ly]>,<def[lz]>,<def[world]>|l@<def[lx]>,<def[hy]>,<def[hz]>,<def[world]>|l@<def[lx]>,<def[ly]>,<def[lz]>,<def[world]>|l@<def[hx]>,<def[ly]>,<def[hz]>,<def[world]>|l@<def[hx]>,<def[hy]>,<def[hz]>,<def[world]>|l@<def[lx]>,<def[ly]>,<def[hz]>,<def[world]>|l@<def[hx]>,<def[hy]>,<def[hz]>,<def[world]>|l@<def[hx]>,<def[ly]>,<def[lz]>,<def[world]>|l@<def[hx]>,<def[hy]>,<def[hz]>,<def[world]>|l@<def[lx]>,<def[hy]>,<def[lz]>,<def[world]>'
- define blocks '<def[blocks].include[<def[shell].blocks.deduplicate>]>'
- determine '<def[blocks]>'