void Select_FlipAxis (int axis) { int i; Select_GetMid (select_origin); for (i=0 ; i<3 ; i++) { Math_VectorCopy (vec3_origin, select_matrix[i]); select_matrix[i][i] = 1; } select_matrix[axis][axis] = -1; select_fliporder = TRUE; Select_AplyMatrix (); }
void Select_FlipAxis( int axis ) { int i; Select_GetMid( select_origin ); for ( i = 0 ; i < 3 ; i++ ) { select_matrix[i].clear(); select_matrix[i][i] = 1; } select_matrix[axis][axis] = -1; select_fliporder = true; Select_ApplyMatrix( true, false, 0, 0 ); Sys_UpdateWindows( W_ALL ); }
void Select_FlipAxis (int axis) { int i; Select_GetMid (select_origin); for (i=0 ; i<3 ; i++) { VectorCopy (vec3_origin, select_matrix[i]); select_matrix[i][i] = 1; } select_matrix[axis][axis] = -1; select_fliporder = true; Select_AplyMatrix (true); Sys_UpdateWindows (W_ALL); }
void Select_Scale(float x, float y, float z) { Select_GetMid (select_origin); for (brush_t* b=selected_brushes.next ; b != &selected_brushes ; b=b->next) { for (face_t* f=b->brush_faces ; f ; f=f->next) { for (int i=0 ; i<3 ; i++) { f->planepts[i][0] -= select_origin[0]; f->planepts[i][1] -= select_origin[1]; f->planepts[i][2] -= select_origin[2]; f->planepts[i][0] *= x; //f->planepts[i][0] = floor(f->planepts[i][0] / g_qeglobals.d_gridsize + 0.5) * g_qeglobals.d_gridsize; f->planepts[i][1] *= y; //f->planepts[i][1] = floor(f->planepts[i][1] / g_qeglobals.d_gridsize + 0.5) * g_qeglobals.d_gridsize; f->planepts[i][2] *= z; //f->planepts[i][2] = floor(f->planepts[i][2] / g_qeglobals.d_gridsize + 0.5) * g_qeglobals.d_gridsize; f->planepts[i][0] += select_origin[0]; f->planepts[i][1] += select_origin[1]; f->planepts[i][2] += select_origin[2]; } } Brush_Build(b, false); if (b->patchBrush) { vec3_t v; v[0] = x; v[1] = y; v[2] = z; //Patch_Scale(b->nPatchID, select_origin, v); Patch_Scale(b->pPatch, select_origin, v); } if (b->terrainBrush) { vec3_t v; v[0] = x; v[1] = y; v[2] = z; Terrain_Scale(b->pTerrain, select_origin, v); } } }
void Select_RotateAxis( int axis, float deg, bool bPaint, bool bMouse ) { edVec3_c temp; int i, j; vec_t c, s; if ( deg == 0 ) { //Sys_Printf("0 deg\n"); return; } if ( bMouse ) { select_origin = g_pParentWnd->ActiveXY()->RotateOrigin(); } else { Select_GetMid( select_origin ); } select_fliporder = false; if ( deg == 90 ) { for ( i = 0 ; i < 3 ; i++ ) { select_matrix[i].clear(); select_matrix[i][i] = 1; } i = ( axis + 1 ) % 3; j = ( axis + 2 ) % 3; temp = select_matrix[i]; select_matrix[i] = select_matrix[j]; select_matrix[j] = -temp; } else { deg = -deg; if ( deg == -180.0 ) { c = -1; s = 0; } else if ( deg == -270.0 ) { c = 0; s = -1; } else { c = cos( DEG2RAD( deg ) ); s = sin( DEG2RAD( deg ) ); } for ( i = 0 ; i < 3 ; i++ ) { select_matrix[i].clear(); select_matrix[i][i] = 1; } switch ( axis ) { case 0: select_matrix[1][1] = c; select_matrix[1][2] = -s; select_matrix[2][1] = s; select_matrix[2][2] = c; break; case 1: select_matrix[0][0] = c; select_matrix[0][2] = s; select_matrix[2][0] = -s; select_matrix[2][2] = c; break; case 2: select_matrix[0][0] = c; select_matrix[0][1] = -s; select_matrix[1][0] = s; select_matrix[1][1] = c; break; } } if ( g_PrefsDlg.m_bRotateLock ) RotateTextures( axis, deg, select_origin ); Select_ApplyMatrix( !bMouse, true, axis, deg ); if ( bPaint ) Sys_UpdateWindows( W_ALL ); }
void Select_RotateAxis (int axis, float deg) { vec3_t temp; int i, j; vec_t c, s; if (deg == 0) return; Select_GetMid (select_origin); select_fliporder = FALSE; if (deg == 90) { for (i=0 ; i<3 ; i++) { Math_VectorCopy (vec3_origin, select_matrix[i]); select_matrix[i][i] = 1; } i = (axis+1)%3; j = (axis+2)%3; Math_VectorCopy(select_matrix[i],temp); Math_VectorCopy(select_matrix[j],select_matrix[i]); Math_VectorSubtract(vec3_origin,temp,select_matrix[j]); } else { deg = -deg; if (deg == -180) { c = -1; s = 0; } else if (deg == -270) { c = 0; s = -1; } else { c = cos(deg/180*3.14159); s = sin (deg/180*3.14159); } for (i=0 ; i<3 ; i++) { Math_VectorCopy (vec3_origin, select_matrix[i]); select_matrix[i][i] = 1; } switch (axis) { case 0: select_matrix[1][1] = c; select_matrix[1][2] = -s; select_matrix[2][1] = s; select_matrix[2][2] = c; break; case 1: select_matrix[0][0] = c; select_matrix[0][2] = s; select_matrix[2][0] = -s; select_matrix[2][2] = c; break; case 2: select_matrix[0][0] = c; select_matrix[0][1] = -s; select_matrix[1][0] = s; select_matrix[1][1] = c; break; } } Select_AplyMatrix (); }
/* ======================================================================================================================= Entity_Create Creates a new entity out of the selected_brushes list. If the entity class is fixed size, the brushes are only used to find a midpoint. Otherwise, the brushes have their ownership transfered to the new entity. ======================================================================================================================= */ entity_t *Entity_Create(eclass_t *c, bool forceFixed) { entity_t *e; brush_t *b; idVec3 mins, maxs, origin; char text[32]; texdef_t td; brushprimit_texdef_t bp; // check to make sure the brushes are ok for (b = selected_brushes.next; b != &selected_brushes; b = b->next) { if (b->owner != world_entity) { Sys_Status("Entity NOT created, brushes not all from world\n"); Sys_Beep(); return NULL; } } idStr str; if (c->defArgs.GetString("model", "", str) && c->entityModel == NULL) { c->entityModel = gameEdit->ANIM_GetModelFromEntityDef( &c->defArgs ); } // create it e = Entity_New(); e->brushes.onext = e->brushes.oprev = &e->brushes; e->eclass = c; e->epairs.Copy(c->args); SetKeyValue(e, "classname", c->name); Entity_Name(e, false); // add the entity to the entity list Entity_AddToList(e, &entities); if (c->fixedsize) { // // just use the selection for positioning b = selected_brushes.next; for (i=0 ; // i<3 ; i++) { e->origin[i] = b->mins[i] - c->mins[i]; } // Select_GetMid(e->origin); VectorCopy(e->origin, origin); // create a custom brush VectorAdd(c->mins, e->origin, mins); VectorAdd(c->maxs, e->origin, maxs); b = Brush_Create(mins, maxs, &c->texdef); Entity_LinkBrush(e, b); if (c->defMaterial.Length()) { td.SetName(c->defMaterial); Brush_SetTexture(b, &td, &bp, false); } // delete the current selection Select_Delete(); // select the new brush b->next = b->prev = &selected_brushes; selected_brushes.next = selected_brushes.prev = b; Brush_Build(b); } else { Select_GetMid(origin); // change the selected brushes over to the new entity for (b = selected_brushes.next; b != &selected_brushes; b = b->next) { Entity_UnlinkBrush(b); Entity_LinkBrush(e, b); Brush_Build(b); // so the key brush gets a name if (c->defMaterial.Length()) { td.SetName(c->defMaterial); Brush_SetTexture(b, &td, &bp, false); } } //for (int i = 0; i < 3; i++) { // origin[i] = vMin[i] + vMax[i] * 0.5; //} if (!forceFixed) { SetKeyValue(e, "model", ValueForKey(e, "name")); } } sprintf(text, "%i %i %i", (int)origin[0], (int)origin[1], (int)origin[2]); SetKeyValue(e, "origin", text); VectorCopy(origin, e->origin); Sys_UpdateWindows(W_ALL); return e; }
void Select_RotateAxis (int axis, float deg, bool bPaint, bool bMouse) { vec3_t temp; int i, j; vec_t c, s; if (deg == 0) { //Sys_Printf("0 deg\n"); return; } if (bMouse) { VectorCopy(g_pParentWnd->ActiveXY()->RotateOrigin(), select_origin); } else { Select_GetMid (select_origin); } select_fliporder = false; if (deg == 90) { for (i=0 ; i<3 ; i++) { VectorCopy (vec3_origin, select_matrix[i]); select_matrix[i][i] = 1; } i = (axis+1)%3; j = (axis+2)%3; VectorCopy (select_matrix[i], temp); VectorCopy (select_matrix[j], select_matrix[i]); VectorSubtract (vec3_origin, temp, select_matrix[j]); } else { deg = -deg; if (deg == -180.0) { c = -1; s = 0; } else if (deg == -270.0) { c = 0; s = -1; } else { c = cos(deg * Q_PI / 180.0); s = sin(deg * Q_PI / 180.0); } for (i=0 ; i<3 ; i++) { VectorCopy (vec3_origin, select_matrix[i]); select_matrix[i][i] = 1; } switch (axis) { case 0: select_matrix[1][1] = c; select_matrix[1][2] = -s; select_matrix[2][1] = s; select_matrix[2][2] = c; break; case 1: select_matrix[0][0] = c; select_matrix[0][2] = s; select_matrix[2][0] = -s; select_matrix[2][2] = c; break; case 2: select_matrix[0][0] = c; select_matrix[0][1] = -s; select_matrix[1][0] = s; select_matrix[1][1] = c; break; } } if (g_PrefsDlg.m_bRotateLock) RotateTextures(axis, deg, select_origin); Select_AplyMatrix(!bMouse); if (bPaint) Sys_UpdateWindows (W_ALL); }