summaryrefslogtreecommitdiff
path: root/vis.c
diff options
context:
space:
mode:
authorrodri <rgl@antares-labs.eu>2024-06-16 09:57:11 +0000
committerrodri <rgl@antares-labs.eu>2024-06-16 09:57:11 +0000
commitecdeed125c0fe00b6a90f85db44ad37f0913e992 (patch)
treecd63d29ffd837887db0b3a1011ef8f64c412d9cd /vis.c
parent093323c36fa083a897dc371b36889296d1069715 (diff)
download3dee-ecdeed125c0fe00b6a90f85db44ad37f0913e992.tar.gz
3dee-ecdeed125c0fe00b6a90f85db44ad37f0913e992.tar.bz2
3dee-ecdeed125c0fe00b6a90f85db44ad37f0913e992.zip
vis,med: make qball rotations position-independent.
the camera no longer needs to be on the first quadrant for the qball to work.
Diffstat (limited to 'vis.c')
-rw-r--r--vis.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/vis.c b/vis.c
index 84987df..ce45b0c 100644
--- a/vis.c
+++ b/vis.c
@@ -569,9 +569,9 @@ lmb(void)
Δorient = mulq(orient, invq(Δorient));
for(e = scene->ents.next; e != &scene->ents; e = e->next){
- e->bx = Vecquat(mulq(mulq(Δorient, Quatvec(0, e->bx)), invq(Δorient)));
- e->by = Vecquat(mulq(mulq(Δorient, Quatvec(0, e->by)), invq(Δorient)));
- e->bz = Vecquat(mulq(mulq(Δorient, Quatvec(0, e->bz)), invq(Δorient)));
+ e->bx = vcs2world(maincam, Vecquat(mulq(mulq(Δorient, Quatvec(0, world2vcs(maincam, e->bx))), invq(Δorient))));
+ e->by = vcs2world(maincam, Vecquat(mulq(mulq(Δorient, Quatvec(0, world2vcs(maincam, e->by))), invq(Δorient))));
+ e->bz = vcs2world(maincam, Vecquat(mulq(mulq(Δorient, Quatvec(0, world2vcs(maincam, e->bz))), invq(Δorient))));
}
}else{
Framebuf *fb;