mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-24 05:10:42 -04:00
40 lines
1.2 KiB
C#
40 lines
1.2 KiB
C#
// ClassicalSharp copyright 2014-2016 UnknownShadow200 | Licensed under MIT
|
|
using System;
|
|
using ClassicalSharp.Map;
|
|
|
|
namespace ClassicalSharp.Singleplayer {
|
|
|
|
public class OtherPhysics {
|
|
Game game;
|
|
World map;
|
|
|
|
public OtherPhysics( Game game, Physics physics ) {
|
|
this.game = game;
|
|
map = game.World;
|
|
physics.OnPlace[Block.Slab] = HandleSlab;
|
|
physics.OnPlace[Block.CobblestoneSlab] = HandleCobblestoneSlab;
|
|
}
|
|
|
|
void HandleSlab( int index, byte block ) {
|
|
if( index < map.Width * map.Length ) return; // y < 1
|
|
if( map.blocks[index - map.Width * map.Length] != Block.Slab ) return;
|
|
|
|
int x = index % map.Width;
|
|
int z = (index / map.Width) % map.Length;
|
|
int y = (index / map.Width) / map.Length;
|
|
game.UpdateBlock( x, y, z, Block.Air );
|
|
game.UpdateBlock( x, y - 1, z, Block.DoubleSlab );
|
|
}
|
|
|
|
void HandleCobblestoneSlab( int index, byte block ) {
|
|
if( index < map.Width * map.Length ) return; // y < 1
|
|
if( map.blocks[index - map.Width * map.Length] != Block.CobblestoneSlab ) return;
|
|
|
|
int x = index % map.Width;
|
|
int z = (index / map.Width) % map.Length;
|
|
int y = (index / map.Width) / map.Length;
|
|
game.UpdateBlock( x, y, z, Block.Air );
|
|
game.UpdateBlock( x, y - 1, z, Block.Cobblestone );
|
|
}
|
|
}
|
|
} |