-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathblockGenerator.cpp
More file actions
72 lines (65 loc) · 1.72 KB
/
blockGenerator.cpp
File metadata and controls
72 lines (65 loc) · 1.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include "blockGenerator.h"
#include "tiny_obj_loader.h"
blockGenerator::blockGenerator(const char* startF, const char* itemF, const char* endF,
uint startTex, uint itemTex, uint endTex)
{
start = new CMesh(startF);
item = new CMesh(itemF);
end = new CMesh(endF);
startT = startTex;
itemT = itemTex;
endT = endTex;
}
blockGenerator::~blockGenerator()
{
delete start;
delete item;
delete end;
}
std::vector<CObjectMesh*> blockGenerator::generateBlock(int w, int h, int d, vec3 bPos)
{
ObjectVector finalObjectVect;
vec3 basePos;
vec3 prevPos;
for(int k=0; k<d; k++)
{
for(int i=0; i<w; i++)
{
basePos = bPos + vec3(k*20.0f, 0, i*20.0f);
//create base object
CObjectMesh* startObjMesh = new CObjectMesh(start);
startObjMesh->setTexture(0, startT);
startObjMesh->setPosition(basePos);
finalObjectVect.push_back(startObjMesh);
//append middle parts
prevPos = startObjMesh->getPosition();
vec3 curPos = prevPos;
if( (k==0 || k==d-1) || (i==0 || i==w-1)) //make it hallow
{
for(int j=0; j<h; j++)
{
//printf("Generating main part...\n");
if(j==0)
curPos = prevPos + vec3(0,20.0f,0);
else
curPos = prevPos + vec3(0,13.5f,0);
CObjectMesh* tempObj = new CObjectMesh(item);
tempObj->setTexture(0, itemT);
tempObj->setPosition(curPos);
finalObjectVect.push_back(tempObj);
prevPos = curPos;
CObjectMesh* middleObjMesh = new CObjectMesh(item);
}
}
else
{
prevPos = prevPos + vec3(0,20.0f,0) + vec3(0,(h-1)*13.5f,0); //fix position
}
//append end part
CObjectMesh* endObj = new CObjectMesh(end);
endObj->setPosition(prevPos + vec3(0,13.5f,0));
finalObjectVect.push_back(endObj);
}
}
return finalObjectVect;
}