aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/PS3/SPU_Tasks/ChunkUpdate/TileRenderer_SPU.h
diff options
context:
space:
mode:
authordaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
committerdaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
commitb691c43c44ff180d10e7d4a9afc83b98551ff586 (patch)
tree3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/PS3/SPU_Tasks/ChunkUpdate/TileRenderer_SPU.h
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.Client/PS3/SPU_Tasks/ChunkUpdate/TileRenderer_SPU.h')
-rw-r--r--Minecraft.Client/PS3/SPU_Tasks/ChunkUpdate/TileRenderer_SPU.h205
1 files changed, 205 insertions, 0 deletions
diff --git a/Minecraft.Client/PS3/SPU_Tasks/ChunkUpdate/TileRenderer_SPU.h b/Minecraft.Client/PS3/SPU_Tasks/ChunkUpdate/TileRenderer_SPU.h
new file mode 100644
index 00000000..2c484faa
--- /dev/null
+++ b/Minecraft.Client/PS3/SPU_Tasks/ChunkUpdate/TileRenderer_SPU.h
@@ -0,0 +1,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 = NULL ); // 4J added forceData, forceEntity param
+ bool tesselateInWorld( Tile_SPU* tt, int x, int y, int z, int forceData = -1, TileEntity* forceEntity = NULL ); // 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
+};