亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cgame.cpp

?? 一個基于symbian s60 3rd 的3D汽車游戲演示程序,模擬器上編譯通過。
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
    CPolygonObject* o = CPolygonObject::NewL( i3DBase, 100,100 );
    TInt16* cos = i3DBase->CosTable();
    TInt16* sin = i3DBase->SinTable();

    TInt i;

    TInt z1 = -aWidth/2;
    TInt z2 = aWidth/2;

    o->AddVertex( TVertex( 0,0,0 ) );
    
    const TInt KTexturePixels = 128;

    for( i=0; i<aNumPoints; i++ )
        {
        TInt a1 = KSinTableSize * i / aNumPoints;
        TInt a2 = ( a1 + KSinTableSize / aNumPoints ) & (KSinTableSize-1);
        
        TInt x1 = ( aRadius * cos[ a1 ] ) >> KShift;
        TInt y1 = ( aRadius * sin[ a1 ] ) >> KShift;
        TInt x2 = ( aRadius * cos[ a2 ] ) >> KShift;
        TInt y2 = ( aRadius * sin[ a2 ] ) >> KShift;

        o->AddVertex( TVertex( x1,y1,z1 ) );
        o->AddVertex( TVertex( x1,y1,z2 ) );

        TInt n1 = i*2;
        TInt n2 = n1 + 1;
        TInt n3 = n1 + 2;
        TInt n4 = n1 + 3;
        if( n3 >= aNumPoints*2 ) n3 -= aNumPoints*2;
        if( n4 >= aNumPoints*2 ) n4 -= aNumPoints*2;

        n1 += 1;
        n2 += 1;
        n3 += 1;
        n4 += 1;

        o->AddFace( TFace( n1,n2,n3, 128,0, 255,0, 128,128 ) );
        o->AddFace( TFace( n3,n2,n4, 128,128, 255,0, 255,128 ) );
        
        // calculate texture pixel positions
        // for wheel rim
        TInt tx1 = KTexturePixels/2 + x1 * ( KTexturePixels/2-1 ) / aRadius;
        TInt ty1 = KTexturePixels/2 + y1 * ( KTexturePixels/2-1 ) / aRadius;
        TInt tx2 = KTexturePixels/2 + x2 * ( KTexturePixels/2-1 ) / aRadius;
        TInt ty2 = KTexturePixels/2 + y2 * ( KTexturePixels/2-1 ) / aRadius;

        o->AddFace( TFace( n1,n3,0, tx1,ty1, tx2,ty2, 64,64 ) );
        
        }

    return o;
    }

CPolygonObject* CGame::CreateObject( const TInt* aVertexData, const TInt* aFaceData,
                                     TInt aNumVertices, TInt aNumFaces,
                                     const TPoint& aTexOffset, TInt aTexMul )
    {
    // leave some extra room for vertices and polygons
    // otherwise renderer might not have enough space
    // after clipping
    CPolygonObject* o = CPolygonObject::NewL( i3DBase, aNumVertices*2+10, aNumFaces*2+10 );
    
    TInt n=0;
    TInt i;
    for( i=0; i<aNumVertices; i++ )
        {
        o->AddVertex( TVertex(  aVertexData[ n + 0 ],
                                aVertexData[ n + 1 ],
                                aVertexData[ n + 2 ]
                                ) );

        n += 3;
        }

    n=0;
    for( i=0; i<aNumFaces; i++ )
        {

        o->AddFace( TFace(  aFaceData[ n + 0 ],
                            aFaceData[ n + 1 ],
                            aFaceData[ n + 2 ],
                            aFaceData[ n + 3 ]*aTexMul+aTexOffset.iX,
                            aFaceData[ n + 4 ]*aTexMul+aTexOffset.iY,
                            aFaceData[ n + 5 ]*aTexMul+aTexOffset.iX,
                            aFaceData[ n + 6 ]*aTexMul+aTexOffset.iY,
                            aFaceData[ n + 7 ]*aTexMul+aTexOffset.iX,
                            aFaceData[ n + 8 ]*aTexMul+aTexOffset.iY
                            ) );
        n += 9;
        }

    return o;
    }

