In this first article we will get to know the contact points. Contact points are  essential elements if you want to introduce automation and dynamism into your network. This is why it is essential to understand and master the different properties linked to the contact points.



To begin with, what is a contact point? A contact point is neither more nor less than an object or a marker placed in a strategic place on a traffic lane (rail, road, etc.) and linked to a very specific category of model such as a signal, a vehicle, switch, etc.

A contact point automates, controls, decides and creates an interaction between objects in order to trigger a particular event. It acts as a trigger when crossed by rolling stock.

What does it look like ? It is composed of 3 elements by default. A central circle and two triangles in the 2D view. In the 3D view, the circle is represented by a sphere and the triangles by two flat-topped triangles:

Point de contact 2D
contact point in 2D view
contact point in 3D view

When to create it? Whenever you need to trigger an action. For example :

  1. Pass a signal from green to red
  2. Close a level crossing,
  3. switch a turnout,
  4. Trigger a sound event,
  5. Turn on or off the lights in buildings,
  6. Activate a camera,
  7. Etc…

Where to place it in the network? On all communication path (railways, roads, invisible track, etc.).

In EEP, no less than 11 specific classes of contacts exist and correspond to as many different model categories. Here is the list :

  1. Signal,
  2. Switch (turnout) / TJD / ​​TJS,
  3. sound event,
  4. Vehicle,
  5. Camera,
  6. Structure,
  7.  group contact,
  8. animated characters,
  9. Virtual deposit entry,
  10. Virtual depot exit,
  11. Animation.

In the remainder of the article, we will intentionally leave out the contact points for Group Contact  and Virtual Depot Exit, as they will be covered last.

Presentation of the contact points

Each contact class ( type ) has its own color. To help us recognize them at first glance, let’s look at the 2D window below:

Contact point images in the 2D window
Visuel 2D des différentes classes de contacts

And now in the 3D window:

Contact point images in the 3D window
Visuel 3D des différentes classes de contacts

Here is the summary list of the contacts and their colors :

  1. Signal = red,
  2. Switch (turnouts) / TJD / ​​TJS = olive-green,
  3. Sound event = Yellow,
  4. Vehicle = purple,
  5. Camera = light green,
  6. Structure = light pink,
  7. Animated characters (omegas) = ​​blue,
  8. Virtual depot entrance = ocher (in the form of a small locomotive)
  9. Animation = sky blue.

Before learning how to create and place contacts on traffic lanes to interact with objects, we will discover together the common properties of contact points.

Properties common to contact points

It is important to understand that the different categories of contacts contain, on the one hand, many properties that are identical and common to all contacts relating to triggering and, on the other hand, properties specific to each class.

For the sake of simplicity, we’ll start by learning about the common properties of contacts. We will see in a second article the specific properties according to the category of the contact studied during the creation and the installation on the traffic lanes.

Discovery of the common properties

Image common properties of contact points
Propriétés communes

This image shows us an overview of the common properties regardless of the contact category chosen.

A few minor differences exist in the common properties. Below is a table summarizing the properties according to the different contact classes:

Lists of properties common to the contact points
Properties common to contact points

This table summarizes all the common properties according to the class of the contact point. We can notice that the Lighting property concerning vehicles is not implemented. Let us be reassured! it does exist, but as a specific property.

We will now detail each property.

Normal direction & Opposite direction

These two properties refer to the direction of movement of the rolling stock. Concretely, if one or both of these boxes are checked, the actions defined in the contact point will be executed according to the rolling direction of the vehicle itself determined by the laying direction of the track. We can never repeat it enough, but the laying direction of the track is important for several obvious reasons:

  1. Discern the direction of activation of the contact points,
  2. Facilitate the correct installation of signs,
  3. To establish and ensure a logic of vehicle circulation,
  4. A well-designed track plan allows for better readability,
  5. For your EEP network, look at and get inspired as much as possible by real-life track plans…

To know the laying direction of the track in EEP, nothing could be easier. Take a close look at the image below, the flow direction is from left to right :

Sens de la gauche vers la droite
Left to right direction

The green triangle at the beginning on the left indicates the direction of movement of the trains and the green circle on the right indicates the end of the track.

In the image below, the flow direction is from right to left :

Sens de la droite vers la gauche
Right to left direction

The green triangle on the right indicates the direction of movement of the trains and the green circle on the left indicates the end of the track. Here we easily notice the reverse direction of circulation.

We can therefore deduce that the two properties Normal direction & Opposite direction are closely linked to the direction of circulation. The image below demonstrates this :

Image contact point normal direction
Normal direction and opposite direction triggering

Here in this example, each time a vehicle crosses the contact point in either directions, the various actions related to the other programmed properties will be executed.

What if we only want triggering in the normal flow direction? Just check the Normal direction (direction one) box and uncheck the Opposite direction (direction two) box. Example :

