void testNearbyT(RotatableNode sourceNode) { switch(pillarState) { case PillarStateTypes.A: if(sourceNode!= null) { if(rightNode!=null)if(sourceNode!=rightNode) rightNode.TryConnectPath(this); if(bottomNode!=null)if(sourceNode!=bottomNode) bottomNode.TryConnectPath(this); if(leftNode!=null)if(sourceNode!=leftNode) leftNode.TryConnectPath(this); } else { if(rightNode!=null)rightNode.TryConnectPath(this); if(bottomNode!=null)bottomNode.TryConnectPath(this); if(leftNode!=null)leftNode.TryConnectPath(this); } break; case PillarStateTypes.B: if(sourceNode!= null) { if(upNode!=null)if(sourceNode!=upNode) upNode.TryConnectPath(this); if(bottomNode!=null)if(sourceNode!=bottomNode) bottomNode.TryConnectPath(this); if(leftNode!=null)if(sourceNode!=leftNode) leftNode.TryConnectPath(this); } else { if(upNode!=null)upNode.TryConnectPath(this); if(bottomNode!=null)bottomNode.TryConnectPath(this); if(leftNode!=null)leftNode.TryConnectPath(this); } break; case PillarStateTypes.C: if(sourceNode!= null) { if(rightNode!=null)if(sourceNode!=rightNode) rightNode.TryConnectPath(this); if(upNode!=null)if(sourceNode!=upNode) upNode.TryConnectPath(this); if(leftNode!=null)if(sourceNode!=leftNode) leftNode.TryConnectPath(this); } else { if(rightNode!=null)rightNode.TryConnectPath(this); if(upNode!=null)upNode.TryConnectPath(this); if(leftNode!=null)leftNode.TryConnectPath(this); } break; case PillarStateTypes.D: if(sourceNode!= null) { if(rightNode!=null)if(sourceNode!=rightNode) rightNode.TryConnectPath(this); if(upNode!=null)if(sourceNode!=upNode) upNode.TryConnectPath(this); if(bottomNode!=null)if(sourceNode!=bottomNode) bottomNode.TryConnectPath(this); } else { if(rightNode!=null)rightNode.TryConnectPath(this); if(upNode!=null)upNode.TryConnectPath(this); if(bottomNode!=null) bottomNode.TryConnectPath(this); } break; } }
public void TryConnectPath(RotatableNode sourceNode) { switch(nodeType) { case NodeType.I: switch(pillarState) { case PillarStateTypes.A: if(sourceNode == bottomNode) Connect(true); break; case PillarStateTypes.B: if(sourceNode == leftNode) Connect(true); break; case PillarStateTypes.C: if(sourceNode == upNode) Connect(true); break; case PillarStateTypes.D: if(sourceNode == rightNode) Connect(true); break; } break; case NodeType.L: switch(pillarState) { case PillarStateTypes.A: if(sourceNode == upNode || sourceNode == rightNode) Connect(true); break; case PillarStateTypes.B: if(sourceNode == rightNode || sourceNode == bottomNode) Connect(true); break; case PillarStateTypes.C: if(sourceNode == bottomNode || sourceNode == leftNode) Connect(true); break; case PillarStateTypes.D: if(sourceNode == leftNode || sourceNode == upNode) Connect(true); break; } if(nodeState == NodeState.Connected) testNearbyL(sourceNode); break; case NodeType.T: switch(pillarState) { case PillarStateTypes.A: if(sourceNode == leftNode || sourceNode == rightNode || sourceNode == bottomNode || sourceNode == null) Connect(true); break; case PillarStateTypes.B: if(sourceNode == leftNode || sourceNode == upNode || sourceNode == bottomNode|| sourceNode == null) Connect(true); break; case PillarStateTypes.C: if(sourceNode == leftNode || sourceNode == rightNode || sourceNode == upNode|| sourceNode == null) Connect(true); break; case PillarStateTypes.D: if(sourceNode == upNode || sourceNode == rightNode || sourceNode == bottomNode|| sourceNode == null) Connect(true); break; } if(nodeState == NodeState.Connected) testNearbyT(sourceNode); break; } }
protected override void Awake() { base.Awake(); fireParticles.AddRange(GetComponentsInChildren<ParticleSystem>()); fireLight = GetComponentInChildren<Light>(); rotation = transform.localRotation.eulerAngles; targetRotation = transform.localRotation.eulerAngles; if(leftTransform) leftNode = leftTransform.GetComponent<RotatableNode>(); if(rightTransform) rightNode = rightTransform.GetComponent<RotatableNode>(); if(upTransform) upNode = upTransform.GetComponent<RotatableNode>(); if(bottomTransform) bottomNode = bottomTransform.GetComponent<RotatableNode>(); neighborNodes.Add(leftNode); neighborNodes.Add(rightNode); neighborNodes.Add(upNode); neighborNodes.Add(bottomNode); }