public void AddColShape(CollisionShape element) { switch (element) { case CollisionCircle collisionCircle: packet.AddColCircle(collisionCircle.Id, (byte)collisionCircle.ElementType, collisionCircle.Parent?.Id ?? 0, collisionCircle.Interior, collisionCircle.Dimension, null, collisionCircle.AreCollisionsEnabled, collisionCircle.IsCallPropagationEnabled, new CustomData(), collisionCircle.Name, collisionCircle.TimeContext, (byte)ColShapeType.Circle, collisionCircle.Position, collisionCircle.IsEnabled, collisionCircle.AutoCallEvent, collisionCircle.Radius ); break; case CollisionCuboid collisionCuboid: packet.AddColCuboid(collisionCuboid.Id, (byte)collisionCuboid.ElementType, collisionCuboid.Parent?.Id ?? 0, collisionCuboid.Interior, collisionCuboid.Dimension, null, collisionCuboid.AreCollisionsEnabled, collisionCuboid.IsCallPropagationEnabled, new CustomData(), collisionCuboid.Name, collisionCuboid.TimeContext, (byte)ColShapeType.Cuboid, collisionCuboid.Position, collisionCuboid.IsEnabled, collisionCuboid.AutoCallEvent, collisionCuboid.Dimensions ); break; case CollisionRectangle collisionRectangle: packet.AddColRectangle(collisionRectangle.Id, (byte)collisionRectangle.ElementType, collisionRectangle.Parent?.Id ?? 0, collisionRectangle.Interior, collisionRectangle.Dimension, null, collisionRectangle.AreCollisionsEnabled, collisionRectangle.IsCallPropagationEnabled, new CustomData(), collisionRectangle.Name, collisionRectangle.TimeContext, (byte)ColShapeType.Rectangle, collisionRectangle.Position, collisionRectangle.IsEnabled, collisionRectangle.AutoCallEvent, collisionRectangle.Dimensions ); break; case CollisionSphere collisionShpere: packet.AddColSphere(collisionShpere.Id, (byte)collisionShpere.ElementType, collisionShpere.Parent?.Id ?? 0, collisionShpere.Interior, collisionShpere.Dimension, null, collisionShpere.AreCollisionsEnabled, collisionShpere.IsCallPropagationEnabled, new CustomData(), collisionShpere.Name, collisionShpere.TimeContext, (byte)ColShapeType.Sphere, collisionShpere.Position, collisionShpere.IsEnabled, collisionShpere.AutoCallEvent, collisionShpere.Radius ); break; case CollisionTube collisionTube: packet.AddColTube(collisionTube.Id, (byte)collisionTube.ElementType, collisionTube.Parent?.Id ?? 0, collisionTube.Interior, collisionTube.Dimension, null, collisionTube.AreCollisionsEnabled, collisionTube.IsCallPropagationEnabled, new CustomData(), collisionTube.Name, collisionTube.TimeContext, (byte)ColShapeType.Tube, collisionTube.Position, collisionTube.IsEnabled, collisionTube.AutoCallEvent, collisionTube.Radius, collisionTube.Height ); break; case CollisionPolygon collisionPolygon: packet.AddColPolygon(collisionPolygon.Id, (byte)collisionPolygon.ElementType, collisionPolygon.Parent?.Id ?? 0, collisionPolygon.Interior, collisionPolygon.Dimension, null, collisionPolygon.AreCollisionsEnabled, collisionPolygon.IsCallPropagationEnabled, new CustomData(), collisionPolygon.Name, collisionPolygon.TimeContext, (byte)ColShapeType.Polygon, collisionPolygon.Position, collisionPolygon.IsEnabled, collisionPolygon.AutoCallEvent, collisionPolygon.Vertices ); break; } }