/// <summary> /// Sets the orientation of the clamp based on the surrounding neighbors /// </summary> public void SetRotation(Neuron.NodeData cellNodeData) { List <int> neighbors = cellNodeData.AdjacencyList.Keys.ToList(); // Get each neighbor's Vector3 value List <Vector3> neighborVectors = new List <Vector3>(); foreach (int neighbor in neighbors) { neighborVectors.Add(simulation.Verts1D[neighbor]); } Vector3 rotationVector; if (neighborVectors.Count == 2) { Vector3 clampToFirstNeighborVector = neighborVectors[0] - simulation.Verts1D[cellNodeData.Id]; Vector3 clampToSecondNeighborVector = neighborVectors[1] - simulation.Verts1D[cellNodeData.Id]; rotationVector = clampToFirstNeighborVector.normalized - clampToSecondNeighborVector.normalized; } else if (neighborVectors.Count > 0 && cellNodeData.Pid != -1) //Nodes with a Pid of -1 are somas { rotationVector = simulation.Verts1D[cellNodeData.Pid] - simulation.Verts1D[cellNodeData.Id]; } else { rotationVector = Vector3.up; //if a clamp has no neighbors or is soma it will use a default orientation of facing up } transform.parent.localRotation = Quaternion.LookRotation(rotationVector); }
/// <summary> /// Sets the design of the clamp based on whether it is on the soma /// </summary> private void CheckSoma(Neuron.NodeData cellNodeData) { if (somaClamp) { //Lowers the highlight radius highlightSphereScale = 1.1f; } }
/// <summary> /// Sets the radius and height of the clamp /// </summary> private void SetScale(Neuron.NodeData cellNodeData) { currentVisualizationScale = (float)simulation.VisualInflation; float radiusScalingValue = radiusRatio * (float)cellNodeData.NodeRadius; float heightScalingValue = heightRatio * simulation.AverageDendriteRadius; //Ensures clamp is always at least as wide as tall when Visual Inflation is 1 float radiusLength = Math.Max(radiusScalingValue, heightScalingValue) * currentVisualizationScale; //if (somaClamp) transform.parent.localScale = new Vector3(radiusLength, radiusLength, radiusLength); transform.parent.localScale = new Vector3(radiusLength, radiusLength, heightScalingValue); UpdateHighLightScale(transform.parent.localScale); }