private void MessageTempEntity() { Byte type = bitBuffer.ReadByte(); switch (type) { // obsolete case 16: // TE_BEAM case 26: // TE_BEAMHOSE break; // simple coord format messages case 2: // TE_GUNSHOT case 4: // TE_TAREXPLOSION case 9: // TE_SPARKS case 10: // TE_LAVASPLASH case 11: // TE_TELEPORT Seek(6); break; case 0: // TE_BEAMPOINTS Seek(24); break; case 1: // TE_BEAMENTPOINT Seek(20); break; case 3: // TE_EXPLOSION Seek(11); break; case 5: // TE_SMOKE Seek(10); break; case 6: // TE_TRACER Seek(12); break; case 7: // TE_LIGHTNING Seek(17); break; case 8: // TE_BEAMENTS Seek(16); break; case 12: // TE_EXPLOSION2 Seek(8); break; case 13: // TE_BSPDECAL Seek(8); UInt16 entityIndex = bitBuffer.ReadUInt16(); if (entityIndex != 0) { Seek(2); } break; case 14: // TE_IMPLOSION Seek(9); break; case 15: // TE_SPRITETRAIL Seek(19); break; case 17: // TE_SPRITE Seek(10); break; case 18: // TE_BEAMSPRITE Seek(16); break; case 19: // TE_BEAMTORUS case 20: // TE_BEAMDISK case 21: // TE_BEAMCYLINDER Seek(24); break; case 22: // TE_BEAMFOLLOW Seek(10); break; case 23: // TE_GLOWSPRITE // SDK is wrong /* * write_coord() position * write_coord() * write_coord() * write_short() model index * write_byte() life in 0.1's * write_byte() scale in 0.1's * write_byte() brightness */ Seek(11); break; case 24: // TE_BEAMRING Seek(16); break; case 25: // TE_STREAK_SPLASH Seek(19); break; case 27: // TE_DLIGHT Seek(12); break; case 28: // TE_ELIGHT Seek(16); break; case 29: // TE_TEXTMESSAGE Seek(5); Byte textParmsEffect = bitBuffer.ReadByte(); Seek(14); if (textParmsEffect == 2) { Seek(2); } bitBuffer.ReadString(); // capped to 512 bytes (including null terminator) break; case 30: // TE_LINE case 31: // TE_BOX Seek(17); break; case 99: // TE_KILLBEAM Seek(2); break; case 100: // TE_LARGEFUNNEL Seek(10); break; case 101: // TE_BLOODSTREAM Seek(14); break; case 102: // TE_SHOWLINE Seek(12); break; case 103: // TE_BLOOD Seek(14); break; case 104: // TE_DECAL Seek(9); break; case 105: // TE_FIZZ Seek(5); break; case 106: // TE_MODEL // WRITE_ANGLE could be a short.. Seek(17); break; case 107: // TE_EXPLODEMODEL Seek(13); break; case 108: // TE_BREAKMODEL Seek(24); break; case 109: // TE_GUNSHOTDECAL Seek(9); break; case 110: // TE_SPRITE_SPRAY Seek(17); break; case 111: // TE_ARMOR_RICOCHET Seek(7); break; case 112: // TE_PLAYERDECAL (could be a trailing short after this, apparently...) Seek(10); break; case 113: // TE_BUBBLES case 114: // TE_BUBBLETRAIL Seek(19); break; case 115: // TE_BLOODSPRITE Seek(12); break; case 116: // TE_WORLDDECAL case 117: // TE_WORLDDECALHIGH Seek(7); break; case 118: // TE_DECALHIGH Seek(9); break; case 119: // TE_PROJECTILE Seek(16); break; case 120: // TE_SPRAY Seek(18); break; case 121: // TE_PLAYERSPRITES Seek(5); break; case 122: // TE_PARTICLEBURST Seek(10); break; case 123: // TE_FIREFIELD Seek(9); break; case 124: // TE_PLAYERATTACHMENT Seek(7); break; case 125: // TE_KILLPLAYERATTACHMENTS Seek(1); break; case 126: // TE_MULTIGUNSHOT Seek(18); break; case 127: // TE_USERTRACER Seek(15); break; default: throw new ApplicationException(String.Format("Unknown tempentity type \"{0}\".", type)); } }