Entity2d.h

00001 #ifndef _Entity2D_H_
00002 #define _Entity2D_H_
00003 
00004 #include "Entity.h"
00005 #include "Defines.h"
00006 #include "renderer.h"
00007 #include "MathUtil.h"
00008 #include "ScriptMgr.h"
00009 
00010 #if _MSC_VER > 1000
00011 #pragma once
00012 #endif // _MSC_VER > 1000
00013 
00014 namespace zak {
00015 
00016 
00021 class ZAKENGINE_API Entity2D : public ENTITY
00022 {
00023         public:
00024                 enum CollisionType {
00025                         eCollisionBBox=1,
00026                         eCollisionCircle=2
00027                 };
00028 
00029 
00030         protected:
00031                 CollisionType _collisionType;
00032                 float _collisionRadius;
00033 
00034 
00035                 float _fWidth;
00036                 float _fHeight;
00037                 float _fPosX;
00038                 float _fPosY;
00039                 float _fPreviousPosX;
00040                 float _fPreviousPosY;
00041                 float _fAngleZ;
00042                 float _scale;
00043                 float _scaleX;
00044                 float _scaleY;
00045                 float _pivotPosX;
00046                 float _pivotPosY;
00047 
00048                 int   _iCollisionGroup;
00049                 float _fCollisionRelPosX;
00050                 float _fCollisionRelPosY;
00051                 float _fCollisionPosX;
00052                 float _fCollisionPosY;
00053                 float _fCollisionSizeX;
00054                 float _fCollisionSizeY;
00055 
00056                 bool  _bMoving;
00057                 bool  _rotating;
00058                 bool  _bCheckCollision;
00059                 float _fMovingSpeed;
00060                 float _fMovingDegrees;
00061                 float _rotationSpeed;
00062 
00063                 int     _flipH;
00064                 int     _flipV;
00065                 int     _lastFlipHState;
00066                 int     _lastFlipVState;
00067 
00068                 float   _cosDegree;
00069                 float   _sinDegree;
00070 
00071                 bool            _bCollisionVisible;
00072                 ColorVertex _VertexColor[17];
00073                 DWORD           _collisionColor;
00074 
00075                 friend class Renderer;
00076 
00077         public:
00082                 void SetCollisionColor(DWORD color) { _collisionColor = color; }
00083 
00088                 void SetCollisionRadius(float radius) {
00089                         _collisionRadius = radius;
00090                 }
00091 
00096                 float GetCollisionRadius() {
00097                         return _collisionRadius;
00098                 }
00099 
00104                 void SetCollisionGroup(int iColGroup){
00105                         _iCollisionGroup=iColGroup;
00106                 }
00107                 
00112                 int GetCollsionGroup(void){
00113                         return _iCollisionGroup;
00114                 }
00115                 
00120                 void SetCheckCollision(bool bCheckCollision){
00121                         _bCheckCollision=bCheckCollision;
00122                 }
00123 
00128                 bool GetCheckCollision(){
00129                         return _bCheckCollision;
00130                 }
00131 
00140                 void SetRotating(bool rotating){
00141                         _rotating=rotating;
00142                 }
00143 
00149                 bool GetRotating(){
00150                         return _rotating;
00151                 }
00152 
00163                 void SetMoving(bool bMoving){
00164                         _bMoving=bMoving;
00165                 }
00166 
00172                 bool GetMoving(){
00173                         return _bMoving;
00174                 }
00175                 
00182                 void SetRotationSpeed(float speed){
00183                         _rotationSpeed=speed;
00184                 }
00185                 
00193                 float GetRotationSpeed(){
00194                         return _rotationSpeed;
00195                 }
00196 
00203                 void SetSpeed(float speed){
00204                         _fMovingSpeed=speed;
00205                 }
00206                 
00214                 float GetSpeed(){
00215                         return _fMovingSpeed;
00216                 }
00217                 
00225                 void SetMovDirection(float direction){
00226                         _fMovingDegrees=direction;
00227 
00228                         MathUtil::SinCos(_fMovingDegrees,&_sinDegree, &_cosDegree);
00229                 }
00230                 
00238                 float GetMovDirection(){
00239                         return _fMovingDegrees;
00240                 }
00241                 
00246                 void SetPosX(float posX) {
00247                         _fPreviousPosX = _fPosX;
00248                         _fPreviousPosY = _fPosY;
00249                         _fPosX = posX;
00250                         _fCollisionPosX=_fCollisionRelPosX+_fPosX;
00251                 }
00252 
00257                 void SetPosY(float posY) {
00258                         _fPreviousPosX = _fPosX;
00259                         _fPreviousPosY = _fPosY;
00260                         _fPosY = posY;
00261                         _fCollisionPosY=_fCollisionRelPosY+_fPosY;
00262                 }
00263         
00269                 void SetPos(float fPosx, float fPosy) {
00270                         _fPreviousPosX = _fPosX;
00271                         _fPreviousPosY = _fPosY;
00272                         _fPosX = fPosx;
00273                         _fPosY = fPosy;
00274                         _fCollisionPosX=_fCollisionRelPosX+_fPosX;
00275                         _fCollisionPosY=_fCollisionRelPosY+_fPosY;
00276                 }
00277 
00283                 void GetPos(float &fPosx, float &fPosy) {
00284                         fPosx = _fPosX;
00285                         fPosy = _fPosY;
00286                 }
00287 
00292                 float GetPosX() {
00293                         return _fPosX;
00294                 }
00295 
00300                 float GetPosY() {
00301                         return _fPosY;
00302                 }
00303         
00307                 void SetToPreviousPosition() {
00308                         _fPosX = _fPreviousPosX;
00309                         _fPosY = _fPreviousPosY;
00310                 }
00311 
00317                 void GetPreviousPos(float &fPosx, float &fPosy) {
00318                         fPosx = _fPreviousPosX;
00319                         fPosy = _fPreviousPosY;
00320                 }
00321 
00326                 float GetPreviousPosX() {
00327                         return _fPreviousPosX;
00328                 }
00329 
00334                 float GetPreviousPosY() {
00335                         return _fPreviousPosY;
00336                 }
00337 
00342                 CollisionType GetCollisionType() {
00343                         return _collisionType;
00344                 }
00345 
00350                 void SetCollisionType(int collisionType) {
00351                         _collisionType = (CollisionType)collisionType;
00352                 }
00353 
00359                 void SetCollisionPos(float fPosx, float fPosy) {
00360                         _fCollisionRelPosX = fPosx;
00361                         _fCollisionRelPosY = fPosy;
00362                         _fCollisionPosX = fPosx;
00363                         _fCollisionPosY = fPosy;
00364                         _fCollisionPosX+=_fPosX;
00365                         _fCollisionPosY+=_fPosY;
00366                 }
00367 
00373                 void GetCollisionPos(float &fPosx, float &fPosy) {
00374                         fPosx = _fCollisionPosX;
00375                         fPosy = _fCollisionPosY;
00376                 }
00377 
00383                 void SetCollisionSize(float fSizeX, float fSizeY) {
00384                         _fCollisionSizeX = fSizeX;
00385                         _fCollisionSizeY = fSizeY;
00386                 }
00387 
00393                 void GetCollisionSize(float &fSizeX, float &fSizeY) {
00394                         fSizeX = _fCollisionSizeX;
00395                         fSizeY = _fCollisionSizeY;
00396                 }
00397 
00402                 float GetCollisionWidth() {
00403                         return _fCollisionSizeX;
00404                 }
00405 
00410                 float GetCollisionHeight() {
00411                         return _fCollisionSizeY;
00412                 }
00413                 
00419                 void SetCollisionVisible(bool bCollisionVisible) {
00420                         _bCollisionVisible = bCollisionVisible;
00421                 }
00422 
00427                 void SetAngleZ (float fAngleZ) {
00428                         _fAngleZ = fAngleZ;
00429 
00430                         if (_fAngleZ < 0) {
00431                                 _fAngleZ += 360.0f*(float)(((int)(-_fAngleZ)/360)+1);
00432                         } else if (_fAngleZ >= 360) {
00433                                 _fAngleZ -= 360.0f*(float)(((int)(_fAngleZ)/360));
00434                         }
00435                 }
00436 
00441                 float  GetAngleZ () {
00442                         return _fAngleZ;
00443                 }
00444 
00450                 void SetDim(float w, float h) 
00451                 {
00452                         _fWidth = w;
00453                         _fHeight = h;
00454                 };
00455 
00461                 void GetDim(float &w, float &h) 
00462                 {
00463                         w = _fWidth;
00464                         h = _fHeight;
00465                 };
00466 
00471                 void SetWidth(float w) 
00472                 {
00473                         _fWidth = w;
00474                 };
00475 
00480                 void SetHeight(float h) 
00481                 {
00482                         _fHeight = h;
00483                 };
00484 
00489                 float GetWidth() 
00490                 {
00491                         return _fWidth;
00492                 };
00493 
00498                 float GetHeight() 
00499                 {
00500                         return _fHeight;
00501                 };
00502 
00508                 void SetScale(float x, float y) {
00509                         _scaleX = x;
00510                         _scaleY = y;
00511                         _scale = x;
00512                 }
00513 
00518                 float GetScale() {
00519                         return _scale;
00520                 }
00521 
00526                 void SetScale(float scale) {
00527                         _scale = scale;
00528                         _scaleX = scale;
00529                         _scaleY = scale;
00530                 }
00531 
00536                 void SetScaleX(float x) {
00537                         _scaleX = x;
00538                         _scale = x;
00539                 }
00540 
00545                 void SetScaleY(float y) {
00546                         _scaleY = y;
00547                         _scale = y;
00548                 }
00549 
00554                 float GetScaleX() {
00555                         return _scaleX;
00556                 }
00557 
00562                 float GetScaleY() {
00563                         return _scaleY;
00564                 }
00565 
00569                 void FlipHorizontal() {
00570                         _flipH *= -1;
00571                 }
00572 
00576                 void FlipVertical() {
00577                         _flipV *= -1;
00578                 }
00579 
00584                 bool GetFlipHorizontal() { return (_flipH == -1); }
00585 
00590                 bool GetFlipVertical() { return (_flipV == -1); }
00591 
00597                 void SetPivotPos(float x, float y) {
00598                         _pivotPosX = x;
00599                         _pivotPosY = y;
00600                 }
00601 
00606                 void SetPivotPosX(float x) {
00607                         _pivotPosX = x;
00608                 }
00609 
00614                 void SetPivotPosY(float y) {
00615                         _pivotPosY = y;
00616                 }
00617 
00622                 float GetPivotPosX() {
00623                         return _pivotPosX;
00624                 }
00625 
00630                 float GetPivotPosY() {
00631                         return _pivotPosY;
00632                 }
00633 
00639                 void SetRelativePos(float fAngle, float fDistance)
00640                 {
00641                         _fPosX +=       fDistance * _cosDegree;
00642 
00643                         _fPosY +=       fDistance * _sinDegree;
00644 
00645                         _fCollisionPosX=_fCollisionRelPosX+_fPosX;
00646                         _fCollisionPosY=_fCollisionRelPosY+_fPosY;
00647                 }
00648 
00653                 virtual void Update(float fTimeBetweenFrames) {
00654                         _fPreviousPosX = _fPosX;
00655                         _fPreviousPosY = _fPosY;
00656 
00657                         if (_bMoving) {
00658                                 _fPosX +=       fTimeBetweenFrames * 
00659                                                         _fMovingSpeed * 
00660                                                         _cosDegree;
00661 
00662                                 _fPosY +=       fTimeBetweenFrames *
00663                                                         _fMovingSpeed * 
00664                                                         _sinDegree;
00665 
00666                                 _fCollisionPosX=_fPosX + _fCollisionRelPosX * _cosDegree;
00667                                 _fCollisionPosY=_fPosY + _fCollisionRelPosY * _sinDegree;
00668                         }
00669 
00670                         if (_rotating) {
00671                                 _fAngleZ += _rotationSpeed*fTimeBetweenFrames;
00672 
00673                                 if (_fAngleZ < 0) {
00674                                         _fAngleZ += 360.0f*(float)(((int)(-_fAngleZ)/360)+1);
00675                                 } else if (_fAngleZ >= 360) {
00676                                         _fAngleZ -= 360.0f*(float)(((int)(_fAngleZ)/360));
00677                                 }
00678                         }
00679                 }
00680 
00684                 virtual void Draw()
00685                 {
00686                         // se modifica la matriz de translacion
00687                         g_renderer.SetMatrixMode(ZAK_WORLD_MATRIX);
00688                         g_renderer.LoadIdentity();
00689 
00690                         g_renderer.Translate (MathUtil::Round(_fPosX), MathUtil::Round(_fPosY), 1.0f);
00691 //                      g_renderer.Translate (_fCollisionPosX, _fCollisionPosY, 1.0f);
00692 
00693                         g_renderer.RotationZ(MathUtil::Round(_fAngleZ));
00694                         g_renderer.Translate (MathUtil::Round(_pivotPosX), MathUtil::Round(_pivotPosY), 1.0f);
00695                         g_renderer.Scale(_scaleX, _scaleY);
00696                 }
00697 
00701                 void DrawCollision()
00702                 {
00703                         g_renderer.SetMatrixMode(ZAK_WORLD_MATRIX);
00704                         g_renderer.LoadIdentity();
00705 
00706                         g_renderer.Translate (_fCollisionPosX+_pivotPosX, _fCollisionPosY+_pivotPosY, 1.0f);
00707 
00708                         g_renderer.BindTexture(NULL);
00709 
00710                         switch (_collisionType) {
00711                                 case eCollisionBBox:
00712 
00713                                         _VertexColor[0].SetVal(-_fCollisionSizeX/2*_scaleX, -_fCollisionSizeY/2*_scaleY, 1.0f,_collisionColor);
00714                                         _VertexColor[1].SetVal(-_fCollisionSizeX/2*_scaleX,  _fCollisionSizeY/2*_scaleY, 1.0f,_collisionColor);
00715                                         _VertexColor[2].SetVal( _fCollisionSizeX/2*_scaleX,  _fCollisionSizeY/2*_scaleY, 1.0f,_collisionColor);
00716                                         _VertexColor[3].SetVal( _fCollisionSizeX/2*_scaleX, -_fCollisionSizeY/2*_scaleY, 1.0f,_collisionColor);
00717                                         _VertexColor[4].SetVal(-_fCollisionSizeX/2*_scaleX, -_fCollisionSizeY/2*_scaleY, 1.0f,_collisionColor);
00718 
00719 
00720                                         g_renderer.Draw(_VertexColor, ZAK_PRI_LINESTRIP,5);
00721                                         break;
00722                                 case eCollisionCircle:
00723                                 default:
00724                                         static float cos;
00725                                         static float sin;
00726                                         static float co;
00727                                         static float ca;
00728 
00729                                         for (int i=0; i<16; i++) {
00730                                                 MathUtil::SinCos((360.0f/16.0f)*(float)i, &sin, &cos);
00731                                                 co = _collisionRadius*sin;
00732                                                 ca = _collisionRadius*cos;
00733 
00734                                                 _VertexColor[i].SetVal(ca,co, 1.0f,_collisionColor);
00735                                         }
00736 
00737                                         MathUtil::SinCos(0, &sin, &cos);
00738                                         co = _collisionRadius*sin;
00739                                         ca = _collisionRadius*cos;
00740 
00741                                         _VertexColor[16].SetVal(ca,co, 1.0f,_collisionColor);
00742                                         
00743                                         g_renderer.Draw(_VertexColor, ZAK_PRI_LINESTRIP,17);
00744 
00745                                         break;
00746                         }
00747                 }
00748 
00754                 virtual bool IsColliding(Entity2D *pEntity) 
00755                 {
00756                         
00757                         if (_bCheckCollision && pEntity->GetCheckCollision()) {
00758                                 
00759                                 float X1, Y1, X2, Y2;
00760                                 float W, H;
00761                                 float R;
00762 
00763                                 switch (_collisionType) {
00764                                         case eCollisionBBox:
00765                                                 if (pEntity->GetCollisionType() == eCollisionCircle) {
00766                                                         float XR, YR, D;
00767                                                         
00768                                                         GetCollisionPos(X1, Y1);
00769                                                         GetCollisionSize(W, H);
00770                                                         W *= GetScaleX();
00771                                                         H *= GetScaleY();
00772 
00773                                                         X1 += _pivotPosX;
00774                                                         Y1 += _pivotPosY;
00775 
00776                                                         pEntity->GetCollisionPos(X2, Y2);
00777                                                         X2 += pEntity->GetPivotPosX();
00778                                                         Y2 += pEntity->GetPivotPosY();
00779 
00780                                                         XR = X1-X2;
00781                                                         YR = Y1-Y2;
00782                                                         
00783                                                         D = sqrtf(XR*XR+YR*YR);
00784                                                         
00785                                                         XR /= D;
00786                                                         YR /= D;
00787 
00788                                                         XR *= pEntity->GetCollisionRadius()*pEntity->GetScale();
00789                                                         YR *= pEntity->GetCollisionRadius()*pEntity->GetScale();
00790                                                         
00791                                                         XR += X2;
00792                                                         YR += Y2;
00793                                                         
00794                                                         if (XR >= X1-W/2 && XR <= X1+W/2 && YR <= Y1+H/2 && YR >= Y1-H/2) {
00795                                                                 return true;
00796                                                         }
00797 
00798                                                 } else {
00799                                                         pEntity->GetCollisionPos(X1,Y1);
00800                                                         pEntity->GetCollisionSize(W, H);
00801 
00802                                                         W *= pEntity->GetScaleX();
00803                                                         H *= pEntity->GetScaleY();
00804 
00805                                                         if (((_fCollisionPosX+_pivotPosX-(_fCollisionSizeX/2*_scaleX) < X1-(W/2) && X1-(W/2) < _fCollisionPosX+_pivotPosX + _fCollisionSizeX/2*_scaleX) ||
00806                                                                  (X1-(W/2) < _fCollisionPosX+_pivotPosX-(_fCollisionSizeX/2*_scaleX) && _fCollisionPosX+_pivotPosX-(_fCollisionSizeX/2*_scaleX) < X1+W/2)) &&
00807                                                                 ((_fCollisionPosY+_pivotPosY-(_fCollisionSizeY/2*_scaleY) < Y1-(H/2) && Y1-(H/2) < _fCollisionPosY+_pivotPosY+_fCollisionSizeY/2*_scaleY) ||
00808                                                                  (Y1-(H/2) < _fCollisionPosY+_pivotPosY-(_fCollisionSizeY/2*_scaleY) && _fCollisionPosY+_pivotPosY-(_fCollisionSizeY/2*_scaleY) < Y1 + H/2))) {
00809 
00810                                                                 return true;
00811                                                         }
00812                                                 }
00813                                                 break;
00814                                         case eCollisionCircle:
00815                                         default:
00816                                                 if (pEntity->GetCollisionType() == eCollisionBBox) {
00817                                                         float XR, YR, D;
00818                                                         
00819                                                         pEntity->GetCollisionPos(X1, Y1);
00820                                                         pEntity->GetCollisionSize(W, H);
00821                                                         W *= pEntity->GetScaleX();
00822                                                         H *= pEntity->GetScaleY();
00823 
00824                                                         X1 += pEntity->GetPivotPosX();
00825                                                         Y1 += pEntity->GetPivotPosY();
00826 
00827                                                         GetCollisionPos(X2, Y2);
00828                                                         X2 += GetPivotPosX();
00829                                                         Y2 += GetPivotPosY();
00830 
00831                                                         XR = X1-X2;
00832                                                         YR = Y1-Y2;
00833                                                         
00834                                                         D = sqrtf(XR*XR+YR*YR);
00835                                                         
00836                                                         XR /= D;
00837                                                         YR /= D;
00838 
00839                                                         XR *= GetCollisionRadius()*GetScale();
00840                                                         YR *= GetCollisionRadius()*GetScale();
00841                                                         
00842                                                         XR += X2;
00843                                                         YR += Y2;
00844                                                         
00845                                                         if (XR >= X1-W/2 && XR <= X1+W/2 && YR <= Y1+H/2 && YR >= Y1-H/2) {
00846                                                                 return true;
00847                                                         }
00848 
00849                                                 } else {
00850                                                         pEntity->GetCollisionPos(X1,Y1);
00851                                                         R = pEntity->GetCollisionRadius();
00852 
00853                                                         R *= pEntity->GetScale();
00854 
00855                                                         if ((X1- _fCollisionPosX)*(X1- _fCollisionPosX)+(Y1-_fCollisionPosY)*(Y1-_fCollisionPosY) < (R+_collisionRadius*_scale)*(R+_collisionRadius*_scale)) {
00856                                                                 return true;
00857                                                         }
00858                                                 }
00859 
00860 
00861                                                 break;
00862                                 }
00863                         }
00864                         
00865                         return false;
00866                 }
00867                 
00872                 virtual void OnCollide(Entity2D *pEntity) 
00873                 {
00874                 }
00875 
00876                 static bool RegisterEntity2D(char *className=NULL) {
00877                         char _className[100];
00878 
00879                         if (className != NULL) {
00880                                 strcpy_s(_className, 100, className);
00881                         } else {
00882                                 strcpy_s(_className, 100, "Entity2D");
00883                                 if (ScriptMgr::RegisterObjectType(_className, 0, 0) < 0)
00884                                         return false;
00885                         }
00886 
00887                         if (!ENTITY::RegisterEntity(_className))
00888                                 return false;
00889 
00890                         /*if (ScriptMgr::RegisterObjectType(_className, 0, 0) < 0)
00891                                 return false;*/
00892                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetCollisionColor(uint)",asMETHOD(Entity2D, SetCollisionColor),asCALL_THISCALL) < 0)
00893                                 return false;
00894                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetCollisionRadius(float)",asMETHOD(Entity2D, SetCollisionRadius),asCALL_THISCALL) < 0)
00895                                 return false;
00896                         if (ScriptMgr::RegisterObjectMethod(_className, "float GetCollisionRadius()",asMETHOD(Entity2D, GetCollisionRadius),asCALL_THISCALL) < 0)
00897                                 return false;
00898                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetCheckCollision(bool)",asMETHOD(Entity2D, SetCheckCollision),asCALL_THISCALL) < 0)
00899                                 return false;
00900                         if (ScriptMgr::RegisterObjectMethod(_className, "bool GetCheckCollision()",asMETHOD(Entity2D, GetCheckCollision),asCALL_THISCALL) < 0)
00901                                 return false;
00902                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetRotating(bool)",asMETHOD(Entity2D, SetRotating),asCALL_THISCALL) < 0)
00903                                 return false;
00904                         if (ScriptMgr::RegisterObjectMethod(_className, "bool GetRotating()",asMETHOD(Entity2D, GetRotating),asCALL_THISCALL) < 0)
00905                                 return false;
00906                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetMoving(bool)",asMETHOD(Entity2D, SetMoving),asCALL_THISCALL) < 0)
00907                                 return false;
00908                         if (ScriptMgr::RegisterObjectMethod(_className, "bool GetMoving()",asMETHOD(Entity2D, GetMoving),asCALL_THISCALL) < 0)
00909                                 return false;
00910                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetRotationSpeed(float)",asMETHOD(Entity2D, SetRotationSpeed),asCALL_THISCALL) < 0)
00911                                 return false;
00912                         if (ScriptMgr::RegisterObjectMethod(_className, "float GetRotationSpeed()",asMETHOD(Entity2D, GetRotationSpeed),asCALL_THISCALL) < 0)
00913                                 return false;
00914                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetSpeed(float)",asMETHOD(Entity2D, SetSpeed),asCALL_THISCALL) < 0)
00915                                 return false;
00916                         if (ScriptMgr::RegisterObjectMethod(_className, "float GetSpeed()",asMETHOD(Entity2D, GetSpeed),asCALL_THISCALL) < 0)
00917                                 return false;
00918                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetMovDirection(float)",asMETHOD(Entity2D, SetMovDirection),asCALL_THISCALL) < 0)
00919                                 return false;
00920                         if (ScriptMgr::RegisterObjectMethod(_className, "float GetMovDirection()",asMETHOD(Entity2D, GetMovDirection),asCALL_THISCALL) < 0)
00921                                 return false;
00922                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetPosX(float)",asMETHOD(Entity2D, SetPosX),asCALL_THISCALL) < 0)
00923                                 return false;
00924                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetPosY(float)",asMETHOD(Entity2D, SetPosY),asCALL_THISCALL) < 0)
00925                                 return false;
00926                         if (ScriptMgr::RegisterObjectMethod(_className, "void GetPos(float &out, float &out)",asMETHOD(Entity2D, GetPos),asCALL_THISCALL) < 0)
00927                                 return false;
00928                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetPos(float, float)",asMETHOD(Entity2D, SetPos),asCALL_THISCALL) < 0)
00929                                 return false;
00930                         if (ScriptMgr::RegisterObjectMethod(_className, "float GetPosX()",asMETHOD(Entity2D, GetPosX),asCALL_THISCALL) < 0)
00931                                 return false;
00932                         if (ScriptMgr::RegisterObjectMethod(_className, "float GetPosY()",asMETHOD(Entity2D, GetPosY),asCALL_THISCALL) < 0)
00933                                 return false;
00934                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetToPreviousPosition()",asMETHOD(Entity2D, SetToPreviousPosition),asCALL_THISCALL) < 0)
00935                                 return false;
00936                         if (ScriptMgr::RegisterObjectMethod(_className, "void GetPreviousPos(float &out, float &out)",asMETHOD(Entity2D, GetPreviousPos),asCALL_THISCALL) < 0)
00937                                 return false;
00938                         if (ScriptMgr::RegisterObjectMethod(_className, "float GetPreviousPosX()",asMETHOD(Entity2D, GetPreviousPosX),asCALL_THISCALL) < 0)
00939                                 return false;
00940                         if (ScriptMgr::RegisterObjectMethod(_className, "float GetPreviousPosY()",asMETHOD(Entity2D, GetPreviousPosY),asCALL_THISCALL) < 0)
00941                                 return false;
00942                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetCollisionPos(float, float)",asMETHOD(Entity2D, SetCollisionPos),asCALL_THISCALL) < 0)
00943                                 return false;
00944                         if (ScriptMgr::RegisterObjectMethod(_className, "void GetCollisionPos(float &out, float &out)",asMETHOD(Entity2D, GetCollisionPos),asCALL_THISCALL) < 0)
00945                                 return false;
00946                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetCollisionSize(float, float)",asMETHOD(Entity2D, SetCollisionSize),asCALL_THISCALL) < 0)
00947                                 return false;
00948                         if (ScriptMgr::RegisterObjectMethod(_className, "void GetCollisionSize(float &out, float &out)",asMETHOD(Entity2D, GetCollisionSize),asCALL_THISCALL) < 0)
00949                                 return false;
00950                         if (ScriptMgr::RegisterObjectMethod(_className, "float GetCollisionWidth()",asMETHOD(Entity2D, GetCollisionWidth),asCALL_THISCALL) < 0)
00951                                 return false;
00952                         if (ScriptMgr::RegisterObjectMethod(_className, "float GetCollisionHeight()",asMETHOD(Entity2D, GetCollisionHeight),asCALL_THISCALL) < 0)
00953                                 return false;
00954                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetCollisionVisible(bool)",asMETHOD(Entity2D, SetCollisionVisible),asCALL_THISCALL) < 0)
00955                                 return false;
00956                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetAngleZ(float)",asMETHOD(Entity2D, SetAngleZ),asCALL_THISCALL) < 0)
00957                                 return false;
00958                         if (ScriptMgr::RegisterObjectMethod(_className, "float GetAngleZ()",asMETHOD(Entity2D, GetAngleZ),asCALL_THISCALL) < 0)
00959                                 return false;
00960                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetDim(float, float)",asMETHOD(Entity2D, SetDim),asCALL_THISCALL) < 0)
00961                                 return false;
00962                         if (ScriptMgr::RegisterObjectMethod(_className, "void GetDim(float &out, float &out)",asMETHOD(Entity2D, GetDim),asCALL_THISCALL) < 0)
00963                                 return false;
00964                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetWidth(float)",asMETHOD(Entity2D, SetWidth),asCALL_THISCALL) < 0)
00965                                 return false;
00966                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetHeight(float)",asMETHOD(Entity2D, SetHeight),asCALL_THISCALL) < 0)
00967                                 return false;
00968                         if (ScriptMgr::RegisterObjectMethod(_className, "float GetWidth()",asMETHOD(Entity2D, GetWidth),asCALL_THISCALL) < 0)
00969                                 return false;
00970                         if (ScriptMgr::RegisterObjectMethod(_className, "float GetHeight()",asMETHOD(Entity2D, GetHeight),asCALL_THISCALL) < 0)
00971                                 return false;
00972                         if (ScriptMgr::RegisterObjectMethod(_className, "float GetScale()",asMETHOD(Entity2D, GetScale),asCALL_THISCALL) < 0)
00973                                 return false;
00974                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetScaleX(float)",asMETHOD(Entity2D, SetScaleX),asCALL_THISCALL) < 0)
00975                                 return false;
00976                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetScaleY(float)",asMETHOD(Entity2D, SetScaleY),asCALL_THISCALL) < 0)
00977                                 return false;
00978                         if (ScriptMgr::RegisterObjectMethod(_className, "float GetScaleX()",asMETHOD(Entity2D, GetScaleX),asCALL_THISCALL) < 0)
00979                                 return false;
00980                         if (ScriptMgr::RegisterObjectMethod(_className, "float GetScaleY()",asMETHOD(Entity2D, GetScaleY),asCALL_THISCALL) < 0)
00981                                 return false;
00982                         if (ScriptMgr::RegisterObjectMethod(_className, "void FlipHorizontal()",asMETHOD(Entity2D, FlipHorizontal),asCALL_THISCALL) < 0)
00983                                 return false;
00984                         if (ScriptMgr::RegisterObjectMethod(_className, "void FlipVertical()",asMETHOD(Entity2D, FlipVertical),asCALL_THISCALL) < 0)
00985                                 return false;
00986                         if (ScriptMgr::RegisterObjectMethod(_className, "bool GetFlipHorizontal()",asMETHOD(Entity2D, GetFlipHorizontal),asCALL_THISCALL) < 0)
00987                                 return false;
00988                         if (ScriptMgr::RegisterObjectMethod(_className, "bool GetFlipVertical()",asMETHOD(Entity2D, GetFlipVertical),asCALL_THISCALL) < 0)
00989                                 return false;
00990                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetPivotPos(float, float)",asMETHOD(Entity2D, SetPivotPos),asCALL_THISCALL) < 0)
00991                                 return false;
00992                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetPivotPosX(float)",asMETHOD(Entity2D, SetPivotPosX),asCALL_THISCALL) < 0)
00993                                 return false;
00994                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetPivotPosY(float)",asMETHOD(Entity2D, SetPivotPosY),asCALL_THISCALL) < 0)
00995                                 return false;
00996                         if (ScriptMgr::RegisterObjectMethod(_className, "float GetPivotPosX()",asMETHOD(Entity2D, GetPivotPosX),asCALL_THISCALL) < 0)
00997                                 return false;
00998                         if (ScriptMgr::RegisterObjectMethod(_className, "float GetPivotPosY()",asMETHOD(Entity2D, GetPivotPosY),asCALL_THISCALL) < 0)
00999                                 return false;
01000                         if (ScriptMgr::RegisterObjectMethod(_className, "bool IsColliding(Entity2D@+)",asMETHOD(Entity2D, IsColliding),asCALL_THISCALL) < 0)
01001                                 return false;
01002                         if (ScriptMgr::RegisterObjectMethod(_className, "void SetCollisionType(int)",asMETHOD(Entity2D, SetCollisionType),asCALL_THISCALL) < 0)
01003                                 return false;
01004 
01005                         return true;
01006                 }
01007 
01011                 Entity2D()
01012                 {
01013                         _iCollisionGroup=0;
01014                         _fPosX = 0;
01015                         _fPosY = 0;
01016                         _fPreviousPosX = 0;
01017                         _fPreviousPosY = 0;
01018                         _fCollisionRelPosX = 0;
01019                         _fCollisionRelPosY = 0;
01020                         _fCollisionPosX = 0;
01021                         _fCollisionPosY = 0;
01022                         _fCollisionSizeX = 0;
01023                         _fCollisionSizeY = 0;
01024                         _fWidth = 0;
01025                         _fHeight = 0;
01026                         _fAngleZ = 0;
01027                         _bCheckCollision = false;
01028                         _bMoving = false;
01029                         _fMovingSpeed    = 0;
01030                         _fMovingDegrees = 0;
01031                         _bCollisionVisible = false;
01032                         _rotationSpeed = 0;
01033                         _rotating = false;
01034                         _scale = 1.0f;
01035                         _scaleX = 1.0f;
01036                         _scaleY = 1.0f;
01037                         _collisionType = eCollisionCircle;
01038                         _flipH = 1;
01039                         _flipV = 1;
01040                         _lastFlipHState = 1;
01041                         _lastFlipVState = 1;
01042                         _pivotPosX = 0.0f;
01043                         _pivotPosY = 0.0f;
01044                         _collisionColor = 0xFFFFFFFF;
01045 
01046                 }
01047 
01051                 virtual ~Entity2D(){
01052                 }
01053 
01054 };
01055 
01056 }
01057 
01058 #endif // _Entity2D_H_

Generado el Tue May 29 14:46:14 2007 para Zak Engine v1.1.0 por  doxygen 1.5.1-p1