IEntity* CLaserBeam::CreateLaserEntity() { IEntity* pLaserEntity = gEnv->pEntitySystem->GetEntity(m_laserEntityId); if (pLaserEntity) return pLaserEntity; IEntity* pOwnerEntity = gEnv->pEntitySystem->GetEntity(m_ownerEntityId); if (!pOwnerEntity) return 0; SEntitySpawnParams spawnParams; spawnParams.pClass = gEnv->pEntitySystem->GetClassRegistry()->GetDefaultClass(); spawnParams.sName = "LaserBeam"; spawnParams.nFlags = (pOwnerEntity->GetFlags() | ENTITY_FLAG_NO_SAVE) & ~ENTITY_FLAG_CASTSHADOW; IEntity* pNewEntity = gEnv->pEntitySystem->SpawnEntity(spawnParams); if(pNewEntity) { m_laserEntityId = pNewEntity->GetId(); IEntityRenderProxy *pRenderProxy = (IEntityRenderProxy*)pNewEntity->GetProxy(ENTITY_PROXY_RENDER); IRenderNode * pRenderNode = pRenderProxy?pRenderProxy->GetRenderNode():NULL; if(pRenderNode) pRenderNode->SetRndFlags(ERF_RENDER_ALWAYS,true); SetLaserEntitySlots(false); } return pNewEntity; }
//--------------------------------------------------------------------------- void CLam::CreateLaserEntity() { if(m_pLaserEntityId) { //Check if entity is valid IEntity *pEntity = m_pEntitySystem->GetEntity(m_pLaserEntityId); if(!pEntity) m_pLaserEntityId = 0; } if (!m_pLaserEntityId) { SEntitySpawnParams spawnParams; spawnParams.pClass = gEnv->pEntitySystem->GetClassRegistry()->GetDefaultClass(); spawnParams.sName = "LAMLaser"; spawnParams.nFlags = (GetEntity()->GetFlags() | ENTITY_FLAG_NO_SAVE) & ~ENTITY_FLAG_CASTSHADOW; IEntity *pNewEntity =gEnv->pEntitySystem->SpawnEntity(spawnParams); //assert(pNewEntity && "Laser entity could no be spawned!!"); if(pNewEntity) { pNewEntity->FreeSlot(0); pNewEntity->FreeSlot(1); m_pLaserEntityId = pNewEntity->GetId(); if(IEntity* pEntity = GetEntity()) pEntity->AttachChild(pNewEntity); IEntityRenderProxy *pRenderProxy = (IEntityRenderProxy*)pNewEntity->GetProxy(ENTITY_PROXY_RENDER); IRenderNode * pRenderNode = pRenderProxy?pRenderProxy->GetRenderNode():NULL; if(pRenderNode) pRenderNode->SetRndFlags(ERF_RENDER_ALWAYS,true); } } }