Add ramp corner
This commit is contained in:
parent
c145933004
commit
485b09ccbc
3 changed files with 67 additions and 3 deletions
5
assets.h
5
assets.h
|
@ -24,6 +24,11 @@ static const char *LCR_maps[] =
|
||||||
"#=s0B0 #fd910" // concrete wall
|
"#=s0B0 #fd910" // concrete wall
|
||||||
"#^s1A0 #fk110" // ramps before wall
|
"#^s1A0 #fk110" // ramps before wall
|
||||||
|
|
||||||
|
"#vw0m0"
|
||||||
|
"#vx0m0J"
|
||||||
|
"#vw0l0L"
|
||||||
|
"#vx0l0I"
|
||||||
|
|
||||||
"#-s0q0"
|
"#-s0q0"
|
||||||
|
|
||||||
"#;p0w0L #f5130" // bugs
|
"#;p0w0L #f5130" // bugs
|
||||||
|
|
11
map.h
11
map.h
|
@ -95,9 +95,7 @@
|
||||||
#define LCR_BLOCK_RAMP_34 '/' ///< plain ramp, 3/4 size
|
#define LCR_BLOCK_RAMP_34 '/' ///< plain ramp, 3/4 size
|
||||||
#define LCR_BLOCK_RAMP_12 '<' ///< plain ramp, 1/2 size
|
#define LCR_BLOCK_RAMP_12 '<' ///< plain ramp, 1/2 size
|
||||||
#define LCR_BLOCK_RAMP_14 '_' ///< plain ramp, 1/4 size
|
#define LCR_BLOCK_RAMP_14 '_' ///< plain ramp, 1/4 size
|
||||||
|
#define LCR_BLOCK_RAMP_CORNER 'v' ///< corner of ramp
|
||||||
|
|
||||||
#define LCR_BLOCK_RAMP_CORNER ''
|
|
||||||
|
|
||||||
#define LCR_BLOCK_RAMP_CURVED_PLAT ']' ///< curved ramp with top platgform
|
#define LCR_BLOCK_RAMP_CURVED_PLAT ']' ///< curved ramp with top platgform
|
||||||
#define LCR_BLOCK_RAMP_CURVED ')' ///< curv. ramp without top platf.
|
#define LCR_BLOCK_RAMP_CURVED ')' ///< curv. ramp without top platf.
|
||||||
|
@ -832,6 +830,13 @@ void LCR_mapGetBlockShape(uint8_t blockType, uint8_t transform,
|
||||||
ADD(3,0,6) ADD(3,0,0) ADD(0,0,3) // bottom
|
ADD(3,0,6) ADD(3,0,0) ADD(0,0,3) // bottom
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case LCR_BLOCK_RAMP_CORNER:
|
||||||
|
ADD(6,0,6) ADD(0,0,0) ADD(6,4,0) // diagonal
|
||||||
|
ADD(6,0,6) ADD(6,4,0) ADD(6,0,0) // right
|
||||||
|
ADD(0,0,0) ADD(6,0,0) ADD(6,4,0) // front
|
||||||
|
ADD(0,0,0) ADD(6,0,6) ADD(6,0,0) // bottom
|
||||||
|
break;
|
||||||
|
|
||||||
case LCR_BLOCK_HILL:
|
case LCR_BLOCK_HILL:
|
||||||
ADD(0,0,0) ADD(6,0,0) ADD(0,2,1) // front
|
ADD(0,0,0) ADD(6,0,0) ADD(0,2,1) // front
|
||||||
ADD(6,0,0) ADD(6,2,1) ADD(0,2,1)
|
ADD(6,0,0) ADD(6,2,1) ADD(0,2,1)
|
||||||
|
|
54
racing.h
54
racing.h
|
@ -207,6 +207,60 @@ TPE_Vec3 _LCR_racingBlockEnvFunc(TPE_Vec3 point, const uint8_t *block)
|
||||||
|
|
||||||
#undef _CHECK_NEXT
|
#undef _CHECK_NEXT
|
||||||
|
|
||||||
|
case LCR_BLOCK_RAMP_CORNER:
|
||||||
|
{
|
||||||
|
TPE_Unit sides[6];
|
||||||
|
|
||||||
|
sides[0] = -1 * LCR_PHYSICS_UNIT / 2;
|
||||||
|
sides[1] = -1 * LCR_PHYSICS_UNIT / 4;
|
||||||
|
sides[2] = LCR_PHYSICS_UNIT / 2;
|
||||||
|
sides[3] = -1 * LCR_PHYSICS_UNIT / 4;
|
||||||
|
sides[4] = LCR_PHYSICS_UNIT / 2;
|
||||||
|
sides[5] = LCR_PHYSICS_UNIT / 4;
|
||||||
|
|
||||||
|
if (point.x > LCR_PHYSICS_UNIT / 2)
|
||||||
|
{
|
||||||
|
sides[4] *= -1;
|
||||||
|
|
||||||
|
point = TPE_envAATriPrism(point,TPE_vec3(0,0,0),
|
||||||
|
sides,LCR_PHYSICS_UNIT,2);
|
||||||
|
}
|
||||||
|
else if (point.z < -1 * LCR_PHYSICS_UNIT / 2)
|
||||||
|
point = TPE_envAATriPrism(point,TPE_vec3(0,0,0),
|
||||||
|
sides,LCR_PHYSICS_UNIT,0);
|
||||||
|
else if (point.y < -1 * LCR_PHYSICS_UNIT / 4)
|
||||||
|
{
|
||||||
|
sides[1] *= 2;
|
||||||
|
sides[3] *= 2;
|
||||||
|
sides[5] *= 2;
|
||||||
|
|
||||||
|
point = TPE_envAATriPrism(point,
|
||||||
|
TPE_vec3(0,0,0),sides,LCR_PHYSICS_UNIT / 2,1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
point = TPE_envHalfPlane(point,TPE_vec3(LCR_PHYSICS_UNIT / 2,
|
||||||
|
LCR_PHYSICS_UNIT / 4,-1 * LCR_PHYSICS_UNIT / 2),
|
||||||
|
TPE_vec3(-1 * LCR_PHYSICS_UNIT,2 * LCR_PHYSICS_UNIT,LCR_PHYSICS_UNIT));
|
||||||
|
|
||||||
|
#define LINESNAP(a,b,c,d,e,f)\
|
||||||
|
point = TPE_envLineSegment(point,\
|
||||||
|
TPE_vec3(a * LCR_PHYSICS_UNIT / 2,b * LCR_PHYSICS_UNIT / 4,\
|
||||||
|
c * LCR_PHYSICS_UNIT / 2),TPE_vec3(d * LCR_PHYSICS_UNIT / 2,\
|
||||||
|
e * LCR_PHYSICS_UNIT / 4,f * LCR_PHYSICS_UNIT / 2));
|
||||||
|
|
||||||
|
if (point.y < -1 * LCR_PHYSICS_UNIT / 4)
|
||||||
|
LINESNAP(-1,-1,-1,1,-1,1)
|
||||||
|
else if (point.x > LCR_PHYSICS_UNIT / 2)
|
||||||
|
LINESNAP(1,1,-1,1,-1,1)
|
||||||
|
else if (point.z < -1 * LCR_PHYSICS_UNIT / 2)
|
||||||
|
LINESNAP(-1,-1,-1,1,1,-1)
|
||||||
|
#undef LINESNAP
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case LCR_BLOCK_RAMP:
|
case LCR_BLOCK_RAMP:
|
||||||
case LCR_BLOCK_RAMP_34:
|
case LCR_BLOCK_RAMP_34:
|
||||||
case LCR_BLOCK_RAMP_12:
|
case LCR_BLOCK_RAMP_12:
|
||||||
|
|
Loading…
Reference in a new issue