From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Sun, 1 Mar 2026 12:16:08 +0800 Subject: Initial commit --- .../PS3/SPU_Tasks/ChunkUpdate/Tile_SPU.h | 510 +++++++++++++++++++++ 1 file changed, 510 insertions(+) create mode 100644 Minecraft.Client/PS3/SPU_Tasks/ChunkUpdate/Tile_SPU.h (limited to 'Minecraft.Client/PS3/SPU_Tasks/ChunkUpdate/Tile_SPU.h') diff --git a/Minecraft.Client/PS3/SPU_Tasks/ChunkUpdate/Tile_SPU.h b/Minecraft.Client/PS3/SPU_Tasks/ChunkUpdate/Tile_SPU.h new file mode 100644 index 00000000..484823ef --- /dev/null +++ b/Minecraft.Client/PS3/SPU_Tasks/ChunkUpdate/Tile_SPU.h @@ -0,0 +1,510 @@ +#pragma once +// #include "Material.h" +// #include "Vec3.h" +// #include "Definitions.h" +// #include "SoundTypes.h" +// using namespace std; +#include "Icon_SPU.h" +#include "Material_SPU.h" +#include + +class ChunkRebuildData; +class GrassTile_SPU; +class LeafTile; +class TallGrass; +class DeadBushTile; +class FireTile; +class PortalTile; +class MycelTile; +class PistonExtensionTile; +class PistonMovingPiece; +class StoneTile; +class stoneBrick; +class Bush; +class StairTile; +class LiquidTile; +class PistonBaseTile; +class ChestTile; +class RedStoneDustTile; +class RepeaterTile; +class CauldronTile; +class TripWireSourceTile; +class Random; +class HitResult; +class Level; + +class Player; +class LevelSource; +class Mob; +class TileEntity; +class HalfSlabTile; +class IconRegister; + +class TileData_SPU +{ +public: + + class Bitfield256 + { + unsigned int m_data[8]; + + void setBit(unsigned char i){ m_data[i>>5] |= (1<<(i%32)); } + void clearBit(unsigned char i) { m_data[i>>5] &= ~(1<<(i%32)); } + public: + bool operator[](unsigned char i) { return (m_data[i>>5] & 1<<(i%32)) != 0; } + void set(unsigned char i, bool val){ (val) ? setBit(i) : clearBit(i); } + }; + Bitfield256 mipmapEnable; + Bitfield256 solid; + Bitfield256 transculent; + Bitfield256 _sendTileData; + Bitfield256 propagate; + Bitfield256 signalSource; + Bitfield256 cubeShaped; + + + char lightBlock[256]; + char lightEmission[256]; + char materialIDs[256]; + Material_SPU materials[Material_SPU::num_Ids]; + + float xx0[256]; + float yy0[256]; + float zz0[256]; + float xx1[256]; + float yy1[256]; + float zz1[256]; + + int iconTexWidth; + int iconTexHeight; + Icon_SPU iconData[256]; + + + Icon_SPU grass_iconTop; + Icon_SPU grass_iconSnowSide; + Icon_SPU grass_iconSideOverlay; + + Icon_SPU ironFence_EdgeTexture; + Icon_SPU thinGlass_EdgeTexture; + + Icon_SPU farmTile_Wet; + Icon_SPU farmTile_Dry; + + Icon_SPU doorTile_Icons[8]; + + Icon_SPU tallGrass_Icons[3]; + + Icon_SPU sandStone_icons[3]; + Icon_SPU sandStone_iconTop; + Icon_SPU sandStone_iconBottom; + + Icon_SPU woodTile_icons[4]; + + Icon_SPU treeTile_icons[4]; + Icon_SPU treeTile_iconTop; + + Icon_SPU leafTile_icons[2][4]; + bool leafTile_allowSame; + int leafTile_fancyTextureSet; + + Icon_SPU cropTile_icons[8]; + + Icon_SPU furnaceTile_iconTop; + Icon_SPU furnaceTile_iconFront; + Icon_SPU furnaceTile_iconFront_lit; + + Icon_SPU liquidTile_iconWaterStill; + Icon_SPU liquidTile_iconWaterFlow; + Icon_SPU liquidTile_iconLavaStill; + Icon_SPU liquidTile_iconLavaFlow; + + Icon_SPU fireTile_icons[2]; + Icon_SPU sapling_icons[4]; + + bool glassTile_allowSame; + bool iceTile_allowSame; + + Icon_SPU dispenserTile_iconTop; + Icon_SPU dispenserTile_iconFront; + Icon_SPU dispenserTile_iconFrontVertical; + + Icon_SPU railTile_iconTurn; + Icon_SPU railTile_iconTurnGolden; + + Icon_SPU detectorRailTile_icons[2]; + + Icon_SPU tntTile_iconBottom; + Icon_SPU tntTile_iconTop; + + Icon_SPU workBench_iconTop; + Icon_SPU workBench_iconFront; + + Icon_SPU cactusTile_iconTop; + Icon_SPU cactusTile_iconBottom; + + Icon_SPU recordPlayer_iconTop; + + Icon_SPU pumpkinTile_iconTop; + Icon_SPU pumpkinTile_iconFace; + Icon_SPU pumpkinTile_iconFaceLit; + + Icon_SPU cakeTile_iconTop; + Icon_SPU cakeTile_iconBottom; + Icon_SPU cakeTile_iconInner; + + Icon_SPU smoothStoneBrick_icons[4]; + + Icon_SPU hugeMushroom_icons[2]; + Icon_SPU hugeMushroom_iconStem; + Icon_SPU hugeMushroom_iconInside; + + Icon_SPU melonTile_iconTop; + + Icon_SPU stemTile_iconAngled; + + Icon_SPU mycelTile_iconTop; + Icon_SPU mycelTile_iconSnowSide; + + Icon_SPU netherStalk_icons[3]; + + Icon_SPU enchantmentTable_iconTop; + Icon_SPU enchantmentTable_iconBottom; + + Icon_SPU brewingStand_iconBase; + + Icon_SPU redStoneDust_iconCross; + Icon_SPU redStoneDust_iconLine; + Icon_SPU redStoneDust_iconCrossOver; + Icon_SPU redStoneDust_iconLineOver; + + Icon_SPU clothTile_icons[16]; + + Icon_SPU stoneSlab_iconSide; + + Icon_SPU carrot_icons[4]; + Icon_SPU potato_icons[4]; + Icon_SPU anvil_icons[3]; + + + Icon_SPU quartzBlock_icons[5]; + Icon_SPU quartzBlock_iconChiseledTop; + Icon_SPU quartzBlock_iconLinesTop; + Icon_SPU quartzBlock_iconTop; + Icon_SPU quartzBlock_iconBottom; + + + int anvilPart; // normally part of the AnvilTile class + + unsigned int stemTile_minColour; + unsigned int stemTile_maxColour; + unsigned int waterLily_colour; + + unsigned int foliageColor_evergreenColor; + unsigned int foliageColor_birchColor; + + +protected: +// float destroySpeed; +// float explosionResistance; +// bool isInventoryItem; +// bool collectStatistics; +// int m_iMaterial; +// int m_iBaseItemType; + + +public: +// const SoundType *soundType; +// +// float gravity; +// Material *material; +// float friction; + +private: +// unsigned int descriptionId; +// unsigned int useDescriptionId; // 4J Added +// +// wstring m_textureName; + +protected: +// Icon *icon; + +public: + + int getRenderShape(); + + void setShape(float x0, float y0, float z0, float x1, float y1, float z1); + float getBrightness(ChunkRebuildData *level, int x, int y, int z); + int getLightColor(ChunkRebuildData *level, int x, int y, int z); // 4J - brought forward from 1.8.2 + bool shouldRenderFace(ChunkRebuildData *level, int x, int y, int z, int face); + +public: + Icon_SPU *getTexture(ChunkRebuildData *level, int x, int y, int z, int face); + Icon_SPU *getTexture(int face, int data); + Icon_SPU *getTexture(int face); + public: + void updateShape(ChunkRebuildData *level, int x, int y, int z, int forceData = -1, TileEntity* forceEntity = NULL); // 4J added forceData, forceEntity param + double getShapeX0(); + double getShapeX1(); + double getShapeY0(); + double getShapeY1(); + double getShapeZ0(); + double getShapeZ1(); +// int getColor(int auxData); + int getColor(ChunkRebuildData *level, int x, int y, int z); + float getShadeBrightness(ChunkRebuildData *level, int x, int y, int z); // 4J - brought forward from 1.8.2 + bool hasMaterialLiquid() { return false; } // material->isLiquid() +}; + +class Tile_SPU +{ +public: + static const int SHAPE_INVISIBLE = -1; + static const int SHAPE_BLOCK = 0; + static const int SHAPE_CROSS_TEXTURE = 1; + static const int SHAPE_TORCH = 2; + static const int SHAPE_FIRE = 3; + static const int SHAPE_WATER = 4; + static const int SHAPE_RED_DUST = 5; + static const int SHAPE_ROWS = 6; + static const int SHAPE_DOOR = 7; + static const int SHAPE_LADDER = 8; + static const int SHAPE_RAIL = 9; + static const int SHAPE_STAIRS = 10; + static const int SHAPE_FENCE = 11; + static const int SHAPE_LEVER = 12; + static const int SHAPE_CACTUS = 13; + static const int SHAPE_BED = 14; + static const int SHAPE_DIODE = 15; + static const int SHAPE_PISTON_BASE = 16; + static const int SHAPE_PISTON_EXTENSION = 17; + static const int SHAPE_IRON_FENCE = 18; + static const int SHAPE_STEM = 19; + static const int SHAPE_VINE = 20; + static const int SHAPE_FENCE_GATE = 21; + static const int SHAPE_ENTITYTILE_ANIMATED = 22; + static const int SHAPE_LILYPAD = 23; + static const int SHAPE_CAULDRON = 24; + static const int SHAPE_BREWING_STAND = 25; + static const int SHAPE_PORTAL_FRAME = 26; + static const int SHAPE_EGG = 27; + static const int SHAPE_COCOA = 28; + static const int SHAPE_TRIPWIRE_SOURCE = 29; + static const int SHAPE_TRIPWIRE = 30; + static const int SHAPE_TREE = 31; + static const int SHAPE_WALL = 32; + static const int SHAPE_FLOWER_POT = 33; + static const int SHAPE_BEACON = 34; + static const int SHAPE_ANVIL = 35; + static const int SHAPE_QUARTZ = 39; + + // 4J - this array of simple constants made so the compiler can optimise references to Ids that were previous of the form Tile_SPU::->id, and are now simply Tile_SPU::whatever_Id + static const int rock_Id = 1; + static const int grass_Id = 2; + static const int dirt_Id = 3; + static const int stoneBrick_Id = 4; + static const int wood_Id = 5; + static const int sapling_Id = 6; + static const int unbreakable_Id = 7; + static const int water_Id = 8; + static const int calmWater_Id = 9; + static const int lava_Id = 10; + static const int calmLava_Id = 11; + static const int sand_Id = 12; + static const int gravel_Id = 13; + static const int goldOre_Id = 14; + static const int ironOre_Id = 15; + static const int coalOre_Id = 16; + static const int treeTrunk_Id = 17; + static const int leaves_Id = 18; + static const int sponge_Id = 19; + static const int glass_Id = 20; + static const int lapisOre_Id = 21; + static const int lapisBlock_Id = 22; + static const int dispenser_Id = 23; + static const int sandStone_Id = 24; + static const int musicBlock_Id = 25; + static const int bed_Id = 26; + static const int goldenRail_Id = 27; + static const int detectorRail_Id = 28; + static const int pistonStickyBase_Id = 29; + static const int web_Id = 30; + static const int tallgrass_Id = 31; + static const int deadBush_Id = 32; + static const int pistonBase_Id = 33; + static const int pistonExtensionPiece_Id = 34; + static const int cloth_Id = 35; + static const int pistonMovingPiece_Id = 36; + static const int flower_Id = 37; + static const int rose_Id = 38; + static const int mushroom1_Id = 39; + static const int mushroom2_Id = 40; + static const int goldBlock_Id = 41; + static const int ironBlock_Id = 42; + static const int stoneSlab_Id = 43; + static const int stoneSlabHalf_Id = 44; + static const int redBrick_Id = 45; + static const int tnt_Id = 46; + static const int bookshelf_Id = 47; + static const int mossStone_Id = 48; + static const int obsidian_Id = 49; + static const int torch_Id = 50; + static const int fire_Id = 51; + static const int mobSpawner_Id = 52; + static const int stairs_wood_Id = 53; + static const int chest_Id = 54; + static const int redStoneDust_Id = 55; + static const int diamondOre_Id = 56; + static const int diamondBlock_Id = 57; + static const int workBench_Id = 58; + static const int crops_Id = 59; + static const int farmland_Id = 60; + static const int furnace_Id = 61; + static const int furnace_lit_Id = 62; + static const int sign_Id = 63; + static const int door_wood_Id = 64; + static const int ladder_Id = 65; + static const int rail_Id = 66; + static const int stairs_stone_Id = 67; + static const int wallSign_Id = 68; + static const int lever_Id = 69; + static const int pressurePlate_stone_Id = 70; + static const int door_iron_Id = 71; + static const int pressurePlate_wood_Id = 72; + static const int redStoneOre_Id = 73; + static const int redStoneOre_lit_Id = 74; + static const int notGate_off_Id = 75; + static const int notGate_on_Id = 76; + static const int button_stone_Id = 77; + static const int topSnow_Id = 78; + static const int ice_Id = 79; + static const int snow_Id = 80; + static const int cactus_Id = 81; + static const int clay_Id = 82; + static const int reeds_Id = 83; + static const int recordPlayer_Id = 84; + static const int fence_Id = 85; + static const int pumpkin_Id = 86; + static const int hellRock_Id = 87; + static const int hellSand_Id = 88; + static const int lightGem_Id = 89; + static const int portalTile_Id = 90; + static const int litPumpkin_Id = 91; + static const int cake_Id = 92; + static const int diode_off_Id = 93; + static const int diode_on_Id = 94; + static const int aprilFoolsJoke_Id = 95; + static const int trapdoor_Id = 96; + + static const int monsterStoneEgg_Id = 97; + static const int stoneBrickSmooth_Id = 98; + static const int hugeMushroom1_Id = 99; + static const int hugeMushroom2_Id = 100; + static const int ironFence_Id = 101; + static const int thinGlass_Id = 102; + static const int melon_Id = 103; + static const int pumpkinStem_Id = 104; + static const int melonStem_Id = 105; + static const int vine_Id = 106; + static const int fenceGate_Id = 107; + static const int stairs_bricks_Id = 108; + static const int stairs_stoneBrickSmooth_Id = 109; + + static const int mycel_Id = 110; + static const int waterLily_Id = 111; + static const int netherBrick_Id = 112; + static const int netherFence_Id = 113; + static const int stairs_netherBricks_Id = 114; + static const int netherStalk_Id = 115; + static const int enchantTable_Id = 116; + static const int brewingStand_Id = 117; + static const int cauldron_Id = 118; + static const int endPortalTile_Id = 119; + static const int endPortalFrameTile_Id = 120; + static const int whiteStone_Id = 121; + static const int dragonEgg_Id = 122; + static const int redstoneLight_Id = 123; + static const int redstoneLight_lit_Id = 124; + + + static const int woodSlab_Id = 125; + static const int woodSlabHalf_Id = 126; + static const int cocoa_Id = 127; + static const int stairs_sandstone_Id = 128; + static const int stairs_sprucewood_Id = 134; + static const int stairs_birchwood_Id = 135; + static const int stairs_junglewood_Id = 136; + static const int emeraldOre_Id = 129; + static const int enderChest_Id = 130; + static const int tripWireSource_Id = 131; + static const int tripWire_Id = 132; + static const int emeraldBlock_Id = 133; + + static const int cobbleWall_Id = 139; + static const int flowerPot_Id = 140; + static const int carrots_Id = 141; + static const int potatoes_Id = 142; + static const int anvil_Id = 145; + static const int button_wood_Id = 143; + static const int skull_Id = 144; + static const int netherQuartz_Id = 153; + static const int quartzBlock_Id = 155; + static const int stairs_quartz_Id = 156; + static const int woolCarpet_Id = 171; + + static Tile_SPU m_tiles[256]; + + Tile_SPU() { id = -1;} + Tile_SPU(int tileID) { id = tileID; } + virtual ~Tile_SPU() {} + + double getShapeX0() { return ms_pTileData->xx0[id]; } + double getShapeX1() { return ms_pTileData->xx1[id]; } + double getShapeY0() { return ms_pTileData->yy0[id]; } + double getShapeY1() { return ms_pTileData->yy1[id]; } + double getShapeZ0() { return ms_pTileData->zz0[id]; } + double getShapeZ1() { return ms_pTileData->zz1[id]; } + Material_SPU* getMaterial(); + + virtual void updateShape(ChunkRebuildData *level, int x, int y, int z, int forceData = -1, TileEntity* forceEntity = NULL); // 4J added forceData, forceEntity param + virtual void updateDefaultShape(); + virtual void setShape(float x0, float y0, float z0, float x1, float y1, float z1); + virtual float getBrightness(ChunkRebuildData *level, int x, int y, int z); + virtual int getLightColor(ChunkRebuildData *level, int x, int y, int z); // 4J - brought forward from 1.8.2 + virtual bool shouldRenderFace(ChunkRebuildData *level, int x, int y, int z, int face); + virtual int getRenderShape(); + virtual int getColor(ChunkRebuildData *level, int x, int y, int z); + virtual float getShadeBrightness(ChunkRebuildData *level, int x, int y, int z); // 4J - brought forward from 1.8.2 + virtual bool isSolidRender(bool isServerLevel = false); + virtual bool isSolidFace(ChunkRebuildData *level, int x, int y, int z, int face); + virtual int getRenderLayer(); + virtual Icon_SPU *getTexture(ChunkRebuildData *level, int x, int y, int z, int face); + virtual Icon_SPU *getTexture(int face, int data); + virtual Icon_SPU *getTexture(int face); + + bool isSignalSource() { return ms_pTileData->signalSource[id]; } + bool isCubeShaped() { return ms_pTileData->cubeShaped[id]; } + + Icon_SPU* icon() { return &ms_pTileData->iconData[id]; } + + + int id; + static TileData_SPU* ms_pTileData; + + static void initTilePointers(); + static Tile_SPU* createFromID(int tileID); + +}; + +class TileRef_SPU +{ + // because of the way this ref stuff works, we need all the tile classes to be of the same size, + // so make sure no data is added to child classes. + Tile_SPU* m_pTile; +public: + TileRef_SPU(int tileID) { m_pTile = Tile_SPU::createFromID(tileID); } + virtual ~TileRef_SPU() { } + Tile_SPU* operator->() const { return m_pTile; } + Tile_SPU* getPtr() { return m_pTile; } +}; + +//class stoneBrick : public Tile {}; \ No newline at end of file -- cgit v1.2.3