Ejemplo n.º 1
0
    void Renderer::Draw ( const SceneNode* node )
    {
        // Set the lights for this node.
        for ( int i = 0; i < node->LightCount (); i++ )
        {
            ApplyLighting ( node->GetLight ( i ) );
        }

        // Execute pre-drawing effects setup.
        for ( int i = 0; i < node->EffectCount (); i++ )
        {
            SetupEffect ( node->GetEffect ( i ) );
        }
        
        // Draw any mesh associated with this node.
        if ( node->IsDerived ( Mesh::GetRTTI () ) )
        {
            Mesh* mesh = (Mesh*) node;
            Draw ( mesh );
        }
        
        // Draw this node's children (if the child is a SceneNode).
        for ( int i = 0; i < node->ChildCount (); i++ )
        {
            if ( node->GetChild ( i )->IsDerived ( SceneNode::GetRTTI () ) )
            {
                SceneNode* child = (SceneNode*) node->GetChild ( i );
                Draw ( child );
            }
        }
    }
// Initialize scene
bool CEffectViewerScene::Init ()
{
    if (m_bInited)
        return true;

	glewInit();

	m_pRenderer = GetRenderer();
	m_pRenderer->SetViewport(m_ResX, m_ResY, 4.0f, 4500.0f, 0.67f);

	m_pResourceMgr = GetResourceMgr();
	m_pSg = GetSceneGraph();
	m_pCamera = m_pRenderer->GetCamera();
	m_pActorMgr = GetActorManager();

	UpdateCamera();

	OGVec3 vLightDir = OGVec3(0,1,0);
	OGVec4 vLightColor = OGVec4(1,1,1,1);
	IOGLight* pMainLight = m_pRenderer->GetLightMgr()->CreateLight();
	pMainLight->type = OG_LIGHT_DIRECTIONAL;
	pMainLight->vPosition = vLightDir;
	pMainLight->fIntensity = 100.0f;
	pMainLight->vAmbientColor = OGVec4(vLightColor.x, vLightColor.y, vLightColor.z, 1.0f);
	pMainLight->vDiffuseColor = OGVec4(vLightColor.x, vLightColor.y, vLightColor.z, 1.0f);
	pMainLight->vSpecularColor = OGVec4(vLightColor.x, vLightColor.y, vLightColor.z, 1.0f);

	glDisable(GL_CULL_FACE);
	glEnable(GL_NORMALIZE);

	if (m_pResourceMgr->Load(OG_RESPOOL_GAME) == false)
	{
        return false;
	}

	if (GetActorParamsMgr()->Init() == false)
	{
        return false;
	}

	const std::map<std::string, EffectItem>& effects = GetEffectsManager()->GetEffectsList();
	std::map<std::string, EffectItem>::const_iterator iter = effects.begin();
	for (; iter != effects.end(); ++iter)
	{
		CommonToolEvent<ResLoadEventData> cmd(EVENTID_RESLOAD);
		cmd.SetEventCustomData(ResLoadEventData(wxT(iter->first.c_str()), 
			wxT("Effects"),
			wxT("")));
		GetEventHandlersTable()->FireEvent(EVENTID_RESLOAD, &cmd);
	}

	SetupEffect(NULL);
    m_bInited = true;

	return true;
}
Ejemplo n.º 3
0
/*
==============
sdRainPrecipitation::sdRainPrecipitation
==============
*/
sdRainPrecipitation::sdRainPrecipitation( sdPrecipitationParameters const &_parms ) : parms( _parms ) {
	renderEntityHandle = -1;
	memset( &renderEntity, 0, sizeof( renderEntity ) );
	renderEntity.hModel = parms.model;

	renderEntity.numInsts = 9;
	renderEntity.insts = new sdInstInfo[ renderEntity.numInsts ];

	renderEntity.axis.Identity();
	renderEntity.origin.Zero();

	SetupEffect();
}
Ejemplo n.º 4
0
/*
==============
sdSnowPrecipitation::sdSnowPrecipitation
==============
*/
sdSnowPrecipitation::sdSnowPrecipitation( sdPrecipitationParameters const &_parms ) : parms(_parms) {
    renderEntity_t *re = GetRenderEntity();

    renderEntityHandle = -1;
    memset( re, 0, sizeof( renderEntity ) );
    re->hModel = parms.model;

    re->axis.Identity();
    re->origin.Zero();

    re->numInsts = MAX_GROUPS;
    re->insts = new sdInstInfo[ re->numInsts ];

    idBounds modelbb = re->hModel->Bounds();
    idVec3 extents = (modelbb.GetMaxs() - modelbb.GetMins()) * 0.5f;
    idPlayer *p = gameLocal.GetLocalViewPlayer();
    idVec3 const &v = p->GetViewPos();

    for (int i=0; i<MAX_GROUPS; i++) {
        groups[i].time = -1.f;
    }

    SetupEffect();
}
CEffectViewerScene::~CEffectViewerScene()
{
	SetupEffect(NULL);
}