void CGame::DrawText( CPolygonObject* aObject, const TDesC8& aStr )
    {
    TInt n = aStr.Length();
    
    // reserve space for polygons in 3D-objects
    aObject->Reset( n*4, n*3 );
    
    TInt x = 0;
    TInt y = 0;
    
    // default font size in 3D-space
    const TInt size = 500;

    // go trough whole string
    for( TInt i=0; i<n; i++ )
        {
        TInt c = aStr[ i ];
        // check for line feed character:
        if( c == '\n' )
            {
            x = 0;
            y++;
            }
        else
            {
            TInt xx = x * size;
            TInt yy = y * size;

            TInt v1 = aObject->AddVertex( TVertex( xx, yy, 0 ) );
            TInt v2 = aObject->AddVertex( TVertex( xx + size, yy, 0 ) );
            TInt v3 = aObject->AddVertex( TVertex( xx + size, yy + size, 0 ) );
            TInt v4 = aObject->AddVertex( TVertex( xx, yy + size, 0 ) );
            
            // fonts are in 16x16 array in bitmap
            // first 16 characters are on first line
            // next 16 characters on second line and so on...
            TInt tx = c & 15;
            TInt ty = c >> 4;
            
            // fonts are 16 pixels high and wide
            // calculate top left ( x1, y1 ) and
            // bottom right( x2, y2 ) pixel positions
            // for current font
            TInt x1 = tx * 16;
            TInt y1 = ty * 16;
            TInt x2 = x1 + 15;
            TInt y2 = y1 + 15;
            
            // each visible font consists of two triangles
            // which make a textured rectangle with font picture
            aObject->AddFace( TFace( v1,v2,v3, x1,y1, x2,y1, x2,y2 ) );
            aObject->AddFace( TFace( v1,v3,v4, x1,y1, x2,y2, x1,y2 ) );

            x++;
            }
        }
    aObject->Init();
    }
    
TInt CGame::PolygonCount()
    {
    return i3DBase->PolygonCount();
    }

void CGame::Command( TInt aCommand )
    {
    switch( aCommand )
        {
        case EExample3DCamera1:
            iCameraMode = ECameraBehind;
            break;
        case EExample3DCamera2:
            iCameraMode = ECameraInCar;
            break;
        case EExample3DCamera3:
            iCameraMode = ECameraSouth;
            break;
        case EExample3DCamera4:
            iCameraMode = ECameraTV1;
            break;
        case EExample3DCamera5:
            iCameraMode = ECameraTV2;
            break;
        case EExample3DCamera6:
            iCameraMode = ECameraTV3;
            break;
        case EExample3DCamera7:
            iCameraMode = ECameraTV4;
            break;
        case EExample3DCameraToggle:
            iCameraMode++;
            if( iCameraMode == ECameraNone )
                {
                iCameraMode = 0;
                }
            break;
#ifdef SENSOR_API_SUPPORT_ENABLED
        case EExample3DSensorsOn:
            if ( iSensorsSupported )
                {
                iSensorThrottleMode = ETrue;
                iSensorSteeringMode = ETrue;
                if( !iSensor )
                    {
                    if ( !RegisterSensor() )
                        {
                        iSensorThrottleMode = EFalse;
                        iSensorSteeringMode = EFalse;
                        }
                    }
                }
            break;
        case EExample3DSensorsSteering:
            if ( iSensorsSupported )
                {
                iSensorThrottleMode = EFalse;
                iSensorSteeringMode = ETrue;
                if( !iSensor )
                    {
                    if ( !RegisterSensor() )
                        {
                        iSensorThrottleMode = EFalse;
                        iSensorSteeringMode = EFalse;
                        }
                    }
                }
            break;
        case EExample3DSensorsOff:
            if ( iSensorsSupported )
                {
                iSensorThrottleMode = EFalse;
                iSensorSteeringMode = EFalse;
                if( iSensor )
                    {
                    UnregisterSensor();
                    }
                }
            break;
#endif //SENSOR_API_SUPPORT_ENABLED
        default:
            break;
        }
    }

