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

BKE_mesh_runtime.h « blenkernel « blender « source - git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 49e452edc36ff74567ed2886e33a00a2c44ccc13 (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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/*
 * ***** 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): Blender Foundation
 *
 * ***** END GPL LICENSE BLOCK *****
 */
#ifndef __BKE_MESH_RUNTIME_H__
#define __BKE_MESH_RUNTIME_H__

/** \file BKE_mesh_runtime.h
 *  \ingroup bke
 *
 * This file contains access functions for the Mesh.runtime struct.
 */

#include "BKE_customdata.h"  /* for CustomDataMask */

struct ColorBand;
struct CustomData;
struct Depsgraph;
struct KeyBlock;
struct Mesh;
struct MLoop;
struct MLoopTri;
struct MVertTri;
struct Object;
struct Scene;

/* Undefine to hide DerivedMesh-based function declarations */
#undef USE_DERIVEDMESH

#ifdef USE_DERIVEDMESH
struct DerivedMesh;
#endif

void BKE_mesh_runtime_reset(struct Mesh *mesh);
void BKE_mesh_runtime_reset_on_copy(struct Mesh *mesh);
int BKE_mesh_runtime_looptri_len(const struct Mesh *mesh);
void BKE_mesh_runtime_looptri_recalc(struct Mesh *mesh);
const struct MLoopTri *BKE_mesh_runtime_looptri_ensure(struct Mesh *mesh);
bool BKE_mesh_runtime_ensure_edit_data(struct Mesh *mesh);
bool BKE_mesh_runtime_clear_edit_data(struct Mesh *mesh);
void BKE_mesh_runtime_clear_geometry(struct Mesh *mesh);
void BKE_mesh_runtime_clear_cache(struct Mesh *mesh);

void BKE_mesh_runtime_verttri_from_looptri(
        struct MVertTri *r_verttri,
        const struct MLoop *mloop, const struct MLoopTri *looptri, int looptri_num);

/* NOTE: the functions below are defined in DerivedMesh.c, and are intended to be moved
 * to a more suitable location when that file is removed.
 * They should also be renamed to use conventions from BKE, not old DerivedMesh.c.
 * For now keep the names similar to avoid confusion. */
#ifdef USE_DERIVEDMESH
struct DerivedMesh *mesh_get_derived_final(
        struct Depsgraph *depsgraph, struct Scene *scene,
        struct Object *ob, CustomDataMask dataMask);
#endif
struct Mesh *mesh_get_eval_final(
        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, CustomDataMask dataMask);

#ifdef USE_DERIVEDMESH
struct DerivedMesh *mesh_get_derived_deform(
        struct Depsgraph *depsgraph, struct Scene *scene,
        struct Object *ob, CustomDataMask dataMask);
#endif
struct Mesh *mesh_get_eval_deform(
        struct Depsgraph *depsgraph, struct Scene *scene,
        struct Object *ob, CustomDataMask dataMask);

struct Mesh *mesh_create_eval_final_render(
        struct Depsgraph *depsgraph, struct Scene *scene,
        struct Object *ob, CustomDataMask dataMask);

#ifdef USE_DERIVEDMESH
struct DerivedMesh *mesh_create_derived_index_render(
        struct Depsgraph *depsgraph, struct Scene *scene,
        struct Object *ob, CustomDataMask dataMask, int index);
#endif
struct Mesh *mesh_create_eval_final_index_render(
        struct Depsgraph *depsgraph, struct Scene *scene,
        struct Object *ob, CustomDataMask dataMask, int index);

#ifdef USE_DERIVEDMESH
struct DerivedMesh *mesh_create_derived_view(
        struct Depsgraph *depsgraph, struct Scene *scene,
        struct Object *ob, CustomDataMask dataMask);
#endif
struct Mesh *mesh_create_eval_final_view(
        struct Depsgraph *depsgraph, struct Scene *scene,
        struct Object *ob, CustomDataMask dataMask);

struct Mesh *mesh_create_eval_no_deform(
        struct Depsgraph *depsgraph, struct Scene *scene,
        struct Object *ob, float (*vertCos)[3],
        CustomDataMask dataMask);
struct Mesh *mesh_create_eval_no_deform_render(
        struct Depsgraph *depsgraph, struct Scene *scene,
        struct Object *ob, float (*vertCos)[3],
        CustomDataMask dataMask);


void BKE_mesh_runtime_eval_to_meshkey(struct Mesh *me_deformed, struct Mesh *me, struct KeyBlock *kb);


#ifndef NDEBUG
char *BKE_mesh_runtime_debug_info(struct Mesh *me_eval);
void BKE_mesh_runtime_debug_print(struct Mesh *me_eval);
void BKE_mesh_runtime_debug_print_cdlayers(struct CustomData *data);
bool BKE_mesh_runtime_is_valid(struct Mesh *me_eval);
#endif  /* NDEBUG */

#endif /* __BKE_MESH_RUNTIME_H__ */