Paste #35515: Untitled Paste

Date: 2016/08/22 21:02:57 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


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]>'