void CameraHandler::ProcessCameraData(FbxCamera* pCamera, CameraExporter* outCamera) { BRFImporter::CameraHeader cameras; memcpy(cameras.camName, pCamera->GetName(), sizeof(char) * 256); GetCamPos(pCamera, cameras.position); GetCamRotation(pCamera->GetNode(), cameras.rotation); outCamera->cameras->push_back(cameras); }
PathLineInfo *GetPlaceInfo(PathLineInfo *info) { CPlaceable *entity = NULL; RadarBlipIII *bestBlip = NULL; CVector blipPos = { 0.0f, 0.0f, 0.0f }; float distance = 9999800001.99f; float newDistance = 0.0f; unsigned int color = 0; int point = 0; for (RadarBlipIII *blip = gRadarBlips3; blip != &gRadarBlips3[32]; blip++) { if (blip->m_bActive && blip->m_wBlipSprite == gCurrentGpsMode) { if (blip->m_dwBlipType > 0 && blip->m_dwBlipType < 4) { switch (blip->m_dwBlipType) { case BLIP_CAR: // 1 entity = VehicleGetAt(*gVehiclePool, blip->m_dwEntityHandle); break; case BLIP_PED: // 2 entity = PedGetAt(*gPedPool, blip->m_dwEntityHandle); if (entity && IS_PED_IN_CAR(entity)) entity = GET_PED_CAR(entity); break; case BLIP_OBJECT: // 3 entity = ObjectGetAt(*gObjectPool, blip->m_dwEntityHandle); } if (entity) { blipPos.x = entity->m_sCoords.m_sMatrix.pos.x; blipPos.y = entity->m_sCoords.m_sMatrix.pos.y; blipPos.z = entity->m_sCoords.m_sMatrix.pos.z; } else continue; } else { blipPos.x = blip->m_vecCurPos.x; blipPos.y = blip->m_vecCurPos.y; blipPos.z = blip->m_vecCurPos.z; } newDistance = GetSquaredDistanceBetweenPoints(blipPos, *GetCamPos()); if (newDistance < distance) { distance = newDistance; gBlipBestPos.x = blipPos.x; gBlipBestPos.y = blipPos.y; gBlipBestPos.z = blipPos.z; bestBlip = blip; } } } if (bestBlip) { color = GetRadarTraceColour(bestBlip->m_dwBlipColour, bestBlip->m_bBlipBrightness); BYTEn(info->color, 0) = BYTEn(color, 3); BYTEn(info->color, 1) = BYTEn(color, 2); BYTEn(info->color, 2) = BYTEn(color, 1); BYTEn(info->color, 3) = 255; info->targetPoint = &gBlipBestPos; } else { info->targetPoint = NULL; info->color = 0; } return info; }
void RenderPipe_DLPre_opengl::renderByProgram( int type, const RenderEntityList& listToRender ) { glUseProgram(m_pipeProgramID[type]); glMatrixMode(GL_PROJECTION); glLoadMatrixf( (float *) &(GetProjectionMatrix())); CMatrix view_matrix = GetViewMatrix(); Light dirLight = GetLightManager().getDirLight(); CVector camPos = GetCamPos(); GLint reg = glGetUniformLocation(m_pipeProgramID[type], "u_light"); if (reg >= 0) glUniform4fv(reg, 4, (float *)&dirLight.dirLightData); reg = glGetUniformLocation(m_pipeProgramID[type], "u_textureSize"); if (reg >= 0) glUniform4fv(reg, 1, (float *)&m_vTextureSize); reg = glGetUniformLocation(m_pipeProgramID[type], "u_camPos"); if (reg >= 0) glUniform4fv(reg, 1, (float *)&camPos); reg = glGetUniformLocation(m_pipeProgramID[type], "u_shadowSampler"); if (reg >= 0) glUniform1i(reg, SHADOW_MAP_CHANNEL); reg = glGetUniformLocation(m_pipeProgramID[type], "u_diffuseSampler"); if (reg >= 0) glUniform1i(reg, DIFF0_MAP_CHANNEL); reg = glGetUniformLocation(m_pipeProgramID[type], "u_specSampler"); if (reg >= 0) glUniform1i(reg, SPEC_MAP_CHANNEL); reg = glGetUniformLocation(m_pipeProgramID[type], "u_normalSampler"); if (reg >= 0) glUniform1i(reg, NORMAL_MAP_CHANNEL); reg = glGetUniformLocation(m_pipeProgramID[type], "u_texoffset"); if (reg >= 0) glUniform4fv(reg, PCF_SAMPLES, (float *)m_PCFOffset); GLint regIsShadowed = glGetUniformLocation(m_pipeProgramID[type], "u_isShadowed"); GLint regCanBeLighted = glGetUniformLocation(m_pipeProgramID[type], "u_canBeLighted"); GLint regDiffScale = glGetUniformLocation(m_pipeProgramID[type], "u_diffScale"); for (RenderEntityList::const_iterator it=listToRender.begin(); it!=listToRender.end(); ++it) { if (regIsShadowed >= 0) glUniform1i(regIsShadowed, (*it)->canBeShadowed); if (regCanBeLighted >= 0) glUniform1i(regCanBeLighted, (*it)->canBeLighted); CMatrix worldMat = (*it)->getWorldMat(); CMatrix light_wvp_matrix = worldMat * m_light_vmat * m_zbias * m_light_pmat * m_remapmat; glMatrixMode(GL_TEXTURE); glActiveTexture(GL_TEXTURE0_ARB); glLoadMatrixf( (float *) &light_wvp_matrix ); glActiveTexture(GL_TEXTURE1_ARB); glLoadMatrixf( (float *) &worldMat); glActiveTexture(GL_TEXTURE0_ARB); glMatrixMode(GL_MODELVIEW); CMatrix worldlMatView = worldMat * view_matrix; glLoadMatrixf( (float *) &worldlMatView); if (regDiffScale >= 0) glUniform1f(regDiffScale, (*it)->getDiffuseMapScale(0)); (*it)->render(); } glUseProgram(0); }