Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ED_transverts.h « include « editors « blender « source - git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: e63734226170786c6bdfc782bbc55f92f6e0a77c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/* SPDX-License-Identifier: GPL-2.0-or-later
 * Copyright 2008 Blender Foundation. All rights reserved. */

/** \file
 * \ingroup editors
 */

#pragma once

#ifdef __cplusplus
extern "C" {
#endif

struct Object;
struct bContext;

typedef struct TransVert {
  float *loc;
  float oldloc[3], maploc[3];
  float normal[3];
  int flag;
} TransVert;

typedef struct TransVertStore {
  struct TransVert *transverts;
  int transverts_tot;
  int mode;
} TransVertStore;

/**
 * \param obedit: When `mode` has the #TM_CALC_MAPLOC flag set, `obedit` must be evaluated,
 * to access evaluated vertices.
 */
void ED_transverts_create_from_obedit(TransVertStore *tvs, const struct Object *obedit, int mode);
void ED_transverts_update_obedit(TransVertStore *tvs, struct Object *obedit);
void ED_transverts_free(TransVertStore *tvs);
bool ED_transverts_check_obedit(const struct Object *obedit);
bool ED_transverts_poll(struct bContext *C);

/* currently only used for bmesh index values */
enum {
  /** Tag to make trans verts. */
  TM_INDEX_ON = 1,
  /** Don't make verts. */
  TM_INDEX_OFF = 0,
  /** Don't make verts (when the index values point to trans-verts). */
  TM_INDEX_SKIP = -1,
};

/* mode flags: */
enum {
  /** all joints (for bones only) */
  TM_ALL_JOINTS = (1 << 0),
  /** skip handles when control point is selected (for curves only) */
  TM_SKIP_HANDLES = (1 << 1),
  /** fill in normals when available */
  TM_CALC_NORMALS = (1 << 2),
  /** Calculates #TransVert.maploc where possible. */
  TM_CALC_MAPLOC = (1 << 2),
};

enum {
  /* SELECT == (1 << 0) */
  /** Calculated when #TM_CALC_MAPLOC is set. */
  TX_VERT_USE_MAPLOC = (1 << 1),
  /** Calculated when #TM_CALC_NORMALS is set, avoid nonzero check. */
  TX_VERT_USE_NORMAL = (1 << 2),
};

#ifdef __cplusplus
}
#endif