Phys hinge: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
m (Robot: fixing template case.)
No edit summary
Line 1: Line 1:
{{wrongtitle|title=phys_hinge}}
{{toc-right}}
{{base_point}}


==Entity Description==
{{base_point}} A hinge [[:Category:Constraints|constraint]] which restricts rotation of its attached entities to a given axis. The axis is a line between the hinge's origin and the location of its Hammer [[helper]].


A physically simulated hinge, rotating entities around an axis. The axis is the line between the actual point entity and its origin as set in hammer, although it can also be set using the helper. This allows for, essentially, an infinite number of usable axes.
''Example map: sourcesdk_content\hl2\mapsrc\sdk_phys_hinge.vmf ''
 
Example: If the origin of a phys_hinge were to be dragged directly above the entity itself, the hinge axis would be a vertical line. If dragged to the side of the entity, the axis would be horizontal in whichever direction the origin were placed.
 
An entity can be set to rotate around a fixed point in the world by entering its name either in the ''attach1'' (''Entity 1'') or the ''attach2'' (''Entity 2'') keyvalue. It can also be set to rotate around another entity by specifying ''both'' of these fields, potentially creating a hinge that can be moved around in the world.
 
To set how tight these two objects will hinge together, you can apparently alter the ''Mass Scale'' keyvalue of the constrained entities. (If you come up with a better idea on how to do this, please add it.)


==Keyvalues==
==Keyvalues==


* {{KV TwoObjectPhysics}}
; hingefriction<[[float]]>  
* '''hingefriction'''
: Friction in hinge rotation
: <float> Resistance/friction in the hinge
; hingeaxis <vecline>
* '''hingeaxis'''
: Define the axis of the hinge by dragging the entity helper in Hammer's 2D views.
: <vecline>
; SystemLoadScale <float>
* '''SystemLoadScale'''
: Scale of the load connected to this hinge (1=just the objects directly connected)
: <float> Scale of the load connected to this hinge (1=just the objects directly connected)
: {{todo|What does this do? It doesn't seem to increase precision when heavy objects are attached.}}
{{KV TwoObjectPhysics}}


==Flags==
==Flags==


* {{Fl TwoObjectPhysics1}}
{{Fl TwoObjectPhysics}}
* {{Fl TwoObjectPhysics2}}


==Inputs==
==Inputs==


* {{I TwoObjectPhysics}}
; SetAngularVelocity <[[float]]>
* '''SetAngularVelocity <float>'''
: Turns the hinge into a motor. Pass a value of 0 to turn it off again. This can be useful to counteract gravity without increasing friction or creating another entity.
: Set angular velocity around the hinge (motor)
{{I TwoObjectPhysics}}


==Outputs==
==Outputs==


* {{O TwoObjectPhysics}}
{{O TwoObjectPhysics}}
 
{{wrongtitle|title=phys_hinge}}[[Category:Constraints|H]]

Revision as of 12:06, 13 June 2009

Template:Base point A hinge constraint which restricts rotation of its attached entities to a given axis. The axis is a line between the hinge's origin and the location of its Hammer helper.

Example map: sourcesdk_content\hl2\mapsrc\sdk_phys_hinge.vmf

Keyvalues

hingefriction<float>
Friction in hinge rotation
hingeaxis <vecline>
Define the axis of the hinge by dragging the entity helper in Hammer's 2D views.
SystemLoadScale <float>
Scale of the load connected to this hinge (1=just the objects directly connected)
Todo: What does this do? It doesn't seem to increase precision when heavy objects are attached.

TwoObjectPhysics:

Entity 1 (attach1) <targetname>
Entity 2 (attach2) <targetname>
The entities to constrain. Leave one or the other field blank to constrain to the world.
Note.pngNote:Only one entity will be constrained, even if several share the given targetname.
Constraint System Manager (constraintsystem) <targetname>
A phys_constraintsystem that this constraint should be a part of. This avoids the "jiggling" caused by constraints applied to the same set of entities fighting with each other.
Force Limit to Break (forcelimit) <float>
Impact force required to break the constraint, in pounds. 0 means infinite. A way of calculating this is to set it to the weight of an object that would break the constraint if it were resting on its objects.
Torque Limit to Break (torquelimit) <float>
Torque required to break the constraint, in pounds*inches. 0 means infinite. A way of calculating this is to multiply any reference mass by the resting distance (from the center of mass of the object) needed to break the constraint.
Play Sound on Break (breaksound) <string>
A sound played when the constraint is broken.
Follow teleport distance (teleportfollowdistance) <float>
If one constrained object teleports more than this many units away, the other will teleport with it.


Flags

No Collision until break : [1]
Start inactive : [4]
Change mass to keep stable attachment to world : [8]
Do not connect entities until turned on : [16]

Inputs

SetAngularVelocity <float>
Turns the hinge into a motor. Pass a value of 0 to turn it off again. This can be useful to counteract gravity without increasing friction or creating another entity.
TwoObjectPhysics:
Break
Force the constraint to break.
TurnOn
Enable the constraint; do this if the constrained objects don't exist when it spawns. Note that broken constraints cannot be turned back on as they have been deleted.
TurnOff
Disable the constraint.

Outputs

TwoObjectPhysics:
OnBreak
Fired when the constraint breaks.

Template:Wrongtitle