コード例 #1
0
ファイル: main.c プロジェクト: cosjac/Robotics-Coursework
int main(void)
{
	e_init_port();
	e_init_motors();
	e_init_ad_scan(ALL_ADC);
	e_calibrate_ir();
	
	int selector=getselector();
	switch (selector) {
		case 0:robot_off();break;
		case 1:aggressive();break;
		case 2:fear();break;
		case 3:curious();break;
		case 4:love();break;
		case 5:robot_off();break;
		default:/*own high level behaviour*/break;
	}
}
コード例 #2
0
void Enemy::update(btDiscreteDynamicsWorld* dynamicsWorld, vec3* playerPosition, const string playerState, bool &isPlayerDead)
{

	rigidBody->activate(true);
	if (isDead == true)
	{
		if (death_anim_frames_count == 0)
		{
			rigidBody->activate(false);
			model->setAnimation(death);
		}
		death_anim_frames_count++;
	}
	else if (state == State::WALKING)
	{
		walking(dynamicsWorld, playerPosition, playerState);
	}
	else if (state == State::AGGRESSIVE)
	{
		aggressive(dynamicsWorld, playerPosition, isPlayerDead);
	}
	else if (state == State::AWARE)
	{
		aware(dynamicsWorld, playerPosition, playerState);
	}

	angle = -(atan2(direction.z, direction.x) * 180 / 3.14f);

	/*Wyciagniecie pozycji rigidbody z macierzy*/
	btScalar openGlMatrix[16];
	rigidBody->getWorldTransform().getOpenGLMatrix(openGlMatrix);
	position.x = openGlMatrix[12];
	position.y = openGlMatrix[13];
	position.z = openGlMatrix[14];
	
	float poprawka_wysokosci = -1.4f;
	model->updatePositon(position.x, position.y + poprawka_wysokosci, position.z);
	model->updateRotation(angle);
	rigidBody->setWorldTransform(btTransform(btQuaternion(btScalar(degreesToRadians(angle)), btScalar(0), btScalar(0)), btVector3(position.x, position.y, position.z)));
}
コード例 #3
0
 void operator()() {
     CPPA_LOG_TRACE("");
     detail::cs_thread fself;
     job_ptr job = nullptr;
     for (;;) {
         aggressive(job) || moderate(job) || relaxed(job);
         CPPA_LOG_DEBUG("dequeued new job");
         if (job == m_dummy) {
             CPPA_LOG_DEBUG("received dummy (quit)");
             // dummy of doom received ...
             m_job_queue->push_back(job); // kill the next guy
             return;                      // and say goodbye
         }
         if (job->resume(&fself) == resumable::done) {
             CPPA_LOG_DEBUG("actor is done");
             /*FIXME bool hidden = job->is_hidden();
             job->deref();
             if (!hidden)*/ get_actor_registry()->dec_running();
         }
         job = nullptr;
     }
 }