#ifdef SENSOR_API_SUPPORT_ENABLED
void CGame::SetupSensors()
    {
    // Sensor control object
    iSensor = NULL;
    
    TBool sensorDllLoaded = EFalse;

#ifdef SENSOR_API_LOAD_DYNAMICALLY
    // Try to load Sensor API library dynamically
    _LIT( KSensorApiDll, "RRSensorApi" );
    TUidType dllUid( KDynamicLibraryUid );
    if (iSensorApi.Load( KSensorApiDll, dllUid ) == KErrNone)
        {
        sensorDllLoaded = ETrue;
        }
#else
    // If sensor DLL is loaded statically, there's nothing to be done here
    sensorDllLoaded = ETrue;

#endif //SENSOR_API_LOAD_DYNAMICALLY

    // If sensor DLL was loaded successfully, try to register the sensors
    if (sensorDllLoaded && RegisterSensor())
        {
        // Success: Use accelerometer controls
        iSensorsSupported = ETrue;
        iSensorSteeringMode = ETrue;
        iSensorThrottleMode = ETrue;
        }
    else 
        {
        // Fail: Use keypad controls
        iSensorsSupported = EFalse;
        iSensorSteeringMode = EFalse;
        iSensorThrottleMode = EFalse;
        }
    
    // Reset sensor data
    iSensorDataX = 0;
    iSensorDataY = 0;
    iSensorDataZ = 0;
    
    // Create sensor data filters
    iSensorDataFilterX = CSensorDataFilter::NewL( KSensorBufferSize );
    iSensorDataFilterY = CSensorDataFilter::NewL( KSensorBufferSize );
    iSensorDataFilterZ = CSensorDataFilter::NewL( KSensorBufferSize );
    }

TBool CGame::RegisterSensor()
    {
    // Get list of available sensors
    RArray<TRRSensorInfo> sensorList;
    CleanupClosePushL( sensorList );
    
    // Call Sensor API function CRRSensorApi::FindSensorsL()
#ifdef SENSOR_API_LOAD_DYNAMICALLY
    // If Sensor API library is dynamically linked
    typedef void ( *TFindSensorsLFunction )( RArray<TRRSensorInfo>& ); 
    TFindSensorsLFunction findSensorsLFunction = ( TFindSensorsLFunction )iSensorApi.Lookup( 1 );
    findSensorsLFunction( sensorList );
#else
    // If Sensor API library is statically linked
    CRRSensorApi::FindSensorsL( sensorList );
#endif //SENSOR_API_LOAD_DYNAMICALLY
    
    // Get number of sensors available
    TInt sensorCount = sensorList.Count();

    for( TInt i = 0 ; i != sensorCount ; i++ )
        {
        if( sensorList[i].iSensorId == KAccSensorUID )
            {
            
            // Call Sensor API function CRRSensorApi::NewL()
#ifdef SENSOR_API_LOAD_DYNAMICALLY
            // If Sensor API library is dynamically linked
            typedef CRRSensorApi* ( *TNewLFunction )( TRRSensorInfo ); 
            TNewLFunction newLFunction = ( TNewLFunction )iSensorApi.Lookup( 2 );
            iSensor = newLFunction( sensorList[i] );
#else
            // If Sensor API library is statically linked
            iSensor = CRRSensorApi::NewL( sensorList[i] );
#endif //SENSOR_API_LOAD_DYNAMICALLY
            
            // Register accelerometer data listener
            iSensor->AddDataListener( this );
            }
        }
    
    CleanupStack::PopAndDestroy();
    
    // Did accelerometer sensor found?
    if ( iSensor != NULL )
        {
        return ETrue;
        }
    else
        {
        return EFalse;
        }
    }

