clean ShiftBSPMain
This commit is contained in:
parent
ce93fb3be8
commit
b68cbfd78b
|
|
@ -624,40 +624,25 @@ int ScaleBSPMain( int argc, char **argv ){
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int ShiftBSPMain( int argc, char **argv ){
|
int ShiftBSPMain( int argc, char **argv ){
|
||||||
int i, j;
|
int i;
|
||||||
Vector3 scale;
|
Vector3 shift;
|
||||||
Vector3 vec;
|
Vector3 vec;
|
||||||
char str[ 1024 ];
|
char str[ 1024 ];
|
||||||
float spawn_ref = 0;
|
|
||||||
|
|
||||||
|
|
||||||
/* arg checking */
|
/* arg checking */
|
||||||
if ( argc < 3 ) {
|
if ( argc < 3 ) {
|
||||||
Sys_Printf( "Usage: q3map2 [-v] -shift [-tex] [-spawn_ref <value>] <value> <mapname>\n" );
|
Sys_Printf( "Usage: q3map2 [-v] -shift <value> <mapname>\n" );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( i = 1; i < argc - 2; ++i )
|
|
||||||
{
|
|
||||||
if ( striEqual( argv[i], "-tex" ) ) {
|
|
||||||
}
|
|
||||||
else if ( striEqual( argv[i], "-spawn_ref" ) ) {
|
|
||||||
spawn_ref = atof( argv[i + 1] );
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* get shift */
|
/* get shift */
|
||||||
// if(argc-2 >= i) // always true
|
shift[2] = shift[1] = shift[0] = atof( argv[ argc - 2 ] );
|
||||||
scale[2] = scale[1] = scale[0] = atof( argv[ argc - 2 ] );
|
if ( argc - 3 >= 1 ) {
|
||||||
if ( argc - 3 >= i ) {
|
shift[1] = shift[0] = atof( argv[ argc - 3 ] );
|
||||||
scale[1] = scale[0] = atof( argv[ argc - 3 ] );
|
|
||||||
}
|
}
|
||||||
if ( argc - 4 >= i ) {
|
if ( argc - 4 >= 1 ) {
|
||||||
scale[0] = atof( argv[ argc - 4 ] );
|
shift[0] = atof( argv[ argc - 4 ] );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -678,14 +663,8 @@ int ShiftBSPMain( int argc, char **argv ){
|
||||||
for ( auto& e : entities )
|
for ( auto& e : entities )
|
||||||
{
|
{
|
||||||
/* shift origin */
|
/* shift origin */
|
||||||
if ( e.read_keyvalue( vec, "origin" ) ) {
|
if ( e.read_keyvalue( vec, "origin" ) ) { // fixme: this doesn't consider originless point entities; group entities with origin will be wrong too
|
||||||
if ( e.classname_prefixed( "info_player_" ) ) {
|
vec += shift;
|
||||||
vec[2] += spawn_ref;
|
|
||||||
}
|
|
||||||
vec += scale;
|
|
||||||
if ( e.classname_prefixed( "info_player_" ) ) {
|
|
||||||
vec[2] -= spawn_ref;
|
|
||||||
}
|
|
||||||
sprintf( str, "%f %f %f", vec[ 0 ], vec[ 1 ], vec[ 2 ] );
|
sprintf( str, "%f %f %f", vec[ 0 ], vec[ 1 ], vec[ 2 ] );
|
||||||
e.setKeyValue( "origin", str );
|
e.setKeyValue( "origin", str );
|
||||||
}
|
}
|
||||||
|
|
@ -695,61 +674,38 @@ int ShiftBSPMain( int argc, char **argv ){
|
||||||
/* shift models */
|
/* shift models */
|
||||||
for ( i = 0; i < numBSPModels; i++ )
|
for ( i = 0; i < numBSPModels; i++ )
|
||||||
{
|
{
|
||||||
bspModels[ i ].minmax.mins += scale;
|
bspModels[ i ].minmax.mins += shift;
|
||||||
bspModels[ i ].minmax.maxs += scale;
|
bspModels[ i ].minmax.maxs += shift;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* shift nodes */
|
/* shift nodes */
|
||||||
for ( i = 0; i < numBSPNodes; i++ )
|
for ( i = 0; i < numBSPNodes; i++ )
|
||||||
{
|
{
|
||||||
bspNodes[ i ].minmax.mins += scale;
|
bspNodes[ i ].minmax.mins += shift;
|
||||||
bspNodes[ i ].minmax.maxs += scale;
|
bspNodes[ i ].minmax.maxs += shift;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* shift leafs */
|
/* shift leafs */
|
||||||
for ( i = 0; i < numBSPLeafs; i++ )
|
for ( i = 0; i < numBSPLeafs; i++ )
|
||||||
{
|
{
|
||||||
bspLeafs[ i ].minmax.mins += scale;
|
bspLeafs[ i ].minmax.mins += shift;
|
||||||
bspLeafs[ i ].minmax.maxs += scale;
|
bspLeafs[ i ].minmax.maxs += shift;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* shift drawverts */
|
/* shift drawverts */
|
||||||
for ( i = 0; i < numBSPDrawVerts; i++ )
|
for ( i = 0; i < numBSPDrawVerts; i++ )
|
||||||
{
|
{
|
||||||
bspDrawVerts[i].xyz += scale;
|
bspDrawVerts[i].xyz += shift;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* shift planes */
|
/* shift planes */
|
||||||
|
|
||||||
for ( i = 0; i < numBSPPlanes; i++ )
|
for ( i = 0; i < numBSPPlanes; i++ )
|
||||||
{
|
{
|
||||||
//find point on plane
|
bspPlanes[i].dist() = vector3_dot( bspPlanes[i].normal(), bspPlanes[i].normal() * bspPlanes[i].dist() + shift );
|
||||||
Vector3 point;
|
|
||||||
for ( j=0; j<3; j++ ){
|
|
||||||
//point[j] = bspPlanes[ i ].dist * bspPlanes[ i ].normal[j];
|
|
||||||
if ( fabs( bspPlanes[ i ].normal()[j] ) > 0.5 ){
|
|
||||||
point[j] = bspPlanes[ i ].dist() / bspPlanes[ i ].normal()[j];
|
|
||||||
point[(j+1)%3] = point[(j+2)%3] = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//shift point
|
|
||||||
point += scale;
|
|
||||||
//calc new plane dist
|
|
||||||
bspPlanes[ i ].dist() = vector3_dot( point, bspPlanes[ i ].normal() );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* scale gridsize */
|
// fixme: engine says 'light grid mismatch', unless translation is multiple of grid size
|
||||||
/*
|
|
||||||
if ( !entities[ 0 ].read_keyvalue( vec, "gridsize" ) ) {
|
|
||||||
VectorCopy( gridSize, vec );
|
|
||||||
}
|
|
||||||
vec[0] *= scale[0];
|
|
||||||
vec[1] *= scale[1];
|
|
||||||
vec[2] *= scale[2];
|
|
||||||
sprintf( str, "%f %f %f", vec[ 0 ], vec[ 1 ], vec[ 2 ] );
|
|
||||||
entities[ 0 ].setKeyValue( "gridsize", str );
|
|
||||||
*/
|
|
||||||
/* inject command line parameters */
|
/* inject command line parameters */
|
||||||
InjectCommandLine( argv, 0, argc - 1 );
|
InjectCommandLine( argv, 0, argc - 1 );
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user