Example #1
0
			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;
			}
Example #2
0
	//--------------------------------------------------------------------------------
	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;
	
			}
Example #5
0
			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;
					}
				}
	
			}
Example #6
0
			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();
					}
				}
Example #9
0
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;
}