mirror of
https://github.com/XProger/OpenLara.git
synced 2025-08-11 23:54:09 +02:00
#3 fix climp & water out bug
This commit is contained in:
17
src/lara.h
17
src/lara.h
@@ -412,7 +412,7 @@ struct Lara : Character {
|
|||||||
//reset(14, vec3(40448, 3584, 60928), PI * 0.5f, true); // gym (pool)
|
//reset(14, vec3(40448, 3584, 60928), PI * 0.5f, true); // gym (pool)
|
||||||
|
|
||||||
//reset(14, vec3(20215, 6656, 52942), PI); // level 1 (bridge)
|
//reset(14, vec3(20215, 6656, 52942), PI); // level 1 (bridge)
|
||||||
reset(15, vec3(70067, -256, 29104), -0.68f); // level 2 (pool)
|
//reset(15, vec3(70067, -256, 29104), -0.68f); // level 2 (pool)
|
||||||
//reset(61, vec3(27221, -1024, 29205), PI * 0.5f); // level 2 (blade)
|
//reset(61, vec3(27221, -1024, 29205), PI * 0.5f); // level 2 (blade)
|
||||||
//reset(43, vec3(31400, -2560, 25200), PI); // level 2 (reach)
|
//reset(43, vec3(31400, -2560, 25200), PI); // level 2 (reach)
|
||||||
//reset(16, vec3(60907, 0, 39642), PI * 3 / 2); // level 2 (hang & climb)
|
//reset(16, vec3(60907, 0, 39642), PI * 3 / 2); // level 2 (hang & climb)
|
||||||
@@ -1018,6 +1018,11 @@ struct Lara : Character {
|
|||||||
wpnHide();
|
wpnHide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual void cmdOffset(const vec3 &offset) {
|
||||||
|
Character::cmdOffset(offset);
|
||||||
|
move();
|
||||||
|
}
|
||||||
|
|
||||||
virtual void cmdJump(const vec3 &vel) {
|
virtual void cmdJump(const vec3 &vel) {
|
||||||
vec3 v = vel;
|
vec3 v = vel;
|
||||||
if (state == STATE_HANG_UP)
|
if (state == STATE_HANG_UP)
|
||||||
@@ -1073,6 +1078,7 @@ struct Lara : Character {
|
|||||||
pos.y = float(info.floor);
|
pos.y = float(info.floor);
|
||||||
specular = LARA_WET_SPECULAR;
|
specular = LARA_WET_SPECULAR;
|
||||||
updateEntity();
|
updateEntity();
|
||||||
|
move();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1888,7 +1894,10 @@ struct Lara : Character {
|
|||||||
maxHeight = 0;
|
maxHeight = 0;
|
||||||
offset.y = -1;
|
offset.y = -1;
|
||||||
}
|
}
|
||||||
if (stand == STAND_HANG) {
|
|
||||||
|
bool standHang = stand == STAND_HANG && state != STATE_HANG_UP && state != STATE_HANDSTAND;
|
||||||
|
|
||||||
|
if (standHang) {
|
||||||
maxHeight = 0;
|
maxHeight = 0;
|
||||||
maxAscent = maxDescent = 64;
|
maxAscent = maxDescent = 64;
|
||||||
offset = getDir() * (LARA_RADIUS + 32.0f);
|
offset = getDir() * (LARA_RADIUS + 32.0f);
|
||||||
@@ -1900,12 +1909,12 @@ struct Lara : Character {
|
|||||||
|
|
||||||
collision = Collision(level, room, pos, offset, vel, radius, angleExt, minHeight, maxHeight, maxAscent, maxDescent);
|
collision = Collision(level, room, pos, offset, vel, radius, angleExt, minHeight, maxHeight, maxAscent, maxDescent);
|
||||||
|
|
||||||
if (stand != STAND_HANG && (collision.side == Collision::LEFT || collision.side == Collision::RIGHT)) {
|
if (!standHang && (collision.side == Collision::LEFT || collision.side == Collision::RIGHT)) {
|
||||||
float rot = TURN_WALL_Y * Core::deltaTime;
|
float rot = TURN_WALL_Y * Core::deltaTime;
|
||||||
rotateY((collision.side == Collision::LEFT) ? rot : -rot);
|
rotateY((collision.side == Collision::LEFT) ? rot : -rot);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (stand == STAND_HANG && collision.side != Collision::FRONT) {
|
if (standHang && collision.side != Collision::FRONT) {
|
||||||
offset.x = offset.z = 0.0f;
|
offset.x = offset.z = 0.0f;
|
||||||
minHeight = LARA_HANG_OFFSET;
|
minHeight = LARA_HANG_OFFSET;
|
||||||
maxDescent = 0xFFFFFF;
|
maxDescent = 0xFFFFFF;
|
||||||
|
Reference in New Issue
Block a user