Skip to content

[mapping] Rotating Beams

Thanks to npocTo_LaM for this method ;) An example of these beams in use can be seen on the map 35hp_party_2 To create rotating beams we will need Env_beam (16 pcs.) Func_train (16 pcs.) Info_target (1 pc.) Path_corner (16 pcs.) Multi_manager (2 pcs.) Trigger_auto (1 pc.) How it works The beams…

Mapping·5 min read·SkripViews:30
Contents
  1. To create rotating beams we will need
  2. How it works
  3. Building the mechanism
rays

Thanks to npocTo_LaM for this method ;)
An example of these beams in use can be seen on the map 35hp_party_2

To create rotating beams we will need

  • Env_beam (16 pcs.)
  • Func_train (16 pcs.)
  • Info_target (1 pc.)
  • Path_corner (16 pcs.)
  • Multi_manager (2 pcs.)
  • Trigger_auto (1 pc.)

How it works

The beams are made with env_beam entities. The starting point of the beams will be an info_target entity, and the end points will be func_trains. The train moves along paths made of path_corners. But for the train, and therefore the beams, to move, the func_trains have to be activated. For that we will use a multi_manager that lists the names of the target trains. And to make our mechanism run on its own, we'll create a trigger_auto targeting the multi_manager. It's all very simple.

Abbreviations in Name/Target etc.:

l_start

Laser Start

lp_01

Laser Path_number

lt_01

Laser Train_number

l_start_mm

Laser Start MultiManager

Building the mechanism

1) First, we create the info_target entity. It will serve as the point the beams come out of (the start).

Parameters:

Info_target

Value

Name

l_start

2) We've created the start point. The next step is to create the paths for the beams. In our case the beams have to rotate in a circle. To place our paths more accurately, we create a cylinder. We only need the cylinder itself right now, and at the very end we'll definitely delete it. We'll place path_corner entities on the vertices of the cylinder.

rays1

Fig. 1 — creating the cylinder.

There are 16 vertices in total, so I want to use all of them.
We create the first path_corner with these parameters:

Parameters:

Path_corner

Value

//

Name

lp_01

Entity name

Next Stop target

lp_02

Name of the next path_corner

Accordingly, the next path_corner will have these parameters:

Path_corner

Value

Name

lp_02

Next Stop target

lp_03

In the end there are 16 path_corner objects. The last path_corner has these parameters:

Path_corner

Value

Name

lp_16

Next Stop target

lp_01

So we get a perpetual motion machine.

rays2

Fig. 2 — Placing path_corners on the vertices of the cylinder.

3) Let's send our train along the paths we've already created. It serves as a target; we'll use it to specify the end of the beam.

First we create a brush sized 16x16x16 units and cover it with the texture null. In the center of our brush we create another one sized 8x8x8 and apply the texture origin. We select the two brushes, turn them (Ctrl+T) into a func_train entity with these parameters:

Parameters:

Func_train

Value

//

Name

lt_01

Target name

Render Mode

Normal

Display mode

FX Ammount

0

Transparency. Fully transparent

First stop target

lp_01

Name of the corresponding Path_corner.

Speed

256

Speed. Units/s.

Sound volume

0.00001

Flags:

Flags

Not Solid

Makes the train non-solid

rays3

Fig. 3 — The first func_train target. The last object shows what the target train looks like in cross-section.

We do the same thing as with the paths (path_corner):

rays4

Fig. 4 — Placing func_trains opposite the path_corners.

rays4_1

Fig. 4.1 — Intermediate picture. Pay attention to the names of the func_trains.

4) Almost everything is ready to finish our mechanism, but where are the beams themselves? We've finally got to creating them. We'll use env_beam.
We create the first env_beam with these parameters:

Parameters:

Env_beam

Value

//

Start Entity

l_start

Target name (do not change)

Ending Entity

lt_01

The end of the beam. We point it at the corresponding target train.

Brightness

255

Brightness (0-255). Bright.

Beam Color

0 170 0

The color of the beams. RGB. The color of each beam is not restricted in any way.

Life

0

Beam lifetime in s. 0 – infinite time.

Width of beam (pixels*0.1) 0-255

20

Beam width. Pixels*0.1. In our case it comes out to 2 pixels.

Amount of noise

0

How much the beam is distorted (0 - 255).

Damage

0

Damage per second

Flags:

Flags

Start on

On at the start of the round (optional, since the beam has no name, so it's already on).

Fade Start

Fading at the start of the beam. We won't use it.

Fade End

Fading at the end of the beam.

We place all 16 env_beam objects opposite each target they refer to. This is for convenience; they can be placed in any order.

rays5

Fig. 5 — Placing the beams opposite their targets.

5) The final stage. To make our beams move, all the func_trains have to be activated. We'll use a multi_manager and a trigger_auto.
We create a trigger_auto with these parameters:

Parameters:

Trigger_auto

Value

//

Start Entity

l_start_mm

Name of the multi_manager

Trigger State

on

Trigger state

Flags:

Flags

Remove on fire

Untick the checkbox. Destroy the t_a object for all rounds.

Next step: we create 2 multi_managers with these parameters:

Parameters of the 1st mm:
To add new parameters, turn off the SmartEdit button

Multi_manager

Value

//

targetname

l_start_mm

Name of the multi_manager

lt_01

0

Activates the object after a delay.

lt_02

0

lt_03

0

lt_04

0

lt_05

0

lt_06

0

lt_07

0

lt_08

0

Parameters of the 2nd mm:
To add new parameters, turn off the SmartEdit button

Multi_manager

Value

//

targetname

l_start_mm

Name of the multi_manager

lt_09

0

lt_10

0

lt_11

0

lt_12

0

lt_13

0

lt_14

0

lt_15

0

lt_16

0

rays6

Fig. 6 — This is the picture we end up with:

Author: Skrip

Example map, source + tutorial in doc:
https://www.dropbox.com/s/1f1g507dvszf8w6/CSM.rar?dl=0