mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 00:57:44 -04:00
[jak3] Fix crash with volcano platforms
This commit is contained in:
parent
4e33746634
commit
d91f7091dd
|
@ -42180,6 +42180,12 @@
|
||||||
;; rigid-body ;;
|
;; rigid-body ;;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
(deftype rigid-body-stack (structure)
|
||||||
|
((vec vector :inline)
|
||||||
|
(mat matrix :inline)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
(deftype rigid-body-work (structure)
|
(deftype rigid-body-work (structure)
|
||||||
((max-ang-momentum float :offset-assert 0)
|
((max-ang-momentum float :offset-assert 0)
|
||||||
(max-ang-velocity float :offset-assert 4)
|
(max-ang-velocity float :offset-assert 4)
|
||||||
|
|
|
@ -429,7 +429,7 @@
|
||||||
"(method 22 rigid-body-control)": [[16, ["inline-array", "vector", 2]]],
|
"(method 22 rigid-body-control)": [[16, ["inline-array", "vector", 2]]],
|
||||||
"(method 23 rigid-body-control)": [[16, ["inline-array", "vector", 2]]],
|
"(method 23 rigid-body-control)": [[16, ["inline-array", "vector", 2]]],
|
||||||
"(method 24 rigid-body-control)": [[16, ["inline-array", "vector", 2]]],
|
"(method 24 rigid-body-control)": [[16, ["inline-array", "vector", 2]]],
|
||||||
"(method 28 rigid-body-control)": [[16, "rigid-body-impact"]],
|
"(method 28 rigid-body-control)": [[16, "rigid-body-stack"]],
|
||||||
"(method 50 rigid-body-object)": [[16, "rigid-body-impact"]],
|
"(method 50 rigid-body-object)": [[16, "rigid-body-impact"]],
|
||||||
"(method 51 rigid-body-object)": [[16, "rigid-body-impact"]],
|
"(method 51 rigid-body-object)": [[16, "rigid-body-impact"]],
|
||||||
"ptest": [[16, "vector"]],
|
"ptest": [[16, "vector"]],
|
||||||
|
|
|
@ -5,6 +5,12 @@
|
||||||
;; name in dgo: rigid-body
|
;; name in dgo: rigid-body
|
||||||
;; dgos: GAME
|
;; dgos: GAME
|
||||||
|
|
||||||
|
(deftype rigid-body-stack (structure)
|
||||||
|
((vec vector :inline)
|
||||||
|
(mat matrix :inline)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
;; DECOMP BEGINS
|
;; DECOMP BEGINS
|
||||||
|
|
||||||
(deftype rigid-body-work (structure)
|
(deftype rigid-body-work (structure)
|
||||||
|
@ -92,10 +98,10 @@
|
||||||
)
|
)
|
||||||
|
|
||||||
(defmethod rigid-body-control-method-28 ((this rigid-body-control) (arg0 vector) (arg1 quaternion))
|
(defmethod rigid-body-control-method-28 ((this rigid-body-control) (arg0 vector) (arg1 quaternion))
|
||||||
(let ((s3-0 (new 'stack-no-clear 'rigid-body-impact)))
|
(let ((s3-0 (new 'stack-no-clear 'rigid-body-stack)))
|
||||||
(quaternion->matrix (the-as matrix (-> s3-0 normal)) arg1)
|
(quaternion->matrix (-> s3-0 mat) arg1)
|
||||||
(vector-rotate*! (-> s3-0 point) (-> this info cm-offset-joint) (the-as matrix (-> s3-0 normal)))
|
(vector-rotate*! (-> s3-0 vec) (-> this info cm-offset-joint) (-> s3-0 mat))
|
||||||
(vector+! (-> this position) arg0 (-> s3-0 point))
|
(vector+! (-> this position) arg0 (-> s3-0 vec))
|
||||||
)
|
)
|
||||||
(quaternion-copy! (the-as quaternion (-> this rot)) arg1)
|
(quaternion-copy! (the-as quaternion (-> this rot)) arg1)
|
||||||
(quaternion-normalize! (the-as quaternion (-> this rot)))
|
(quaternion-normalize! (the-as quaternion (-> this rot)))
|
||||||
|
|
8
test/decompiler/reference/jak3/engine/physics/rigid-body_REF.gc
generated
vendored
8
test/decompiler/reference/jak3/engine/physics/rigid-body_REF.gc
generated
vendored
|
@ -114,10 +114,10 @@
|
||||||
;; definition for method 28 of type rigid-body-control
|
;; definition for method 28 of type rigid-body-control
|
||||||
;; WARN: Return type mismatch int vs none.
|
;; WARN: Return type mismatch int vs none.
|
||||||
(defmethod rigid-body-control-method-28 ((this rigid-body-control) (arg0 vector) (arg1 quaternion))
|
(defmethod rigid-body-control-method-28 ((this rigid-body-control) (arg0 vector) (arg1 quaternion))
|
||||||
(let ((s3-0 (new 'stack-no-clear 'rigid-body-impact)))
|
(let ((s3-0 (new 'stack-no-clear 'rigid-body-stack)))
|
||||||
(quaternion->matrix (the-as matrix (-> s3-0 normal)) arg1)
|
(quaternion->matrix (-> s3-0 mat) arg1)
|
||||||
(vector-rotate*! (-> s3-0 point) (-> this info cm-offset-joint) (the-as matrix (-> s3-0 normal)))
|
(vector-rotate*! (-> s3-0 vec) (-> this info cm-offset-joint) (-> s3-0 mat))
|
||||||
(vector+! (-> this position) arg0 (-> s3-0 point))
|
(vector+! (-> this position) arg0 (-> s3-0 vec))
|
||||||
)
|
)
|
||||||
(quaternion-copy! (the-as quaternion (-> this rot)) arg1)
|
(quaternion-copy! (the-as quaternion (-> this rot)) arg1)
|
||||||
(quaternion-normalize! (the-as quaternion (-> this rot)))
|
(quaternion-normalize! (the-as quaternion (-> this rot)))
|
||||||
|
|
Loading…
Reference in a new issue