From 78fd04c06172e7dc4a51e9107b8d544d56951b16 Mon Sep 17 00:00:00 2001 From: XProger Date: Fri, 1 Sep 2017 03:50:12 +0300 Subject: [PATCH] #3 fix chest & head rotations; #15 fix WebGL build --- src/camera.h | 2 +- src/character.h | 9 +++++++-- src/format.h | 2 +- src/lara.h | 5 ++++- src/level.h | 3 +++ 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/camera.h b/src/camera.h index be02779..66c7cd8 100644 --- a/src/camera.h +++ b/src/camera.h @@ -42,7 +42,7 @@ struct Camera : Controller { bool firstPerson; bool isVR; - Camera(IGame *game, Character *owner) : Controller(game, owner ? owner->entity : 0), owner(owner), frustum(new Frustum()), timer(-1.0f), viewIndex(-1), viewIndexLast(-1), viewTarget(NULL), reflectPlane(NULL), isVR(false) { + Camera(IGame *game, Character *owner) : Controller(game, owner ? owner->entity : 0), owner(owner), frustum(new Frustum()), timer(-1.0f), reflectPlane(NULL), viewIndex(-1), viewIndexLast(-1), viewTarget(NULL), isVR(false) { changeView(false); if (owner->getEntity().type != TR::Entity::LARA && level->cameraFrames) { state = STATE_CUTSCENE; diff --git a/src/character.h b/src/character.h index d813eff..c3e3cac 100644 --- a/src/character.h +++ b/src/character.h @@ -29,6 +29,8 @@ struct Character : Controller { Controller *viewTarget; int jointChest; int jointHead; + vec4 rangeChest; + vec4 rangeHead; vec3 velocity; float angleExt; @@ -47,6 +49,9 @@ struct Character : Controller { stepHeight = 256; dropHeight = -256; + rangeChest = vec4(-0.80f, 0.80f, -0.75f, 0.75f) * PI; + rangeHead = vec4(-0.25f, 0.25f, -0.50f, 0.50f) * PI; + animation.initOverrides(); rotHead = rotChest = quat(0, 0, 0, 1); @@ -202,7 +207,7 @@ struct Character : Controller { quat rot; if (jointChest > -1) { - if (aim(target, jointChest, vec4(-PI * 0.8f, PI * 0.8f, -PI * 0.75f, PI * 0.75f), rot)) + if (aim(target, jointChest, rangeChest, rot)) rotChest = rotChest.slerp(quat(0, 0, 0, 1).slerp(rot, 0.5f), speed); else rotChest = rotChest.slerp(quat(0, 0, 0, 1), speed); @@ -210,7 +215,7 @@ struct Character : Controller { } if (jointHead > -1) { - if (aim(target, jointHead, vec4(-PI * 0.25f, PI * 0.25f, -PI * 0.5f, PI * 0.5f), rot)) + if (aim(target, jointHead, rangeHead, rot)) rotHead = rotHead.slerp(rot, speed); else rotHead = rotHead.slerp(quat(0, 0, 0, 1), speed); diff --git a/src/format.h b/src/format.h index a553214..42a386d 100644 --- a/src/format.h +++ b/src/format.h @@ -221,7 +221,7 @@ namespace TR { ANIM_CMD_EFFECT , }; - enum Effect : uint32 { + enum Effect : int32 { NONE = -1, ROTATE_180 , FLOOR_SHAKE , diff --git a/src/lara.h b/src/lara.h index 704c66b..27af0a6 100644 --- a/src/lara.h +++ b/src/lara.h @@ -406,6 +406,9 @@ struct Lara : Character { jointChest = 7; jointHead = 14; + rangeChest = vec4(-0.40f, 0.40f, -0.90f, 0.90f) * PI; + rangeHead = vec4(-0.25f, 0.25f, -0.50f, 0.50f) * PI; + oxygen = LARA_MAX_OXYGEN; hitDir = -1; damageTime = LARA_DAMAGE_TIME; @@ -437,7 +440,7 @@ struct Lara : Character { //reset(14, vec3(40448, 3584, 60928), PI * 0.5f, STAND_ONWATER); // gym (pool) //reset(14, vec3(20215, 6656, 52942), PI); // level 1 (bridge) //reset(33, vec3(48229, 4608, 78420), 270 * DEG2RAD); // level 1 (end) - reset(15, vec3(70067, -256, 29104), -0.68f); // level 2 (pool) + //reset(15, vec3(70067, -256, 29104), -0.68f); // level 2 (pool) //reset(26, vec3(71980, 1546, 19000), 270 * DEG2RAD); // level 2 (underwater switch) //reset(61, vec3(27221, -1024, 29205), PI * 0.5f); // level 2 (blade) //reset(43, vec3(31400, -2560, 25200), PI); // level 2 (reach) diff --git a/src/level.h b/src/level.h index 44df8be..43bc5b1 100644 --- a/src/level.h +++ b/src/level.h @@ -192,6 +192,9 @@ struct Level : IGame { } virtual void playTrack(int track, bool restart = false) { + #ifndef WIN32 + return; + #endif if (track == 0) track = TR::LEVEL_INFO[level.id].ambientTrack;