Something went wrong. Try again.
the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
Something went wrong. Try again.
9.8 kB · 218 lines
C
at master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219#pragma once
class Level;class LevelSource;class Tile;class RailTile;class Material;class TileEntity;class ThinFenceTile;class FenceTile;class FenceGateTile;class BrewingStandTile;class CauldronTile;class EggTile;class TheEndPortalFrameTile;class RepeaterTile;class ComparatorTile;class DiodeTile;class FireTile;class StemTile;class StairTile;class CocoaTile;class AnvilTile;class FlowerPotTile;class WallTile;class BeaconTile;class HopperTile;class Icon;class Minecraft;
class TileRenderer{ friend class FallingTileRenderer; private: LevelSource* level; Icon *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; ///////////////////////////////////////// Data caching unordered_map<int,int> getLightColorCount; int xMin, yMin, zMin; int xMin2, yMin2, zMin2; int getLightColor( Tile *tt, LevelSource *level, int x, int y, int z); float getShadeBrightness( Tile *tt, LevelSource *level, int x, int y, int z); bool isTranslucentAt( LevelSource *level, int x, int y, int z); unsigned int *cache; unsigned char *tileIds; static const unsigned int cache_getLightColor_valid = 0x80000000; static const unsigned int cache_isTranslucentAt_valid = 0x40000000; static const unsigned int cache_isSolidBlockingTile_valid = 0x20000000; static const unsigned int cache_getLightColor_mask = 0x00f000f0; static const unsigned int cache_isTranslucentAt_flag = 0x00000001; static const unsigned int cache_isSolidBlockingTile_flag = 0x00000002; /////////////////////////////////////////
void _init();
public: TileRenderer( LevelSource* level, int xMin, int yMin, int zMin, unsigned char *tileIds ); TileRenderer( LevelSource* level ); TileRenderer(); ~TileRenderer(); void setFixedTexture( Icon *fixedTexture ); void clearFixedTexture(); bool hasFixedTexture(); void setShape(float x0, float y0, float z0, float x1, float y1, float z1); void setShape(Tile *tt); void setFixedShape(float x0, float y0, float z0, float x1, float y1, float z1); void clearFixedShape();
void tesselateInWorldFixedTexture( Tile* tile, int x, int y, int z, Icon *fixedTexture ); // 4J renamed to differentiate from tesselateInWorld void tesselateInWorldNoCulling( Tile* tile, int x, int y, int z, int forceData = -1, shared_ptr< TileEntity > forceEntity = shared_ptr< TileEntity >() ); // 4J added forceData, forceEntity param bool tesselateInWorld( Tile* tt, int x, int y, int z, int forceData = -1, shared_ptr< TileEntity > forceEntity = shared_ptr< TileEntity >() ); // 4J added forceData, forceEntity param
private: bool tesselateAirPortalFrameInWorld(TheEndPortalFrameTile *tt, int x, int y, int z); bool tesselateBedInWorld( Tile* tt, int x, int y, int z ); bool tesselateBrewingStandInWorld(BrewingStandTile *tt, int x, int y, int z); bool tesselateCauldronInWorld(CauldronTile *tt, int x, int y, int z); bool tesselateFlowerPotInWorld(FlowerPotTile *tt, int x, int y, int z); bool tesselateAnvilInWorld(AnvilTile *tt, int x, int y, int z);
public: bool tesselateAnvilInWorld(AnvilTile *tt, int x, int y, int z, int data);
private: bool tesselateAnvilInWorld(AnvilTile *tt, int x, int y, int z, int data, bool render); 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);
public: bool tesselateTorchInWorld( Tile* tt, int x, int y, int z );private: bool tesselateRepeaterInWorld(RepeaterTile *tt, int x, int y, int z); bool tesselateComparatorInWorld(ComparatorTile *tt, int x, int y, int z); bool tesselateDiodeInWorld(DiodeTile *tt, int x, int y, int z); void tesselateDiodeInWorld( DiodeTile* 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* tile, int x, int y, int z, int forceData = -1 ); // 4J added data param private: bool tesselatePistonBaseInWorld( Tile* 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* tile, int x, int y, int z, bool fullArm, int forceData = -1 ); // 4J added data param private: bool tesselatePistonExtensionInWorld( Tile* tt, int x, int y, int z, bool fullArm, int forceData = -1 ); // 4J added data param public: bool tesselateLeverInWorld( Tile* tt, int x, int y, int z ); bool tesselateTripwireSourceInWorld(Tile *tt, int x, int y, int z); bool tesselateTripwireInWorld(Tile *tt, int x, int y, int z); bool tesselateFireInWorld( FireTile* tt, int x, int y, int z ); bool tesselateDustInWorld( Tile* tt, int x, int y, int z ); bool tesselateRailInWorld( RailTile* tt, int x, int y, int z ); bool tesselateLadderInWorld( Tile* tt, int x, int y, int z ); bool tesselateVineInWorld( Tile* tt, int x, int y, int z ); bool tesselateThinPaneInWorld(Tile *tt, int x, int y, int z); bool tesselateThinFenceInWorld( ThinFenceTile* tt, int x, int y, int z ); bool tesselateCrossInWorld( Tile* tt, int x, int y, int z ); bool tesselateStemInWorld( Tile* _tt, int x, int y, int z ); bool tesselateRowInWorld( Tile* tt, int x, int y, int z ); void tesselateTorch( Tile* tt, float x, float y, float z, float xxa, float zza, int data ); void tesselateCrossTexture( Tile* tt, int data, float x, float y, float z, float scale ); void tesselateStemTexture( Tile* tt, int data, float h, float x, float y, float z ); bool tesselateLilypadInWorld(Tile *tt, int x, int y, int z); void tesselateStemDirTexture( StemTile* tt, int data, int dir, float h, float x, float y, float z );
void tesselateRowTexture( Tile* tt, int data, float x, float y, float z ); bool tesselateWaterInWorld( Tile* tt, int x, int y, int z ); private: float getWaterHeight( int x, int y, int z, Material* m ); public: void renderBlock( Tile* tt, Level* level, int x, int y, int z ); void renderBlock(Tile *tt, Level *level, int x, int y, int z, int data); bool tesselateBlockInWorld( Tile* tt, int x, int y, int z ); // AP - added so we can cull earlier bool tesselateBlockInWorld( Tile* tt, int x, int y, int z, int faceFlags ); bool tesselateTreeInWorld(Tile *tt, int x, int y, int z); bool tesselateQuartzInWorld(Tile *tt, int x, int y, int z); bool tesselateCocoaInWorld(CocoaTile *tt, int x, int y, int z);
private: bool applyAmbienceOcclusion; 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 ccxyz, ccxy0, ccxyZ, cc0yz, cc0yZ, ccXyz, ccXy0; int ccXyZ, ccxYz, ccxY0, ccxYZ, cc0Yz, ccXYz, ccXY0; int cc0YZ, ccXYZ, ccx0z, ccX0z, ccx0Z, ccX0Z;
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;
public: // 4J - brought forward changes from 1.8.2 // AP - added faceFlags so we can cull earlier bool tesselateBlockInWorldWithAmbienceOcclusionTexLighting( Tile* tt, int pX, int pY, int pZ, float pBaseRed, float pBaseGreen, float pBaseBlue, int faceFlags, bool smoothShapeLighting );
private: int blend( int a, int b, int c, int def ); int blend(int a, int b, int c, int d, double fa, double fb, double fc, double fd);public: bool tesselateBlockInWorld( Tile* tt, int x, int y, int z, float r, float g, float b ); bool tesselateBeaconInWorld( Tile *tt, int x, int y, int z); bool tesselateCactusInWorld( Tile* tt, int x, int y, int z ); bool tesselateCactusInWorld( Tile* tt, int x, int y, int z, float r, float g, float b ); bool tesselateFenceInWorld( FenceTile* tt, int x, int y, int z ); bool tesselateWallInWorld(WallTile *tt, int x, int y, int z); bool tesselateEggInWorld(EggTile *tt, int x, int y, int z); bool tesselateFenceGateInWorld(FenceGateTile *tt, int x, int y, int z); bool tesselateHopperInWorld(Tile *tt, int x, int y, int z); bool tesselateHopperInWorld(Tile *tt, int x, int y, int z, int data, bool render); bool tesselateStairsInWorld( StairTile* tt, int x, int y, int z ); bool tesselateDoorInWorld( Tile* tt, int x, int y, int z ); void renderFaceUp( Tile* tt, double x, double y, double z, Icon *tex ); void renderFaceDown( Tile* tt, double x, double y, double z, Icon *tex ); void renderNorth( Tile* tt, double x, double y, double z, Icon *tex ); void renderSouth( Tile* tt, double x, double y, double z, Icon *tex ); void renderWest( Tile* tt, double x, double y, double z, Icon *tex ); void renderEast( Tile* tt, double x, double y, double z, Icon *tex ); void renderCube( Tile* tile, float alpha ); void renderTile( Tile* tile, int data, float brightness, float fAlpha = 1.0f, bool useCompiled = true ); // 4J Added useCompiled static bool canRender( int renderShape ); Icon *getTexture(Tile *tile, LevelSource *level, int x, int y, int z, int face);
Icon *getTexture(Tile *tile, int face, int data); Icon *getTexture(Tile *tile, int face); Icon *getTexture(Tile *tile); Icon *getTextureOrMissing(Icon *icon);};