14dce23845
It was really a lot of work :D Took me the complete weekend :D Would really like to here your opinion on this =) The aim of this is to put all the actions for one block in one place so it is not spread around the source. (ToPickup, Action in cWorld, Action in cChunk, Action here, action there :D) git-svn-id: http://mc-server.googlecode.com/svn/trunk@671 0a769ca7-a7f5-676a-18bf-c427514a06d6
61 lines
1.0 KiB
C++
61 lines
1.0 KiB
C++
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
// fwd: "cWorld.h"
|
|
class cWorld;
|
|
|
|
|
|
|
|
|
|
|
|
class cPiston
|
|
{
|
|
public:
|
|
|
|
cPiston( cWorld* a_World );
|
|
|
|
static char RotationPitchToMetaData( float a_Rotation, float a_Pitch )
|
|
{
|
|
LOGD("pre:a_Rotation %f \n",a_Rotation);
|
|
LOGD("a_Pitch %f \n",a_Pitch);
|
|
|
|
if (a_Pitch >= 50.f ){
|
|
return 0x1;
|
|
} else if ( a_Pitch <= -50.f ) {
|
|
return 0x0;
|
|
} else {
|
|
|
|
a_Rotation += 90 + 45; // So its not aligned with axis
|
|
std::printf("a_Rotation %f \n",a_Rotation);
|
|
|
|
if( a_Rotation > 360.f ) a_Rotation -= 360.f;
|
|
if( a_Rotation >= 0.f && a_Rotation < 90.f )
|
|
{ LOG("1111\n");return 0x4;}
|
|
else if( a_Rotation >= 180 && a_Rotation < 270 )
|
|
{ LOG("2222\n");return 0x5;}
|
|
else if( a_Rotation >= 90 && a_Rotation < 180 )
|
|
{ LOG("3333\n");return 0x2;}
|
|
else
|
|
{ LOG("4444\n");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 );
|
|
|
|
};
|
|
|
|
|
|
|
|
|