Class PhysSceneNode
Namespace: ValveResourceFormat.Renderer.Editor.Collision
Assembly: Renderer.dll
The shapes of one group of collision, which the editor draws to show what collides, as Hammer does with its "Show collision models" toggle, colored by the kind of shape. A group built from a tools material, such as a clip, shows that material instead, see ShapeSceneNode.ToolsMaterial.
public class PhysSceneNode : ShapeSceneNodeInheritance
object ← SceneNode ← ShapeSceneNode ← PhysSceneNode
Inherited Members
ShapeSceneNode.IsTranslucent, ShapeSceneNode.IsTranslucentRenderMode, ShapeSceneNode.HemisphereVerts, ShapeSceneNode.HemisphereTriangles, ShapeSceneNode.CapsuleTriangles, ShapeSceneNode.BoxLineVertexCount, ShapeSceneNode.shader, ShapeSceneNode.indexCount, ShapeSceneNode.vao, ShapeSceneNode.Shaded, ShapeSceneNode.IsDoubleSided, ShapeSceneNode.OrderIndependentFillAlpha, ShapeSceneNode.ToolsMaterial, ShapeSceneNode.SetRenderMode(string), ShapeSceneNode.SetToolsMaterial(string), ShapeSceneNode.AddCapsule(List<SimpleVertexNormal>, List<int>, Vector3, Vector3, float, Color32), ShapeSceneNode.GetOrthogonal(Vector3), ShapeSceneNode.GetOrthogonal(Vector3, Vector3), ShapeSceneNode.AddHemisphere(List<SimpleVertexNormal>, List<int>, Vector3, float, Vector3, Color32), ShapeSceneNode.AddCapsuleLines(List<int>, int), ShapeSceneNode.AddSphereLines(List<int>, int), ShapeSceneNode.AddBox(List<SimpleVertexNormal>, List<int>, Vector3, Vector3, Color32), ShapeSceneNode.AddSphere(List<SimpleVertexNormal>, List<int>, Vector3, float, Color32), ShapeSceneNode.AddTriangle(List<int>, int, int, int, int), ShapeSceneNode.AddLine(List<SimpleVertex>, Vector3, Vector3, Color32), ShapeSceneNode.AddBox(List<SimpleVertex>, in AABB, Color32), ShapeSceneNode.AddSphere(List<SimpleVertex>, Vector3, float, Color32), ShapeSceneNode.Render(Scene.RenderContext), ShapeSceneNode.GetSupportedRenderModes(), SceneNode.Tint, SceneNode.Alpha, SceneNode.TintAlpha, SceneNode.Transform, SceneNode.LayerName, SceneNode.LayerEnabled, SceneNode.Visible, SceneNode.BoundingBox, SceneNode.LocalBoundingBox, SceneNode.Name, SceneNode.Id, SceneNode.IsPointMarker, SceneNode.Flags, SceneNode.AdditionalFlags, SceneNode.RenderPasses, SceneNode.UpdateBuffers(Camera), SceneNode.Scene, SceneNode.KeepsMarkerSize, SceneNode.Parent, SceneNode.Children, SceneNode.ParentAttachment, SceneNode.LocalTransform, SceneNode.SetParent(SceneNode?, string?, Matrix4x4?), SceneNode.GetChildFrame(string?), SceneNode.UpdateHierarchy(Scene.UpdateContext), SceneNode.GetRigidTransform(Matrix4x4), SceneNode.ShaderEnvMapVisibility, SceneNode.LightingOrigin, SceneNode.OverlayRenderOrder, SceneNode.CubeMapPrecomputedHandshake, SceneNode.LightProbeVolumePrecomputedHandshake, SceneNode.LightProbeBinding, SceneNode.EnvMapBinding, SceneNode.EntityData, SceneNode.EntityInstance, SceneNode.Update(Scene.UpdateContext), SceneNode.Simulation, SceneNode.Render(Scene.RenderContext), SceneNode.GetSupportedRenderModes(), SceneNode.SetRenderMode(string), SceneNode.Delete(), SceneNode.GetCameraDistance(Camera)
Properties
CollisionAttributeIndex
Gets the index into PhysAggregateData.CollisionAttributes of the group this node draws.
public required int CollisionAttributeIndex { get; init; }Property Value
int
CollisionLabels
Gets what the shapes collide as, see PhysSceneNode.GetCollisionLabels(KVObject).
public required string[] CollisionLabels { get; init; }Property Value
string[]
Enabled
Gets or sets whether this physics node is individually enabled for rendering.
public bool Enabled { get; set; }Property Value
bool
IsDoubleSided
Gets whether this shape draws its back faces when translucent.
protected override bool IsDoubleSided { get; }Property Value
bool
LayerEnabled
Gets or sets whether this node's layer is enabled. Queues a rebuild on the parent spatial structure.
public override bool LayerEnabled { get; }Property Value
bool
Physics
Gets the physics this node was built from.
public required PhysAggregateData Physics { get; init; }Property Value
Methods
Create(Scene, PhysAggregateData, string?, Func<int, string?>?)
Creates the nodes of each group of collision. A large mesh is split into several nodes along its collision tree.
public static List<PhysSceneNode> Create(Scene scene, PhysAggregateData phys, string? name, Func<int, string?>? groupToolsMaterial = null)Parameters
scene Scene
The scene the nodes are for, which they are not added to.
phys PhysAggregateData
The collision.
name string?
What the nodes are named.
groupToolsMaterial Func<int, string?>?
The tools material a group, by its index into PhysAggregateData.CollisionAttributes, was built from, or null for plain collision. All groups are plain collision without it.
Returns
GetCollisionLabels(KVObject)
Gets what a group of collision collides as, which the collision drawn is chosen by: a label for each of its interact-as tags, or for its collision group when it has none, and under each, as a path such as default/not player, what it does not collide with.
public static string[] GetCollisionLabels(KVObject attributes)Parameters
attributes KVObject
The collision attributes of the group.
Returns
string[]
The labels, at least one.

