Project

General

Profile

« Previous | Next » 

Revision e54bfada

Added by Leszek Koltunski about 4 years ago

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)

View differences:

src/main/java/org/distorted/library/mesh/MeshQuad.java
30 30
  {
31 31
///////////////////////////////////////////////////////////////////////////////////////////////////
32 32

  
33
  private void addVertex( float x, float y, float[] attribs, int index)
33
  private void addVertex( float x, float y, float[] attribs1, float[] attribs2, int index)
34 34
    {
35
    attribs[VERT_ATTRIBS*index + POS_ATTRIB  ] = x-0.5f;
36
    attribs[VERT_ATTRIBS*index + POS_ATTRIB+1] = 0.5f-y;
37
    attribs[VERT_ATTRIBS*index + POS_ATTRIB+2] = 0.0f;
35
    attribs1[VERT1_ATTRIBS*index + POS_ATTRIB  ] = x-0.5f;
36
    attribs1[VERT1_ATTRIBS*index + POS_ATTRIB+1] = 0.5f-y;
37
    attribs1[VERT1_ATTRIBS*index + POS_ATTRIB+2] = 0.0f;
38 38

  
39
    attribs[VERT_ATTRIBS*index + NOR_ATTRIB  ] = 0.0f;
40
    attribs[VERT_ATTRIBS*index + NOR_ATTRIB+1] = 0.0f;
41
    attribs[VERT_ATTRIBS*index + NOR_ATTRIB+2] = 1.0f;
39
    attribs1[VERT1_ATTRIBS*index + NOR_ATTRIB  ] = 0.0f;
40
    attribs1[VERT1_ATTRIBS*index + NOR_ATTRIB+1] = 0.0f;
41
    attribs1[VERT1_ATTRIBS*index + NOR_ATTRIB+2] = 1.0f;
42 42

  
43
    attribs[VERT_ATTRIBS*index + INF_ATTRIB  ] = (x-0.5f);
44
    attribs[VERT_ATTRIBS*index + INF_ATTRIB+1] = (0.5f-y);
45
    attribs[VERT_ATTRIBS*index + INF_ATTRIB+2] = 0.01f   ;  // Inflated surface needs to be slightly in front
43
    attribs1[VERT1_ATTRIBS*index + INF_ATTRIB  ] = (x-0.5f);
44
    attribs1[VERT1_ATTRIBS*index + INF_ATTRIB+1] = (0.5f-y);
45
    attribs1[VERT1_ATTRIBS*index + INF_ATTRIB+2] = 0.01f   ;  // Inflated surface needs to be slightly in front
46 46

  
47
    attribs[VERT_ATTRIBS*index + TEX_ATTRIB  ] = x;
48
    attribs[VERT_ATTRIBS*index + TEX_ATTRIB+1] = 1.0f-y;
47
    attribs2[VERT2_ATTRIBS*index + TEX_ATTRIB  ] = x;
48
    attribs2[VERT2_ATTRIBS*index + TEX_ATTRIB+1] = 1.0f-y;
49 49
    }
50 50

  
51 51
///////////////////////////////////////////////////////////////////////////////////////////////////
......
57 57
  public MeshQuad()
58 58
    {
59 59
    super();
60
    float[] attribs= new float[VERT_ATTRIBS*4];
61 60

  
62
    addVertex(0.0f,0.0f, attribs,0);
63
    addVertex(0.0f,1.0f, attribs,1);
64
    addVertex(1.0f,0.0f, attribs,2);
65
    addVertex(1.0f,1.0f, attribs,3);
61
    float[] attribs1= new float[VERT1_ATTRIBS*4];
62
    float[] attribs2= new float[VERT2_ATTRIBS*4];
66 63

  
67
    setAttribs(attribs);
64
    addVertex(0.0f,0.0f, attribs1, attribs2, 0);
65
    addVertex(0.0f,1.0f, attribs1, attribs2, 1);
66
    addVertex(1.0f,0.0f, attribs1, attribs2, 2);
67
    addVertex(1.0f,1.0f, attribs1, attribs2, 3);
68

  
69
    setAttribs(attribs1,attribs2);
68 70
    }
69 71

  
70 72
///////////////////////////////////////////////////////////////////////////////////////////////////

Also available in: Unified diff