Copyright (c) 2001 Jerome Jacovella-St-Louis
All Rights Reserved.
-
+
dna.ec - DNA 3D Model
****************************************************************************/
public import "ecere"
uint16 indices[36] =
{
// up, front, down, back, right, left
- 21,20,16, 17,21,16,
- 3,2,1, 0,3,1,
- 18,19,23, 22,18,23,
- 6,7,4, 5,6,4,
- 10,14,13, 9,10,13,
+ 21,20,16, 17,21,16,
+ 3,2,1, 0,3,1,
+ 18,19,23, 22,18,23,
+ 6,7,4, 5,6,4,
+ 10,14,13, 9,10,13,
15,11,8, 12,15,8
};
PrimitiveGroup group;
uint16 num = (uint16)(curveSegments*numCurves);
int vertexCount = (num+1)*4;
-
+
if(Allocate({ vertices = true, texCoords1 = true }, vertexCount, displaySystem))
{
uint16 v;
//Define Polygons
for(p=0; p<num; p++)
{
- group.indices[index++] = p*2+1;
- group.indices[index++] = p*2+3;
- group.indices[index++] = p*2+2;
- group.indices[index++] = p*2+2;
- group.indices[index++] = p*2;
- group.indices[index++] = p*2+1;
-
- group.indices[index++] = p*2+startv;
- group.indices[index++] = p*2+2+startv;
- group.indices[index++] = p*2+3+startv;
- group.indices[index++] = p*2+3+startv;
- group.indices[index++] = p*2+1+startv;
- group.indices[index++] = p*2+startv;
-
- group.indices[index++] = p*2+startv+1;
- group.indices[index++] = p*2+startv+3;
- group.indices[index++] = p*2+3;
- group.indices[index++] = p*2+3;
- group.indices[index++] = p*2+1;
- group.indices[index++] = p*2+startv+1;
-
- group.indices[index++] = p*2;
- group.indices[index++] = p*2+2;
- group.indices[index++] = p*2+startv+2;
- group.indices[index++] = p*2+startv+2;
- group.indices[index++] = p*2+startv;
- group.indices[index++] = p*2;
+ group.indices[index++] = (uint16)(p*2+1);
+ group.indices[index++] = (uint16)(p*2+3);
+ group.indices[index++] = (uint16)(p*2+2);
+ group.indices[index++] = (uint16)(p*2+2);
+ group.indices[index++] = (uint16)(p*2);
+ group.indices[index++] = (uint16)(p*2+1);
+
+ group.indices[index++] = (uint16)(p*2+startv);
+ group.indices[index++] = (uint16)(p*2+2+startv);
+ group.indices[index++] = (uint16)(p*2+3+startv);
+ group.indices[index++] = (uint16)(p*2+3+startv);
+ group.indices[index++] = (uint16)(p*2+1+startv);
+ group.indices[index++] = (uint16)(p*2+startv);
+
+ group.indices[index++] = (uint16)(p*2+startv+1);
+ group.indices[index++] = (uint16)(p*2+startv+3);
+ group.indices[index++] = (uint16)(p*2+3);
+ group.indices[index++] = (uint16)(p*2+3);
+ group.indices[index++] = (uint16)(p*2+1);
+ group.indices[index++] = (uint16)(p*2+startv+1);
+
+ group.indices[index++] = (uint16)(p*2);
+ group.indices[index++] = (uint16)(p*2+2);
+ group.indices[index++] = (uint16)(p*2+startv+2);
+ group.indices[index++] = (uint16)(p*2+startv+2);
+ group.indices[index++] = (uint16)(p*2+startv);
+ group.indices[index++] = (uint16)(p*2);
}
// Ends
group.indices[index++] = startv;
- group.indices[index++] = startv+1;
+ group.indices[index++] = (uint16)(startv+1);
group.indices[index++] = 1;
group.indices[index++] = 1;
group.indices[index++] = 0;
group.indices[index++] = startv;
- group.indices[index++] = 2*num;
- group.indices[index++] = 2*num+1;
- group.indices[index++] = 2*num+startv+1;
- group.indices[index++] = 2*num+startv+1;
- group.indices[index++] = 2*num+startv;
- group.indices[index++] = 2*num;
+ group.indices[index++] = (uint16)(2*num);
+ group.indices[index++] = (uint16)(2*num+1);
+ group.indices[index++] = (uint16)(2*num+startv+1);
+ group.indices[index++] = (uint16)(2*num+startv+1);
+ group.indices[index++] = (uint16)(2*num+startv);
+ group.indices[index++] = (uint16)(2*num);
ComputeNormals();
result = true;
}
}
-static char * names[7] = { "Adenine", "Cytosine", "Guanine", "Thymine", "Phosphate", "Desoxyribose", "Hydrogene" };
+static const char * names[7] = { "Adenine", "Cytosine", "Guanine", "Thymine", "Phosphate", "Desoxyribose", "Hydrogene" };
public class DNAModel : Object
{
int baseHeight;
int baseDepth;
int desoxyriboseWidth;
- char * textureFile;
+ const char * textureFile;
public:
bool Create(DisplaySystem displaySystem)
char name[20];
Vector3D pos;
- // Pick texture
+ // Pick texture
int b1 = GetRandom(0,3);
int b2 = 3-b1;
Quaternion angle { 1,0,0,0 };
Vector3D position;
Matrix matrix;
-
+
// Change Rotation
angle.Yaw(-rotation*c);
matrix.RotationQuaternion(angle);
base.UpdateTransform();
pos.MultMatrix(position, matrix); base.transform.position = pos;
base.material = displaySystem.GetMaterial(names[b2]);
-
+
//******************* DESOXYRIBOSE *******************
sprintf(name, "Desoxyribose%02d", c*2);
desoxyribose = { }; AddName(desoxyribose, name);