Image contact point normal direction
Déclenchement sens normal seulement

What do we notice? the small purple triangle on the right symbolizing the opposite direction has disappeared. This time, the various actions related to the properties inside the contact point will no longer be triggered in both directions of circulation but only in one, in this case the normal direction. One could, for example, completely ignore an action such as switching a signal or a turnout if a train is coming in the opposite direction, but allow it in the normal direction.

The base of the small triangle in relation to the direction of traffic of the lane always indicates in which direction the triggering will take place. If you uncheck both boxes, no trigger will occur when the vehicle crosses the contact !

End of train (vehicle)

As the wording suggests, triggering will only occur when the last car in a train or the last vehicle in a convoy passes the contact point.

A typical scenario concerns the release of a track section. To free a previously occupied block, you must wait for the last car to pass in front of signal N to free blocks N-1 and N-2. Indeed, if this option was not checked, the locomotive would trigger the contact point and pass the signal of block N-1 on warning and N-2 on Clear Track. Another example concerns the opening of a level crossing after a train has passed. You have to wait for the last car to cross the contact point to start raising the barriers.

Automatic or manual operation

This checkbox is a bit special because it has three different states. Below, in images, the three possible states :

Image automatic or manual mode
Mode automatique OU manuel

With a cross in the check box, the contact will be triggered regardless of the automatic or manual driving mode.

Image automatic mode
Mode automatique

With a checkmark in the checkbox, the contact will be triggered only in automatic driving mode.

Image manual mode
Mode manuel

With an empty checkbox, the contact will be triggered only in manual driving mode.

The contact will be triggered according to the chosen mode. The ability to choose between automatic and/or manual modes has been made possible since EEP15.


Lighting concerns vehicle lights and more generally all models for which light management has been implemented. This checkbox also has three different states :

  1. If the box is checked with a cross, EEP will randomly choose to turn the lights on or off,
  2. If the box is marked with a checkmark, the vehicle’s lights will come on when it passes the contact,
  3. If the box is empty, the vehicle’s lights will turn off when it passes the contact.

An example of use would be to turn off the lights of a car once it has entered its garage. It would suffice to put a vehicle contact point at the back of the garage and uncheck the box. When the vehicle passes the contact point, the car lights will turn off automatically.

Delay operation

Here is an option which can prove to be very useful in certain situations because it allows delaying the triggering of the contact according to a value expressed in seconds. Continuing the example above, once the car has entered the garage and stopped, you can decide to turn off the garage light after 15 or 20 seconds from a contact point for structures.

Offset trigger spot

It is the distance traveled by a vehicle after passing over the contact point before the action is triggered (the admissible range is between 0 and 999 meters).

Every (Counter)

With the Every property, you can trigger the contact each time a vehicle passes or only on the 2nd, 3rd, etc. This property is useful if an action does not need to be repeated systematically each time. crossing the point of contact. If you enter the value 0, the contact will be triggered randomly. An example of application would be sounding a train whistle from time to time.

The Counter property indicates the number of iterations remaining before the contact is triggered. For example, if you entered the number 3 in the Every property :

  1. On the first passage of the rolling stock over the contact, it will not be triggered but the counter will be decremented by one iteration and will be equal to 2,
  2. On the second pass of the rolling stock over the contact, it will still not trip but the counter will be decremented by another iteration and will be equal to 1,
  3. On the third pass, the contact will be triggered and the counter will be decremented by another iteration to equal 0.

Route for / not for

This property is part of the positive or negative logical conditions for routes. In EEP, you can assign a particular route to any driving vehicle. So when it crosses a contact point, you can decide whether or not this contact point will react only for a specific route.

For example, you have created the routes Trip A, Trip B, Trip C, you can authorize the triggering of a contact only for the Trip B itinerary by programming For Trip B. In this case Trip A and Trip C will be ignored. This is the positive logical condition.

Conversely, you can authorize the triggering of a contact if it does not correspond to the Trip B route by programming Not for Trip B. In this case, Trip A or Trip C will be accepted. This is the negative logical condition.

The default is All which means the contact will react to all existing routes in a network.

Obviously, all this only makes sense if one or more vehicles are previously assigned to a route. This is the purpose of the following properties for the logical conditions of vehicles.

Train or vehicle for / not for

Same as the previous property but for trains or vehicles. Used alone or in conjunction with the Route For/Not For property above, this property allows you to define which vehicle should or should not trigger the contact.

Filter name

In the Trains or vehicles drop-down list, you must choose the All option in order to use this useful property for large networks… or smaller! If a vehicle is selected, the input box for the filter will be grayed out.

Once the All option is active, you can enter the name (even partial) preceded by the # sign of a train or a vehicle which should trigger the contact. You may be thinking why enter the name of a vehicle when it is possible to choose one from the drop-down list of vehicles? You are right, except that here the contact can be triggered by a panel of vehicles named partially identically and not necessarily by the All option or only by a selected vehicle.

