DDWORD bc_EngineMessageFn(LPBASECLASS pObject, DDWORD messageID, void *pData, float fData) { LPAGGREGATE pAggregate; ObjectCreateStruct *pStruct; GenericProp genProp; // Handle ReadProp. switch(messageID) { case MID_PRECREATE: { // Get the props. if( fData == 1.0f || fData == 2.0f ) { pStruct = (ObjectCreateStruct*)pData; if( g_pServerDE->GetPropGeneric( "Name", &genProp ) == DE_OK ) { SAFE_STRCPY(pStruct->m_Name, genProp.m_String); pStruct->m_Name[MAX_CS_FILENAME_LEN] = '\0'; } if( g_pServerDE->GetPropGeneric( "Pos", &genProp ) == DE_OK ) { VEC_COPY( pStruct->m_Pos, genProp.m_Vec ); } if( g_pServerDE->GetPropGeneric( "Rotation", &genProp ) == DE_OK ) { ROT_COPY( pStruct->m_Rotation, genProp.m_Rotation ); } if( g_pServerDE->GetPropGeneric( "Flags", &genProp ) == DE_OK ) { pStruct->m_Flags = genProp.m_Long; } if( g_pServerDE->GetPropGeneric( "Visible", &genProp ) == DE_OK ) { if( genProp.m_Bool ) pStruct->m_Flags |= FLAG_VISIBLE; else pStruct->m_Flags &= ~FLAG_VISIBLE; } if( g_pServerDE->GetPropGeneric( "Shadow", &genProp ) == DE_OK ) { if( genProp.m_Bool ) pStruct->m_Flags |= FLAG_SHADOW; else pStruct->m_Flags &= ~FLAG_SHADOW; } if( g_pServerDE->GetPropGeneric( "RotateableSprite", &genProp ) == DE_OK ) { if( genProp.m_Bool ) pStruct->m_Flags |= FLAG_ROTATEABLESPRITE; else pStruct->m_Flags &= ~FLAG_ROTATEABLESPRITE; } if( g_pServerDE->GetPropGeneric( "Chromakey", &genProp ) == DE_OK ) { if( genProp.m_Bool ) pStruct->m_Flags |= FLAG_SPRITECHROMAKEY; else pStruct->m_Flags &= ~FLAG_SPRITECHROMAKEY; } if( g_pServerDE->GetPropGeneric( "Solid", &genProp ) == DE_OK ) { if( genProp.m_Bool ) pStruct->m_Flags |= FLAG_SOLID; else pStruct->m_Flags &= ~FLAG_SOLID; } if( g_pServerDE->GetPropGeneric( "Gravity", &genProp ) == DE_OK ) { if( genProp.m_Bool ) pStruct->m_Flags |= FLAG_GRAVITY; else pStruct->m_Flags &= ~FLAG_GRAVITY; } if( g_pServerDE->GetPropGeneric( "TouchNotify", &genProp ) == DE_OK ) { if( genProp.m_Bool ) pStruct->m_Flags |= FLAG_TOUCH_NOTIFY; else pStruct->m_Flags &= ~FLAG_TOUCH_NOTIFY; } if( g_pServerDE->GetPropGeneric( "Rayhit", &genProp ) == DE_OK ) { if( genProp.m_Bool ) pStruct->m_Flags |= FLAG_RAYHIT; else pStruct->m_Flags &= ~FLAG_RAYHIT; } if( g_pServerDE->GetPropGeneric( "Filename", &genProp ) == DE_OK ) { SAFE_STRCPY(pStruct->m_Filename, genProp.m_String); pStruct->m_Filename[MAX_CS_FILENAME_LEN] = '\0'; } if( g_pServerDE->GetPropGeneric( "Skin", &genProp ) == DE_OK ) { SAFE_STRCPY(pStruct->m_SkinName, genProp.m_String); pStruct->m_SkinName[MAX_CS_FILENAME_LEN] = '\0'; } break; } } } // Call the aggregates. pAggregate = pObject->m_pFirstAggregate; while(pAggregate) { pAggregate->m_EngineMessageFn(pObject, pAggregate, messageID, pData, fData); pAggregate = pAggregate->m_pNextAggregate; } // Default return is 1. return 1; }