StretchyTanks.StretchyTanks.updateSurfaceNode C# (CSharp) Method

updateSurfaceNode() public method

public updateSurfaceNode ( SurfaceNode node, Part p ) : void
node SurfaceNode
p Part
return void
        public virtual void updateSurfaceNode(SurfaceNode node, Part p)
        {
            if (node.yPos > 0)
            {
                p.transform.Translate(0f, (stretchFactor / node.prevFactor) * (node.yPos - node.rad) + node.rad - node.yPos, 0f, part.transform);
            }
            else
            {
                p.transform.Translate(0f, (stretchFactor / node.prevFactor) * (node.yPos + node.rad) - node.rad - node.yPos, 0f, part.transform);
            }
            node.prevFactor = stretchFactor;
            node.yPos = p.transform.localPosition.y;

            float radius = Mathf.Sqrt(node.xPos * node.xPos + node.zPos * node.zPos);
            float angle = Mathf.Atan2(node.xPos, node.zPos);
            float newRad = (radialFactor / node.prevRFactor) * (radius - node.rad) + node.rad - radius;
            p.transform.Translate(newRad * Mathf.Sin(angle), 0f, newRad * Mathf.Cos(angle), part.transform);
            node.xPos = p.transform.localPosition.x;
            node.zPos = p.transform.localPosition.z;
            node.prevRFactor = radialFactor;
        }