All pastes #25496 Raw Edit

Something

public text v1 · immutable
#25496 ·published 2005-10-14 17:45 UTC
rendered paste body
bool 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;
}