import "networkbasetypes.proto";

enum ETEProtobufIds {
	TE_EffectDispatchId = 400;
	TE_ArmorRicochetId = 401;
	TE_BeamEntPointId = 402;
	TE_BeamEntsId = 403;
	TE_BeamPointsId = 404;
	TE_BeamRingId = 405;
	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_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 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 int32 entity = 3 [default = -1];
	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 [default = 16777215];
	optional fixed32 otherentity = 6 [default = 16777215];
	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 [default = 0];
}

message CMsgTEEffectDispatch {
	optional .CMsgEffectData effectdata = 1;
}

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

message CMsgTEFizz {
	optional int32 entity = 1 [default = -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 flags = 3;
	optional .CMsgVector normal = 4;
	optional uint32 radius = 6;
	optional uint32 magnitude = 7;
	optional bool affect_ragdolls = 9;
	optional string sound_name = 10;
	optional uint32 explosion_type = 11;
	optional uint32 explosion_type_name = 15 [default = 0];
	optional bool create_debris = 12;
	optional .CMsgVector debris_origin = 13;
	optional fixed32 debris_surfaceprop = 14;
}

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 [default = 0];
	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;
	optional .CMsgVector dmgpos = 11;
	optional .CMsgVector dmgdir = 12;
	optional int32 dmgtype = 13;
}

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

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