// // AEnemySpawnerBase::SpawnEnemies_Implementation // void AEnemySpawnerBase::SpawnEnemies_Implementation() { if( IsCleared() ) { return; } if( bHasTriggered ) { return; } bHasTriggered = true; if( !bShouldWaitForGroupDeath ) { // We're spawning off a timer. auto World = GetWorld(); check( World ); World->GetTimerManager().SetTimer( GroupSpawnTimer, this, &AEnemySpawnerBase::SpawnNextGroup, SecondsBetweenGroups, true, 0.0f ); } else { // We're spawning off group deaths. SpawnNextGroup(); } }
// // AEnemySpawnerBase::AllEnemiesDestroyed_Implementation // void AEnemySpawnerBase::AllEnemiesDestroyed_Implementation() { if( !IsCleared() ) { ClearSpawnedEnemies(); if( SpawnedGroupsCount >= Groups ) { SetCleared(); } else if( bShouldWaitForGroupDeath ) { SpawnNextGroup(); } } }
void RsRenderTargetWinGL::Render() { // Clear the render target so we don't use it in the deferred rendering pass m_pCurrentRenderTarget = BtNull; glBindFramebuffer(GL_FRAMEBUFFER, 0 ); if( m_pTexture != BtNull ) { RsTextureWinGL *pTexture = (RsTextureWinGL*)m_pTexture; if( pTexture->m_pFileData->m_flags & RsTF_RenderTarget ) { glBindFramebuffer(GL_FRAMEBUFFER, pTexture->m_frameBufferObject ); } } // Cache the viewport const RsViewport ¤tViewport = m_camera.GetViewport(); // Set the viewport glViewport( currentViewport.m_x, currentViewport.m_y, currentViewport.m_width, currentViewport.m_height ); // Clear the viewport if( IsCleared() == BtTrue ) { // Set the clear colour glClearColor( m_clearColour.Red(), m_clearColour.Green(), m_clearColour.Blue(), m_clearColour.Alpha() ); // Clear the color buffer //glClear(GL_COLOR_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); } for( BtU32 sortOrder=0; sortOrder<MaxSortOrders; sortOrder++ ) { // Render the materials RsMaterialRenderable *pMaterialRenderable = m_materials[sortOrder].pHead(); while(pMaterialRenderable) { // Render the material RsMaterialWinGL *pMaterial = (RsMaterialWinGL*)pMaterialRenderable->m_pMaterial; // Render the material pMaterial->Render(pMaterialRenderable); // Go to the next renderable pMaterialRenderable = pMaterialRenderable->pNext(); } // Render the skin SgSkinRenderable *pSkinRenderable = m_skinNodes[sortOrder].pHead(); while( pSkinRenderable ) { SgSkinWinGL *pSkin = (SgSkinWinGL*)pSkinRenderable->m_pSkin; // Render the skin pSkin->Render( pSkinRenderable ); // Go to the next renderable pSkinRenderable = (SgSkinRenderable*)pSkinRenderable->pNext(); } // Render the nodes SgMeshRenderable *pNodeRenderable = m_nodes[sortOrder].pHead(); int a=0; while( pNodeRenderable ) { // Render the texture SgMeshWinGL *pMesh = (SgMeshWinGL*)pNodeRenderable->m_pMesh; // Render the node pMesh->Render( pNodeRenderable ); // Go to the next renderable pNodeRenderable = pNodeRenderable->pNext(); a++; } // Render the textures RsTextureRenderable *pTextureRenderable = m_textures[sortOrder].pHead(); while( pTextureRenderable ) { // Render the texture RsTextureWinGL *pTexture = (RsTextureWinGL*)pTextureRenderable->m_pTexture; pTexture->Render( pTextureRenderable ); // Go to the next renderable pTextureRenderable = pTextureRenderable->pNext(); } // Render the sprites RsSpriteRenderable *pSpriteRenderable = m_sprites[sortOrder].pHead(); while( pSpriteRenderable ) { RsSpriteWinGL *pSprite = (RsSpriteWinGL*) pSpriteRenderable->m_pSprite; // Render the texture pSprite->Render( pSpriteRenderable ); // Go to the next renderable pSpriteRenderable = pSpriteRenderable->pNext(); } // Render the fonts RsFontRenderable *pFontRenderable = m_fonts[sortOrder].pHead(); while( pFontRenderable ) { // Cache the font RsFontWin32GL *pFont = (RsFontWin32GL*)pFontRenderable->m_pFont; // Render the font pFont->Render( pFontRenderable ); // Go to the next renderable pFontRenderable = pFontRenderable->pNext(); } } }