void Cl_ReadSideDelta(dint /*deltaType*/) { /// @todo Do not assume the CURRENT map. world::Map &map = App_World().map(); dint const index = Reader_ReadUInt16(msgReader); dint const df = Reader_ReadPackedUInt32(msgReader); // Flags. LineSide *side = map.sidePtr(index); DENG2_ASSERT(side != 0); if (df & SIDF_TOP_MATERIAL) { dint matIndex = Reader_ReadPackedUInt16(msgReader); side->top().setMaterial(Cl_LocalMaterial(matIndex)); } if (df & SIDF_MID_MATERIAL) { dint matIndex = Reader_ReadPackedUInt16(msgReader); side->middle().setMaterial(Cl_LocalMaterial(matIndex)); } if (df & SIDF_BOTTOM_MATERIAL) { dint matIndex = Reader_ReadPackedUInt16(msgReader); side->bottom().setMaterial(Cl_LocalMaterial(matIndex)); } if (df & SIDF_LINE_FLAGS) { // The delta includes the entire lowest byte. dint lineFlags = Reader_ReadByte(msgReader); Line &line = side->line(); line.setFlags((line.flags() & ~0xff) | lineFlags, de::ReplaceFlags); } if (df & (SIDF_TOP_COLOR_RED | SIDF_TOP_COLOR_GREEN | SIDF_TOP_COLOR_BLUE)) { Vector3f newColor = side->top().color(); if (df & SIDF_TOP_COLOR_RED) newColor.x = Reader_ReadByte(msgReader) / 255.f; if (df & SIDF_TOP_COLOR_GREEN) newColor.y = Reader_ReadByte(msgReader) / 255.f; if (df & SIDF_TOP_COLOR_BLUE) newColor.z = Reader_ReadByte(msgReader) / 255.f; side->top().setColor(newColor); } if (df & (SIDF_MID_COLOR_RED | SIDF_MID_COLOR_GREEN | SIDF_MID_COLOR_BLUE)) { Vector3f newColor = side->middle().color(); if (df & SIDF_MID_COLOR_RED) newColor.x = Reader_ReadByte(msgReader) / 255.f; if (df & SIDF_MID_COLOR_GREEN) newColor.y = Reader_ReadByte(msgReader) / 255.f; if (df & SIDF_MID_COLOR_BLUE) newColor.z = Reader_ReadByte(msgReader) / 255.f; side->middle().setColor(newColor); } if (df & SIDF_MID_COLOR_ALPHA) { side->middle().setOpacity(Reader_ReadByte(msgReader) / 255.f); } if (df & (SIDF_BOTTOM_COLOR_RED | SIDF_BOTTOM_COLOR_GREEN | SIDF_BOTTOM_COLOR_BLUE)) { Vector3f newColor = side->bottom().color(); if (df & SIDF_BOTTOM_COLOR_RED) newColor.x = Reader_ReadByte(msgReader) / 255.f; if (df & SIDF_BOTTOM_COLOR_GREEN) newColor.y = Reader_ReadByte(msgReader) / 255.f; if (df & SIDF_BOTTOM_COLOR_BLUE) newColor.z = Reader_ReadByte(msgReader) / 255.f; side->bottom().setColor(newColor); } if (df & SIDF_MID_BLENDMODE) { side->middle().setBlendMode(blendmode_t(Reader_ReadInt32(msgReader))); } if (df & SIDF_FLAGS) { // The delta includes the entire lowest byte. dint sideFlags = Reader_ReadByte(msgReader); side->setFlags((side->flags() & ~0xff) | sideFlags, de::ReplaceFlags); } }