Example #1
0
inline void DrawTreeVertexFar(CVertexArray* va, const float3& pos, const float3& swd, float dx, float dy, bool enlarge = true) {
	if (enlarge)
		va->EnlargeArrays(4, 0, VA_SIZE_T);

	float3 base = pos + swd;

	SetArrayQ(va, TEX_LEAF_START_X1 + dx, TEX_LEAF_START_Y4 + dy, base); base.y += MAX_TREE_HEIGHT;
	SetArrayQ(va, TEX_LEAF_START_X1 + dx, TEX_LEAF_END_Y4   + dy, base); base   -= (swd * 2.0f);
	SetArrayQ(va, TEX_LEAF_END_X1   + dx, TEX_LEAF_END_Y4   + dy, base); base.y -= MAX_TREE_HEIGHT;
	SetArrayQ(va, TEX_LEAF_END_X1   + dx, TEX_LEAF_START_Y4 + dy, base);
}
inline void DrawTreeVertexFar(float3 pos, float3 swd, float dx, float dy, bool enlarge=true) {
	if(enlarge)
		va->EnlargeArrays(4,0,VA_SIZE_T);
	float3 base=pos+swd;
	SetArrayQ(TEX_LEAF_START_X1+dx,TEX_LEAF_START_Y4+dy,base);
	base.y+=MAX_TREE_HEIGHT;
	SetArrayQ(TEX_LEAF_START_X1+dx,TEX_LEAF_END_Y4+dy,base);
	base-=swd;
	base-=swd;
	SetArrayQ(TEX_LEAF_END_X1+dx,TEX_LEAF_END_Y4+dy,base);
	base.y-=MAX_TREE_HEIGHT;
	SetArrayQ(TEX_LEAF_END_X1+dx,TEX_LEAF_START_Y4+dy,base);
}
inline void DrawTreeVertexFar2(float3 pos, float3 swd, bool enlarge=true) { 
	if(enlarge)
		va->EnlargeArrays(4,0,VA_SIZE_T);
	float3 base=pos+swd;
	SetArrayQ(0,0.25f,base);
	base.y+=MAX_TREE_HEIGHT;
	SetArrayQ(0,0.5f,base);
	base-=swd;
	base-=swd;
	SetArrayQ(0.25f,0.5f,base);
	base.y-=MAX_TREE_HEIGHT;
	SetArrayQ(0.25f,0.25f,base);
}
	void DrawTreeVertexFar2(const float3& pos, const float3& swd, bool enlarge = true) {
		if (enlarge)
			va->EnlargeArrays(4, 0, VA_SIZE_T);
		float3 base = pos + swd;
		SetArrayQ(va, 0, 0.5f, base);
		base.y += MAX_TREE_HEIGHT;
		SetArrayQ(va, 0, 1.0f, base);
		base -= swd;
		base -= swd;
		SetArrayQ(va, 0.25f, 1.0f, base);
		base.y -= MAX_TREE_HEIGHT;
		SetArrayQ(va, 0.25f, 0.5f, base);
	}
