code cleanup: remove editmesh code left hanging around thats already been ported to bmesh, also remove main editmesh header.
This commit is contained in:
@@ -1,191 +0,0 @@
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#ifndef __BLI_EDITVERT_H__
|
||||
#define __BLI_EDITVERT_H__
|
||||
|
||||
/** \file BLI_editVert.h
|
||||
* \ingroup bli
|
||||
* \since March 2001
|
||||
* \author nzc
|
||||
* \brief Some editing types needed in the lib (unfortunately) for
|
||||
* scanfill.c
|
||||
*/
|
||||
|
||||
#include "DNA_customdata_types.h"
|
||||
#include "DNA_mesh_types.h"
|
||||
|
||||
#include "BLO_sys_types.h" // for intptr_t support
|
||||
|
||||
struct DerivedMesh;
|
||||
|
||||
/* note; changing this also might affect the undo copy in editmesh.c */
|
||||
typedef struct EditVert
|
||||
{
|
||||
struct EditVert *next, *prev;
|
||||
union {
|
||||
/* some lean storage for temporary usage
|
||||
* in editmesh routines
|
||||
*/
|
||||
struct EditVert *v;
|
||||
struct EditEdge *e;
|
||||
struct EditFace *f;
|
||||
void *p;
|
||||
intptr_t l;
|
||||
float fp;
|
||||
int t;
|
||||
} tmp;
|
||||
float no[3]; /*vertex normal */
|
||||
float co[3]; /*vertex location */
|
||||
short xs, ys; /* used to store a screenspace 2d projection of the verts */
|
||||
|
||||
/* f stores selection eg. if (eve->f & SELECT) {...
|
||||
* h for hidden. if (!eve->h) {...
|
||||
* f1 and f2 can be used for temp data, clear them first*/
|
||||
unsigned char f, h, f1, f2;
|
||||
float bweight;
|
||||
short fast; /* only 0 or 1, for editmesh_fastmalloc, do not store temp data here! */
|
||||
int hash; /* internal editmesh.c use only, don't touch! */
|
||||
int keyindex; /* original index #, for restoring key information */
|
||||
|
||||
void *data; /* custom vertex data */
|
||||
} EditVert;
|
||||
|
||||
struct EditEdge;
|
||||
|
||||
typedef struct HashEdge {
|
||||
struct EditEdge *eed;
|
||||
struct HashEdge *next;
|
||||
} HashEdge;
|
||||
|
||||
/* note; changing this also might affect the undo copy in editmesh.c */
|
||||
typedef struct EditEdge
|
||||
{
|
||||
struct EditEdge *next, *prev;
|
||||
struct EditVert *v1, *v2;
|
||||
union {
|
||||
/* some lean storage for temporary usage
|
||||
* in editmesh routines
|
||||
*/
|
||||
struct EditVert *v;
|
||||
struct EditEdge *e;
|
||||
struct EditFace *f;
|
||||
void *p;
|
||||
intptr_t l;
|
||||
float fp;
|
||||
} tmp;
|
||||
short f1, f2; /* short, f1 is (ab)used in subdiv */
|
||||
unsigned char f, h, dir, seam, sharp;
|
||||
float crease;
|
||||
float bweight;
|
||||
short fast; /* only 0 or 1, for editmesh_fastmalloc */
|
||||
short fgoni; /* index for fgon, for search */
|
||||
HashEdge hash;
|
||||
void *data; /*custom edge data*/
|
||||
} EditEdge;
|
||||
|
||||
/* note; changing this also might affect the undo copy in editmesh.c */
|
||||
typedef struct EditFace
|
||||
{
|
||||
struct EditFace *next, *prev;
|
||||
struct EditVert *v1, *v2, *v3, *v4;
|
||||
struct EditEdge *e1, *e2, *e3, *e4;
|
||||
union {
|
||||
/* some lean storage for temporary usage
|
||||
* in editmesh routines
|
||||
*/
|
||||
struct EditVert *v;
|
||||
struct EditEdge *e;
|
||||
struct EditFace *f;
|
||||
void *p;
|
||||
intptr_t l;
|
||||
float fp;
|
||||
} tmp;
|
||||
float n[3], cent[3];
|
||||
unsigned char flag;
|
||||
unsigned char f, f1, h;
|
||||
unsigned char fast; /* only 0 or 1, for editmesh_fastmalloc */
|
||||
unsigned char fgonf; /* flag for fgon options */
|
||||
short mat_nr;
|
||||
void *data; /* custom face data */
|
||||
} EditFace;
|
||||
|
||||
|
||||
/*selection types*/
|
||||
#define EDITVERT 0
|
||||
#define EDITEDGE 1
|
||||
#define EDITFACE 2
|
||||
|
||||
typedef struct EditSelection
|
||||
{
|
||||
struct EditSelection *next, *prev;
|
||||
short type;
|
||||
void *data;
|
||||
} EditSelection;
|
||||
|
||||
|
||||
typedef struct EditMesh
|
||||
{
|
||||
ListBase verts, edges, faces;
|
||||
ListBase selected; /*EditSelections. Used to store the order in which things are selected.*/
|
||||
HashEdge *hashedgetab;
|
||||
|
||||
/* this is for the editmesh_fastmalloc */
|
||||
EditVert *allverts, *curvert;
|
||||
EditEdge *alledges, *curedge;
|
||||
EditFace *allfaces, *curface;
|
||||
/* DerivedMesh caches... note that derived cage can be equivalent
|
||||
* to derived final, care should be taken on release.
|
||||
*/
|
||||
|
||||
/* used for keeping track of the last clicked on face - so the space image
|
||||
* when using the last selected face - (EditSelection) the space image flickered too much
|
||||
*
|
||||
* never access this directly, use EM_set_actFace and EM_get_actFace */
|
||||
EditFace *act_face;
|
||||
|
||||
/* copy from scene */
|
||||
short selectmode;
|
||||
/* copy from object actcol */
|
||||
short mat_nr;
|
||||
/* stats */
|
||||
int totvert, totedge, totface, totvertsel, totedgesel, totfacesel;
|
||||
/* shape key being edited */
|
||||
int shapenr;
|
||||
|
||||
struct DerivedMesh *derivedCage, *derivedFinal;
|
||||
/* the custom data layer mask that was last used to calculate
|
||||
* derivedCage and derivedFinal
|
||||
*/
|
||||
int lastDataMask;
|
||||
|
||||
CustomData vdata, edata, fdata;
|
||||
|
||||
} EditMesh;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -103,7 +103,6 @@ set(SRC
|
||||
BLI_dynlib.h
|
||||
BLI_dynstr.h
|
||||
BLI_edgehash.h
|
||||
BLI_editVert.h
|
||||
BLI_fileops.h
|
||||
BLI_fileops_types.h
|
||||
BLI_fnmatch.h
|
||||
|
||||
@@ -41,7 +41,6 @@
|
||||
#include "BLI_blenlib.h"
|
||||
#include "BLI_math.h"
|
||||
#include "BLI_utildefines.h"
|
||||
#include "BLI_editVert.h"
|
||||
#include "BLI_edgehash.h"
|
||||
#include "BLI_ghash.h"
|
||||
#include "BLI_heap.h"
|
||||
@@ -81,15 +80,23 @@ static ReebGraph *FILTERED_RG = NULL;
|
||||
#define DEBUG_REEB
|
||||
#define DEBUG_REEB_NODE
|
||||
|
||||
typedef struct VertexData
|
||||
{
|
||||
/* place-holders! */
|
||||
typedef struct EditEdge {
|
||||
void *fake;
|
||||
} EditEdge;
|
||||
|
||||
typedef struct EditFace {
|
||||
void *fake;
|
||||
} EditFace;
|
||||
/* end place-holders! */
|
||||
|
||||
typedef struct VertexData {
|
||||
float w; /* weight */
|
||||
int i; /* index */
|
||||
ReebNode *n;
|
||||
} VertexData;
|
||||
|
||||
typedef struct EdgeIndex
|
||||
{
|
||||
typedef struct EdgeIndex {
|
||||
EditEdge **edges;
|
||||
int *offset;
|
||||
} EdgeIndex;
|
||||
|
||||
@@ -3640,22 +3640,6 @@ static int vergxco(const void *v1, const void *v2)
|
||||
return (x2->org_idx < 0) - (x1->org_idx < 0);
|
||||
}
|
||||
|
||||
#if 0 /* Unused */
|
||||
struct facesort {
|
||||
uintptr_t x;
|
||||
struct EditFace *efa;
|
||||
};
|
||||
|
||||
static int vergface(const void *v1, const void *v2)
|
||||
{
|
||||
const struct facesort *x1 = v1, *x2 = v2;
|
||||
|
||||
if (x1->x > x2->x) return 1;
|
||||
else if (x1->x < x2->x) return -1;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void xsortvert_flag__doSetX(void *userData, BMVert *UNUSED(eve), int x, int UNUSED(y), int index)
|
||||
{
|
||||
xvertsort *sortblock = userData;
|
||||
|
||||
@@ -487,66 +487,6 @@ static void do_lasso_select_mesh(ViewContext *vc, int mcords[][2], short moves,
|
||||
EDBM_selectmode_flush(vc->em);
|
||||
}
|
||||
|
||||
/* BMESH_TODO */
|
||||
#if 0
|
||||
/* this is an exception in that its the only lasso that dosnt use the 3d view (uses space image view) */
|
||||
static void do_lasso_select_mesh_uv(int mcords[][2], short moves, short select)
|
||||
{
|
||||
EditFace *efa;
|
||||
MTFace *tf;
|
||||
int screenUV[2], nverts, i, ok = 1;
|
||||
rcti rect;
|
||||
|
||||
BLI_lasso_boundbox(&rect, mcords, moves);
|
||||
|
||||
if (draw_uvs_face_check()) { /* Face Center Sel */
|
||||
float cent[2];
|
||||
ok = 0;
|
||||
for (efa = em->faces.first; efa; efa = efa->next) {
|
||||
/* assume not touched */
|
||||
efa->tmp.l = 0;
|
||||
tf = CustomData_em_get(&em->fdata, efa->data, CD_MTFACE);
|
||||
if ((select) != (simaFaceSel_Check(efa, tf))) {
|
||||
uv_center(tf->uv, cent, (void *)efa->v4);
|
||||
uvco_to_areaco_noclip(cent, screenUV);
|
||||
if (BLI_in_rcti(&rect, screenUV[0], screenUV[1]) && BLI_lasso_is_point_inside(mcords, moves, screenUV[0], screenUV[1])) {
|
||||
efa->tmp.l = ok = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* (de)selects all tagged faces and deals with sticky modes */
|
||||
if (ok)
|
||||
uvface_setsel__internal(select);
|
||||
|
||||
}
|
||||
else { /* Vert Sel*/
|
||||
for (efa = em->faces.first; efa; efa = efa->next) {
|
||||
tf = CustomData_em_get(&em->fdata, efa->data, CD_MTFACE);
|
||||
if (uvedit_face_visible_test(scene, ima, efa, tf)) {
|
||||
nverts = efa->v4 ? 4 : 3;
|
||||
for (i = 0; i < nverts; i++) {
|
||||
if ((select) != (simaUVSel_Check(efa, tf, i))) {
|
||||
uvco_to_areaco_noclip(tf->uv[i], screenUV);
|
||||
if (BLI_in_rcti(&rect, screenUV[0], screenUV[1]) && BLI_lasso_is_point_inside(mcords, moves, screenUV[0], screenUV[1])) {
|
||||
if (select) {
|
||||
simaUVSel_Set(efa, tf, i);
|
||||
}
|
||||
else {
|
||||
simaUVSel_UnSet(efa, tf, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ok && G.sima->flag & SI_SYNC_UVSEL) {
|
||||
if (select) EM_select_flush(vc->em);
|
||||
else EM_deselect_flush(vc->em);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static void do_lasso_select_curve__doSelect(void *userData, Nurb *UNUSED(nu), BPoint *bp, BezTriple *bezt, int beztindex, int x, int y)
|
||||
{
|
||||
LassoSelectUserData *data = userData;
|
||||
|
||||
@@ -187,75 +187,6 @@ void crazyspace_set_quats_editmesh(BMEditMesh *em, float *origcos, float *mapped
|
||||
em->bm->elem_index_dirty |= BM_VERT;
|
||||
|
||||
MEM_freeN(vert_table);
|
||||
#if 0
|
||||
BMEditVert *eve, *prev;
|
||||
BMEditFace *efa;
|
||||
BMIter iter;
|
||||
float *v1, *v2, *v3, *v4, *co1, *co2, *co3, *co4;
|
||||
intptr_t index = 0;
|
||||
|
||||
/* two abused locations in vertices */
|
||||
for (eve = em->verts.first; eve; eve = eve->next, index++) {
|
||||
eve->tmp.p = NULL;
|
||||
eve->prev = (EditVert *)index;
|
||||
}
|
||||
|
||||
/* first store two sets of tangent vectors in vertices, we derive it just from the face-edges */
|
||||
for (efa = em->faces.first; efa; efa = efa->next) {
|
||||
|
||||
/* retrieve mapped coordinates */
|
||||
v1 = mappedcos + 3 * (intptr_t)(efa->v1->prev);
|
||||
v2 = mappedcos + 3 * (intptr_t)(efa->v2->prev);
|
||||
v3 = mappedcos + 3 * (intptr_t)(efa->v3->prev);
|
||||
|
||||
co1 = (origcos) ? origcos + 3 * (intptr_t)(efa->v1->prev) : efa->v1->co;
|
||||
co2 = (origcos) ? origcos + 3 * (intptr_t)(efa->v2->prev) : efa->v2->co;
|
||||
co3 = (origcos) ? origcos + 3 * (intptr_t)(efa->v3->prev) : efa->v3->co;
|
||||
|
||||
if (efa->v2->tmp.p == NULL && efa->v2->f1) {
|
||||
set_crazy_vertex_quat(quats, co2, co3, co1, v2, v3, v1);
|
||||
efa->v2->tmp.p = (void *)quats;
|
||||
quats += 4;
|
||||
}
|
||||
|
||||
if (efa->v4) {
|
||||
v4 = mappedcos + 3 * (intptr_t)(efa->v4->prev);
|
||||
co4 = (origcos) ? origcos + 3 * (intptr_t)(efa->v4->prev) : efa->v4->co;
|
||||
|
||||
if (efa->v1->tmp.p == NULL && efa->v1->f1) {
|
||||
set_crazy_vertex_quat(quats, co1, co2, co4, v1, v2, v4);
|
||||
efa->v1->tmp.p = (void *)quats;
|
||||
quats += 4;
|
||||
}
|
||||
if (efa->v3->tmp.p == NULL && efa->v3->f1) {
|
||||
set_crazy_vertex_quat(quats, co3, co4, co2, v3, v4, v2);
|
||||
efa->v3->tmp.p = (void *)quats;
|
||||
quats += 4;
|
||||
}
|
||||
if (efa->v4->tmp.p == NULL && efa->v4->f1) {
|
||||
set_crazy_vertex_quat(quats, co4, co1, co3, v4, v1, v3);
|
||||
efa->v4->tmp.p = (void *)quats;
|
||||
quats += 4;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (efa->v1->tmp.p == NULL && efa->v1->f1) {
|
||||
set_crazy_vertex_quat(quats, co1, co2, co3, v1, v2, v3);
|
||||
efa->v1->tmp.p = (void *)quats;
|
||||
quats += 4;
|
||||
}
|
||||
if (efa->v3->tmp.p == NULL && efa->v3->f1) {
|
||||
set_crazy_vertex_quat(quats, co3, co1, co2, v3, v1, v2);
|
||||
efa->v3->tmp.p = (void *)quats;
|
||||
quats += 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* restore abused prev pointer */
|
||||
for (prev = NULL, eve = em->verts.first; eve; prev = eve, eve = eve->next)
|
||||
eve->prev = prev;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* BMESH_TODO - use MPolys over MFace's */
|
||||
|
||||
Reference in New Issue
Block a user