void GameView::OnShow() { m_gameover = false; InitPhysics(Vector2::Zero, 1.f); // Create the main game node. Map + objects go in there and are affected by light m_pGameLayer = CreateLightLayer(); m_pGameLayer->SetAmbient(Color(.10f, .15f, .2f, 1)); // Set that so something cool jason will decide on AddNode(m_pGameLayer); // spawn players from the lobby data, for now assume one CreateMusic(); CreateTileMap(); GenerateMap(); CreateEntities(); CenterCamera(); SpawnPlayers(); CreatePathFinder(); m_fadeQuad = CreateSprite("healthGaugeFill.png"); m_fadeQuad->GetColorAnim().start(Color(0.f, 0.f, 0.f, 1.f), Color(0.f, 0.f, 0.f, 0.f), 3.f); m_fadeQuad->SetFilter(onut::SpriteBatch::eFiltering::Nearest); m_fadeQuad->SetScale(Vector2(100, 100)); AddNode(m_fadeQuad); }
//----------------------------------------------------------------------------- // Level init, shutdown //----------------------------------------------------------------------------- LevelRetVal_t CWorldManager::LevelInit( bool bFirstCall ) { if ( !bFirstCall ) return FINISHED; Assert( !m_pHeightField ); m_pHeightField = new CHeightField( 6, 6, 4 ); if ( !m_pHeightField->LoadHeightFromFile( "maps/testheight.psd" ) ) return FAILED; CreateEntities(); SetInitialLocalPlayerPosition(); return FINISHED; }
bool EndGameScene::init( ) { winSize = CCDirector::sharedDirector()->getWinSize(); database = new Database(); database->loadHighScore(); if (database->gamePlayer.size()==0) { highScore=0; }else{ highScore = database->gamePlayer[0]->score; } CreateEntities(); this->setTouchEnabled(true); return true; }
void CEntityManager::Release() { CreateEntities(); RemoveEntities(); vector<CGameEntity*>::iterator l_it = m_vEntities.begin(); vector<CGameEntity*>::iterator l_end = m_vEntities.end(); for(; l_it != l_end; ++l_it) { delete *l_it; } m_vEntities.clear(); m_vFreeIDs.clear(); m_vNames.clear(); m_vEvents.clear(); }
void CEntityManager::PostUpdate(float _fDeltaTime) { vector<CGameEntity*>::iterator l_it = m_vEntities.begin(); vector<CGameEntity*>::iterator l_end = m_vEntities.end(); for(; l_it != l_end; ++l_it) { CGameEntity* l_pEntity = (*l_it); if(l_pEntity) { if(l_pEntity->IsActive()) { l_pEntity->PostUpdate(_fDeltaTime); } } } CreateEntities(); RemoveEntities(); }
void CFlock::Update( CCamera *pCamera ) { FUNCTION_PROFILER( GetISystem(),PROFILE_ENTITY ); if (!IsFlockActive()) return; if (!m_e_flocks) { if (m_bEntityCreated) DeleteEntities( true ); return; } if(GetISystem()->IsSerializingFile() == 1) //quickloading return; if (!m_bEntityCreated) { if (!CreateEntities()) return; } float dt = gEnv->pTimer->GetFrameTime(); // Make sure delta time is limited. if (dt > 1.0f) dt = 0.01f; if (dt > 0.1f) dt = 0.1f; m_bc.fSmoothFactor = 1.f - gEnv->pTimer->GetProfileFrameBlending(); /* for (Boids::iterator it = m_boids.begin(); it != m_boids.end(); ++it) { CBoidObject *boid = *it; boid->Think(); } */ //m_bc.playerPos = m_flockMgr->GetPlayerPos(); m_bc.playerPos = GetISystem()->GetViewCamera().GetMatrix().GetTranslation(); // Player position is position of camera. m_bc.flockPos = m_origin; m_bc.waterLevel = m_bc.engine->GetWaterLevel( &m_origin ); m_bounds.min = Vec3(FLT_MAX,FLT_MAX,FLT_MAX); m_bounds.max = Vec3(-FLT_MAX,-FLT_MAX,-FLT_MAX); int numBoids = m_boids.size(); if (m_percentEnabled < 100) { numBoids = (m_percentEnabled*numBoids)/100; } if (!m_pEntity->GetRotation().IsIdentity()) { // Entity matrix must not have rotation. //Quat q; //q.SetIdentity(); //m_pEntity->SetRotation(q); } ////////////////////////////////////////////////////////////////////////// // Update flock random center. ////////////////////////////////////////////////////////////////////////// m_fCenterFloatingTime += gEnv->pTimer->GetFrameTime(); float tc = m_fCenterFloatingTime*0.2f; m_bc.randomFlockCenter = m_bc.flockPos + //m_bc.fSpawnRadius*Vec3(sinf(0.9f*m_fCenterFloatingTime),cosf(1.1f*sin(0.9f*m_fCenterFloatingTime)),0.3f*sinf(1.2f*m_fCenterFloatingTime) ); m_bc.fSpawnRadius*Vec3(sinf(tc*0.913f)*cosf(tc*1.12f),sinf(tc*0.931f)*cosf(tc*0.971f),0.4f*sinf(tc*1.045f)*cosf(tc*0.962f) ); //gEnv->pRenderer->GetIRenderAuxGeom()->DrawSphere( m_bc.randomFlockCenter,0.1f,ColorB(255,0,0,255) ); ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// IEntityRenderProxy *pRenderProxy = (IEntityRenderProxy*)m_pEntity->GetProxy(ENTITY_PROXY_RENDER); if (pRenderProxy) { if (pRenderProxy->GetRenderNode()->GetViewDistRatio() != m_nViewDistRatio) UpdateBoidsViewDistRatio(); } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// // Update scare factors. if (m_bc.scareThreatLevel > 0) { m_bc.scareThreatLevel *= 0.95f; m_bc.scareRatio *= 0.95f; if (m_bc.scareRatio < 0.01f) { m_bc.scareRatio = 0; m_bc.scareThreatLevel = 0; } if (m_e_flocks == 2) { int c = (int)(255*m_bc.scareRatio); gEnv->pRenderer->GetIRenderAuxGeom()->DrawSphere( m_bc.scarePoint,m_bc.scareRadius,ColorB(c,0,0,c),false ); } } ////////////////////////////////////////////////////////////////////////// UpdateBoidCollisions(); Vec3 entityPos = m_pEntity->GetWorldPos(); Matrix34 boidTM; int num = 0; for (Boids::iterator it = m_boids.begin(); it != m_boids.end(); ++it,num++) { if (num > numBoids) break; CBoidObject* boid = *it; m_bc.terrainZ = m_bc.engine->GetTerrainElevation(boid->m_pos.x,boid->m_pos.y); boid->Update(dt,m_bc); if (!boid->m_physicsControlled && !boid->m_dead) { IEntity *pBoidEntity = gEnv->pEntitySystem->GetEntity(boid->m_entity); if (pBoidEntity) { Quat q(IDENTITY); boid->CalcOrientation(q); const Vec3 scaleVector(boid->m_scale,boid->m_scale,boid->m_scale); pBoidEntity->SetPosRotScale( boid->m_pos, q, scaleVector, ENTITY_XFORM_NO_SEND_TO_ENTITY_SYSTEM ); } } } m_updateFrameID = gEnv->pRenderer->GetFrameID(false); //gEnv->pLog->Log( "Birds Update" ); }