rendered paste bodybool Behaviour::SendMessageV(const char *message , iCelPropertyClass *pc , celData &ret ,
iCelParameterBlock *params , va_list args)
{
if(strncmp(message , "pccommandinput_" , 15) == 0)
{
csRef<iPcMechanicsObject> pcmechobj = CEL_QUERY_PROPCLASS_ENT(entity , iPcMechanicsObject);
if(!pcmechobj)
return false;
// it isn't clear to me what affect applying the force
// in object mode vs world mode does - object mode just acts weirdly
// and world mode doesn't respect my objects modifed axis
if(!strcmp(message+15 , "forward1"))
pcmechobj->AddForceDuration(csVector3(0,0,-25),true,csVector3(0,0,0),0.2);
else if(!strcmp(message+15 , "forward_"))
pcmechobj->AddForceDuration(csVector3(0,0,-2.5),true,csVector3(0,0,0),0.2);
else if(!strcmp(message+15 , "backward1"))
pcmechobj->AddForceDuration(csVector3(0,0,25),true,csVector3(0,0,0),0.2);
else if(!strcmp(message+15 , "backward_"))
pcmechobj->AddForceDuration(csVector3(0,0,2.5),true,csVector3(0,0,0),0.2);
else if(!strcmp(message+15 , "strafeleft1"))
pcmechobj->AddForceDuration(csVector3(25,0,0),true,csVector3(0,0,0),0.2);
else if(!strcmp(message+15 , "strafeleft_"))
pcmechobj->AddForceDuration(csVector3(2.5,0,0),true,csVector3(0,0,0),0.2);
else if(!strcmp(message+15 , "straferight1"))
pcmechobj->AddForceDuration(csVector3(-25,0,0),true,csVector3(0,0,0),0.2);
else if(!strcmp(message+15 , "straferight_"))
pcmechobj->AddForceDuration(csVector3(-2.5,0,0),true,csVector3(0,0,0),0.2);
else if(!strcmp(message+15 , "rotateleft1"))
pcmechobj->SetAngularVelocity(csVector3(0,-1,0));
else if(!strcmp(message+15 , "rotateleft0"))
pcmechobj->SetAngularVelocity(csVector3(0,0,0));
else if(!strcmp(message+15 , "rotateright1"))
pcmechobj->SetAngularVelocity(csVector3(0,1,0));
else if(!strcmp(message+15 , "rotateright0"))
pcmechobj->SetAngularVelocity(csVector3(0,0,0));
return true;
}
return false;
}