void CGame::HandleDataEventL( TRRSensorInfo aSensor, TRRSensorEvent aEvent )
    {
    switch ( aSensor.iSensorId )
        {
        case KAccSensorUID:
            {
            // Smooth sensor data values with some filtering to prevent random noise
            iSensorDataX = iSensorDataFilterX->FilterSensorData( aEvent.iSensorData1 );
            iSensorDataY = iSensorDataFilterY->FilterSensorData( aEvent.iSensorData2 );
            iSensorDataZ = iSensorDataFilterZ->FilterSensorData( aEvent.iSensorData3 );
            }
            break;
        default:
            break;
        }
    }

void CGame::UnregisterSensor()
    {
    // Unregister accelerometer data listener
    iSensor->RemoveDataListener();
    delete iSensor;
    iSensor = NULL;
    iSensorDataX = 0;
    iSensorDataY = 0;
    iSensorDataZ = 0;
    }
    
void CGame::CleanupSensors()
    {
    if ( iSensorsSupported && iSensor ) 
        {
        UnregisterSensor();
        }
    
#ifdef SENSOR_API_LOAD_DYNAMICALLY
    // Close dynamically loaded library
    iSensorApi.Close();
#endif //SENSOR_API_LOAD_DYNAMICALLY
    
    delete iSensorDataFilterX;
    delete iSensorDataFilterY;
    delete iSensorDataFilterZ;
    }
