src/engine/LibraryBehaviors.h

Go to the documentation of this file.
00001 
00009 #ifndef LIBRARYBEHAVIORS_H
00010 #define LIBRARYBEHAVIORS_H
00011 
00012 #include "BehaviorTemplate.h"
00013 #include "BehaviorInstance.h"
00014 #include "System.h"
00015 #include "EntityInstance.h"
00016 
00017 namespace green
00018 {
00024         class PEntity
00025         {
00026                 public:
00030                         PEntity() :
00031                                 x(0.0),
00032                           y(0.0),
00033                                 xs(0.0),
00034                                 ys(0.0),
00035                                 rot(0.0)
00036                         {}
00037                                 
00042                         PEntity(EntityInstancePtr entity) :
00043                                 x(entity->GetVariable(0).floatVal),
00044                                 y(entity->GetVariable(1).floatVal),
00045                                 xs(entity->GetVariable(2).floatVal),
00046                                 ys(entity->GetVariable(3).floatVal),
00047                                 rot(entity->GetVariable(4).floatVal)
00048                                 {}
00049                         
00055                         void SetEntity(EntityInstancePtr entity) const
00056                         {
00057                                 entity->SetVariable(0, x);
00058                                 entity->SetVariable(1, y);
00059                                 entity->SetVariable(2, xs);
00060                                 entity->SetVariable(3, ys);
00061                                 entity->SetVariable(4, rot);
00062                         }
00063                         
00064                         float x, y, xs, ys, rot;
00065                         
00066         };
00067         
00072         class MoveBehavior
00073         {
00074         public:
00079                 static BehaviorTemplatePtr CreateTemplate()
00080                 {
00081                         // Create an ArgList to use
00082 /*                      ArgListPtr oneArg(new ArgList());*/
00083                                 
00084                         // Create an InitFormat with no arguments
00085                         InitFormatPtr emptyInitFormat(new InitFormat());
00086                                 
00087                         // Create a BehaviorTemplate
00088                         BehaviorTemplatePtr newBehaviorTemplate(new BehaviorTemplate());
00089                                 
00090                         // Set the behavior's init format
00091                         newBehaviorTemplate->SetInitFormat(emptyInitFormat);
00092                         
00093                         return newBehaviorTemplate;
00094                 }
00095                 
00107                 static bool RunBehavior(SystemPtr sys, BehaviorInstancePtr behavior, 
00108                                                                                                                 EntityInstancePtr originalTarget,
00109                                                                                                                 EntityInstancePtr newTarget)
00110                 {
00111                         CHECK_SHARED(sys);
00112                         CHECK_SHARED(behavior);
00113                         CHECK_SHARED(originalTarget);
00114                         CHECK_SHARED(newTarget);
00115                         
00116                         double deltaT = sys->GetTimer().GetTimeDelta();
00117                         //std::cout << "deltaT: " << std::fixed << deltaT << std::endl;
00118                         PEntity tent(newTarget);
00119                         tent.x += tent.xs * deltaT;
00120                         tent.y += tent.ys * deltaT;
00121                         tent.rot += 360.0 * deltaT;
00122                         
00123                         //std::cout << " rot: " << tent.rot << std::endl;
00124                         
00125                         tent.SetEntity(newTarget);
00126                         return true;
00127                 }
00128                 
00129         };
00130 
00131 }
00132 
00133 
00134 
00135 #endif

Generated on Fri Apr 27 10:27:37 2007 for Green Engine by  doxygen 1.5.1