Skip to content

Commit

Permalink
change coordinate system translation to Mumble
Browse files Browse the repository at this point in the history
also change direction/axis to be 'correct'...
(unit vectors and orthogonal)
see for help:
https://www.mumble.info/documentation/developer/positional-audio/create-plugin/
  • Loading branch information
alifeee committed Oct 1, 2023
1 parent 8efb646 commit 0443f05
Showing 1 changed file with 24 additions and 10 deletions.
34 changes: 24 additions & 10 deletions mumble/plugin.c
Original file line number Diff line number Diff line change
Expand Up @@ -206,33 +206,47 @@ bool mumble_fetchPositionalData(float *avatarPos, float *avatarDir, float *avata
return false;
}

// Factorio coordinates are:
// x: east- west+
// y: north- south+

// Mumble coordinates are:
// x: east- west+
// y: up+ down-
// z: north+ south-

// thus, Mumble coordinates are:
// x: Factorio x
// y: Factorio z
// z: Factorio -y

avatarPos[0] = x;
avatarPos[1] = y;
avatarPos[2] = z;
avatarPos[1] = z;
avatarPos[2] = -y;

avatarDir[0] = 0.0f;
avatarDir[1] = 0.0f;
avatarDir[2] = -1.0f;
avatarDir[1] = -1.0f;
avatarDir[2] = 0.0f;

avatarAxis[0] = 0.0f;
avatarAxis[1] = 0.0f;
avatarAxis[2] = -1.0f;
avatarAxis[2] = 1.0f;

cameraPos[0] = x;
cameraPos[1] = y;
cameraPos[2] = z;
cameraPos[1] = z;
cameraPos[2] = -y;

cameraDir[0] = 0.0f;
cameraDir[1] = 0.0f;
cameraDir[2] = -1.0f;
cameraDir[1] = -1.0f;
cameraDir[2] = 0.0f;

cameraAxis[0] = 0.0f;
cameraAxis[1] = 0.0f;
#ifdef DEBUG_FLUCTUATION
// set to random value between 0.01 and 0.02
cameraAxis[2] = 0.01f + ((float)rand() / (float)RAND_MAX) * 0.01f;
#else
cameraAxis[2] = -1.0f;
cameraAxis[2] = 1.0f;
#endif

// context: combine server + surface
Expand Down

0 comments on commit 0443f05

Please sign in to comment.