#pragma once // fwd: World.h class cWorld; class cPiston { public: cPiston(cWorld * a_World); static NIBBLETYPE RotationPitchToMetaData(double a_Rotation, double a_Pitch) { if (a_Pitch >= 50) { return 0x1; } else if (a_Pitch <= -50) { return 0x0; } else { a_Rotation += 90 + 45; // So its not aligned with axis if (a_Rotation > 360) { a_Rotation -= 360; } if ((a_Rotation >= 0) && (a_Rotation < 90)) { return 0x4; } else if ((a_Rotation >= 180) && (a_Rotation < 270)) { return 0x5; } else if ((a_Rotation >= 90) && (a_Rotation < 180)) { return 0x2; } else { return 0x3; } } } void ExtendPiston( int, int, int ); void RetractPiston( int, int, int ); cWorld * m_World; private: void ChainMove( int, int, int, char, unsigned short * ); unsigned short FirstPassthroughBlock( int, int, int, char ); } ;