Tweak physics, cannons, nsbtp support, prepare to add items.
This commit is contained in:
1 parent
e1dc8603d1
commit
e010627b5d
19 files changed
+982
-353
No files matched your search
@@ -20,35 +20,48 @@ window.cameraIngame = function(kart) {
|
||||
var lookAtOffset = [0, 16, 0]
|
||||
|
||||
var camNormal = [0, 1, 0];
|
||||
var forwardNormal = null;
|
||||
var camAngle = 0;
|
||||
var boostOff = 0;
|
||||
|
||||
function tweenVec3(from, to) {
|
||||
from[0] += (to[0]-from[0])*0.075;
|
||||
from[1] += (to[1]-from[1])*0.075;
|
||||
from[2] += (to[2]-from[2])*0.075;
|
||||
}
|
||||
|
||||
function getView(scene) {
|
||||
var loop = kart.physBasis != null && kart.physBasis.loop;
|
||||
var basis = buildBasis();
|
||||
tweenVec3(camOffset, loop ? [0, 12, -57] : [0, 32, -48]);
|
||||
var camPos = vec3.transformMat4([], camOffset, basis);
|
||||
var lookAtPos = vec3.transformMat4([], lookAtOffset, basis);
|
||||
|
||||
vec3.scale(camPos, camPos, 1/1024);
|
||||
vec3.scale(lookAtPos, lookAtPos, 1/1024);
|
||||
|
||||
var mat = mat4.lookAt(mat4.create(), camPos, lookAtPos, [0, 1, 0]);
|
||||
var mat = mat4.lookAt(mat4.create(), camPos, lookAtPos, (kart.physBasis) ? camNormal : [0, 1, 0]);
|
||||
var kpos = vec3.clone(kart.pos);
|
||||
if (kart.drifting && !kart.driftLanded && kart.ylock>0) kpos[1] -= kart.ylock;
|
||||
mat4.translate(mat, mat, vec3.scale([], kpos, -1/1024));
|
||||
|
||||
//interpolate visual normal roughly to target
|
||||
camNormal[0] += (kart.kartNormal[0]-camNormal[0])*0.075;
|
||||
camNormal[1] += (kart.kartNormal[1]-camNormal[1])*0.075;
|
||||
camNormal[2] += (kart.kartNormal[2]-camNormal[2])*0.075;
|
||||
tweenVec3(camNormal, kart.kartNormal);
|
||||
vec3.normalize(camNormal, camNormal);
|
||||
|
||||
if (kart.physBasis != null) {
|
||||
if (loop) {
|
||||
var kartA = kart.physicalDir+kart.driftOff/2;
|
||||
var forward = [Math.sin(kartA), 0, -Math.cos(kartA)];
|
||||
vec3.transformMat4(forward, forward, kart.physBasis.mat);
|
||||
camAngle += dirDiff(Math.atan2(forward[0], -forward[2]), camAngle)*0.075;
|
||||
if (forwardNormal == null) {
|
||||
forwardNormal = [Math.sin(camAngle), 0, -Math.cos(camAngle)];
|
||||
} else {
|
||||
tweenVec3(forwardNormal, forward);
|
||||
}
|
||||
} else {
|
||||
camAngle += dirDiff(kart.physicalDir+kart.driftOff/2, camAngle)*0.075;
|
||||
forwardNormal = null;
|
||||
}
|
||||
camAngle = fixDir(camAngle);
|
||||
|
||||
@@ -67,8 +80,8 @@ window.cameraIngame = function(kart) {
|
||||
function buildBasis() {
|
||||
//order y, x, z
|
||||
var kart = thisObj.kart;
|
||||
var forward = [Math.sin(camAngle), 0, -Math.cos(camAngle)];
|
||||
var side = [Math.cos(camAngle), 0, Math.sin(camAngle)];
|
||||
var forward = (forwardNormal != null) ? forwardNormal : [Math.sin(camAngle), 0, -Math.cos(camAngle)];
|
||||
var side = vec3.cross([], forward, camNormal);
|
||||
/*
|
||||
if (kart.physBasis != null) {
|
||||
vec3.transformMat4(forward, forward, kart.physBasis.mat);
|
||||
|
||||
Reference in new issue
Block a user