mirror of
https://github.com/JezuzLizard/Recompilable-gscs-for-BO2-zombies-and-multiplayer.git
synced 2025-06-10 10:47:58 -05:00
70 lines
1.9 KiB
Plaintext
70 lines
1.9 KiB
Plaintext
|
|
setupminimap( material ) //checked matches cerberus output
|
|
{
|
|
requiredmapaspectratio = getDvarFloat( "scr_RequiredMapAspectratio" );
|
|
corners = getentarray( "minimap_corner", "targetname" );
|
|
if ( corners.size != 2 )
|
|
{
|
|
/*
|
|
/#
|
|
println( "^1Error: There are not exactly two "minimap_corner" entities in the map. Could not set up minimap." );
|
|
#/
|
|
*/
|
|
return;
|
|
}
|
|
corner0 = ( corners[ 0 ].origin[ 0 ], corners[ 0 ].origin[ 1 ], 0 );
|
|
corner1 = ( corners[ 1 ].origin[ 0 ], corners[ 1 ].origin[ 1 ], 0 );
|
|
cornerdiff = corner1 - corner0;
|
|
north = ( cos( getnorthyaw() ), sin( getnorthyaw() ), 0 );
|
|
west = ( 0 - north[ 1 ], north[ 0 ], 0 );
|
|
if ( vectordot( cornerdiff, west ) > 0 )
|
|
{
|
|
if ( vectordot( cornerdiff, north ) > 0 )
|
|
{
|
|
northwest = corner1;
|
|
southeast = corner0;
|
|
}
|
|
else
|
|
{
|
|
side = vecscale( north, vectordot( cornerdiff, north ) );
|
|
northwest = corner1 - side;
|
|
southeast = corner0 + side;
|
|
}
|
|
}
|
|
else if ( vectordot( cornerdiff, north ) > 0 )
|
|
{
|
|
side = vecscale( north, vectordot( cornerdiff, north ) );
|
|
northwest = corner0 + side;
|
|
southeast = corner1 - side;
|
|
}
|
|
else
|
|
{
|
|
northwest = corner0;
|
|
southeast = corner1;
|
|
}
|
|
if ( requiredmapaspectratio > 0 )
|
|
{
|
|
northportion = vectordot( northwest - southeast, north );
|
|
westportion = vectordot( northwest - southeast, west );
|
|
mapaspectratio = westportion / northportion;
|
|
if ( mapaspectratio < requiredmapaspectratio )
|
|
{
|
|
incr = requiredmapaspectratio / mapaspectratio;
|
|
addvec = vecscale( west, westportion * ( incr - 1 ) * 0.5 );
|
|
}
|
|
else
|
|
{
|
|
incr = mapaspectratio / requiredmapaspectratio;
|
|
addvec = vecscale( north, northportion * ( incr - 1 ) * 0.5 );
|
|
}
|
|
northwest += addvec;
|
|
southeast -= addvec;
|
|
}
|
|
setminimap( material, northwest[ 0 ], northwest[ 1 ], southeast[ 0 ], southeast[ 1 ] );
|
|
}
|
|
|
|
vecscale( vec, scalar ) //checked matches cerberus output
|
|
{
|
|
return ( vec[ 0 ] * scalar, vec[ 1 ] * scalar, vec[ 2 ] * scalar );
|
|
}
|