Revision e54bfada
Added by Leszek Koltunski almost 4 years ago
src/main/java/org/distorted/library/mesh/MeshTriangles.java | ||
---|---|---|
30 | 30 |
|
31 | 31 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
32 | 32 |
|
33 |
private int addVertex(int vertex, float x, float y, float[] attribs) |
|
33 |
private int addVertex(int vertex, float x, float y, float[] attribs1, float[] attribs2)
|
|
34 | 34 |
{ |
35 | 35 |
remainingVert--; |
36 | 36 |
|
37 |
attribs[VERT_ATTRIBS*vertex + POS_ATTRIB ] = x-0.5f;
|
|
38 |
attribs[VERT_ATTRIBS*vertex + POS_ATTRIB+1] = y-0.5f;
|
|
39 |
attribs[VERT_ATTRIBS*vertex + POS_ATTRIB+2] = 0.0f;
|
|
37 |
attribs1[VERT1_ATTRIBS*vertex + POS_ATTRIB ] = x-0.5f;
|
|
38 |
attribs1[VERT1_ATTRIBS*vertex + POS_ATTRIB+1] = y-0.5f;
|
|
39 |
attribs1[VERT1_ATTRIBS*vertex + POS_ATTRIB+2] = 0.0f;
|
|
40 | 40 |
|
41 |
attribs[VERT_ATTRIBS*vertex + NOR_ATTRIB ] = 0.0f;
|
|
42 |
attribs[VERT_ATTRIBS*vertex + NOR_ATTRIB+1] = 0.0f;
|
|
43 |
attribs[VERT_ATTRIBS*vertex + NOR_ATTRIB+2] = 1.0f;
|
|
41 |
attribs1[VERT1_ATTRIBS*vertex + NOR_ATTRIB ] = 0.0f;
|
|
42 |
attribs1[VERT1_ATTRIBS*vertex + NOR_ATTRIB+1] = 0.0f;
|
|
43 |
attribs1[VERT1_ATTRIBS*vertex + NOR_ATTRIB+2] = 1.0f;
|
|
44 | 44 |
|
45 |
attribs[VERT_ATTRIBS*vertex + INF_ATTRIB ] = (x-0.5f);
|
|
46 |
attribs[VERT_ATTRIBS*vertex + INF_ATTRIB+1] = (y-0.5f);
|
|
47 |
attribs[VERT_ATTRIBS*vertex + INF_ATTRIB+2] = 0.01f ; // Inflated surface needs to be slightly in front
|
|
45 |
attribs1[VERT1_ATTRIBS*vertex + INF_ATTRIB ] = (x-0.5f);
|
|
46 |
attribs1[VERT1_ATTRIBS*vertex + INF_ATTRIB+1] = (y-0.5f);
|
|
47 |
attribs1[VERT1_ATTRIBS*vertex + INF_ATTRIB+2] = 0.01f ; // Inflated surface needs to be slightly in front
|
|
48 | 48 |
|
49 |
attribs[VERT_ATTRIBS*vertex + TEX_ATTRIB ] = x;
|
|
50 |
attribs[VERT_ATTRIBS*vertex + TEX_ATTRIB+1] = y;
|
|
49 |
attribs2[VERT2_ATTRIBS*vertex + TEX_ATTRIB ] = x;
|
|
50 |
attribs2[VERT2_ATTRIBS*vertex + TEX_ATTRIB+1] = y;
|
|
51 | 51 |
|
52 | 52 |
return vertex+1; |
53 | 53 |
} |
... | ... | |
62 | 62 |
|
63 | 63 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
64 | 64 |
|
65 |
private int buildRow(int vertex,float sx, float sy, int length, float dx, float dy, float[] attribs) |
|
65 |
private int buildRow(int vertex,float sx, float sy, int length, float dx, float dy, float[] attribs1, float[] attribs2)
|
|
66 | 66 |
{ |
67 | 67 |
for(int i=0; i<length; i++) |
68 | 68 |
{ |
69 |
vertex = addVertex(vertex, sx , sy , attribs); |
|
70 |
vertex = addVertex(vertex, sx+dx, sy+dy, attribs); |
|
69 |
vertex = addVertex(vertex, sx , sy , attribs1, attribs2);
|
|
70 |
vertex = addVertex(vertex, sx+dx, sy+dy, attribs1, attribs2);
|
|
71 | 71 |
sx += 2*dx; |
72 | 72 |
} |
73 | 73 |
|
74 |
vertex = addVertex(vertex, sx, sy, attribs); |
|
74 |
vertex = addVertex(vertex, sx, sy, attribs1, attribs2);
|
|
75 | 75 |
|
76 | 76 |
return vertex; |
77 | 77 |
} |
78 | 78 |
|
79 | 79 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
80 | 80 |
|
81 |
private void buildGrid(float[] attribs, int level) |
|
81 |
private void buildGrid(float[] attribs1, float[] attribs2, int level)
|
|
82 | 82 |
{ |
83 | 83 |
float sx = 0.0f; |
84 | 84 |
float sy = 0.0f; |
... | ... | |
88 | 88 |
|
89 | 89 |
for(int row=level; row>=1; row--) |
90 | 90 |
{ |
91 |
vertex = buildRow(vertex,sx,sy,row,dx,dy,attribs); |
|
91 |
vertex = buildRow(vertex,sx,sy,row,dx,dy,attribs1,attribs2);
|
|
92 | 92 |
|
93 | 93 |
sx += 2*dx*(row-0.5f); |
94 | 94 |
sy += dy; |
... | ... | |
111 | 111 |
|
112 | 112 |
computeNumberOfVertices(level); |
113 | 113 |
|
114 |
float[] attribs= new float[VERT_ATTRIBS*numVertices]; |
|
115 |
buildGrid(attribs,level); |
|
114 |
float[] attribs1= new float[VERT1_ATTRIBS*numVertices]; |
|
115 |
float[] attribs2= new float[VERT2_ATTRIBS*numVertices]; |
|
116 |
|
|
117 |
buildGrid(attribs1, attribs2, level); |
|
116 | 118 |
|
117 | 119 |
if( remainingVert!=0 ) |
118 | 120 |
android.util.Log.d("MeshTriangles", "remainingVert " +remainingVert ); |
119 | 121 |
|
120 |
setAttribs(attribs); |
|
122 |
setAttribs(attribs1, attribs2);
|
|
121 | 123 |
} |
122 | 124 |
|
123 | 125 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
Also available in: Unified diff
Have VERTEX_QUATERNION, VERTEX_ROTATE and VERTEX_SHEAR modify inflate vectors.
Split Vertex attribute array into two (the one modified by preapply effects and the one not)