import "networkbasetypes.proto";

option optimize_for = SPEED;
option cc_generic_services = false;

enum ETEProtobufIds {
	TE_EffectDispatchId = 400;
	TE_ArmorRicochetId = 401;
	TE_BeamEntPointId = 402;
	TE_BeamEntsId = 403;
	TE_BeamPointsId = 404;
	TE_BeamRingId = 405;
	TE_BSPDecalId = 407;
	TE_BubblesId = 408;
	TE_BubbleTrailId = 409;
	TE_DecalId = 410;
	TE_WorldDecalId = 411;
	TE_EnergySplashId = 412;
	TE_FizzId = 413;
	TE_ShatterSurfaceId = 414;
	TE_GlowSpriteId = 415;
	TE_ImpactId = 416;
	TE_MuzzleFlashId = 417;
	TE_BloodStreamId = 418;
	TE_ExplosionId = 419;
	TE_DustId = 420;
	TE_LargeFunnelId = 421;
	TE_SparksId = 422;
	TE_PhysicsPropId = 423;
	TE_PlayerDecalId = 424;
	TE_ProjectedDecalId = 425;
	TE_SmokeId = 426;
}

message CMsgTEArmorRicochet {
	optional .CMsgVector pos = 1;
	optional .CMsgVector dir = 2;
}

message CMsgTEBaseBeam {
	optional fixed64 modelindex = 1;
	optional fixed64 haloindex = 2;
	optional uint32 startframe = 3;
	optional uint32 framerate = 4;
	optional float life = 5;
	optional float width = 6;
	optional float endwidth = 7;
	optional uint32 fadelength = 8;
	optional float amplitude = 9;
	optional fixed32 color = 10;
	optional uint32 speed = 11;
	optional uint32 flags = 12;
}

message CMsgTEBeamEntPoint {
	optional .CMsgTEBaseBeam base = 1;
	optional uint32 startentity = 2;
	optional uint32 endentity = 3;
	optional .CMsgVector start = 4;
	optional .CMsgVector end = 5;
}

message CMsgTEBeamEnts {
	optional .CMsgTEBaseBeam base = 1;
	optional uint32 startentity = 2;
	optional uint32 endentity = 3;
}

message CMsgTEBeamPoints {
	optional .CMsgTEBaseBeam base = 1;
	optional .CMsgVector start = 2;
	optional .CMsgVector end = 3;
}

message CMsgTEBeamRing {
	optional .CMsgTEBaseBeam base = 1;
	optional uint32 startentity = 2;
	optional uint32 endentity = 3;
}

message CMsgTEBSPDecal {
	optional .CMsgVector origin = 1;
	optional .CMsgVector normal = 2;
	optional .CMsgVector saxis = 3;
	optional uint32 entity = 4;
	optional uint32 index = 5;
}

message CMsgTEBubbles {
	optional .CMsgVector mins = 1;
	optional .CMsgVector maxs = 2;
	optional float height = 3;
	optional uint32 count = 4;
	optional float speed = 5;
}

message CMsgTEBubbleTrail {
	optional .CMsgVector mins = 1;
	optional .CMsgVector maxs = 2;
	optional float waterz = 3;
	optional uint32 count = 4;
	optional float speed = 5;
}

message CMsgTEDecal {
	optional .CMsgVector origin = 1;
	optional .CMsgVector start = 2;
	optional uint32 entity = 3;
	optional uint32 hitbox = 4;
	optional uint32 index = 5;
}

message CMsgEffectData {
	optional .CMsgVector origin = 1;
	optional .CMsgVector start = 2;
	optional .CMsgVector normal = 3;
	optional .CMsgQAngle angles = 4;
	optional fixed32 entity = 5;
	optional fixed32 otherentity = 6;
	optional float scale = 7;
	optional float magnitude = 8;
	optional float radius = 9;
	optional fixed32 surfaceprop = 10;
	optional fixed64 effectindex = 11;
	optional uint32 damagetype = 12;
	optional uint32 material = 13;
	optional uint32 hitbox = 14;
	optional uint32 color = 15;
	optional uint32 flags = 16;
	optional int32 attachmentindex = 17;
	optional uint32 effectname = 18;
	optional uint32 attachmentname = 19;
}

message CMsgTEEffectDispatch {
	optional .CMsgEffectData effectdata = 1;
}

message CMsgTEEnergySplash {
	optional .CMsgVector pos = 1;
	optional .CMsgVector dir = 2;
	optional bool explosive = 3;
}

message CMsgTEFizz {
	optional uint32 entity = 1;
	optional uint32 density = 2;
	optional int32 current = 3;
}

message CMsgTEShatterSurface {
	optional .CMsgVector origin = 1;
	optional .CMsgQAngle angles = 2;
	optional .CMsgVector force = 3;
	optional .CMsgVector forcepos = 4;
	optional float width = 5;
	optional float height = 6;
	optional float shardsize = 7;
	optional uint32 surfacetype = 8;
	optional fixed32 frontcolor = 9;
	optional fixed32 backcolor = 10;
}

message CMsgTEGlowSprite {
	optional .CMsgVector origin = 1;
	optional float scale = 2;
	optional float life = 3;
	optional uint32 brightness = 4;
}

message CMsgTEImpact {
	optional .CMsgVector origin = 1;
	optional .CMsgVector normal = 2;
	optional uint32 type = 3;
}

message CMsgTEMuzzleFlash {
	optional .CMsgVector origin = 1;
	optional .CMsgQAngle angles = 2;
	optional float scale = 3;
	optional uint32 type = 4;
}

message CMsgTEBloodStream {
	optional .CMsgVector origin = 1;
	optional .CMsgVector direction = 2;
	optional fixed32 color = 3;
	optional uint32 amount = 4;
}

message CMsgTEExplosion {
	optional .CMsgVector origin = 1;
	optional uint32 framerate = 2;
	optional uint32 flags = 3;
	optional .CMsgVector normal = 4;
	optional uint32 materialtype = 5;
	optional uint32 radius = 6;
	optional uint32 magnitude = 7;
	optional float scale = 8;
	optional bool affect_ragdolls = 9;
}

message CMsgTEDust {
	optional .CMsgVector origin = 1;
	optional float size = 2;
	optional float speed = 3;
	optional .CMsgVector direction = 4;
}

message CMsgTELargeFunnel {
	optional .CMsgVector origin = 1;
	optional uint32 reversed = 2;
}

message CMsgTESparks {
	optional .CMsgVector origin = 1;
	optional uint32 magnitude = 2;
	optional uint32 length = 3;
	optional .CMsgVector direction = 4;
}

message CMsgTEPhysicsProp {
	optional .CMsgVector origin = 1;
	optional .CMsgVector velocity = 2;
	optional .CMsgQAngle angles = 3;
	optional fixed32 skin = 4;
	optional uint32 flags = 5;
	optional uint32 effects = 6;
	optional fixed32 color = 7;
	optional fixed64 modelindex = 8;
	optional uint32 unused_breakmodelsnottomake = 9;
	optional float scale = 10;
}

message CMsgTEPlayerDecal {
	optional .CMsgVector origin = 1;
	optional uint32 player = 2;
	optional uint32 entity = 3;
}

message CMsgTEProjectedDecal {
	optional .CMsgVector origin = 1;
	optional .CMsgQAngle angles = 2;
	optional uint32 index = 3;
	optional float distance = 4;
}

message CMsgTESmoke {
	optional .CMsgVector origin = 1;
	optional float scale = 2;
}

message CMsgTEWorldDecal {
	optional .CMsgVector origin = 1;
	optional .CMsgVector normal = 2;
	optional uint32 index = 3;
}