inline void DrawTreeVertex(float3 pos, float dx, float dy, bool enlarge=true) {
	if(enlarge)
		va->EnlargeArrays(12,0,VA_SIZE_T);
	float3 ftpos=pos;
	ftpos.x+=HALF_MAX_TREE_HEIGHT;
	DrawTreeVertexA(ftpos, dx, dy);
	ftpos.z+=MAX_TREE_HEIGHT;
	SetArrayQ(TEX_LEAF_START_X3+dx,TEX_LEAF_START_Y3+dy,ftpos);
	ftpos.z-=MAX_TREE_HEIGHT;
	SetArrayQ(TEX_LEAF_START_X3+dx,TEX_LEAF_END_Y3+dy,ftpos);
	ftpos.x-=MAX_TREE_HEIGHT;
	SetArrayQ(TEX_LEAF_END_X3+dx,TEX_LEAF_END_Y3+dy,ftpos);
	ftpos.z+=MAX_TREE_HEIGHT;
	SetArrayQ(TEX_LEAF_END_X3+dx,TEX_LEAF_START_Y3+dy,ftpos);
}
void CAdvTreeDrawer::DrawTreeVertex(CVertexArray* va, const float3& pos, float dx, float dy, bool enlarge) {
	if (enlarge)
		va->EnlargeArrays(12, 0, VA_SIZE_T);

	float3 ftpos = pos;
	ftpos.x += HALF_MAX_TREE_HEIGHT;

	DrawTreeVertexA(va, ftpos, dx, dy);

	ftpos.z += MAX_TREE_HEIGHT;

	SetArrayQ(va, TEX_LEAF_START_X3 + dx, TEX_LEAF_START_Y3 + dy, ftpos); ftpos.z -= MAX_TREE_HEIGHT;
	SetArrayQ(va, TEX_LEAF_START_X3 + dx, TEX_LEAF_END_Y3   + dy, ftpos); ftpos.x -= MAX_TREE_HEIGHT;
	SetArrayQ(va, TEX_LEAF_END_X3   + dx, TEX_LEAF_END_Y3   + dy, ftpos); ftpos.z += MAX_TREE_HEIGHT;
	SetArrayQ(va, TEX_LEAF_END_X3   + dx, TEX_LEAF_START_Y3 + dy, ftpos);
}
Example #7
0
inline void DrawTreeVertexA(CVertexArray* va, float3& ftpos, float dx, float dy) {
	SetArrayQ(va, TEX_LEAF_START_X1 + dx, TEX_LEAF_START_Y1 + dy, ftpos); ftpos.y += MAX_TREE_HEIGHT;
	SetArrayQ(va, TEX_LEAF_START_X1 + dx, TEX_LEAF_END_Y1   + dy, ftpos); ftpos.x -= MAX_TREE_HEIGHT;
	SetArrayQ(va, TEX_LEAF_END_X1   + dx, TEX_LEAF_END_Y1   + dy, ftpos); ftpos.y -= MAX_TREE_HEIGHT;
	SetArrayQ(va, TEX_LEAF_END_X1   + dx, TEX_LEAF_START_Y1 + dy, ftpos); ftpos.x += HALF_MAX_TREE_HEIGHT;

	ftpos.z += HALF_MAX_TREE_HEIGHT;

	SetArrayQ(va, TEX_LEAF_START_X2 + dx, TEX_LEAF_START_Y2 + dy, ftpos); ftpos.y += MAX_TREE_HEIGHT;
	SetArrayQ(va, TEX_LEAF_START_X2 + dx, TEX_LEAF_END_Y2   + dy, ftpos); ftpos.z -= MAX_TREE_HEIGHT;
	SetArrayQ(va, TEX_LEAF_END_X2   + dx, TEX_LEAF_END_Y2   + dy, ftpos); ftpos.y -= MAX_TREE_HEIGHT;
	SetArrayQ(va, TEX_LEAF_END_X2   + dx, TEX_LEAF_START_Y2 + dy, ftpos);

	ftpos.x += HALF_MAX_TREE_HEIGHT;
	ftpos.y += PART_MAX_TREE_HEIGHT;
}
inline void DrawTreeVertexMid2(float3 pos, bool enlarge=true) {
	if(enlarge)
		va->EnlargeArrays(12,0,VA_SIZE_T);
	float3 base=pos;
	base.x+=MAX_TREE_HEIGHT_3;

	SetArrayQ(0,0.25f,base);
	base.y+=MAX_TREE_HEIGHT;
	SetArrayQ(0,0.5f,base);
	base.x-=MAX_TREE_HEIGHT_6;
	SetArrayQ(0.25f,0.5f,base);
	base.y-=MAX_TREE_HEIGHT;
	SetArrayQ(0.25f,0.25f,base);

	base.x+=MAX_TREE_HEIGHT_3;
	base.z+=MAX_TREE_HEIGHT_3;
	SetArrayQ(0.25f,0.25f,base);
	base.y+=MAX_TREE_HEIGHT;
	SetArrayQ(0.25f,0.5f,base);
	base.z-=MAX_TREE_HEIGHT_6;
	SetArrayQ(0.5f,0.5f,base);
	base.y-=MAX_TREE_HEIGHT;
	SetArrayQ(0.5f,0.25f,base);

	base.z+=MAX_TREE_HEIGHT_3;
	base.x+=MAX_TREE_HEIGHT_36;
	base.y+=MAX_TREE_HEIGHT_3;
	SetArrayQ(0.5f,0.25f,base);
	base.x-=MAX_TREE_HEIGHT_36;
	base.z-=MAX_TREE_HEIGHT_36;
	SetArrayQ(0.5f,0.5f,base);
	base.x-=MAX_TREE_HEIGHT_36;
	base.z+=MAX_TREE_HEIGHT_36;
	SetArrayQ(1,0.5f,base);
	base.x+=MAX_TREE_HEIGHT_36;
	base.z+=MAX_TREE_HEIGHT_36;
	SetArrayQ(1,0.25f,base);
}
	void DrawTreeVertexMid1(const float3& pos, bool enlarge = true) {
		if (enlarge)
			va->EnlargeArrays(12, 0, VA_SIZE_T);
		float3 base = pos;
		base.x += MAX_TREE_HEIGHT_3;

		SetArrayQ(va, 0.0f, 0.0f, base);
		base.y += MAX_TREE_HEIGHT;
		SetArrayQ(va, 0.0f, 0.5f, base);
		base.x -= MAX_TREE_HEIGHT_6;
		SetArrayQ(va, 0.5f, 0.5f, base);
		base.y -= MAX_TREE_HEIGHT;
		SetArrayQ(va, 0.5f, 0.0f, base);

		base.x += MAX_TREE_HEIGHT_3;
		base.z += MAX_TREE_HEIGHT_3;
		SetArrayQ(va, 0.0f, 0.0f, base);
		base.y += MAX_TREE_HEIGHT;
		SetArrayQ(va, 0.0f, 0.5f, base);
		base.z -= MAX_TREE_HEIGHT_6;
		SetArrayQ(va, 0.5f, 0.5f, base);
		base.y -= MAX_TREE_HEIGHT;
		SetArrayQ(va, 0.5f, 0.0f, base);

		base.z += MAX_TREE_HEIGHT_3;
		base.x += MAX_TREE_HEIGHT_36;
		base.y += MAX_TREE_HEIGHT_25;
		SetArrayQ(va, 0.5f, 0.0f, base);
		base.x -= MAX_TREE_HEIGHT_36;
		base.z -= MAX_TREE_HEIGHT_36;
		SetArrayQ(va, 0.5f, 0.5f, base);
		base.x -= MAX_TREE_HEIGHT_36;
		base.z += MAX_TREE_HEIGHT_36;
		SetArrayQ(va, 1.0f, 0.5f, base);
		base.x += MAX_TREE_HEIGHT_36;
		base.z += MAX_TREE_HEIGHT_36;
		SetArrayQ(va, 1.0f, 0.0f, base);
	}