Revision 4f81e0c8
Added by Leszek Koltunski over 5 years ago
| src/main/java/org/distorted/library/mesh/MeshBase.java | ||
|---|---|---|
| 80 | 80 |
private float[] mVertAttribs1; // packed: PosX,PosY,PosZ, NorX,NorY,NorZ, InfX,InfY,InfZ |
| 81 | 81 |
private float[] mVertAttribs2; // packed: TexS,TexT |
| 82 | 82 |
private float mInflate; |
| 83 |
private boolean mNeedsAdjustment; |
|
| 83 |
private boolean[] mNeedsAdjustment;
|
|
| 84 | 84 |
|
| 85 | 85 |
private static class Component |
| 86 | 86 |
{
|
| ... | ... | |
| 118 | 118 |
|
| 119 | 119 |
MeshBase() |
| 120 | 120 |
{
|
| 121 |
mShowNormals = false; |
|
| 122 |
mInflate = 0.0f; |
|
| 123 |
mNeedsAdjustment = false; |
|
| 124 |
mComponent = new ArrayList<>(); |
|
| 121 |
mShowNormals= false; |
|
| 122 |
mInflate = 0.0f; |
|
| 123 |
mComponent = new ArrayList<>(); |
|
| 124 |
|
|
| 125 |
mNeedsAdjustment = new boolean[1]; |
|
| 126 |
mNeedsAdjustment[0] = false; |
|
| 125 | 127 |
|
| 126 | 128 |
mVBO1= new InternalBuffer(GLES30.GL_ARRAY_BUFFER , GLES30.GL_STATIC_READ); |
| 127 | 129 |
mVBO2= new InternalBuffer(GLES30.GL_ARRAY_BUFFER , GLES30.GL_STATIC_READ); |
| ... | ... | |
| 131 | 133 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 132 | 134 |
// copy constructor |
| 133 | 135 |
|
| 134 |
MeshBase(MeshBase original) |
|
| 136 |
MeshBase(MeshBase original, boolean deep)
|
|
| 135 | 137 |
{
|
| 136 | 138 |
mShowNormals = original.mShowNormals; |
| 137 | 139 |
mInflate = original.mInflate; |
| 138 |
mNeedsAdjustment = original.mNeedsAdjustment;
|
|
| 140 |
mNumVertices = original.mNumVertices;
|
|
| 139 | 141 |
|
| 140 | 142 |
int size = original.mComponent.size(); |
| 141 | 143 |
mComponent = new ArrayList<>(); |
| ... | ... | |
| 146 | 148 |
mComponent.add(comp); |
| 147 | 149 |
} |
| 148 | 150 |
|
| 149 |
mVBO1= new InternalBuffer(GLES30.GL_ARRAY_BUFFER , GLES30.GL_STATIC_READ); |
|
| 150 |
mVBO2= new InternalBuffer(GLES30.GL_ARRAY_BUFFER , GLES30.GL_STATIC_READ); |
|
| 151 |
mTFO = new InternalBuffer(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, GLES30.GL_STATIC_READ); |
|
| 151 |
if( deep ) |
|
| 152 |
{
|
|
| 153 |
mNeedsAdjustment = new boolean[1]; |
|
| 154 |
mNeedsAdjustment[0] = original.mNeedsAdjustment[0]; |
|
| 152 | 155 |
|
| 153 |
mNumVertices = original.mNumVertices; |
|
| 154 |
mVertAttribs1= new float[mNumVertices*VERT1_ATTRIBS]; |
|
| 155 |
mVertAttribs2= new float[mNumVertices*VERT2_ATTRIBS]; |
|
| 156 |
mVBO1= new InternalBuffer(GLES30.GL_ARRAY_BUFFER, GLES30.GL_STATIC_READ); |
|
| 157 |
mVertAttribs1= new float[mNumVertices*VERT1_ATTRIBS]; |
|
| 158 |
System.arraycopy(original.mVertAttribs1,0,mVertAttribs1,0,mNumVertices*VERT1_ATTRIBS); |
|
| 159 |
mVBO1.invalidate(); |
|
| 160 |
} |
|
| 161 |
else |
|
| 162 |
{
|
|
| 163 |
mNeedsAdjustment = original.mNeedsAdjustment; |
|
| 164 |
mVBO1 = original.mVBO1; |
|
| 165 |
mVertAttribs1 = original.mVertAttribs1; |
|
| 166 |
} |
|
| 156 | 167 |
|
| 157 |
System.arraycopy(original.mVertAttribs1,0,mVertAttribs1,0,mNumVertices*VERT1_ATTRIBS); |
|
| 168 |
mVBO2= new InternalBuffer(GLES30.GL_ARRAY_BUFFER, GLES30.GL_STATIC_READ); |
|
| 169 |
mVertAttribs2= new float[mNumVertices*VERT2_ATTRIBS]; |
|
| 158 | 170 |
System.arraycopy(original.mVertAttribs2,0,mVertAttribs2,0,mNumVertices*VERT2_ATTRIBS); |
| 159 |
|
|
| 160 |
mVBO1.invalidate(); |
|
| 161 | 171 |
mVBO2.invalidate(); |
| 172 |
|
|
| 173 |
mTFO = new InternalBuffer(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, GLES30.GL_STATIC_READ); |
|
| 162 | 174 |
mTFO.invalidate(); |
| 163 | 175 |
} |
| 164 | 176 |
|
| ... | ... | |
| 385 | 397 |
*/ |
| 386 | 398 |
public void bindVertexAttribs(DistortedProgram program) |
| 387 | 399 |
{
|
| 388 |
if( mNeedsAdjustment ) |
|
| 400 |
if( mNeedsAdjustment[0] )
|
|
| 389 | 401 |
{
|
| 390 |
mNeedsAdjustment = false; |
|
| 402 |
mNeedsAdjustment[0] = false;
|
|
| 391 | 403 |
DistortedLibrary.adjustVertices(this); |
| 392 | 404 |
} |
| 393 | 405 |
|
| ... | ... | |
| 502 | 514 |
mComponent.get(i).mQueue.add(effect); |
| 503 | 515 |
} |
| 504 | 516 |
|
| 505 |
mNeedsAdjustment = true; |
|
| 517 |
mNeedsAdjustment[0] = true;
|
|
| 506 | 518 |
} |
| 507 | 519 |
|
| 508 | 520 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 615 | 627 |
|
| 616 | 628 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 617 | 629 |
/** |
| 618 |
* Deep copy |
|
| 630 |
* Copy the Mesh. |
|
| 631 |
* |
|
| 632 |
* @param deep If to be a deep or shallow copy of mVertAttribs1, i.e. the array holding vertices, |
|
| 633 |
* normals and inflates (the rest, in particular the mVertAttribs2 containing texture |
|
| 634 |
* coordinates and effect assocciations, is always deep copied) |
|
| 619 | 635 |
*/ |
| 620 |
public abstract MeshBase deepCopy();
|
|
| 636 |
public abstract MeshBase copy(boolean deep);
|
|
| 621 | 637 |
} |
| src/main/java/org/distorted/library/mesh/MeshCubes.java | ||
|---|---|---|
| 935 | 935 |
|
| 936 | 936 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 937 | 937 |
/** |
| 938 |
* deep copy.
|
|
| 938 |
* Copy constructor.
|
|
| 939 | 939 |
*/ |
| 940 |
public MeshCubes(MeshCubes mesh) |
|
| 940 |
public MeshCubes(MeshCubes mesh, boolean deep)
|
|
| 941 | 941 |
{
|
| 942 |
super(mesh); |
|
| 942 |
super(mesh,deep);
|
|
| 943 | 943 |
} |
| 944 | 944 |
|
| 945 | 945 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 946 | 946 |
/** |
| 947 |
* deep copy. |
|
| 947 |
* Copy the Mesh. |
|
| 948 |
* |
|
| 949 |
* @param deep If to be a deep or shallow copy of mVertAttribs1, i.e. the array holding vertices, |
|
| 950 |
* normals and inflates (the rest, in particular the mVertAttribs2 containing texture |
|
| 951 |
* coordinates and effect assocciations, is always deep copied). |
|
| 948 | 952 |
*/ |
| 949 |
public MeshCubes deepCopy()
|
|
| 953 |
public MeshCubes copy(boolean deep)
|
|
| 950 | 954 |
{
|
| 951 |
return new MeshCubes(this); |
|
| 955 |
return new MeshCubes(this,deep);
|
|
| 952 | 956 |
} |
| 953 | 957 |
} |
| src/main/java/org/distorted/library/mesh/MeshJoined.java | ||
|---|---|---|
| 37 | 37 |
|
| 38 | 38 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 39 | 39 |
/** |
| 40 |
* deep copy.
|
|
| 40 |
* Copy constructor.
|
|
| 41 | 41 |
*/ |
| 42 |
public MeshJoined(MeshJoined mesh) |
|
| 42 |
public MeshJoined(MeshJoined mesh, boolean deep)
|
|
| 43 | 43 |
{
|
| 44 |
super(mesh); |
|
| 44 |
super(mesh,deep);
|
|
| 45 | 45 |
} |
| 46 | 46 |
|
| 47 | 47 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 48 | 48 |
/** |
| 49 |
* deep copy. |
|
| 49 |
* Copy the Mesh. |
|
| 50 |
* |
|
| 51 |
* @param deep If to be a deep or shallow copy of mVertAttribs1, i.e. the array holding vertices, |
|
| 52 |
* normals and inflates (the rest, in particular the mVertAttribs2 containing texture |
|
| 53 |
* coordinates and effect assocciations, is always deep copied) |
|
| 50 | 54 |
*/ |
| 51 |
public MeshJoined deepCopy()
|
|
| 55 |
public MeshJoined copy(boolean deep)
|
|
| 52 | 56 |
{
|
| 53 |
return new MeshJoined(this); |
|
| 57 |
return new MeshJoined(this,deep);
|
|
| 54 | 58 |
} |
| 55 | 59 |
|
| 56 | 60 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| src/main/java/org/distorted/library/mesh/MeshQuad.java | ||
|---|---|---|
| 72 | 72 |
|
| 73 | 73 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 74 | 74 |
/** |
| 75 |
* deep copy.
|
|
| 75 |
* Copy constructor.
|
|
| 76 | 76 |
*/ |
| 77 |
public MeshQuad(MeshQuad mesh) |
|
| 77 |
public MeshQuad(MeshQuad mesh, boolean deep)
|
|
| 78 | 78 |
{
|
| 79 |
super(mesh); |
|
| 79 |
super(mesh,deep);
|
|
| 80 | 80 |
} |
| 81 | 81 |
|
| 82 | 82 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 83 | 83 |
/** |
| 84 |
* deep copy. |
|
| 84 |
* Copy the Mesh. |
|
| 85 |
* |
|
| 86 |
* @param deep If to be a deep or shallow copy of mVertAttribs1, i.e. the array holding vertices, |
|
| 87 |
* normals and inflates (the rest, in particular the mVertAttribs2 containing texture |
|
| 88 |
* coordinates and effect assocciations, is always deep copied) |
|
| 85 | 89 |
*/ |
| 86 |
public MeshQuad deepCopy()
|
|
| 90 |
public MeshQuad copy(boolean deep)
|
|
| 87 | 91 |
{
|
| 88 |
return new MeshQuad(this); |
|
| 92 |
return new MeshQuad(this,deep);
|
|
| 89 | 93 |
} |
| 90 | 94 |
} |
| src/main/java/org/distorted/library/mesh/MeshRectangles.java | ||
|---|---|---|
| 176 | 176 |
|
| 177 | 177 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 178 | 178 |
/** |
| 179 |
* deep copy.
|
|
| 179 |
* Copy constructor.
|
|
| 180 | 180 |
*/ |
| 181 |
public MeshRectangles(MeshRectangles mesh) |
|
| 181 |
public MeshRectangles(MeshRectangles mesh, boolean deep)
|
|
| 182 | 182 |
{
|
| 183 |
super(mesh); |
|
| 183 |
super(mesh,deep);
|
|
| 184 | 184 |
} |
| 185 | 185 |
|
| 186 | 186 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 187 | 187 |
/** |
| 188 |
* deep copy. |
|
| 188 |
* Copy the Mesh. |
|
| 189 |
* |
|
| 190 |
* @param deep If to be a deep or shallow copy of mVertAttribs1, i.e. the array holding vertices, |
|
| 191 |
* normals and inflates (the rest, in particular the mVertAttribs2 containing texture |
|
| 192 |
* coordinates and effect assocciations, is always deep copied) |
|
| 189 | 193 |
*/ |
| 190 |
public MeshRectangles deepCopy()
|
|
| 194 |
public MeshRectangles copy(boolean deep)
|
|
| 191 | 195 |
{
|
| 192 |
return new MeshRectangles(this); |
|
| 196 |
return new MeshRectangles(this,deep);
|
|
| 193 | 197 |
} |
| 194 | 198 |
} |
| src/main/java/org/distorted/library/mesh/MeshSphere.java | ||
|---|---|---|
| 274 | 274 |
|
| 275 | 275 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 276 | 276 |
/** |
| 277 |
* deep copy.
|
|
| 277 |
* Copy cconstructor.
|
|
| 278 | 278 |
*/ |
| 279 |
public MeshSphere(MeshSphere mesh) |
|
| 279 |
public MeshSphere(MeshSphere mesh, boolean deep)
|
|
| 280 | 280 |
{
|
| 281 |
super(mesh); |
|
| 281 |
super(mesh,deep);
|
|
| 282 | 282 |
} |
| 283 | 283 |
|
| 284 | 284 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 285 | 285 |
/** |
| 286 |
* deep copy. |
|
| 286 |
* Copy the Mesh. |
|
| 287 |
* |
|
| 288 |
* @param deep If to be a deep or shallow copy of mVertAttribs1, i.e. the array holding vertices, |
|
| 289 |
* normals and inflates (the rest, in particular the mVertAttribs2 containing texture |
|
| 290 |
* coordinates and effect assocciations, is always deep copied) |
|
| 287 | 291 |
*/ |
| 288 |
public MeshSphere deepCopy()
|
|
| 292 |
public MeshSphere copy(boolean deep)
|
|
| 289 | 293 |
{
|
| 290 |
return new MeshSphere(this); |
|
| 294 |
return new MeshSphere(this,deep);
|
|
| 291 | 295 |
} |
| 292 | 296 |
} |
| src/main/java/org/distorted/library/mesh/MeshTriangles.java | ||
|---|---|---|
| 125 | 125 |
|
| 126 | 126 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 127 | 127 |
/** |
| 128 |
* deep copy.
|
|
| 128 |
* Copy constructor.
|
|
| 129 | 129 |
*/ |
| 130 |
public MeshTriangles(MeshTriangles mesh) |
|
| 130 |
public MeshTriangles(MeshTriangles mesh, boolean deep)
|
|
| 131 | 131 |
{
|
| 132 |
super(mesh); |
|
| 132 |
super(mesh,deep);
|
|
| 133 | 133 |
} |
| 134 | 134 |
|
| 135 | 135 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 136 | 136 |
/** |
| 137 |
* deep copy. |
|
| 137 |
* Copy the Mesh. |
|
| 138 |
* |
|
| 139 |
* @param deep If to be a deep or shallow copy of mVertAttribs1, i.e. the array holding vertices, |
|
| 140 |
* normals and inflates (the rest, in particular the mVertAttribs2 containing texture |
|
| 141 |
* coordinates and effect assocciations, is always deep copied) |
|
| 138 | 142 |
*/ |
| 139 |
public MeshTriangles deepCopy()
|
|
| 143 |
public MeshTriangles copy(boolean deep)
|
|
| 140 | 144 |
{
|
| 141 |
return new MeshTriangles(this); |
|
| 145 |
return new MeshTriangles(this,deep);
|
|
| 142 | 146 |
} |
| 143 | 147 |
} |
Also available in: Unified diff
In library: allow a mixture of a deep and shallow copy of a Mesh ( mVertAttribs1 might be copied deeply or shallowly, mVertAttribs2 are always copied deeeply).
Port RubikCube to the new library.