Example #1
0
//--------------------------------------------------------------------------
void VeAssetPath::FindFileList(const VeChar8* pcDesc,
	VeVector<VeFixedString>& kOut) const noexcept
{
	const VeChar8* pcFile = VeStrrchr(pcDesc, '/');
	pcFile = pcFile ? (pcFile + 1) : pcDesc;
	AAssetDir* pkDir(nullptr);
	if (pcFile == pcDesc)
	{
		pkDir = AAssetManager_openDir(s_pkAssetManager, m_kPath);
	}
	else
	{
		VeChar8 acBuffer[VE_MAX_PATH_LEN];
		VeChar8* pcTemp = acBuffer;
		if (m_kPath.GetLength())
		{
			pcTemp += VeSprintf(acBuffer, "%s/", m_kPath.GetStr());
		}
		VeStrncpy(pcTemp, VE_MAX_PATH_LEN, pcDesc, pcFile - pcDesc - 1);
		pkDir = AAssetManager_openDir(s_pkAssetManager, acBuffer);
	}
	if (pkDir)
	{
		const VeChar8* pcEntry;
		while ((pcEntry = AAssetDir_getNextFileName(pkDir)))
		{
			if (VeWildNameMatch(pcEntry, pcFile))
			{
				kOut.push_back(pcEntry);
			}
		}
		AAssetDir_close(pkDir);
	}
}
Example #2
0
//--------------------------------------------------------------------------
static void OutputDebug(VeLog::Type eType, const VeChar8* pcTag,
	const VeChar8* pcText) noexcept
{
#ifdef VE_PLATFORM_ANDROID

	const android_LogPriority aeLogTypeMap[VeLog::TYPE_MAX] =
	{
		ANDROID_LOG_DEBUG,
		ANDROID_LOG_INFO,
		ANDROID_LOG_WARN,
		ANDROID_LOG_ERROR
	};
	__android_log_print(aeLogTypeMap[eType], pcTag, "%s", pcText);

#else

#	ifdef VE_PLATFORM_WIN
	VeChar8 acLogBuffer[VE_LOG_BUFFER_SIZE + 64];
	VeSprintf(acLogBuffer, "%s,%s: %s\n", s_apcLogTypeNames[eType], pcTag, pcText);
	OutputDebugStringA(acLogBuffer);
#	else
	printf("%s,%s: %s\n", s_apcLogTypeNames[eType], pcTag, pcText);
#	endif

#endif
}
Example #3
0
//--------------------------------------------------------------------------
void VeFilePath::FindFileList(const VeChar8* pcDesc,
	VeVector<VeFixedString>& kOut) const noexcept
{
#	ifdef VE_PLATFORM_WIN
	VeChar8 acBuffer[VE_MAX_PATH_LEN];
	PATH_CAT(acBuffer, m_kPath, pcDesc);
	_finddata_t kData;
	VeSizeT stHandle = _findfirst(acBuffer, &kData);
	if (stHandle != VE_ELF)
	{
		do
		{
			if ((kData.attrib & 0xf0) == _A_ARCH)
			{
				kOut.push_back(kData.name);
			}
		} while (VE_SUCCEEDED(_findnext(stHandle, &kData)));
		VE_ASSERT_EQ(_findclose(stHandle), VE_S_OK);
	}
#	else
	const VeChar8* pcFile = VeStrrchr(pcDesc, '/');
	pcFile = pcFile ? (pcFile + 1) : pcDesc;
	DIR* pkDir(nullptr);
	if (pcFile == pcDesc)
	{
		pkDir = opendir(m_kPath.GetLength() ? m_kPath : ".");
	}
	else
	{
		VeChar8 acBuffer[VE_MAX_PATH_LEN];
		VeChar8* pcTemp = acBuffer;
		if (m_kPath.GetLength())
		{
			pcTemp += VeSprintf(acBuffer, "%s/", m_kPath.GetStr());
		}
		VeStrncpy(pcTemp, VE_MAX_PATH_LEN, pcDesc, pcFile - pcDesc - 1);
		pkDir = opendir(acBuffer);
	}
	if (pkDir)
	{
		struct dirent* pkEntry;
		while ((pkEntry = readdir(pkDir)))
		{
			if (pkEntry->d_type != DT_DIR)
			{
				if (VeWildNameMatch(pkEntry->d_name, pcFile))
				{
					kOut.push_back(pkEntry->d_name);
				}

			}
		}
		VE_ASSERT_EQ(closedir(pkDir), VE_S_OK);
	}

#	endif
}
Example #4
0
//--------------------------------------------------------------------------
static void OutputLuaDebug(VeLog::Type eType, const VeChar8* pcTag,
	const VeChar8* pcText) noexcept
{
	VeChar8 acLogBuffer[VE_LOG_BUFFER_SIZE + 64];
	VeSprintf(acLogBuffer, "%s,%s: %s", s_apcLogTypeNames[eType], pcTag, pcText);
	if (ve_lua)
	{
		venus::call_function("print", acLogBuffer);
	}
}
Example #5
0
//--------------------------------------------------------------------------
void VeRenderTest::OnUpdate() noexcept
{
	/*VE_VECTOR eye = { 500,0,500,0 };
	VE_VECTOR focus = { 0,0,0,0 };
	VE_VECTOR up = g_MathIdentityR2;
	VE_MATRIX4X3 view = VeMatrixLookAtLH(eye, focus, up);

	VE_MATRIX view4;
	view4.r[0] = view.r[0];
	view4.r[1] = view.r[1];
	view4.r[2] = view.r[2];
	view4.r[3] = g_MathIdentityR3;
	VE_MATRIX proj = VeMatrixPerspectiveFovLH(VE_MATH_PI_2_F, 720.f / 1280.f, 0.25f, 8000.f);

	view4 = VeMatrixMultiply(view4, proj);*/

	//static VeFloat32 s_Test = 0.0f;
	//s_Test -= ve_time.GetDeltaTime() * 0.3f;

	//VE_FLOAT4A* pvData = (VE_FLOAT4A*)spCB->Map();
	//VE_VECTOR v = { 0, s_Test, 0.5f, 0.5f };
	//VeStoreFloat4A(pvData, v);
	////VeStoreFloat4x4A(pvData, view4);
	//spCB->Unmap();

	//VE_FLOAT4X4A* pvData = (VE_FLOAT4X4A*)spCB->Map();
	//VeStoreFloat4x4A(pvData, view4);
	//spCB->Unmap();

	static VeFloat32 s_f32TimeCount(0);
	static VeUInt32 s_u32FrameCount(0);
	static VeUInt32 s_u32FPS;

	s_f32TimeCount += ve_time.GetDeltaTime();
	++s_u32FrameCount;

	if (s_f32TimeCount > 1.0f)
	{
		s_u32FPS = s_u32FrameCount;
		VeChar8 s_acFPS[64];
		VeSprintf(s_acFPS, "%s[FPS:%d]", (const VeChar8*)m_kString, s_u32FrameCount);
		m_spMainWindow->SetTitle(s_acFPS);
		s_f32TimeCount -= VeFloorf(s_f32TimeCount);
		s_u32FrameCount = 0;
	}
}
Example #6
0
//--------------------------------------------------------------------------
Server::Server(const VeChar8* pcName, const VeChar8* pcConfigPath)
	: PropertySContainer(this), m_kName(pcName), m_pkPeer(NULL), m_kAgentMap(1024), m_kDatabase(NULL)
	, m_strServerName(this, FLAG_DATABASE, "ServerName", pcName)
	, m_u64ServerTime(this, FLAG_DATABASE, "ServerTime", 0)
{
	m_kNode.m_tContent = this;
	g_pServerManager->AddServer(pcName, this);
	m_pkPeer = VEPeerInterface::GetInstance();

	VeChar8 acBuffer[64];
	VeSprintf(acBuffer, 64, "%s.xml", pcName);
	VeDirectory* pkDir = g_pResourceManager->CreateDir(pcConfigPath);
	VeBinaryIStreamPtr spConfig = pkDir->OpenSync(acBuffer);
	(*spConfig) >> m_kConfig;
	g_pResourceManager->DestoryDir(pkDir);

	TIMER_INIT(Server, _SyncToDatabase);
}
Example #7
0
//--------------------------------------------------------------------------
VeAbortState VeReportAssertion(const char* pcCond, const char* pcFile,
	int32_t i32Line, const char* pcFunc) noexcept
{
	auto& spVideo = venus3d.GetVideo();
	if (spVideo)
	{
		char acBuffer[VE_MAX_LOG_MESSAGE];
		VeSprintf(acBuffer,
			"Assertion failed!\n\n"
			"File: %s\n"
			"Line: %d\n"
			"Function: %s\n\n"
			"Expression: %s\n\n"
			"For information on how your program can cause an assertion failure\n\n"
			"(Press Retry to debug the application)",
			pcFile, i32Line, pcFunc, pcCond);
		switch (spVideo->MessageBoxSync(VE_ASSERT_CAPTION, acBuffer,
			VE_MB_ABORTRETRYIGNORE | VE_MB_ERROR))
		{
		case VE_MB_IDABORT:
			return VE_AS_STOP;
		case VE_MB_IDRETRY:
			return VE_AS_BREAK;
		case VE_MB_IDIGNORE:
			return VE_AS_IGNORE;
		default:
			return VE_AS_RETRY;
		};
	}
	else
	{
		VeCoreLogE("*****************************************************");
		VeCoreLogE("Assertion failed!");
		VeCoreLogE("File: ", pcFile);
		VeCoreLogE("Line: ", i32Line);
		VeCoreLogE("Function: ", pcFunc);
		VeCoreLogE("Expression: ", pcCond);
		VeCoreLogE("*****************************************************");
		return VE_AS_BREAK;
	}
}
Example #8
0
//--------------------------------------------------------------------------
const VeChar8* VeQuaternion::ToString(const VeQuaternion& kQuat)
{
	VeSprintf(g_acPrintBuffer, "quat(%.2f,%.2f,%.2f,%.2f)", kQuat.x, kQuat.y, kQuat.z, kQuat.w);
	return g_acPrintBuffer;
}
Example #9
0
//--------------------------------------------------------------------------
void D3D12Renderer::PrepareShaders(const VeDirectoryPtr& spSrc,
	const VeDirectoryPtr&) noexcept
{
	char acBuffer[VE_MAX_PATH_LEN];
	auto c = spSrc->FindFirst("hlsl/*.?so_5_0");
	if (c)
	{
		do
		{
			auto d = c->data();
			if (VE_MASK_HAS_ANY(d.m_u32Attribute, VE_PATTR_ARCH))
			{
				VeSprintf(acBuffer, "hlsl/%s", d.m_pcName);
				VeArchivePtr spArchive = spSrc->OpenArchive(acBuffer);
				VE_ASSERT(spArchive);
				const char* dot = vtd::strrchr(d.m_pcName, '.');
				switch (dot[1])
				{
				case 'v':
				{
					D3D12VertexShader* pkShader = VE_NEW D3D12VertexShader(d.m_stSize);
					VE_ASSERT_EQ(spArchive->Read(pkShader->m_pvData, d.m_stSize), d.m_stSize);
					m_kVertexShaderMap[vtd::string(d.m_pcName, (size_t)(dot - d.m_pcName))] = pkShader;
					break;
				}
				case 'p':
				{
					D3D12PixelShader* pkShader = VE_NEW D3D12PixelShader(d.m_stSize);
					VE_ASSERT_EQ(spArchive->Read(pkShader->m_pvData, d.m_stSize), d.m_stSize);
					m_kPixelShaderMap[vtd::string(d.m_pcName, (size_t)(dot - d.m_pcName))] = pkShader;
					break;
				}
				case 'g':
				{
					D3DGeometryShader* pkShader = VE_NEW D3DGeometryShader(d.m_stSize);
					VE_ASSERT_EQ(spArchive->Read(pkShader->m_pvData, d.m_stSize), d.m_stSize);
					m_kGeometryShaderMap[vtd::string(d.m_pcName, (size_t)(dot - d.m_pcName))] = pkShader;
					break;
				}
				case 'h':
				{
					D3DHullShader* pkShader = VE_NEW D3DHullShader(d.m_stSize);
					VE_ASSERT_EQ(spArchive->Read(pkShader->m_pvData, d.m_stSize), d.m_stSize);
					m_kHullShaderMap[vtd::string(d.m_pcName, (size_t)(dot - d.m_pcName))] = pkShader;
					break;
				}
				case 'd':
				{
					D3DDomainShader* pkShader = VE_NEW D3DDomainShader(d.m_stSize);
					VE_ASSERT_EQ(spArchive->Read(pkShader->m_pvData, d.m_stSize), d.m_stSize);
					m_kDomainShaderMap[vtd::string(d.m_pcName, (size_t)(dot - d.m_pcName))] = pkShader;
					break;
				}
				case 'c':
				{
					D3DComputeShader* pkShader = VE_NEW D3DComputeShader(d.m_stSize);
					VE_ASSERT_EQ(spArchive->Read(pkShader->m_pvData, d.m_stSize), d.m_stSize);
					m_kComputeShaderMap[vtd::string(d.m_pcName, (size_t)(dot - d.m_pcName))] = pkShader;
					break;
				}
				default:
					break;
				}
			}
		} while (c->next());
	}
}
Example #10
0
//--------------------------------------------------------------------------
void Server::Start()
{
	VeXMLElement* pkServer = m_kConfig.RootElement()->FirstChildElement("Server");
	const VeChar8* pcVersion = pkServer->FirstChildElement("Version")->GetText();
	{
		VeZeroMemory(&m_kVersion, sizeof(Version));
		VeChar8 acBuffer[64];
		VeStrcpy(acBuffer, 64, pcVersion);
		VeChar8* pcContext;
		const VeChar8* pcTemp = VeStrtok(acBuffer, ".", &pcContext);
		VeUInt32 i(0);
		while(pcTemp && i < 4)
		{
			m_kVersion.m_au8Version[i] = VeAtoi(pcTemp);
			pcTemp = VeStrtok(NULL, ".", &pcContext);
			++i;
		}
	}
	VeUInt16 u16Port;
	VE_ASSERT_EQ(VeStringA(pkServer->FirstChildElement("ServerPort")->GetText()).To(u16Port), true);
	VeUInt16 u16MaxConnections;
	VE_ASSERT_EQ(VeStringA(pkServer->FirstChildElement("MaxConnections")->GetText()).To(u16MaxConnections), true);
	VeUInt32 u32TimeOut;
	VE_ASSERT_EQ(VeStringA(pkServer->FirstChildElement("TimeOut")->GetText()).To(u32TimeOut), true);
	const VeChar8* pcPassword = pkServer->FirstChildElement("Password")->GetText();

	m_pkPeer->SetIncomingPassword(pcPassword, (VeInt32)VeStrlen(pcPassword));
	m_pkPeer->SetTimeoutTime(u32TimeOut, UNASSIGNED_SYSTEM_ADDRESS);

	SocketDescriptor akSocketDesc[2];
	akSocketDesc[0].port = u16Port;
	akSocketDesc[0].socketFamily = AF_INET;
	akSocketDesc[1].port = u16Port;
	akSocketDesc[1].socketFamily = AF_INET6;

	bool bRes = m_pkPeer->Startup(u16MaxConnections, akSocketDesc, 2, 30) == VENET_STARTED;
	m_pkPeer->SetMaximumIncomingConnections(u16MaxConnections);

	if(bRes)
	{
		printf("%s Server Started, Waiting For Connections.\n", m_kName);
	}	
	else
	{
		bRes = m_pkPeer->Startup(u16MaxConnections, akSocketDesc, 1, 30) == VENET_STARTED;
		if(!bRes)
		{
			VeChar8 acBuffer[256];
			VeSprintf(acBuffer, 256, "%s Server failed to start. Terminating.", m_kName);
			puts(acBuffer);
			exit(1);
		}
		printf("%s Server Started, Waiting For Connections.\n", m_kName);
	}

	m_pkPeer->SetOccasionalPing(true);
	m_pkPeer->SetUnreliableTimeout(1000);

	DataStructures::List< VENetSmartPtr<VENetSocket> > kSockets;
	m_pkPeer->GetSockets(kSockets);
	for(VeUInt32 i(0); i < kSockets.Size(); ++i)
	{
		printf("Ports Used By :%i. %i\n", i+1, kSockets[i]->boundAddress.ToString(true));
	}
	for(VeUInt32 i(0); i < m_pkPeer->GetNumberOfAddresses(); ++i)
	{
		printf("\n本机可提供服务的IP :\n%i. %s\n", i+1, m_pkPeer->GetLocalIP(i));
	}
	printf("%s Server GUID is %s\n", m_kName, m_pkPeer->GetGuidFromSystemAddress(UNASSIGNED_SYSTEM_ADDRESS).ToString());
	
	{
		VeXMLElement* pkDBLink = m_kConfig.RootElement()->FirstChildElement("DBLink");
		VeStringA kAccount = pkDBLink->FirstChildElement("Account")->GetText();
		VeStringA kPassword = pkDBLink->FirstChildElement("Password")->GetText();
		VeStringA kDBSource = pkDBLink->FirstChildElement("DBSource")->GetText();
        printf("\nDBSource :%s\n", pkDBLink->FirstChildElement("DBSource")->GetText());
		m_kDatabase = VE_NEW DBBusiness(kAccount,kPassword,kDBSource);
	}
	
	LoadProperties();
	m_u64ServerStartTime = m_u64ServerTime;
	AttachByDelay(TIMER(_SyncToDatabase), SAVE_DB_DELAY);
	OnStart();
}