// constructor, specifying stream and buffer size in bytes pablioBuffer( unsigned int framesPerSecond, unsigned char bytesPerSample, unsigned char samplesPerFrame, unsigned long frames) : _buffer(0),PCMsound(framesPerSecond, bytesPerSample, samplesPerFrame) { SetFrames(frames); _reallocateBuffer(); }
Moose::Moose(SimianBase * theApp, char * theName) : Entity(theApp, theName) { SetType(ET_MOOSE); SetState(ES_IDLE); SetFrames(6, 3); int WalkLeft[] = {0,1,0,2}; int WalkRight[] = {5,3,5,4}; int WalkUp[] = {9,10,9,11}; int WalkDown[] = {6,7,6,8}; int WalkLength[] = {4,4,4,4}; int StandLeft[] = {0}; int StandRight[] = {5}; int StandUp[] = {9}; int StandDown[] = {6}; int StandLength[] = {1,1,1,1}; int ChargeLeft[] = {12, 13}; int ChargeRight[] = {15, 16}; int ChargeUp[] = {10, 11}; int ChargeDown[] = {7, 8}; int ChargeLength[] = {2,2,2,2}; ANIMATION_RUNNING = AddAnimation(WalkUp, WalkDown, WalkLeft, WalkRight, WalkLength); ANIMATION_STANDING = AddAnimation(StandUp, StandDown, StandLeft, StandRight, StandLength); ANIMATION_WALKING = AddAnimation(WalkUp, WalkDown, WalkLeft, WalkRight, WalkLength); ANIMATION_EATING = AddAnimation(StandUp, StandDown, StandLeft, StandRight, StandLength); ANIMATION_CHARGING = AddAnimation(ChargeUp, ChargeDown, ChargeLeft, ChargeRight, ChargeLength); SetAnimationSpeed(200); PlayAnimation(ANIMATION_WALKING); mWanderStep = 50; mPauseTime = 1000; mMoveSpeed = 0.5; mSearchDistance = 200; mSearchAngle = 60; mTargetType = ET_GRASS; mHungerTimer = 1000; }
void ScreamerNode::Update(void) { switch(m_state){ case WAIT:{ if(m_waitreply == false){ m_waitreply = true; m_jobfile.clear(); m_jobfile.open(m_job.c_str(),std::ios::out); m_jobfile << "wait"; m_jobfile.close(); SetAvailable(true); }else{ if(ReadReply(WAIT) == true){ m_waitreply = false; } } }break; case INIT:{ if(m_waitreply == false){ m_waitreply = true; m_jobfile.clear(); m_jobfile.open(m_job.c_str(),std::ios::out); m_jobfile << "init"; m_jobfile.close(); SetAvailable(false); }else{ if(ReadReply(INIT) == true){ m_waitreply = false; m_state = CONTENT; } } }break; case CONTENT:{ if(m_waitreply == false){ m_waitreply = true; m_jobfile.clear(); m_jobfile.open(m_job.c_str(),std::ios::out); m_jobfile << "content " << m_contentdir << std::endl; m_jobfile.close(); }else{ if(ReadReply(CONTENT) == true){ m_waitreply = false; m_state = LOAD; } } }break; case LOAD:{ if(m_waitreply == false){ m_waitreply = true; m_jobfile.clear(); m_jobfile.open(m_job.c_str(),std::ios::out); m_jobfile << "load" << std::endl << m_scenefile; m_jobfile.close(); }else{ if(ReadReply(LOAD) == true){ m_waitreply = false; m_state = RENDERWAIT; } } }break; case RENDERWAIT:{ if(m_waitreply == false){ m_waitreply = true; m_jobfile.clear(); m_jobfile.open(m_job.c_str(),std::ios::out); m_jobfile << "wait"; m_jobfile.close(); }else{ if(ReadReply(WAIT) == true){ switch(m_renderstate){ case REQ_BATCH:{ m_scene->RequestBatch(m_start,m_end,m_step); m_state = RENDER; m_renderstate = RENDERING; SetFrames(); m_waitreply = false; if(m_start == SCENE_COMPLETE){ SetAvailable(true); ClearScene(); ClearFrames(); m_state = WAIT; } }break; case RENDERING:{ m_scene->FrameComplete(); scene_view->Update(m_scene->GetID()); if(m_start >= m_end){ m_renderstate = REQ_BATCH; }else{ m_waitreply = false; m_state = RENDER; m_start++; } } }; } } }break; case RENDERPAUSE:{ if(m_waitreply == false){ m_waitreply = true; }else{ m_waitreply = false; } }break; case RENDER:{ if(m_waitreply == false){ m_waitreply = true; m_jobfile.clear(); m_jobfile.open(m_job.c_str(),std::ios::out); m_jobfile << "render " << m_start << " " << m_start << " " << m_step; m_jobfile.close(); }else{ if(ReadReply(RENDER) == true){ m_waitreply = false; m_state = RENDERWAIT; } } }break; }; screamer_view->Update(m_number); }