summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorepoch <epoch@hacking.allowed.org>2020-04-03 03:18:08 -0500
committerepoch <epoch@hacking.allowed.org>2020-04-03 03:18:08 -0500
commit4e8281fc12c7fe71b1a0370dc144c6d7b7356757 (patch)
tree584ded43dda1e8ab9fa6dc37cd7f418762f574eb /src
parent644b0ed4ab3a021982c37b15e8a15da3da964565 (diff)
downloadhackvr-4e8281fc12c7fe71b1a0370dc144c6d7b7356757.tar.gz
hackvr-4e8281fc12c7fe71b1a0370dc144c6d7b7356757.zip
left some really derpy code in the move command. added extra check to return of ht_getnode for group relative info
Diffstat (limited to 'src')
-rw-r--r--src/hackvr.c24
-rw-r--r--src/math.c2
2 files changed, 22 insertions, 4 deletions
diff --git a/src/hackvr.c b/src/hackvr.c
index 764826f..cc40ed8 100644
--- a/src/hackvr.c
+++ b/src/hackvr.c
@@ -202,6 +202,7 @@ int hackvr_handler(char *line) {
fprintf(stderr,"# set\n");
fprintf(stderr,"# addshape color N x1 y1 z1 ... xN yN zN\n");
fprintf(stderr,"# export grou*\n");
+ fprintf(stderr,"# ping any-string-without-spaces\n");
fprintf(stderr,"# * scaleup x y z\n");
fprintf(stderr,"# * move [+]x [+]y [+]z\n");
fprintf(stderr,"# * move forward|backward|up|down|left|right\n");
@@ -346,7 +347,11 @@ int hackvr_handler(char *line) {
#endif
else {
fprintf(stderr,"# unknown variable: %s\n",a[2]);
+#ifdef GRAPHICAL
fprintf(stderr,"# variables: camera.{p,r}.{x,y,z}, global.zoom, input_mode");
+#else
+ fprintf(stderr,"# don't have any variables to set in headles mode.\n");
+#endif
}
ret=1;
return ret;
@@ -358,7 +363,11 @@ int hackvr_handler(char *line) {
#endif
else {
fprintf(stderr,"# unknown variable: %s\n",a[2]);
+#ifdef GRAPHICAL
fprintf(stderr,"# variables: global.beep, force_redraw, red_and_blue\n");
+#else
+ fprintf(stderr,"# don't have any variables to toggle in headless mode.\n");
+#endif
return ret;
}
fprintf(stderr,"# %s toggled!\n",a[2]);
@@ -437,6 +446,14 @@ int hackvr_handler(char *line) {
}
return ret;
}
+ if(!strcmp(command,"ping")) {
+ if(len > 2) {
+ printf("%s pong %s\n",global.user,a[2]);
+ } else {
+ printf("%s pong\n",global.user);
+ }
+ return ret;
+ }
//should scaleup even be inside hackvr? seems like something an external program could do... but it wouldn't act on hackvr's state. so nevermind.
if(!strcmp(command,"scale")) {//this doesn't just scale *up*, it can scale down too. also, make the group relative stuff keep scale factors. we can flatten if we want later.
for(i=0;global.shape[i];i++) {
@@ -535,6 +552,7 @@ int hackvr_handler(char *line) {
for(i=0;global.group_rot[i];i++);
global.group_rot[i]=malloc(sizeof(c3_group_rot_t));
ht_setkey(&global.ht_group,id,global.group_rot[i]);
+ gr=global.group_rot[i];
global.group_rot[i]->id=strdup(id);
global.group_rot[i+1]=0;
global.group_rot[i]->r.x=(degrees){0};//only set these if new.
@@ -546,9 +564,9 @@ int hackvr_handler(char *line) {
}
}
if(len > 4) { //if we have > 4 we're doing relative movement
- global.group_rot[i]->p.x=(a[2][0]=='+'?global.group_rot[i]->p.x:0)+strtold(a[2]+(a[2][0]=='+'),0);
- global.group_rot[i]->p.y=(a[3][0]=='+'?global.group_rot[i]->p.y:0)+strtold(a[3]+(a[3][0]=='+'),0);
- global.group_rot[i]->p.z=(a[4][0]=='+'?global.group_rot[i]->p.z:0)+strtold(a[4]+(a[4][0]=='+'),0);
+ gr->p.x=(a[2][0]=='+'?gr->p.x:0)+strtold(a[2]+(a[2][0]=='+'),0);
+ gr->p.y=(a[3][0]=='+'?gr->p.y:0)+strtold(a[3]+(a[3][0]=='+'),0);
+ gr->p.z=(a[4][0]=='+'?gr->p.z:0)+strtold(a[4]+(a[4][0]=='+'),0);
}
else if(len > 2) {
tmpy=0;
diff --git a/src/math.c b/src/math.c
index bfd8b94..6a077f0 100644
--- a/src/math.c
+++ b/src/math.c
@@ -13,7 +13,7 @@ c3_group_rot_t *get_group_relative(char *id) {//crashes in here somehwere...
struct entry *tmp;
if((tmp=ht_getnode(&global.ht_group,id))) {
gr=tmp->target;//target is a void *
- return gr;
+ if(gr) return gr;
}//if this didn't work, do fallback...
//fprintf(stderr,"# !!! hash table failed for %s\n",id);
for(i=0;global.group_rot[i];i++) {