mirror of
https://github.com/open-goal/jak-project
synced 2026-08-21 06:38:33 -04:00
Merge remote-tracking branch 'origin/master' into j2/progress
This commit is contained in:
+1
@@ -37,6 +37,7 @@
|
||||
;; definition for method 20 of type process-focusable
|
||||
;; WARN: Return type mismatch structure vs vector.
|
||||
(defmethod get-trans process-focusable ((obj process-focusable) (arg0 int))
|
||||
"@returns the `trans` [[vector]] from the process's `root` (typically either a [[trsqv]] or a [[collide-shape]]"
|
||||
(let ((gp-0 (-> obj root)))
|
||||
(the-as vector (cond
|
||||
((zero? arg0)
|
||||
|
||||
+76
@@ -0,0 +1,76 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition of type simple-focus
|
||||
(deftype simple-focus (process-focusable)
|
||||
((first-time? symbol :offset-assert 204)
|
||||
)
|
||||
:heap-base #x50
|
||||
:method-count-assert 28
|
||||
:size-assert #xd0
|
||||
:flag-assert #x1c005000d0
|
||||
(:methods
|
||||
(idle () _type_ :state 27)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type simple-focus
|
||||
(defmethod inspect simple-focus ((obj simple-focus))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(let ((t9-0 (method-of-type process-focusable inspect)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(format #t "~2Tfirst-time?: ~A~%" (-> obj first-time?))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition for method 20 of type simple-focus
|
||||
(defmethod get-trans simple-focus ((obj simple-focus) (arg0 int))
|
||||
"@returns the `trans` [[vector]] from the process's `root` (typically either a [[trsqv]] or a [[collide-shape]]"
|
||||
(-> obj root trans)
|
||||
)
|
||||
|
||||
;; definition for method 12 of type simple-focus
|
||||
(defmethod run-logic? simple-focus ((obj simple-focus))
|
||||
(when (-> obj first-time?)
|
||||
(set! (-> obj first-time?) #f)
|
||||
#t
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate idle (simple-focus)
|
||||
:virtual #t
|
||||
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
|
||||
(let ((v1-0 event-type))
|
||||
(the-as object (when (= v1-0 'move-trans)
|
||||
(let ((v0-0 (-> self root trans)))
|
||||
(set! (-> v0-0 quad) (-> (the-as vector (-> event param 0)) quad))
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
:code (the-as (function none :behavior simple-focus) sleep-code)
|
||||
)
|
||||
|
||||
;; definition for function simple-focus-init-by-other
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defbehavior simple-focus-init-by-other simple-focus ()
|
||||
"Initializes the new [[simple-focus]]. `first-time?` will be set to [[#t]]"
|
||||
(let ((root (new 'process 'trsqv)))
|
||||
(set! (-> self root) root)
|
||||
(vector-identity! (-> root scale))
|
||||
(quaternion-identity! (-> root quat))
|
||||
)
|
||||
(logclear! (-> self mask) (process-mask enemy))
|
||||
(set! (-> self first-time?) #t)
|
||||
(set! (-> self event-hook) (-> (method-of-object self idle) event))
|
||||
(go-virtual idle)
|
||||
(none)
|
||||
)
|
||||
+163
@@ -0,0 +1,163 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition of type simple-nav-sphere
|
||||
(deftype simple-nav-sphere (process-drawable)
|
||||
((root-override collide-shape :offset 128)
|
||||
(first-time? symbol :offset-assert 200)
|
||||
(track-joint int32 :offset-assert 204)
|
||||
)
|
||||
:heap-base #x50
|
||||
:method-count-assert 22
|
||||
:size-assert #xd0
|
||||
:flag-assert #x16005000d0
|
||||
(:methods
|
||||
(idle () _type_ :state 20)
|
||||
(active () _type_ :state 21)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type simple-nav-sphere
|
||||
(defmethod inspect simple-nav-sphere ((obj simple-nav-sphere))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(let ((t9-0 (method-of-type process-drawable inspect)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(format #t "~2Tfirst-time?: ~A~%" (-> obj first-time?))
|
||||
(format #t "~2Ttrack-joint: ~D~%" (-> obj track-joint))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition for function simple-nav-sphere-event-handler
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defbehavior simple-nav-sphere-event-handler simple-nav-sphere ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
|
||||
(case event-type
|
||||
(('die-fast)
|
||||
(go empty-state)
|
||||
)
|
||||
(('move-trans)
|
||||
(collide-shape-method-29 (-> self root-override) (the-as vector (-> event param 0)))
|
||||
#t
|
||||
)
|
||||
(('set-radius)
|
||||
(let ((radius (the-as float (-> event param 0)))
|
||||
(collide-shape (-> self root-override))
|
||||
)
|
||||
(set! (-> collide-shape nav-radius) radius)
|
||||
(set! (-> collide-shape root-prim local-sphere w) radius)
|
||||
(collide-shape-method-46 collide-shape)
|
||||
)
|
||||
#t
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 12 of type simple-nav-sphere
|
||||
(defmethod run-logic? simple-nav-sphere ((obj simple-nav-sphere))
|
||||
(cond
|
||||
(*display-nav-marks*
|
||||
#t
|
||||
)
|
||||
((>= (-> obj track-joint) 0)
|
||||
#t
|
||||
)
|
||||
((-> obj first-time?)
|
||||
(set! (-> obj first-time?) #f)
|
||||
#t
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate idle (simple-nav-sphere)
|
||||
:virtual #t
|
||||
:event (the-as
|
||||
(function process int symbol event-message-block object :behavior simple-nav-sphere)
|
||||
simple-nav-sphere-event-handler
|
||||
)
|
||||
:trans (behavior ()
|
||||
(if *display-nav-marks*
|
||||
(add-debug-sphere
|
||||
#t
|
||||
(bucket-id debug2)
|
||||
(-> self root-override trans)
|
||||
(-> self root-override nav-radius)
|
||||
(new 'static 'rgba :r #x80 :g #x40 :a #x80)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code (the-as (function none :behavior simple-nav-sphere) sleep-code)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate active (simple-nav-sphere)
|
||||
:virtual #t
|
||||
:event (the-as
|
||||
(function process int symbol event-message-block object :behavior simple-nav-sphere)
|
||||
simple-nav-sphere-event-handler
|
||||
)
|
||||
:trans (behavior ()
|
||||
(let ((v1-0 (ppointer->process (-> self parent)))
|
||||
(gp-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(vector<-cspace! gp-0 (-> (the-as process-drawable v1-0) node-list data (-> self track-joint)))
|
||||
(collide-shape-method-29 (-> self root-override) gp-0)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code (the-as (function none :behavior simple-nav-sphere) sleep-code)
|
||||
)
|
||||
|
||||
;; definition for function simple-nav-sphere-init-by-other
|
||||
;; INFO: Used lq/sq
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defbehavior simple-nav-sphere-init-by-other simple-nav-sphere ((arg0 float) (arg1 vector) (arg2 nav-mesh) (arg3 int))
|
||||
(set! (-> self track-joint) arg3)
|
||||
(set! (-> self first-time?) #t)
|
||||
(let ((s5-0 (new 'process 'collide-shape self (collide-list-enum usually-hit-by-player))))
|
||||
(let ((v1-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
|
||||
(set! (-> v1-3 prim-core collide-as) (collide-spec obstacle))
|
||||
(set-vector! (-> v1-3 local-sphere) 0.0 0.0 0.0 4096.0)
|
||||
(set! (-> s5-0 total-prims) (the-as uint 1))
|
||||
(set! (-> s5-0 root-prim) v1-3)
|
||||
)
|
||||
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
|
||||
(let ((v1-6 (-> s5-0 root-prim)))
|
||||
(set! (-> s5-0 backup-collide-as) (-> v1-6 prim-core collide-as))
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-6 prim-core collide-with))
|
||||
)
|
||||
(set! (-> s5-0 nav-radius) arg0)
|
||||
(set! (-> s5-0 root-prim local-sphere w) arg0)
|
||||
(if arg1
|
||||
(set! (-> s5-0 trans quad) (-> arg1 quad))
|
||||
)
|
||||
(vector-identity! (-> s5-0 scale))
|
||||
(quaternion-identity! (-> s5-0 quat))
|
||||
(let ((v1-11 (-> s5-0 root-prim)))
|
||||
(set! (-> v1-11 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-11 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
0
|
||||
(collide-shape-method-46 s5-0)
|
||||
(set! (-> self root-override) s5-0)
|
||||
)
|
||||
(logclear! (-> self mask) (process-mask actor-pause enemy))
|
||||
(set! (-> self event-hook)
|
||||
(the-as (function process int symbol event-message-block object) simple-nav-sphere-event-handler)
|
||||
)
|
||||
(if arg2
|
||||
(nav-mesh-method-29 arg2 self #f)
|
||||
(nav-mesh-connect-from-ent (the-as entity-nav-mesh self))
|
||||
)
|
||||
(if (>= (-> self track-joint) 0)
|
||||
(go-virtual active)
|
||||
(go-virtual idle)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
Reference in New Issue
Block a user