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

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/blenkernel/intern/cdderivedmesh.c')
-rw-r--r--source/blender/blenkernel/intern/cdderivedmesh.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index 12fb11c68b3..5c7ffa5adc3 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -268,6 +268,44 @@ static void cdDM_update_normals_from_pbvh(DerivedMesh *dm)
BLI_pbvh_update(cddm->pbvh, PBVH_UpdateNormals, face_nors);
}
+// Jason
+static void cdDM_drawSelectedVerts(DerivedMesh *dm)
+{
+ CDDerivedMesh *cddm = (CDDerivedMesh*) dm;
+ MVert *mv = cddm->mvert;
+ int i;
+ if( GPU_buffer_legacy(dm) ) {
+ char prev_sel= 0; /* always invalid */;
+
+ glBegin(GL_POINTS);
+ for(i = 0; i < dm->numVertData; i++, mv++) {
+ if(!(mv->flag & ME_HIDE)) {
+ const char sel= mv->flag & 1;
+ if(prev_sel != sel) {
+ prev_sel= sel;
+
+ // TODO define selected color
+ if(sel) {
+ glColor3f(1.0f, 1.0f, 0.0f);
+ }else {
+ glColor3f(0.0f, 0.0f, 0.0f);
+ }
+ }
+
+ glVertex3fv(mv->co);
+ }
+ }
+ glEnd();
+ }
+ else { /* use OpenGL VBOs or Vertex Arrays instead for better, faster rendering */
+ GPU_vertex_setup(dm);
+ if( !GPU_buffer_legacy(dm) ) {
+ if(dm->drawObject->tot_triangle_point) glDrawArrays(GL_POINTS,0, dm->drawObject->tot_triangle_point);
+ else glDrawArrays(GL_POINTS,0, dm->drawObject->tot_loose_point);
+ }
+ GPU_buffer_unbind();
+ }
+}
static void cdDM_drawVerts(DerivedMesh *dm)
{
@@ -1535,6 +1573,8 @@ static CDDerivedMesh *cdDM_create(const char *desc)
dm->getFaceMap = cdDM_getFaceMap;
dm->drawVerts = cdDM_drawVerts;
+ // Jason
+ dm->drawSelectedVerts = cdDM_drawSelectedVerts;
dm->drawUVEdges = cdDM_drawUVEdges;
dm->drawEdges = cdDM_drawEdges;