本文整理汇总了C++中RecvProp类的典型用法代码示例。如果您正苦于以下问题:C++ RecvProp类的具体用法?C++ RecvProp怎么用?C++ RecvProp使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了RecvProp类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: RecvPropQuaternion
RecvProp RecvPropQuaternion(
char *pVarName,
int offset,
int sizeofVar, // Handled by RECVINFO macro, but set to SIZEOF_IGNORE if you don't want to bother.
int flags,
RecvVarProxyFn varProxy
)
{
RecvProp ret;
#ifdef _DEBUG
if ( varProxy == RecvProxy_QuaternionToQuaternion )
{
Assert( sizeofVar == sizeof( Quaternion ) );
}
#endif
ret.m_pVarName = pVarName;
ret.SetOffset( offset );
ret.m_RecvType = DPT_Quaternion;
ret.m_Flags = flags;
ret.SetProxyFn( varProxy );
return ret;
}
示例2: RecvPropFloat
RecvProp RecvPropFloat(
char *pVarName,
int offset,
int sizeofVar,
int flags,
RecvVarProxyFn varProxy
)
{
RecvProp ret;
#ifdef _DEBUG
if ( varProxy == RecvProxy_FloatToFloat )
{
Assert( sizeofVar == 0 || sizeofVar == 4 );
}
#endif
ret.m_pVarName = pVarName;
ret.SetOffset( offset );
ret.m_RecvType = DPT_Float;
ret.m_Flags = flags;
ret.SetProxyFn( varProxy );
return ret;
}
示例3: RecvPropVector
RecvProp RecvPropVector(
char *pVarName,
int offset,
int sizeofVar,
int flags,
RecvVarProxyFn varProxy
)
{
RecvProp ret;
#ifdef _DEBUG
if ( varProxy == RecvProxy_VectorToVector )
{
Assert( sizeofVar == sizeof( Vector ) );
}
#endif
ret.m_pVarName = pVarName;
ret.SetOffset( offset );
ret.m_RecvType = DPT_Vector;
ret.m_Flags = flags;
ret.SetProxyFn( varProxy );
return ret;
}
示例4: RecurseClientTable
void RecurseClientTable( RecvTable *pTable, int &spacing )
{
RecvTable *pRecvTable = pTable;
if (pRecvTable == NULL){
spacing--;
return;
}
char TableName[128];
int size = sizeof(TableName);
memset( TableName, 0, size );
for (int i = 0; i < spacing; i++)
V_strcat( TableName, " |", size );
V_strcat( TableName, pRecvTable->GetName(), size );
Msg( "%s\n", TableName );
spacing++;
int num = pRecvTable->GetNumProps();
for (int i = 0; i < num; i++)
{
RecvProp *pProp = pRecvTable->GetProp(i);
memset( TableName, 0, sizeof(TableName) );
for (int j = 0; j < spacing; j++)
V_strcat( TableName, " |", size );
V_strcat( TableName, pProp->GetName(), size );
Msg( "%s\n", TableName );
RecurseClientTable( pProp->GetDataTable(), ++spacing );
}
spacing-=2;
}
示例5: InternalRecvPropArray
RecvProp InternalRecvPropArray(
const int elementCount,
const int elementStride,
char *pName,
ArrayLengthRecvProxyFn proxy
)
{
RecvProp ret;
ret.InitArray( elementCount, elementStride );
ret.m_pVarName = pName;
ret.SetArrayLengthProxy( proxy );
return ret;
}
示例6: ConvertTreeToString
bool Entities::RetrieveClassPropOffset(std::string className, std::vector<std::string> propertyTree) {
std::string propertyString = ConvertTreeToString(propertyTree);
if (classPropOffsets[className].find(propertyString) != classPropOffsets[className].end()) {
return true;
}
ClientClass *cc = Interfaces::pClientDLL->GetAllClasses();
while (cc) {
if (className.compare(cc->GetName()) == 0) {
RecvTable *table = cc->m_pRecvTable;
int offset = 0;
RecvProp *prop = nullptr;
if (table) {
for (auto iterator = propertyTree.begin(); iterator != propertyTree.end(); ++iterator) {
int subOffset = 0;
if (prop && prop->GetType() == DPT_DataTable) {
table = prop->GetDataTable();
}
if (!table) {
return false;
}
if (GetSubProp(table, iterator->c_str(), prop, subOffset)) {
offset += subOffset;
}
else {
return false;
}
table = nullptr;
}
classPropOffsets[className][propertyString] = offset;
return true;
}
}
cc = cc->m_pNext;
}
return false;
}
示例7: RecvPropDataTable
RecvProp RecvPropDataTable(
char *pVarName,
int offset,
int flags,
RecvTable *pTable,
DataTableRecvVarProxyFn varProxy
)
{
RecvProp ret;
ret.m_pVarName = pVarName;
ret.SetOffset( offset );
ret.m_RecvType = DPT_DataTable;
ret.m_Flags = flags;
ret.SetDataTableProxyFn( varProxy );
ret.SetDataTable( pTable );
return ret;
}
示例8: RecvPropString
RecvProp RecvPropString(
char *pVarName,
int offset,
int bufferSize,
int flags,
RecvVarProxyFn varProxy
)
{
RecvProp ret;
ret.m_pVarName = pVarName;
ret.SetOffset( offset );
ret.m_RecvType = DPT_String;
ret.m_Flags = flags;
ret.m_StringBufferSize = bufferSize;
ret.SetProxyFn( varProxy );
return ret;
}
示例9: CheckTableBaseclass
bool Entities::CheckTableBaseclass(RecvTable *sTable, std::string baseclass) {
if (std::string(sTable->GetName()).compare("DT_" + baseclass) == 0) {
return true;
}
for (int i = 0; i < sTable->GetNumProps(); i++) {
RecvProp *sProp = sTable->GetProp(i);
if (strcmp(sProp->GetName(), "baseclass") != 0) {
continue;
}
RecvTable *sChildTable = sProp->GetDataTable();
if (sChildTable) {
return CheckTableBaseclass(sChildTable, baseclass);
}
}
return false;
}
示例10: RecvPropInt
RecvProp RecvPropInt(
char *pVarName,
int offset,
int sizeofVar,
int flags,
RecvVarProxyFn varProxy
)
{
RecvProp ret;
// If they didn't specify a proxy, then figure out what type we're writing to.
if (varProxy == NULL)
{
if (sizeofVar == 1)
{
varProxy = RecvProxy_Int32ToInt8;
}
else if (sizeofVar == 2)
{
varProxy = RecvProxy_Int32ToInt16;
}
else if (sizeofVar == 4)
{
varProxy = RecvProxy_Int32ToInt32;
}
else
{
Assert(!"RecvPropInt var has invalid size");
varProxy = RecvProxy_Int32ToInt8; // safest one...
}
}
ret.m_pVarName = pVarName;
ret.SetOffset( offset );
ret.m_RecvType = DPT_Int;
ret.m_Flags = flags;
ret.SetProxyFn( varProxy );
return ret;
}
示例11: Array_Decode
void Array_Decode( DecodeInfo *pInfo )
{
SendProp *pArrayProp = pInfo->m_pProp->GetArrayProp();
AssertMsg( pArrayProp, ("Array_Decode: missing m_pArrayProp for a property.") );
// Setup a DecodeInfo that is used to decode each of the child properties.
DecodeInfo subDecodeInfo;
subDecodeInfo.CopyVars( pInfo );
subDecodeInfo.m_pProp = pArrayProp;
int elementStride = 0;
ArrayLengthRecvProxyFn lengthProxy = 0;
if ( pInfo->m_pRecvProp )
{
RecvProp *pArrayRecvProp = pInfo->m_pRecvProp->GetArrayProp();
subDecodeInfo.m_pRecvProp = pArrayRecvProp;
// Note we get the OFFSET from the array element property and the STRIDE from the array itself.
subDecodeInfo.m_pData = (char*)pInfo->m_pData + pArrayRecvProp->GetOffset();
elementStride = pInfo->m_pRecvProp->GetElementStride();
Assert( elementStride != -1 ); // (Make sure it was set..)
lengthProxy = pInfo->m_pRecvProp->GetArrayLengthProxy();
}
int nElements = pInfo->m_pIn->ReadUBitLong( pInfo->m_pProp->GetNumArrayLengthBits() );
if ( lengthProxy )
lengthProxy( pInfo->m_pStruct, pInfo->m_ObjectID, nElements );
for ( subDecodeInfo.m_iElement=0; subDecodeInfo.m_iElement < nElements; subDecodeInfo.m_iElement++ )
{
g_PropTypeFns[pArrayProp->GetType()].Decode( &subDecodeInfo );
subDecodeInfo.m_pData = (char*)subDecodeInfo.m_pData + elementStride;
}
}
示例12: RecvPropArray3
RecvProp RecvPropArray3(
char *pVarName,
int offset,
int sizeofVar,
int elements,
RecvProp pArrayProp,
DataTableRecvVarProxyFn varProxy
)
{
RecvProp ret;
Assert( elements <= MAX_ARRAY_ELEMENTS );
ret.m_pVarName = pVarName;
ret.SetOffset( offset );
ret.m_RecvType = DPT_DataTable;
ret.SetDataTableProxyFn( varProxy );
RecvProp *pProps = new RecvProp[elements]; // TODO free that again
const char *pParentArrayPropName = AllocateStringHelper( "%s", pVarName );
for ( int i=0; i < elements; i++ )
{
pProps[i] = pArrayProp; // copy basic property settings
pProps[i].SetOffset( i * sizeofVar ); // adjust offset
pProps[i].m_pVarName = s_ClientElementNames[i]; // give unique name
pProps[i].SetParentArrayPropName( pParentArrayPropName ); // For debugging...
}
RecvTable *pTable = new RecvTable( pProps, elements, pVarName ); // TODO free that again
ret.SetDataTable( pTable );
return ret;
}
示例13: RecvPropFloat
RecvProp RecvPropFloat(
char *pVarName,
int offset,
int sizeofVar,
int flags,
RecvVarProxyFn varProxy
)
{
RecvProp ret;
// Debug type checks.
if ( varProxy == RecvProxy_FloatToFloat )
{
Assert( sizeofVar == 0 || sizeofVar == 4 );
}
ret.m_pVarName = pVarName;
ret.SetOffset( offset );
ret.m_RecvType = DPT_Float;
ret.m_Flags = flags;
ret.SetProxyFn( varProxy );
return ret;
}
示例14: GetSubProp
bool Entities::GetSubProp(RecvTable *table, const char *propName, RecvProp *&prop, int &offset) {
for (int i = 0; i < table->GetNumProps(); i++) {
offset = 0;
RecvProp *currentProp = table->GetProp(i);
if (strcmp(currentProp->GetName(), propName) == 0) {
prop = currentProp;
offset = currentProp->GetOffset();
return true;
}
if (currentProp->GetType() == DPT_DataTable) {
if (GetSubProp(currentProp->GetDataTable(), propName, prop, offset)) {
offset += currentProp->GetOffset();
return true;
}
}
}
return false;
}
示例15: RecvPropUtlVector
RecvProp RecvPropUtlVector(
const char *pVarName, // Use RECVINFO_UTLVECTOR to generate these 4.
int offset, // Used to generate pData in the function specified in varProxy.
int sizeofVar, // The size of each element in the utlvector.
ResizeUtlVectorFn fn,
EnsureCapacityFn ensureFn,
int nMaxElements, // Max # of elements in the array. Keep this as low as possible.
RecvProp pArrayProp
)
{
RecvProp ret;
Assert( nMaxElements <= MAX_ARRAY_ELEMENTS );
ret.m_RecvType = DPT_DataTable;
ret.m_pVarName = pVarName;
ret.SetOffset( 0 );
ret.SetDataTableProxyFn( DataTableRecvProxy_StaticDataTable );
RecvProp *pProps = new RecvProp[nMaxElements+1]; // TODO free that again
// Extra data bound to each of the properties.
CRecvPropExtra_UtlVector *pExtraData = new CRecvPropExtra_UtlVector;
pExtraData->m_nMaxElements = nMaxElements;
pExtraData->m_ElementStride = sizeofVar;
pExtraData->m_ResizeFn = fn;
pExtraData->m_EnsureCapacityFn = ensureFn;
pExtraData->m_Offset = offset;
if ( pArrayProp.m_RecvType == DPT_DataTable )
pExtraData->m_DataTableProxyFn = pArrayProp.GetDataTableProxyFn();
else
pExtraData->m_ProxyFn = pArrayProp.GetProxyFn();
// The first property is datatable with an int that tells the length of the array.
// It has to go in a datatable, otherwise if this array holds datatable properties, it will be received last.
RecvProp *pLengthProp = new RecvProp;
*pLengthProp = RecvPropInt( AllocateStringHelper( "lengthprop%d", nMaxElements ), 0, 0, 0, RecvProxy_UtlVectorLength );
pLengthProp->SetExtraData( pExtraData );
char *pLengthProxyTableName = AllocateUniqueDataTableName( false, "_LPT_%s_%d", pVarName, nMaxElements );
RecvTable *pLengthTable = new RecvTable( pLengthProp, 1, pLengthProxyTableName );
pProps[0] = RecvPropDataTable( "lengthproxy", 0, 0, pLengthTable, DataTableRecvProxy_LengthProxy );
pProps[0].SetExtraData( pExtraData );
// The first element is a sub-datatable.
for ( int i = 1; i < nMaxElements+1; i++ )
{
pProps[i] = pArrayProp; // copy array element property setting
pProps[i].SetOffset( 0 ); // leave offset at 0 so pStructBase is always a pointer to the CUtlVector
pProps[i].m_pVarName = s_ClientElementNames[i-1]; // give unique name
pProps[i].SetExtraData( pExtraData );
pProps[i].SetElementStride( i-1 ); // Kind of lame overloading element stride to hold the element index,
// but we can easily move it into its SetExtraData stuff if we need to.
// We provide our own proxy here.
if ( pArrayProp.m_RecvType == DPT_DataTable )
{
pProps[i].SetDataTableProxyFn( RecvProxy_UtlVectorElement_DataTable );
}
else
{
pProps[i].SetProxyFn( RecvProxy_UtlVectorElement );
}
}
RecvTable *pTable = new RecvTable(
pProps,
nMaxElements+1,
AllocateUniqueDataTableName( false, "_ST_%s_%d", pVarName, nMaxElements )
); // TODO free that again
ret.SetDataTable( pTable );
return ret;
}