Here are some examples where this property demonstrates its full potential:

  1. Do you have several wagons named Coal_1, Coal_2, Coal_3, Coal_4 ? enter #Coal or #coal or #Coa in the filter box to trigger contact only with coal wagons,
  2. Do you have several buses named Bus_Ligne1, Bus_Ligne15, Bus_Ligne17, Bus_Paris ? enter #Bus_L in the filter box to trigger contact only with buses marked with a line number. The bus to Paris will not be taken into account,
  3. You have several locomotives named Lok_1, Lok_10, Lok_11, enter #Lok_1 in the filter box to trigger the contact only with all the locomotives whose name starts with Lok_1 (in our example, the three locomotives are candidates to trigger the contact),
  4. If you have a single train named TER_Paris, entering #TER_Paris in the filter box makes no sense unless you have multiple trains named TER_Paris. To select specific rolling stock, the Trains or vehicles drop-down list is there for that.

Information : For the sake of simplicity, it is advisable to name each vehicle deposited on your network. You are completely free to name your rolling stock (city, type, function, etc.), but short and clear words will save you valuable research time when your network begins to grow.

If you have several vehicles performing the same function and from the same family, it may be wise to name them identically by adding a sequential number separated by an underscore as in the examples above.

Important : EEP gives us flexibility because the filter is case-insensitive. #BUS or #bus or #BuS will trigger the contact if the vehicle name begins with Bus.

If signal/ turnout

This property establishes a positive or negative logical condition with another signal or turnout. Of course, the related signal or turnout must exist in your layout.

In the example below, we will relate another signal called Invisible signal with speed control in the properties of an already linked contact point with a classic two-position signal (clear and stop).

To start, you need to know the ID number of the signal to be related to create the logical condition with the contact point. To find this number, nothing could be easier, just display the properties window of the signal concerned as in the image below :

In the properties window of a signal, the ID number always appears in the header. Here it is number 2.

In the property of our contact point we will enter the number 2 and see what changes (you can ignore the 0 which precedes the ID number) :

It is easy to understand the link between signal n° 2 and the point of contact of signal n° 5. Indeed, we find on both sides exactly the same options concerning the maximum speed fixed here at 60 km/h .

Simply filling in the signal number allows the contact point to retrieve all signal options.

The purpose is as follows: when a locomotive crosses contact point n° 5, the Clear track option (in the Position property at the bottom of the window) will be executed if and only if the speed of signal n° 2 is equal at 60 km/h. If the speed option is different, this condition will be purely and simply ignored.

Another logical condition would be to associate the position of a switch to manage the approach speed of a train in the station. For example, if the switch pointer is deviated, then the speed of a signal could be set to 30 km/h in order to slow down the train before coming to a complete stop at the station in front of another signal defined on the position Stop.

This property has a positive condition with the keyword Is or a negative condition with the second keyword Is not.

The combinations are almost endless as the diversity of options in the signals is great, which would exceed the scope of this article.

Lua function

A Lua function is a piece of script written in the Lua language that allows you to perform various targeted actions and go much further in the management of objects in EEP. We will see in other articles how to implement all these mechanisms.

The basic lua function looks like this:

					function My_Function()

    -- Code...

Remember for the moment two important things for this property :

  1. If you enter the name of a function in a contact point, it must imperatively exist in the Lua editor, otherwise EEP will return an error message,
  2. In the input box enter only the name of the function WITHOUT the brackets!

Time from / Time to

These two properties correspond respectively to the beginning and the end of the activation time during which the contact point will remain active. This allows you to define a time range based on EEP time and not on your computer’s system time.

For example if you set a start time at 08:00:00 and an end time at 09:00:00, the contact point properties will be executed only inside this time range, i.e. say for an hour.

Conversely, if the start time is greater than the end time, for example 10:00:00 for the start time and 08:00:00 for the end time, the time range will have a total duration from 22 houes because it will be spread over two days from 1o am one day 1 to 8 am on day 2.

For example, you can program a night schedule for freight trains knowing that these mainly run at night.

Buttons common to contacts

All contacts have the same buttons :

Image list of contact point buttons

In order :

  1. Tip text : Click this button to display a window to enter your text. You can adjust the colors and format the text,
  2. Delete contact : if you want to delete a contact, click on this button. Deleting the contact does not delete the object to which it is associated.
  3. OK : validates the parameters,
  4. Cancel : Cancels all modifications since the window was last displayed.


In this first part, we have just discovered the properties common to the contact points. In the deuxième partie, we will study each class or type of contact with their specific properties.

This article is now complete. If you have any questions or suggestions, please give us your feedback in the leave a reply input box below.

Thank you for your helpful comments. Have fun reading an other article. team

This article was translated by Pierre for the English side of the EEP-World from the article written by Domi for the French side of the EEP-World.

Leave a Reply