private void UpdateNode(ref CollisionCheckForwardNode node) { var tr = node.Tr; if (tr == null) { node.Forward.LastPos = null; return; } if (Raycast(node.Entity, new Ray(tr.position, tr.forward), node.Forward.RayDistance, false) != null) { node.Forward.LastPos = tr.position; return; } if (node.Forward.LastPos != null) { var backwardDir = (tr.position - node.Forward.LastPos.Value); Raycast(node.Entity, new Ray(node.Forward.LastPos.Value, backwardDir.normalized), backwardDir.magnitude, false); } node.Forward.LastPos = tr.position; }
public CollisionCheckSystem() { NodeFilter <CollisionCheckForwardNode> .Setup(CollisionCheckForwardNode.GetTypes()); _list = EntityController.GetNodeList <CollisionCheckForwardNode>(); }