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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
|
#pragma once
#include <stddef.h>
//#include <string>
#include "Tile_SPU.h"
#include "Icon_SPU.h"
#include "ChunkRebuildData.h"
class Level;
class LevelSource;
class Tile_SPU;
class RailTile_SPU;
class Material;
class TileEntity;
class ThinFenceTile;
class FenceTile_SPU;
class FenceGateTile_SPU;
class BrewingStandTile_SPU;
class CauldronTile_SPU;
class EggTile_SPU;
class TheEndPortalFrameTile;
class DiodeTile_SPU;
class FireTile_SPU;
class StemTile_SPU;
class WaterlilyTile_SPU;
class StairTile_SPU;
class CocoaTile_SPU;
class AnvilTile_SPU;
class FlowerPotTile_SPU;
class WallTile_SPU;
class Icon;
class Minecraft;
class TileRenderer_SPU
{
friend class FallingTileRenderer_SPU;
private:
ChunkRebuildData* level;
Icon_SPU *fixedTexture;
bool xFlipTexture;
bool noCulling;
public :
static bool fancy;
bool setColor;
float tileShapeX0;
float tileShapeX1;
float tileShapeY0;
float tileShapeY1;
float tileShapeZ0;
float tileShapeZ1;
bool fixedShape;
bool smoothShapeLighting;
// Minecraft *minecraft;
void _init();
public:
TileRenderer_SPU( ChunkRebuildData* level );
TileRenderer_SPU();
Tesselator_SPU* getTesselator();
bool hasRenderer(Tile_SPU* tt);
void setFixedTexture( Icon_SPU *fixedTexture );
void clearFixedTexture();
bool hasFixedTexture();
void setShape(float x0, float y0, float z0, float x1, float y1, float z1);
void setShape(Tile_SPU *tt);
void setFixedShape(float x0, float y0, float z0, float x1, float y1, float z1);
void clearFixedShape();
void tesselateInWorldFixedTexture( Tile_SPU* tile, int x, int y, int z, Icon_SPU *fixedTexture ); // 4J renamed to differentiate from tesselateInWorld
void tesselateInWorldNoCulling( Tile_SPU* tile, int x, int y, int z, int forceData = -1,
TileEntity* forceEntity = nullptr ); // 4J added forceData, forceEntity param
bool tesselateInWorld( Tile_SPU* tt, int x, int y, int z, int forceData = -1, TileEntity* forceEntity = nullptr ); // 4J added forceData, forceEntity param
private:
bool tesselateAirPortalFrameInWorld(TheEndPortalFrameTile *tt, int x, int y, int z);
bool tesselateBedInWorld( Tile_SPU* tt, int x, int y, int z );
bool tesselateBrewingStandInWorld(BrewingStandTile_SPU *tt, int x, int y, int z);
bool tesselateCauldronInWorld(CauldronTile_SPU *tt, int x, int y, int z);
bool tesselateFlowerPotInWorld(FlowerPotTile_SPU *tt, int x, int y, int z);
bool tesselateAnvilInWorld(AnvilTile_SPU *tt, int x, int y, int z);
public:
bool tesselateAnvilInWorld(AnvilTile_SPU *tt, int x, int y, int z, int data);
private:
bool tesselateAnvilInWorld(AnvilTile_SPU *tt, int x, int y, int z, int data, bool render);
float tesselateAnvilPiece(AnvilTile_SPU *tt, int x, int y, int z, int part, float bottom, float width, float height, float length, bool rotate, bool render, int data);
public:
bool tesselateTorchInWorld( Tile_SPU* tt, int x, int y, int z );
private:
bool tesselateDiodeInWorld(DiodeTile_SPU *tt, int x, int y, int z);
void tesselateDiodeInWorld( DiodeTile_SPU* tt, int x, int y, int z, int dir );
static const int FLIP_NONE = 0, FLIP_CW = 1, FLIP_CCW = 2, FLIP_180 = 3;
int northFlip;
int southFlip;
int eastFlip;
int westFlip;
int upFlip;
int downFlip;
public:
void tesselatePistonBaseForceExtended( Tile_SPU* tile, int x, int y, int z, int forceData = -1 ); // 4J added data param
private:
bool tesselatePistonBaseInWorld( Tile_SPU* tt, int x, int y, int z, bool forceExtended, int forceData = -1 ); // 4J added data param
void renderPistonArmUpDown( float x0, float x1, float y0, float y1, float z0, float z1, float br, float armLengthPixels );
void renderPistonArmNorthSouth( float x0, float x1, float y0, float y1, float z0, float z1, float br, float armLengthPixels );
void renderPistonArmEastWest( float x0, float x1, float y0, float y1, float z0, float z1, float br, float armLengthPixels );
public:
void tesselatePistonArmNoCulling( Tile_SPU* tile, int x, int y, int z, bool fullArm, int forceData = -1 ); // 4J added data param
private:
bool tesselatePistonExtensionInWorld( Tile_SPU* tt, int x, int y, int z, bool fullArm, int forceData = -1 ); // 4J added data param
public:
bool tesselateLeverInWorld( Tile_SPU* tt, int x, int y, int z );
bool tesselateTripwireSourceInWorld(Tile_SPU *tt, int x, int y, int z);
bool tesselateTripwireInWorld(Tile_SPU *tt, int x, int y, int z);
bool tesselateFireInWorld( FireTile_SPU* tt, int x, int y, int z );
bool tesselateDustInWorld( Tile_SPU* tt, int x, int y, int z );
bool tesselateRailInWorld( RailTile_SPU* tt, int x, int y, int z );
bool tesselateLadderInWorld( Tile_SPU* tt, int x, int y, int z );
bool tesselateVineInWorld( Tile_SPU* tt, int x, int y, int z );
bool tesselateThinFenceInWorld( ThinFenceTile* tt, int x, int y, int z );
bool tesselateCrossInWorld( Tile_SPU* tt, int x, int y, int z );
bool tesselateStemInWorld( Tile_SPU* _tt, int x, int y, int z );
bool tesselateRowInWorld( Tile_SPU* tt, int x, int y, int z );
void tesselateTorch( Tile_SPU* tt, float x, float y, float z, float xxa, float zza, int data );
void tesselateCrossTexture( Tile_SPU* tt, int data, float x, float y, float z, float scale );
void tesselateStemTexture( Tile_SPU* tt, int data, float h, float x, float y, float z );
bool tesselateLilypadInWorld(WaterlilyTile_SPU *tt, int x, int y, int z);
void tesselateStemDirTexture( StemTile_SPU* tt, int data, int dir, float h, float x, float y, float z );
void tesselateRowTexture( Tile_SPU* tt, int data, float x, float y, float z );
bool tesselateWaterInWorld( Tile_SPU* tt, int x, int y, int z );
private:
float getWaterHeight( int x, int y, int z, Material_SPU* m );
public:
void renderBlock( Tile_SPU* tt, ChunkRebuildData* level, int x, int y, int z );
void renderBlock(Tile_SPU *tt, ChunkRebuildData *level, int x, int y, int z, int data);
bool tesselateBlockInWorld( Tile_SPU* tt, int x, int y, int z );
bool tesselateTreeInWorld(Tile_SPU *tt, int x, int y, int z);
bool tesselateQuartzInWorld(Tile_SPU *tt, int x, int y, int z);
bool tesselateCocoaInWorld(CocoaTile_SPU *tt, int x, int y, int z);
private:
bool applyAmbienceOcclusion;
float ll000, llx00, ll0y0, ll00z, llX00, ll0Y0, ll00Z;
float llxyz, llxy0, llxyZ, ll0yz, ll0yZ, llXyz, llXy0;
float llXyZ, llxYz, llxY0, llxYZ, ll0Yz, llXYz, llXY0;
float ll0YZ, llXYZ, llx0z, llX0z, llx0Z, llX0Z;
// 4J - brought forward changes from 1.8.2
int ccx00, cc00z, cc0Y0, cc00Z;
int ccxyz, ccxy0, ccxyZ, cc0yz, cc0yZ, ccXyz, ccXy0;
int ccXyZ, ccxYz, ccxY0, ccxYZ, cc0Yz, ccXYz, ccXY0;
int cc0YZ, ccXYZ, ccx0z, ccX0z, ccx0Z, ccX0Z;
int blsmooth;
int tc1, tc2, tc3, tc4; // 4J - brought forward changes from 1.8.2
float c1r, c2r, c3r, c4r;
float c1g, c2g, c3g, c4g;
float c1b, c2b, c3b, c4b;
bool llTrans0Yz, llTransXY0, llTransxY0, llTrans0YZ;
bool llTransx0z, llTransX0Z, llTransx0Z, llTransX0z;
bool llTrans0yz, llTransXy0, llTransxy0, llTrans0yZ;
public:
// 4J - brought forward changes from 1.8.2
bool tesselateBlockInWorldWithAmbienceOcclusionTexLighting( Tile_SPU* tt, int pX, int pY, int pZ, float pBaseRed,
float pBaseGreen, float pBaseBlue );
bool tesselateBlockInWorldWithAmbienceOcclusionOldLighting( Tile_SPU* tt, int pX, int pY, int pZ, float pBaseRed,
float pBaseGreen, float pBaseBlue );
private:
int blend( int a, int b, int c, int def );
int blend(int a, int b, int c, int d, float fa, float fb, float fc, float fd);
public:
bool tesselateBlockInWorld( Tile_SPU* tt, int x, int y, int z, float r, float g, float b );
bool tesselateCactusInWorld( Tile_SPU* tt, int x, int y, int z );
bool tesselateCactusInWorld( Tile_SPU* tt, int x, int y, int z, float r, float g, float b );
bool tesselateFenceInWorld( FenceTile_SPU* tt, int x, int y, int z );
bool tesselateWallInWorld(WallTile_SPU *tt, int x, int y, int z);
bool tesselateEggInWorld(EggTile_SPU *tt, int x, int y, int z);
bool tesselateFenceGateInWorld(FenceGateTile_SPU *tt, int x, int y, int z);
bool tesselateStairsInWorld( StairTile_SPU* tt, int x, int y, int z );
bool tesselateDoorInWorld( Tile_SPU* tt, int x, int y, int z );
void renderFaceUp( Tile_SPU* tt, float x, float y, float z, Icon_SPU *tex );
void renderFaceDown( Tile_SPU* tt, float x, float y, float z, Icon_SPU *tex );
void renderNorth( Tile_SPU* tt, float x, float y, float z, Icon_SPU *tex );
void renderSouth( Tile_SPU* tt, float x, float y, float z, Icon_SPU *tex );
void renderWest( Tile_SPU* tt, float x, float y, float z, Icon_SPU *tex );
void renderEast( Tile_SPU* tt, float x, float y, float z, Icon_SPU *tex );
// void renderCube( Tile_SPU* tile, float alpha );
// void renderTile( Tile_SPU* tile, int data, float brightness, float fAlpha = 1.0f );
static bool canRender( int renderShape );
Icon_SPU *getTexture(Tile_SPU *tile, ChunkRebuildData *level, int x, int y, int z, int face);
Icon_SPU *getTexture(Tile_SPU *tile, int face, int data);
Icon_SPU *getTexture(Tile_SPU *tile, int face);
Icon_SPU *getTexture(Tile_SPU *tile);
Icon_SPU *getTextureOrMissing(Icon_SPU *icon);
bool isAnaglyph3d() { return false; } //GameRenderer::anaglyph3d
};
|