WIP on more accurate leaves/sponge particles (Thanks Birevan)

This commit is contained in:
UnknownShadow200 2022-05-04 19:54:23 +10:00
parent 19e7d474fe
commit 9e3ecc96b8
3 changed files with 75 additions and 71 deletions

View File

@ -25,91 +25,91 @@ const char* const Sound_Names[SOUND_COUNT] = {
struct SimpleBlockDef { struct SimpleBlockDef {
cc_uint8 topTexture, sideTexture, bottomTexture, height; cc_uint8 topTexture, sideTexture, bottomTexture, height;
PackedCol fogColor; cc_uint8 fogDensity; PackedCol fogColor; cc_uint8 fogDensity;
cc_bool fullBright, blocksLight; cc_bool fullBright, blocksLight; cc_uint8 gravity;
cc_uint8 draw, collide, digSound, stepSound; cc_uint8 draw, collide, digSound, stepSound;
}; };
static const struct SimpleBlockDef invalid_blockDef = { static const struct SimpleBlockDef invalid_blockDef = {
0,0,0,16, FOG_NONE,0, false,true, DRAW_OPAQUE,COLLIDE_SOLID,0 0,0,0,16, FOG_NONE,0, false,true, 100, DRAW_OPAQUE,COLLIDE_SOLID,0
}; };
/* Properties for all Classic and CPE blocks */ /* Properties for all Classic and CPE blocks */
static const struct SimpleBlockDef core_blockDefs[BLOCK_CPE_COUNT] = { static const struct SimpleBlockDef core_blockDefs[BLOCK_CPE_COUNT] = {
/*TOP SID BOT HEI FOG_COLOR DENS FULL BLOCKS DRAW_MODE COLLIDE_MODE DIG_SOUND STEP_SOUND */ /*TOP SID BOT HEI FOG_COLOR DENS FULL BLOCKS GRAV DRAW_MODE COLLIDE_MODE DIG_SOUND STEP_SOUND */
{ 0, 0, 0, 16, FOG_NONE , 0, false, false, DRAW_GAS, COLLIDE_NONE, SOUND_NONE, SOUND_NONE }, /* AIR */ { 0, 0, 0, 16, FOG_NONE , 0, false, false, 100, DRAW_GAS, COLLIDE_NONE, SOUND_NONE, SOUND_NONE }, /* AIR */
{ 1, 1, 1, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* STONE */ { 1, 1, 1, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* STONE */
{ 0, 3, 2, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_GRASS, SOUND_GRASS }, /* GRASS */ { 0, 3, 2, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_GRASS, SOUND_GRASS }, /* GRASS */
{ 2, 2, 2, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_GRAVEL, SOUND_GRAVEL }, /* DIRT */ { 2, 2, 2, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_GRAVEL, SOUND_GRAVEL }, /* DIRT */
{ 16, 16, 16, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* COBBLE */ { 16, 16, 16, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* COBBLE */
{ 4, 4, 4, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_WOOD, SOUND_WOOD }, /* WOOD */ { 4, 4, 4, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_WOOD, SOUND_WOOD }, /* WOOD */
{ 15, 15, 15, 16, FOG_NONE , 0, false, false, DRAW_SPRITE, COLLIDE_NONE, SOUND_GRASS, SOUND_NONE }, /* SAPLING */ { 15, 15, 15, 16, FOG_NONE , 0, false, false, 100, DRAW_SPRITE, COLLIDE_NONE, SOUND_GRASS, SOUND_NONE }, /* SAPLING */
{ 17, 17, 17, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* BEDROCK */ { 17, 17, 17, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* BEDROCK */
{ 14, 14, 14, 16, FOG_WATER, 10, false, true, DRAW_TRANSLUCENT, COLLIDE_WATER, SOUND_NONE, SOUND_NONE },/* WATER */ { 14, 14, 14, 16, FOG_WATER, 10, false, true, 100, DRAW_TRANSLUCENT, COLLIDE_WATER, SOUND_NONE, SOUND_NONE },/* WATER */
{ 14, 14, 14, 16, FOG_WATER, 10, false, true, DRAW_TRANSLUCENT, COLLIDE_WATER, SOUND_NONE, SOUND_NONE },/* STILL_WATER */ { 14, 14, 14, 16, FOG_WATER, 10, false, true, 100, DRAW_TRANSLUCENT, COLLIDE_WATER, SOUND_NONE, SOUND_NONE },/* STILL_WATER */
{ 30, 30, 30, 16, FOG_LAVA , 180, true, true, DRAW_OPAQUE, COLLIDE_LAVA, SOUND_NONE, SOUND_NONE }, /* LAVA */ { 30, 30, 30, 16, FOG_LAVA , 180, true, true, 100, DRAW_OPAQUE, COLLIDE_LAVA, SOUND_NONE, SOUND_NONE }, /* LAVA */
{ 30, 30, 30, 16, FOG_LAVA , 180, true, true, DRAW_OPAQUE, COLLIDE_LAVA, SOUND_NONE, SOUND_NONE }, /* STILL_LAVA */ { 30, 30, 30, 16, FOG_LAVA , 180, true, true, 100, DRAW_OPAQUE, COLLIDE_LAVA, SOUND_NONE, SOUND_NONE }, /* STILL_LAVA */
{ 18, 18, 18, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_SAND, SOUND_SAND }, /* SAND */ { 18, 18, 18, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_SAND, SOUND_SAND }, /* SAND */
{ 19, 19, 19, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_GRAVEL, SOUND_GRAVEL }, /* GRAVEL */ { 19, 19, 19, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_GRAVEL, SOUND_GRAVEL }, /* GRAVEL */
{ 32, 32, 32, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* GOLD_ORE */ { 32, 32, 32, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* GOLD_ORE */
{ 33, 33, 33, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* IRON_ORE */ { 33, 33, 33, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* IRON_ORE */
{ 34, 34, 34, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* COAL_ORE */ { 34, 34, 34, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* COAL_ORE */
{ 21, 20, 21, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_WOOD, SOUND_WOOD }, /* LOG */ { 21, 20, 21, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_WOOD, SOUND_WOOD }, /* LOG */
{ 22, 22, 22, 16, FOG_NONE , 0, false, false, DRAW_TRANSPARENT_THICK, COLLIDE_SOLID, SOUND_GRASS, SOUND_GRASS }, /* LEAVES */ { 22, 22, 22, 16, FOG_NONE , 0, false, false, 40, DRAW_TRANSPARENT_THICK, COLLIDE_SOLID, SOUND_GRASS, SOUND_GRASS }, /* LEAVES */
{ 48, 48, 48, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_GRASS, SOUND_GRASS }, /* SPONGE */ { 48, 48, 48, 16, FOG_NONE , 0, false, true, 90, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_GRASS, SOUND_GRASS }, /* SPONGE */
{ 49, 49, 49, 16, FOG_NONE , 0, false, false, DRAW_TRANSPARENT, COLLIDE_SOLID, SOUND_GLASS,SOUND_STONE},/* GLASS */ { 49, 49, 49, 16, FOG_NONE , 0, false, false, 100, DRAW_TRANSPARENT, COLLIDE_SOLID, SOUND_GLASS,SOUND_STONE},/* GLASS */
{ 64, 64, 64, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* RED */ { 64, 64, 64, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* RED */
{ 65, 65, 65, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* ORANGE */ { 65, 65, 65, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* ORANGE */
{ 66, 66, 66, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* YELLOW */ { 66, 66, 66, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* YELLOW */
{ 67, 67, 67, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* LIME */ { 67, 67, 67, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* LIME */
{ 68, 68, 68, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* GREEN */ { 68, 68, 68, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* GREEN */
{ 69, 69, 69, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* TEAL */ { 69, 69, 69, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* TEAL */
{ 70, 70, 70, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* AQUA */ { 70, 70, 70, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* AQUA */
{ 71, 71, 71, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* CYAN */ { 71, 71, 71, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* CYAN */
{ 72, 72, 72, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* BLUE */ { 72, 72, 72, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* BLUE */
{ 73, 73, 73, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* INDIGO */ { 73, 73, 73, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* INDIGO */
{ 74, 74, 74, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* VIOLET */ { 74, 74, 74, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* VIOLET */
{ 75, 75, 75, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* MAGNETA */ { 75, 75, 75, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* MAGNETA */
{ 76, 76, 76, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* PINK */ { 76, 76, 76, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* PINK */
{ 77, 77, 77, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* BLACK */ { 77, 77, 77, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* BLACK */
{ 78, 78, 78, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* GRAY */ { 78, 78, 78, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* GRAY */
{ 79, 79, 79, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* WHITE */ { 79, 79, 79, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* WHITE */
{ 13, 13, 13, 16, FOG_NONE , 0, false, false, DRAW_SPRITE, COLLIDE_NONE, SOUND_GRASS, SOUND_NONE }, /* DANDELION */ { 13, 13, 13, 16, FOG_NONE , 0, false, false, 100, DRAW_SPRITE, COLLIDE_NONE, SOUND_GRASS, SOUND_NONE }, /* DANDELION */
{ 12, 12, 12, 16, FOG_NONE , 0, false, false, DRAW_SPRITE, COLLIDE_NONE, SOUND_GRASS, SOUND_NONE }, /* ROSE */ { 12, 12, 12, 16, FOG_NONE , 0, false, false, 100, DRAW_SPRITE, COLLIDE_NONE, SOUND_GRASS, SOUND_NONE }, /* ROSE */
{ 29, 29, 29, 16, FOG_NONE , 0, false, false, DRAW_SPRITE, COLLIDE_NONE, SOUND_GRASS, SOUND_NONE }, /* BROWN_SHROOM */ { 29, 29, 29, 16, FOG_NONE , 0, false, false, 100, DRAW_SPRITE, COLLIDE_NONE, SOUND_GRASS, SOUND_NONE }, /* BROWN_SHROOM */
{ 28, 28, 28, 16, FOG_NONE , 0, false, false, DRAW_SPRITE, COLLIDE_NONE, SOUND_GRASS, SOUND_NONE }, /* RED_SHROOM */ { 28, 28, 28, 16, FOG_NONE , 0, false, false, 100, DRAW_SPRITE, COLLIDE_NONE, SOUND_GRASS, SOUND_NONE }, /* RED_SHROOM */
{ 24, 40, 56, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_METAL, SOUND_METAL }, /* GOLD */ { 24, 40, 56, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_METAL, SOUND_METAL }, /* GOLD */
{ 23, 39, 55, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_METAL, SOUND_METAL }, /* IRON */ { 23, 39, 55, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_METAL, SOUND_METAL }, /* IRON */
{ 6, 5, 6, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* DOUBLE_SLAB */ { 6, 5, 6, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* DOUBLE_SLAB */
{ 6, 5, 6, 8, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* SLAB */ { 6, 5, 6, 8, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* SLAB */
{ 7, 7, 7, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* BRICK */ { 7, 7, 7, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* BRICK */
{ 9, 8, 10, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_GRASS, SOUND_GRASS }, /* TNT */ { 9, 8, 10, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_GRASS, SOUND_GRASS }, /* TNT */
{ 4, 35, 4, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_WOOD, SOUND_WOOD }, /* BOOKSHELF */ { 4, 35, 4, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_WOOD, SOUND_WOOD }, /* BOOKSHELF */
{ 36, 36, 36, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* MOSSY_ROCKS */ { 36, 36, 36, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* MOSSY_ROCKS */
{ 37, 37, 37, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* OBSIDIAN */ { 37, 37, 37, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* OBSIDIAN */
{ 16, 16, 16, 8, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* COBBLE_SLAB */ { 16, 16, 16, 8, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* COBBLE_SLAB */
{ 11, 11, 11, 16, FOG_NONE , 0, false, false, DRAW_SPRITE, COLLIDE_NONE, SOUND_CLOTH, SOUND_CLOTH }, /* ROPE */ { 11, 11, 11, 16, FOG_NONE , 0, false, false, 100, DRAW_SPRITE, COLLIDE_NONE, SOUND_CLOTH, SOUND_CLOTH }, /* ROPE */
{ 25, 41, 57, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* SANDSTONE */ { 25, 41, 57, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* SANDSTONE */
{ 50, 50, 50, 4, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_NONE, SOUND_SNOW, SOUND_SNOW }, /* SNOW */ { 50, 50, 50, 4, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_NONE, SOUND_SNOW, SOUND_SNOW }, /* SNOW */
{ 38, 38, 38, 16, FOG_NONE , 0, true, false, DRAW_SPRITE, COLLIDE_NONE, SOUND_WOOD, SOUND_NONE }, /* FIRE */ { 38, 38, 38, 16, FOG_NONE , 0, true, false, 100, DRAW_SPRITE, COLLIDE_NONE, SOUND_WOOD, SOUND_NONE }, /* FIRE */
{ 80, 80, 80, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* LIGHT_PINK */ { 80, 80, 80, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* LIGHT_PINK */
{ 81, 81, 81, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* FOREST_GREEN */ { 81, 81, 81, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* FOREST_GREEN */
{ 82, 82, 82, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* BROWN */ { 82, 82, 82, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* BROWN */
{ 83, 83, 83, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* DEEP_BLUE */ { 83, 83, 83, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* DEEP_BLUE */
{ 84, 84, 84, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* TURQUOISE */ { 84, 84, 84, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_CLOTH, SOUND_CLOTH }, /* TURQUOISE */
{ 51, 51, 51, 16, FOG_NONE , 0, false, true, DRAW_TRANSLUCENT, COLLIDE_ICE, SOUND_STONE, SOUND_STONE },/* ICE */ { 51, 51, 51, 16, FOG_NONE , 0, false, true, 100, DRAW_TRANSLUCENT, COLLIDE_ICE, SOUND_STONE, SOUND_STONE },/* ICE */
{ 54, 54, 54, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* CERAMIC_TILE */ { 54, 54, 54, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* CERAMIC_TILE */
{ 86, 86, 86, 16, FOG_NONE , 0, true, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* MAGMA */ { 86, 86, 86, 16, FOG_NONE , 0, true, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* MAGMA */
{ 26, 42, 58, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* PILLAR */ { 26, 42, 58, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE }, /* PILLAR */
{ 53, 53, 53, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_WOOD, SOUND_WOOD }, /* CRATE */ { 53, 53, 53, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_WOOD, SOUND_WOOD }, /* CRATE */
{ 52, 52, 52, 16, FOG_NONE , 0, false, true, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE } /* STONE_BRICK */ { 52, 52, 52, 16, FOG_NONE , 0, false, true, 100, DRAW_OPAQUE, COLLIDE_SOLID, SOUND_STONE, SOUND_STONE } /* STONE_BRICK */
/*TOP SID BOT HEI FOG_COLOR DENS FULL BLOCKS DRAW_MODE COLLIDE_MODE DIG_SOUND STEP_SOUND */ /*TOP SID BOT HEI FOG_COLOR DENS FULL BLOCKS GRAV DRAW_MODE COLLIDE_MODE DIG_SOUND STEP_SOUND */
}; };
/* Returns a backwards compatible collide type of a block. */ /* Returns a backwards compatible collide type of a block. */
@ -248,6 +248,8 @@ void Block_ResetProps(BlockID block) {
Block_Tex(block, FACE_YMAX) = def->topTexture; Block_Tex(block, FACE_YMAX) = def->topTexture;
Block_Tex(block, FACE_YMIN) = def->bottomTexture; Block_Tex(block, FACE_YMIN) = def->bottomTexture;
Block_SetSide(def->sideTexture, block); Block_SetSide(def->sideTexture, block);
Blocks.ParticleGravity[block] = 5.4f * (def->gravity / 100.0f);
} }
STRING_REF cc_string Block_UNSAFE_GetName(BlockID block) { STRING_REF cc_string Block_UNSAFE_GetName(BlockID block) {

View File

@ -100,6 +100,8 @@ CC_VAR extern struct _BlockLists {
cc_uint8 Hidden[BLOCK_COUNT * BLOCK_COUNT]; cc_uint8 Hidden[BLOCK_COUNT * BLOCK_COUNT];
/* Bit flags of which faces of this block can stretch with greedy meshing. */ /* Bit flags of which faces of this block can stretch with greedy meshing. */
cc_uint8 CanStretch[BLOCK_COUNT]; cc_uint8 CanStretch[BLOCK_COUNT];
/* Gravity of particles spawned when this block is broken */
float ParticleGravity[BLOCK_COUNT];
} Blocks; } Blocks;
#define Block_Tint(col, block)\ #define Block_Tint(col, block)\

View File

@ -209,7 +209,7 @@ static cc_bool TerrainParticle_CanPass(BlockID block) {
} }
static cc_bool TerrainParticle_Tick(struct TerrainParticle* p, double delta) { static cc_bool TerrainParticle_Tick(struct TerrainParticle* p, double delta) {
return PhysicsTick(&p->base, 5.4f, TerrainParticle_CanPass, delta); return PhysicsTick(&p->base, Blocks.ParticleGravity[p->block], TerrainParticle_CanPass, delta);
} }
static void TerrainParticle_Render(struct TerrainParticle* p, float t, struct VertexTextured* vertices) { static void TerrainParticle_Render(struct TerrainParticle* p, float t, struct VertexTextured* vertices) {