#endif //SENSOR_API_SUPPORT_ENABLED

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青国产91久久久久久| 亚洲高清免费一级二级三级| 国产呦萝稀缺另类资源| 日本一区二区三区国色天香| 色综合天天天天做夜夜夜夜做| 日韩欧美一级二级| 成人晚上爱看视频| 美国三级日本三级久久99| 中文字幕一区二区不卡| 日韩欧美一区在线观看| 99免费精品在线观看| 日韩av电影免费观看高清完整版 | 成人黄色一级视频| 亚洲一二三级电影| 亚洲午夜免费视频| 日本aⅴ精品一区二区三区| 国内精品久久久久影院一蜜桃| 玉米视频成人免费看| 日韩欧美精品在线视频| 精品粉嫩超白一线天av| 欧美日韩情趣电影| 91伊人久久大香线蕉| 久久aⅴ国产欧美74aaa| 亚洲国产一二三| 免费欧美高清视频| 国产a久久麻豆| 精品一区在线看| 婷婷成人综合网| 亚洲成人一区二区在线观看| 国产精品国产自产拍高清av王其| 欧美成人福利视频| 91麻豆精品国产综合久久久久久| 91蜜桃免费观看视频| 欧美日韩一区在线| 日韩免费高清电影| 国产精品初高中害羞小美女文| 一区二区三区欧美激情| 一区二区三区欧美激情| 久久99热99| 99热99精品| 久久综合给合久久狠狠狠97色69| 日韩一区和二区| 国产精品区一区二区三区| 欧美一区二区三级| 欧美精品日韩综合在线| 欧美日韩国产精品成人| 精品视频1区2区3区| 日本一区二区在线不卡| 亚洲一区二区精品久久av| 国产偷国产偷亚洲高清人白洁| 精品国产免费人成在线观看| 亚洲一区二三区| 激情文学综合插| 欧美在线一区二区三区| 欧美日韩国产综合视频在线观看| 久久久一区二区三区捆绑**| 国产亚洲制服色| 蜜臂av日日欢夜夜爽一区| 欧美网站大全在线观看| 日韩免费高清av| 午夜伊人狠狠久久| 在线中文字幕不卡| 欧美一级日韩一级| 亚洲影院免费观看| 99精品久久免费看蜜臀剧情介绍| 在线观看日韩一区| 综合久久综合久久| 日韩av电影天堂| 欧美久久久久久久久中文字幕| 国产精品伦一区| 岛国精品在线观看| 国产日本欧美一区二区| 精品一区二区三区欧美| 精品久久久久久久久久久久久久久久久| 亚洲国产毛片aaaaa无费看| 91色在线porny| 亚洲三级视频在线观看| 色狠狠一区二区三区香蕉| 最近日韩中文字幕| av一本久道久久综合久久鬼色| 欧美激情综合在线| 日本亚洲电影天堂| 欧美电影免费观看高清完整版在| 奇米亚洲午夜久久精品| 日韩色在线观看| 精品午夜久久福利影院| 久久久国产精品麻豆| 国产黄色精品网站| 日韩一卡二卡三卡国产欧美| 三级在线观看一区二区| 99re成人在线| 亚洲午夜激情网页| 日韩一区二区在线看片| 国产一区二区三区观看| 国产精品伦一区| 欧美日韩在线播放一区| 麻豆91精品91久久久的内涵| 久久蜜臀中文字幕| 99久久99久久精品国产片果冻| 亚洲精品日韩综合观看成人91| 欧美日韩你懂得| 国产一区二区三区蝌蚪| 综合电影一区二区三区 | 国产一区二区福利| 久久精品视频在线看| 99久久99久久精品国产片果冻 | 一区二区在线看| 欧美电视剧免费全集观看| 成人做爰69片免费看网站| 亚洲私人黄色宅男| 91精品视频网| jvid福利写真一区二区三区| 香蕉成人啪国产精品视频综合网 | 成人免费看片app下载| 亚洲激情自拍视频| 久久影院午夜论| 欧美影片第一页| 丁香天五香天堂综合| 午夜亚洲福利老司机| 中文一区二区完整视频在线观看| 欧美日韩国产乱码电影| 国产高清无密码一区二区三区| 亚洲大片在线观看| 国产精品国模大尺度视频| 欧美www视频| 欧美三级一区二区| 白白色 亚洲乱淫| 久久草av在线| 日韩激情在线观看| 亚洲精品免费电影| 国产三区在线成人av| 日韩一区二区三| 欧美日韩国产高清一区二区三区| 成人av在线一区二区| 国精产品一区一区三区mba桃花| 亚洲成人自拍偷拍| 依依成人精品视频| 中文字幕在线免费不卡| 久久久久久**毛片大全| 日韩欧美国产一区二区三区| 欧美在线free| 99国产精品久久| av午夜精品一区二区三区| 国产麻豆精品theporn| 天天综合网 天天综合色| 亚洲专区一二三| 一二三四区精品视频| 亚洲精品免费电影| 亚洲欧美一区二区三区孕妇| 91视频一区二区| 成人av片在线观看| 成人国产精品视频| 成人在线一区二区三区| www.欧美精品一二区| 成人黄色大片在线观看| 成人黄色av网站在线| k8久久久一区二区三区| 91亚洲精品一区二区乱码| 91网站最新网址| 欧美性猛交xxxx黑人交| 欧美色图片你懂的| 欧美狂野另类xxxxoooo| 日韩欧美中文字幕公布| 欧美一区二区三区在| 精品国产a毛片| 国产日韩在线不卡| 亚洲人妖av一区二区| 一区二区三区四区不卡在线| 亚洲国产婷婷综合在线精品| 性欧美疯狂xxxxbbbb| 麻豆成人av在线| 成人网在线播放| 91极品视觉盛宴| 91精品久久久久久久99蜜桃| 日韩精品在线一区二区| 国产欧美日韩精品在线| 亚洲欧洲av在线| 午夜天堂影视香蕉久久| 久久激情五月激情| 成人动漫一区二区在线| 欧美日韩国产天堂| 精品福利一区二区三区| 亚洲天堂av老司机| 日韩高清在线不卡| 成人av免费网站| 欧美一二三区在线观看| 国产精品国产自产拍高清av| 视频一区在线播放| 成人av在线资源网| 日韩精品中文字幕在线一区| 国产精品传媒入口麻豆| 久久99精品久久只有精品| 91免费版pro下载短视频| 欧美一区二区在线免费播放| 中文字幕中文在线不卡住| 蜜桃精品在线观看| 在线视频你懂得一区| 国产欧美一区在线| 青草国产精品久久久久久| 成人av电影免费在线播放|