the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 218 lines 9.8 kB view raw
1#pragma once 2 3class Level; 4class LevelSource; 5class Tile; 6class RailTile; 7class Material; 8class TileEntity; 9class ThinFenceTile; 10class FenceTile; 11class FenceGateTile; 12class BrewingStandTile; 13class CauldronTile; 14class EggTile; 15class TheEndPortalFrameTile; 16class RepeaterTile; 17class ComparatorTile; 18class DiodeTile; 19class FireTile; 20class StemTile; 21class StairTile; 22class CocoaTile; 23class AnvilTile; 24class FlowerPotTile; 25class WallTile; 26class BeaconTile; 27class HopperTile; 28class Icon; 29class Minecraft; 30 31class TileRenderer 32{ 33 friend class FallingTileRenderer; 34 private: 35 LevelSource* level; 36 Icon *fixedTexture; 37 bool xFlipTexture; 38 bool noCulling; 39 public : 40 static bool fancy; 41 bool setColor; 42 43 float tileShapeX0; 44 float tileShapeX1; 45 float tileShapeY0; 46 float tileShapeY1; 47 float tileShapeZ0; 48 float tileShapeZ1; 49 bool fixedShape; 50 bool smoothShapeLighting; 51 Minecraft *minecraft; 52 ///////////////////////////////////////// Data caching 53 unordered_map<int,int> getLightColorCount; 54 int xMin, yMin, zMin; 55 int xMin2, yMin2, zMin2; 56 int getLightColor( Tile *tt, LevelSource *level, int x, int y, int z); 57 float getShadeBrightness( Tile *tt, LevelSource *level, int x, int y, int z); 58 bool isTranslucentAt( LevelSource *level, int x, int y, int z); 59 unsigned int *cache; 60 unsigned char *tileIds; 61 static const unsigned int cache_getLightColor_valid = 0x80000000; 62 static const unsigned int cache_isTranslucentAt_valid = 0x40000000; 63 static const unsigned int cache_isSolidBlockingTile_valid = 0x20000000; 64 static const unsigned int cache_getLightColor_mask = 0x00f000f0; 65 static const unsigned int cache_isTranslucentAt_flag = 0x00000001; 66 static const unsigned int cache_isSolidBlockingTile_flag = 0x00000002; 67 ///////////////////////////////////////// 68 69 void _init(); 70 71public: 72 TileRenderer( LevelSource* level, int xMin, int yMin, int zMin, unsigned char *tileIds ); 73 TileRenderer( LevelSource* level ); 74 TileRenderer(); 75 ~TileRenderer(); 76 void setFixedTexture( Icon *fixedTexture ); 77 void clearFixedTexture(); 78 bool hasFixedTexture(); 79 void setShape(float x0, float y0, float z0, float x1, float y1, float z1); 80 void setShape(Tile *tt); 81 void setFixedShape(float x0, float y0, float z0, float x1, float y1, float z1); 82 void clearFixedShape(); 83 84 void tesselateInWorldFixedTexture( Tile* tile, int x, int y, int z, Icon *fixedTexture ); // 4J renamed to differentiate from tesselateInWorld 85 void tesselateInWorldNoCulling( Tile* tile, int x, int y, int z, int forceData = -1, 86 shared_ptr< TileEntity > forceEntity = shared_ptr< TileEntity >() ); // 4J added forceData, forceEntity param 87 bool tesselateInWorld( Tile* tt, int x, int y, int z, int forceData = -1, shared_ptr< TileEntity > forceEntity = 88 shared_ptr< TileEntity >() ); // 4J added forceData, forceEntity param 89 90 private: 91 bool tesselateAirPortalFrameInWorld(TheEndPortalFrameTile *tt, int x, int y, int z); 92 bool tesselateBedInWorld( Tile* tt, int x, int y, int z ); 93 bool tesselateBrewingStandInWorld(BrewingStandTile *tt, int x, int y, int z); 94 bool tesselateCauldronInWorld(CauldronTile *tt, int x, int y, int z); 95 bool tesselateFlowerPotInWorld(FlowerPotTile *tt, int x, int y, int z); 96 bool tesselateAnvilInWorld(AnvilTile *tt, int x, int y, int z); 97 98public: 99 bool tesselateAnvilInWorld(AnvilTile *tt, int x, int y, int z, int data); 100 101private: 102 bool tesselateAnvilInWorld(AnvilTile *tt, int x, int y, int z, int data, bool render); 103 float tesselateAnvilPiece(AnvilTile *tt, int x, int y, int z, int part, float bottom, float width, float height, float length, bool rotate, bool render, int data); 104 105public: 106 bool tesselateTorchInWorld( Tile* tt, int x, int y, int z ); 107private: 108 bool tesselateRepeaterInWorld(RepeaterTile *tt, int x, int y, int z); 109 bool tesselateComparatorInWorld(ComparatorTile *tt, int x, int y, int z); 110 bool tesselateDiodeInWorld(DiodeTile *tt, int x, int y, int z); 111 void tesselateDiodeInWorld( DiodeTile* tt, int x, int y, int z, int dir ); 112 static const int FLIP_NONE = 0, FLIP_CW = 1, FLIP_CCW = 2, FLIP_180 = 3; 113 114 int northFlip; 115 int southFlip; 116 int eastFlip; 117 int westFlip; 118 int upFlip; 119 int downFlip; 120 public: 121 void tesselatePistonBaseForceExtended( Tile* tile, int x, int y, int z, int forceData = -1 ); // 4J added data param 122 private: 123 bool tesselatePistonBaseInWorld( Tile* tt, int x, int y, int z, bool forceExtended, int forceData = -1 ); // 4J added data param 124 void renderPistonArmUpDown( float x0, float x1, float y0, float y1, float z0, float z1, float br, float armLengthPixels ); 125 void renderPistonArmNorthSouth( float x0, float x1, float y0, float y1, float z0, float z1, float br, float armLengthPixels ); 126 void renderPistonArmEastWest( float x0, float x1, float y0, float y1, float z0, float z1, float br, float armLengthPixels ); 127 public: 128 void tesselatePistonArmNoCulling( Tile* tile, int x, int y, int z, bool fullArm, int forceData = -1 ); // 4J added data param 129 private: 130 bool tesselatePistonExtensionInWorld( Tile* tt, int x, int y, int z, bool fullArm, int forceData = -1 ); // 4J added data param 131 public: 132 bool tesselateLeverInWorld( Tile* tt, int x, int y, int z ); 133 bool tesselateTripwireSourceInWorld(Tile *tt, int x, int y, int z); 134 bool tesselateTripwireInWorld(Tile *tt, int x, int y, int z); 135 bool tesselateFireInWorld( FireTile* tt, int x, int y, int z ); 136 bool tesselateDustInWorld( Tile* tt, int x, int y, int z ); 137 bool tesselateRailInWorld( RailTile* tt, int x, int y, int z ); 138 bool tesselateLadderInWorld( Tile* tt, int x, int y, int z ); 139 bool tesselateVineInWorld( Tile* tt, int x, int y, int z ); 140 bool tesselateThinPaneInWorld(Tile *tt, int x, int y, int z); 141 bool tesselateThinFenceInWorld( ThinFenceTile* tt, int x, int y, int z ); 142 bool tesselateCrossInWorld( Tile* tt, int x, int y, int z ); 143 bool tesselateStemInWorld( Tile* _tt, int x, int y, int z ); 144 bool tesselateRowInWorld( Tile* tt, int x, int y, int z ); 145 void tesselateTorch( Tile* tt, float x, float y, float z, float xxa, float zza, int data ); 146 void tesselateCrossTexture( Tile* tt, int data, float x, float y, float z, float scale ); 147 void tesselateStemTexture( Tile* tt, int data, float h, float x, float y, float z ); 148 bool tesselateLilypadInWorld(Tile *tt, int x, int y, int z); 149 void tesselateStemDirTexture( StemTile* tt, int data, int dir, float h, float x, float y, float z ); 150 151 void tesselateRowTexture( Tile* tt, int data, float x, float y, float z ); 152 bool tesselateWaterInWorld( Tile* tt, int x, int y, int z ); 153 private: 154 float getWaterHeight( int x, int y, int z, Material* m ); 155 public: 156 void renderBlock( Tile* tt, Level* level, int x, int y, int z ); 157 void renderBlock(Tile *tt, Level *level, int x, int y, int z, int data); 158 bool tesselateBlockInWorld( Tile* tt, int x, int y, int z ); 159 // AP - added so we can cull earlier 160 bool tesselateBlockInWorld( Tile* tt, int x, int y, int z, int faceFlags ); 161 bool tesselateTreeInWorld(Tile *tt, int x, int y, int z); 162 bool tesselateQuartzInWorld(Tile *tt, int x, int y, int z); 163 bool tesselateCocoaInWorld(CocoaTile *tt, int x, int y, int z); 164 165 private: 166 bool applyAmbienceOcclusion; 167 float llxyz, llxy0, llxyZ, ll0yz, ll0yZ, llXyz, llXy0; 168 float llXyZ, llxYz, llxY0, llxYZ, ll0Yz, llXYz, llXY0; 169 float ll0YZ, llXYZ, llx0z, llX0z, llx0Z, llX0Z; 170 171 // 4J - brought forward changes from 1.8.2 172 int ccxyz, ccxy0, ccxyZ, cc0yz, cc0yZ, ccXyz, ccXy0; 173 int ccXyZ, ccxYz, ccxY0, ccxYZ, cc0Yz, ccXYz, ccXY0; 174 int cc0YZ, ccXYZ, ccx0z, ccX0z, ccx0Z, ccX0Z; 175 176 int tc1, tc2, tc3, tc4; // 4J - brought forward changes from 1.8.2 177 float c1r, c2r, c3r, c4r; 178 float c1g, c2g, c3g, c4g; 179 float c1b, c2b, c3b, c4b; 180 181 public: 182 // 4J - brought forward changes from 1.8.2 183 // AP - added faceFlags so we can cull earlier 184 bool tesselateBlockInWorldWithAmbienceOcclusionTexLighting( Tile* tt, int pX, int pY, int pZ, float pBaseRed, 185 float pBaseGreen, float pBaseBlue, int faceFlags, bool smoothShapeLighting ); 186 187private: 188 int blend( int a, int b, int c, int def ); 189 int blend(int a, int b, int c, int d, double fa, double fb, double fc, double fd); 190public: 191 bool tesselateBlockInWorld( Tile* tt, int x, int y, int z, float r, float g, float b ); 192 bool tesselateBeaconInWorld( Tile *tt, int x, int y, int z); 193 bool tesselateCactusInWorld( Tile* tt, int x, int y, int z ); 194 bool tesselateCactusInWorld( Tile* tt, int x, int y, int z, float r, float g, float b ); 195 bool tesselateFenceInWorld( FenceTile* tt, int x, int y, int z ); 196 bool tesselateWallInWorld(WallTile *tt, int x, int y, int z); 197 bool tesselateEggInWorld(EggTile *tt, int x, int y, int z); 198 bool tesselateFenceGateInWorld(FenceGateTile *tt, int x, int y, int z); 199 bool tesselateHopperInWorld(Tile *tt, int x, int y, int z); 200 bool tesselateHopperInWorld(Tile *tt, int x, int y, int z, int data, bool render); 201 bool tesselateStairsInWorld( StairTile* tt, int x, int y, int z ); 202 bool tesselateDoorInWorld( Tile* tt, int x, int y, int z ); 203 void renderFaceUp( Tile* tt, double x, double y, double z, Icon *tex ); 204 void renderFaceDown( Tile* tt, double x, double y, double z, Icon *tex ); 205 void renderNorth( Tile* tt, double x, double y, double z, Icon *tex ); 206 void renderSouth( Tile* tt, double x, double y, double z, Icon *tex ); 207 void renderWest( Tile* tt, double x, double y, double z, Icon *tex ); 208 void renderEast( Tile* tt, double x, double y, double z, Icon *tex ); 209 void renderCube( Tile* tile, float alpha ); 210 void renderTile( Tile* tile, int data, float brightness, float fAlpha = 1.0f, bool useCompiled = true ); // 4J Added useCompiled 211 static bool canRender( int renderShape ); 212 Icon *getTexture(Tile *tile, LevelSource *level, int x, int y, int z, int face); 213 214 Icon *getTexture(Tile *tile, int face, int data); 215 Icon *getTexture(Tile *tile, int face); 216 Icon *getTexture(Tile *tile); 217 Icon *getTextureOrMissing(Icon *icon); 218};