;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") (require "engine/entity/res.gc") (require "kernel/gstate.gc") (require "engine/draw/drawable-h.gc") (require "engine/game/main-h.gc") (require "engine/entity/entity-h.gc") (require "engine/game/game-h.gc") ;; DECOMP BEGINS (deftype plane-volume (structure) ((volume-type symbol) (point-count int16) (normal-count int16) (first-point (pointer vector)) (first-normal (pointer vector)) (num-planes int32) (plane (inline-array plane))) :pack-me (:methods (init-vol! (_type_ symbol vector-array vector-array) symbol) (debug-draw (_type_) none) (point-in-vol? (_type_ vector float) symbol))) (deftype vol-control (basic) ((flags uint32) (process process-drawable) (pos-vol-count int32) (pos-vol plane-volume 32 :inline) (neg-vol-count int32) (neg-vol plane-volume 32 :inline) (debug-point vector-array) (debug-normal vector-array)) (:methods (new (symbol type process-drawable) _type_) (init! (_type_) symbol) (point-in-vol? (_type_ vector) symbol) (vol-control-method-11 (_type_) symbol))) (defmethod new vol-control ((allocation symbol) (type-to-make type) (arg0 process-drawable)) (let ((gp-0 (the-as object (object-new allocation type-to-make (the-as int (-> type-to-make size)))))) (when (zero? (the-as vol-control gp-0)) (go process-drawable-art-error "memory") (set! gp-0 0) (goto cfg-13)) (set! (-> (the-as vol-control gp-0) process) arg0) (let* ((s5-1 (the-as res-lump (-> (the-as vol-control gp-0) process entity))) (s4-0 (-> ((method-of-type res-lump lookup-tag-idx) (the-as entity-actor s5-1) 'vol 'exact 0.0) lo))) (when (>= (the-as int s4-0) 0) (let ((s3-0 (the-as int s4-0)) (s2-0 (-> s5-1 tag s4-0))) 0 (while (= (-> s2-0 name) (-> s5-1 tag s4-0 name)) (let ((v1-12 (make-property-data s5-1 0.0 (the-as res-tag-pair s3-0) (the-as pointer #f))) (a0-8 (-> (the-as vol-control gp-0) pos-vol (-> (the-as vol-control gp-0) pos-vol-count)))) (set! (-> a0-8 num-planes) (the-as int (-> s2-0 elt-count))) (set! (-> a0-8 plane) (the-as (inline-array plane) v1-12))) (+! (-> (the-as vol-control gp-0) pos-vol-count) 1) (+! s3-0 1) (set! s2-0 (-> s5-1 tag s3-0)))))) (let* ((s5-2 (the-as res-lump (-> (the-as vol-control gp-0) process entity))) (s4-1 (-> ((method-of-type res-lump lookup-tag-idx) (the-as entity-actor s5-2) 'cutoutvol 'exact 0.0) lo))) (when (>= (the-as int s4-1) 0) (let ((s3-1 (the-as int s4-1)) (s2-1 (-> s5-2 tag s4-1))) 0 (while (= (-> s2-1 name) (-> s5-2 tag s4-1 name)) (let ((v1-31 (make-property-data s5-2 0.0 (the-as res-tag-pair s3-1) (the-as pointer #f))) (a0-19 (-> (the-as vol-control gp-0) neg-vol (-> (the-as vol-control gp-0) neg-vol-count)))) (set! (-> a0-19 num-planes) (the-as int (-> s2-1 elt-count))) (set! (-> a0-19 plane) (the-as (inline-array plane) v1-31))) (+! (-> (the-as vol-control gp-0) neg-vol-count) 1) (+! s3-1 1) (set! s2-1 (-> s5-2 tag s3-1)))))) (label cfg-13) (the-as vol-control gp-0))) (defmethod vol-control-method-11 ((this vol-control)) (and *display-vol-marks* (logtest? (-> this flags) 1)))