Panels

Panels are architectural elements used throughout . They are individually positioned so that, together, they form the test chamber. Because the panels are moved individually by robotic arms, the room can react to the player. They can form stairs, new ledges, open like doors, and tend to convey a sense that the room itself is alive.
== Creating Panels ==
1. Create a entity with the following settings:
::
Property Name	Value
World Model 	models/anim_wp/room_transform/arm64x64_interior.mdl
Name 	panel1
HoldAnimation	true
Collisions 	Not Solid
2. Create a 32Lx32Wx2H block brush above the model, in the space between the model and its origin. Tie it to a entity with the following settings:
::
Property Name	Value
Name 	panel1_brush
Parent 	panel1,panel_attach
4. Create a with the following settings:
::
Property Name	Value
Name 	relay_panel1_animation
and the following outputs:
::
	My Output	Target Entity	Target Input	Parameter 	Delay	Only Once
	OnTrigger	panel1 	SetAnimation	(ANIMATION NAME)	0.00 	Yes(?)
== List of Panel Models and Attachments ==
There are a number of other panel models in Portal 2 which can be used instead of the standard one. Make sure to use the corresponding attachment point name instead of panel_attach, if applicable. Models that do not animate can be placed as entities, which do not count towards the entity limit.
----
Model Path 	Animated	Panel Attachment Name
anim_wp\arm_interior_192\arm_interior_128.mdl 	Yes 	N/A
anim_wp\arm_interior_192\arm_interior_192.mdl 	Yes 	N/A
anim_wp\arm_interior_192\video_arm.mdl 	Yes 	monitor_attach
anim_wp\arm_interior_192\video_arm_big.mdl 	Yes 	monitor_attach
anim_wp\circle_shield\circle_shield.mdl 	Yes 	panel_top
anim_wp\framework\circle_shield_static.mdl 	No 	N/A
anim_wp\room_transform\arm64x64_interior.mdl 	Yes 	panel_attach
anim_wp\room_transform\arm64x64_interior_rusty.mdl 	Yes 	panel_attach
anim_wp\telescope_arm\telescope_arm.mdl 	Yes 	panel_top
anim_wp\telescope_arm_128\telescope_arm_128.mdl 	Yes 	panel_top
anim_wp\telescope_arm_128\telescope_arm_128_glass.mdl 	Yes 	panel_top
anim_wp\telescope_arm_128\telescope_arm_128_idle.mdl 	No 	N/A
anim_wp\telescope_arm_128\telescope_arm_128_upidle.mdl	No 	N/A
anim_wp\telescope_arm_128\telescope_arm_128x256.mdl 	Yes 	panel_top
anim_wp\telescope_arm_trans\telescope_arm_trans.mdl 	Yes 	panel_attach
props_livingwall\armliving64x64.mdl 	Yes 	panel_attach
anim_wp\arm_4panel.mdl 	Yes 	panel_attach
----
== Animation Playback Rate ==
Sometimes it might be required for an arm (or any other ) to play its animation faster or slower. The playback rate of a prop_dynamic entity is expressed in numbers as representation of percentage, where 1 is equivalent to 100%, 2 is 200%, 0.5 is 50%, 0 is 0% of the animation playback rate (note that 0 will stop the animation completely). There are two ways to change default playback rate.
The first method is easier and applied to all of animation of a particular prop_dynamic. The playback rate can be assigned to the arm, and this will have a constant effect on the arm's animations playback rate (it will always be playing any animations at that set rate). In order to do so, a new output need to be added in the arm's properties:
::
	My Output 	Target Entity	Target Input 	Parameter	Delay	Only Once
	OnAnimationBegun	!self 	SetPlaybackRate	5 	0.00 	No
The above output will make an arm to play all of its animations 5 times faster. !self is a special wildcard that selects the entity that is firing that output (the arm selects itself).
The second way of setting up the playback rate is more complex but also more flexible. The triggering entity (e.g., ) has to set the following outputs:
::
	My Output 	Target Entity	Target Input 	Parameter 	Delay	Only Once
	OnStartTouch	arm_0 	SetAnimation 	pitflings_angled_01	0.00 	No
	OnStartTouch	arm_0 	SetPlaybackRate	2 	0.01 	No
When triggered, the above setup will cause arm_0 to start animation. One hundredth second later, the animation playback will be increased to 200% (note that if both outputs were fired at the same time, the playback rate will remain at default—1).
== Powerup Panels ==
For some themes in , panels can be seen doing powerup animations—starting limp and lifeless, then "waking up" and moving back into their proper position. Done correctly, this can make your map feel far more dynamic and will look more realistic for the theme.
Creating these panels, however, is a little different from ordinary panels. This is how Valve does it:
1. Create a entity with the following settings:
::
Property Name 	Value
World Model 	models/anim_wp/room_transform/arm64x64_interior.mdl
Name 	panel1
HoldAnimation 	true
Collisions 	Not Solid
Default Animation	powerup(X_0Y)idleend
2. Create a brush above the model, making sure it fits the panel face and is aligned to it. Tie it to a entity with the following settings:
::
Property Name	Value
Name 	panel1_brush
Parent 	panel1,panel_attach
3. Create a entity and add the following outputs:
::
	My Output 	Target Entity	Target Input	Parameter 	Delay	Only Once
	OnMapSpawn	panel1 	SetAnimation	powerup(X_0Y)idle	0.50 	Yes(?)
4. Create a with the following settings:
::
Property Name	Value
Name 	relay_panel1_animation
and the following outputs:
::
	My Output	Target Entity	Target Input	Parameter 	Delay	Only Once
	OnTrigger	panel1 	SetAnimation	powerup(X_0Y)	0.00 	Yes(?)
Now just add a trigger somewhere and activate the relay. A works great for this.
The idle powerup animations are horribly off-grid in Hammer, and are therefore impossible to correctly parent the brush to.
By using this method, we can align the brush to the panel face in Hammer on-grid, but when the map spawns, it will move into an idle powerup animation, with the brush perfectly parented.
== See also ==
* Creating rotating panels
* Entity Hierarchy (parenting)
Category:Portal 2 Level DesignCategory:Portal 2 Tutorials