private void WhenDestroyed() //обнуляет переменные { points = new Vector2[2]; targetNode = null; answerNode = null; parentTargetNode = null; activateAnswer = false; destroyLine = false; detectedNodes.Clear(); }
private void Update() { if (Input.GetMouseButton(0)) //пока мышь нажата, просто прорисовываем линию следом за ней { if (startLine) { mousePosition = Camera.main.ScreenToWorldPoint((new Vector2(Input.mousePosition.x, Input.mousePosition.y))); points[0] = center; points[1] = (Vector2)(new Vector3(mousePosition.x, mousePosition.y, 0)); LineBehaviour(); } } if (Input.GetMouseButtonUp(0)) //если отпустить мышь { if (startLine) //если линия была "начата" { if (gameManager.inTarget) //если линия попала в какой-то узел { inNode = CheckTargetNode(detectedNodes); if (activateAnswer) { if (inNode != null) { answerNode = inNode.GetComponent <AnswerNodeScript>(); } else { answerNode = null; } if (answerNode != null && !answerNode.activate) { points[1] = answerNode.center; targetNodeIndex = answerNode.index; if (gameManager.CheckRepeatLine(parentNodeIndex, targetNodeIndex) != 1) { parentTargetNode.outLines.Add(this); //устанавливаем исходящую линию answerNode.inColors.Add(col); answerNode.col = MixColors(answerNode.inColors); answerNode.activate = true; gameManager.CheckGloworms(1); answerNode.CheckAnswer(); } else { destroyLine = true; } } } else { if (inNode != null) { targetNode = inNode.GetComponent <TargetNodeScript>(); //выбрать оптимальную TargetNode из задетых } else { targetNode = null; } if (targetNode != null && parentTargetNode != targetNode && CheckForLoops(parentTargetNode, targetNode) == 0) //если выбран узел и он не равен узлу, с которого мы начали, и мы не попадем в петлю { parentTargetNode.outLines.Add(this); //устанавливаем исходящую линию points[1] = targetNode.center; targetNodeIndex = targetNode.index; if (gameManager.CheckRepeatLine(parentNodeIndex, targetNodeIndex) != 1) //не повторяется ли линия { if (!targetNode.activate) //если к узлу еще не проводились линии { targetNode.activate = true; } StartCIC(targetNode, col, true); gameManager.CheckGloworms(1); } else { destroyLine = true; } } else { destroyLine = true; } } if (destroyLine) { DestroyLine(); } else { LineBehaviour(); this.gameObject.layer = 0; var lineData = new GameManager.LineData(this, parentNodeIndex, targetNodeIndex); gameManager.lines.Add(lineData); //if (parentTargetNode != null) //parentTargetNode.numOfLines++; gameManager.inTarget = false; } } else { DestroyLine(); } startLine = false; } } }