bool System::RepetitionRun(){ Device9::Info info = GetGlobalSetting().m_DisplayParam; Device9*& pDevice = GetGlobal().m_pRenderDevice; pDevice = new Device9(&info); pDevice->Create(); MSG msg; ::ZeroMemory(&msg, sizeof(MSG)); SetCursor(LoadCursor(0, IDC_ARROW)); while(!m_bExit){ while(!m_bPause){ if(::PeekMessage(&msg, 0, 0, 0, PM_REMOVE)){ ::TranslateMessage(&msg); ::DispatchMessage(&msg); }else{ pDevice->RenderOneFrame(); } m_bHasPause = false; if(msg.message == WM_QUIT){ GetGlobalSetting().m_bQuit = true; m_bPause = true; } } m_bHasPause = true; Sleep(10); } pDevice->Destroy(); SAF_D(pDevice); return true; }
//-------------------------------------------------------------------------------- TimeManager::Date TimeManager::GetDate() { Date date; GetGlobalSetting(ID_TESGlobal::GameHour, &date.Hour ); GetGlobalSetting(ID_TESGlobal::GameDay, &date.Day ); GetGlobalSetting(ID_TESGlobal::GameMonth,&date.Month); GetGlobalSetting(ID_TESGlobal::GameYear, &date.Year ); return date; }
void Renderer::ReleaseEffect(){ GlobalSetting& setting = GetGlobalSetting(); if(m_pImageSet!=NULL){ m_pImageSet->Destroy(); delete m_pImageSet; m_pImageSet = NULL; } // if(m_pMaterial!=NULL){ // //这个时候 材质工厂已经释放掉了 // RenderSystem::GetSingleton()->DestroyProduct(m_pMaterial); // m_pMaterial = NULL; // } if(m_DrawBuff.m_pVertexDeclare!=NULL){ m_DrawBuff.m_pVertexDeclare->ReleaseRef(); m_DrawBuff.m_pVertexDeclare = NULL; } SAFE_RELEASE_REF(m_DrawBuff.m_pVertexBuffer[0]); if(m_pScreenEnt!=NULL){ //setting.m_pEngine->DestroyProduct(m_pScreenEnt); m_pScreenEnt = NULL; } }
U1 Renderer::InitEffect(){ GlobalSetting& setting = GetGlobalSetting(); //创建材质 SetMaterialName("UI"); //创建声明 VertexDeclare::Info vdeclareInfo; //vdeclareInfo.m_FVF = VertexBuff::PT::fvf; m_DrawBuff.m_pVertexDeclare = RenderSystem::GetSingleton()->CreateProduct<VertexDeclare>("XYZ",&vdeclareInfo); //创建顶点缓冲区 VertexBuffer::Info vbuffinfo; vbuffinfo.SetVertexBuffer(MAX_WINDOW*6,12); m_DrawBuff.m_pVertexBuffer[0] = RenderSystem::GetSingleton()->CreateProduct<VertexBuffer>("UI",&vbuffinfo); //VertexBuff::PT* pVertex = NULL; // m_DrawBuff.m_pVertexBuff->Lock(LockOpt(0,0,(void**)&pVertex)); // for(UInt i =0;i<MAX_WINDOW;i++){ // pVertex[i*6] = VertexBuff::PT(-1.0f, -1.0f, 1.0f, i, i); // pVertex[i*6+1] = VertexBuff::PT(-1.0f, 1.0f, 1.0f, i, i); // pVertex[i*6+2] = VertexBuff::PT( 1.0f, 1.0f, 1.0f, i, i); // // pVertex[i*6+3] = VertexBuff::PT(-1.0f, -1.0f, 1.0f, i, i); // pVertex[i*6+4] = VertexBuff::PT( 1.0f, 1.0f, 1.0f, i, i); // pVertex[i*6+5] = VertexBuff::PT( 1.0f, -1.0f, 1.0f, i, i); // } // m_DrawBuff.m_pVertexBuff->Unlock(); m_DrawBuff.m_DrawOption.m_uiVertexCount = MAX_WINDOW*6; m_DrawBuff.m_DrawOption.m_DrawFuncType = Render::Draw::FUNC_TYPE_DP; //创建第二个缓冲区 m_pScreenEnt = EngineSystem::GetSingleton()->CreateProduct<ScreenEntity>("UIScreen"); return true; }
void ALSound::UpdateSound(){ if( m_pParentNode != NULL && m_Info.type == enDynamic) { Float3 vPos = m_pParentNode->GetGlobalPosition(); static Real* pTimeDelta = &GetGlobalSetting().m_ShaderParam.m_fTimeDelta; Float3 vVelocity = Float3(0,0,0); if(*pTimeDelta!=0.0f) vVelocity = (vPos - m_vLastPosition)/(*pTimeDelta); alSource3f(m_uiSource,AL_POSITION,vPos.x,vPos.y,vPos.z); alSource3f(m_uiSource,AL_VELOCITY,vVelocity.x,vVelocity.y,vVelocity.z); m_vLastPosition = vPos; } if(GetState() == AL_STOPPED){ if(m_Info.iNumRepeat>=0) Play(); else{ if(m_pParentNode!=NULL){ GetParentSceneNode()->detachObject(this); } ReleaseRef(); return; } } }
Global::Global(){ m_pDevice = NULL; pGlobalSetting = &GetGlobalSetting(); m_pRenderDevice = NULL; m_bReseting = false; }
void TextureModel::RenderHardWare(){ static POINT p = {0,0}; //Render::System::GetSingleton()->UpdateSurface(m_pTempBoneTexture,NULL,m_pBoneTexture,p); GetGlobalSetting().m_ShaderParam.m_pBoneTexture = m_pBoneTexture; //调用装备的渲染函数来渲染 EquipmentMapItr itr = m_mapEquipment.begin(); for(;itr!=m_mapEquipment.end();itr++){ Equipment* pEquip = itr->second; if(pEquip==NULL) continue; //pEquip->Render(pEquip->m_pHareWareRenderBuff); } }
void TextureModel::Update(){ CoreAnimation* pAnimation = (CoreAnimation*)m_pObject; if(pAnimation){ pAnimation->update(GetGlobalSetting().m_ShaderParam.m_fEngineTimeDelta*m_fAnimationSpeed); CalSkeleton* pSkel = pAnimation->getSkeleton(); std::vector<CalBone*>& lstBone = pSkel->getVectorBone(); UInt uiBoneCount = lstBone.size(); static Float44 g_TempBoneMatrix[256]; for(UInt i=0;i<uiBoneCount;i++){ const CalQuaternion& q = lstBone[i]->getRotationBoneSpace(); const CalVector& v = lstBone[i]->getTranslationBoneSpace(); Float44 m(Float4(q.w,q.x,q.y,q.z)); Float3* pP = (Float3*)&v; static Float3 vScale(1,1,1); g_TempBoneMatrix[i] = Float44(*pP,vScale,Float4(q));//(m.transpose(); //g_TempBoneMatrix[i].(*pP); // Float44 m(Float4(q.w,q.x,q.y,q.z)); // // m[3][0] = v.x; // m[3][1] = v.y; // m[3][2] = v.z; // g_TempBoneMatrix[i] = m;//.transpose(); } // Render::ITexture::LockRectOption option; // option.pData = NULL; // option.pitch = 1024*16; // if(m_pTempBoneTexture->Lock(&option)){ // memcpy(option.pData,&g_TempBoneMatrix[0],sizeof(Float44)*uiBoneCount); // m_pTempBoneTexture->UnLock(); // // // } //UpdateAttachObject(); } }
ApiManager::ApiAnswer * Bunny::ProcessVioletApiCall(HTTPRequest const& hRequest) { ApiManager::ApiViolet* answer = new ApiManager::ApiViolet(); if(hRequest.HasArg("sn") && hRequest.HasArg("token")) { QString serial = hRequest.GetArg("sn").toLower(); QString token = hRequest.GetArg("token"); if(GetGlobalSetting("VApiEnable",false).toBool()) { if((GetGlobalSetting("VApiToken","").toString() == token && serial.toAscii()==GetID()) || GetGlobalSetting("VApiPublic",false).toBool()) { if(hRequest.GetURI().startsWith("/ojn/FR/api_stream.jsp")) { if(hRequest.HasArg("urlList")) { QByteArray message = ("ST " + hRequest.GetArg("urlList").split("|", QString::SkipEmptyParts).join("\nMW\nST ") + "\nMW\n").toAscii(); SendPacket(MessagePacket(message)); answer->AddMessage("WEBRADIOSENT", "Your webradio has been sent"); } else { answer->AddMessage("NOCORRECTPARAMETERS", "Please check urlList parameter !"); } } else { AmbientPacket p; if(hRequest.HasArg("action")) // TODO: send good values { switch(hRequest.GetArg("action").toInt()) { case 2: answer->AddXml("<listfriend nb=\"0\"/>"); break; case 3: answer->AddXml("<listreceivedmsg nb=\"0\"/>"); break; case 4: answer->AddXml("<timezone>(GMT + 01:00) Bruxelles, Copenhague, Madrid, Paris</timezone>"); break; case 6: answer->AddXml("<blacklist nb=\"0\"/>"); break; case 7: if(IsSleeping()) answer->AddXml("<rabbitSleep>YES</rabbitSleep>"); else answer->AddXml("<rabbitSleep>NO</rabbitSleep>"); break; case 8: answer->AddXml("<rabbitVersion>V2</rabbitVersion>"); break; case 9: answer->AddXml("<voiceListTTS nb=\"2\"/><voice lang=\"fr\" command=\"FR-Anastasie\"/><voice lang=\"de\" command=\"DE-Otto\"/>"); break; case 10: answer->AddXml("<rabbitName>" + GetBunnyName() + "</rabbitName>"); break; case 11: answer->AddXml("<langListUser nb=\"4\"/><myLang lang=\"fr\"/><myLang lang=\"us\"/><myLang lang=\"uk\"/><myLang lang=\"de\"/>"); break; case 12: answer->AddXml("<message>LINKPREVIEW</message><comment>XXXX</comment>"); break; case 13: answer->AddXml("<message>COMMANDSENT</message><comment>You rabbit will change status</comment>"); SendPacket(SleepPacket(SleepPacket::Wake_Up)); break; case 14: answer->AddXml("<message>COMMANDSENT</message><comment>You rabbit will change status</comment>"); SendPacket(SleepPacket(SleepPacket::Sleep)); break; default: break; } } else { if(hRequest.HasArg("idmessage")) { answer->AddMessage("MESSAGESENT", "Your message has been sent"); } if(hRequest.HasArg("posleft") || hRequest.HasArg("posright")) { int left = 0; int right = 0; if(hRequest.HasArg("posleft")) left = hRequest.GetArg("posleft").toInt(); if(hRequest.HasArg("posright")) right = hRequest.GetArg("posright").toInt(); if(left >= 0 && left <= 16 && right >= 0 && right <= 16) { answer->AddMessage("EARPOSITIONSENT", "Your ears command has been sent"); p.SetEarsPosition(left, right); } else { answer->AddMessage("EARPOSITIONNOTSENT", "Your ears command could not be sent"); } } if(hRequest.HasArg("tts")) { SendPacket(MessagePacket("MU "+TTSManager::CreateNewSound(hRequest.GetArg("tts"), "claire")+"\nPL 3\nMW\n")); answer->AddMessage("TTSSENT", "Your text has been sent"); } if(hRequest.HasArg("ears")) { answer->AddEarPosition(0, 0); // TODO: send real positions } if(hRequest.HasArg("chor")) { Choregraphy c; if(c.Parse(hRequest.GetArg("chor"))) //TODO: Check for good chor { QDir chorFolder = QDir(GlobalSettings::GetString("Config/RealHttpRoot")); if (!chorFolder.cd("chor")) { if (!chorFolder.mkdir("chor")) { LogError(QString("Unable to create 'chor' directory !\n")); answer->AddMessage("CHORNOTSENT", "Your chor could not be sent (can't create folder)"); } chorFolder.cd("chor"); } QString fileName = QCryptographicHash::hash(c.GetData(), QCryptographicHash::Md5).toHex().append(".chor"); QString filePath = chorFolder.absoluteFilePath(fileName); QFile file(filePath); if (!file.open(QIODevice::WriteOnly)) { LogError("Cannot open chor file for writing"); answer->AddMessage("CHORNOTSENT", "Your chor could not be sent (error in file)"); } else { file.write(c.GetData()); file.close(); SendPacket(MessagePacket(("CH broadcast/ojn_local/chor/" + fileName + "\n").toAscii())); answer->AddMessage("CHORSENT", "Your chor has been sent"); } } else { answer->AddMessage("CHORNOTSENT", "Your chor could not be sent (bad chor)"); } } } if(p.GetServices().count() > 0) SendPacket(p); } } else { answer->AddMessage("NOGOODTOKENORSERIAL", "Your token or serial number are not correct !"); } } else { answer->AddMessage("APIDISABLED", "API is disabled for this bunny"); } } else { answer->AddMessage("APIDISABLED", "Missing serial or token"); } return answer; }