Example #1
0
 public void SetDriver(IBipedDriver newDriver)
 {
     if (newDriver == driver)
     {
         return;
     }
     if (driver != null)
     {
         driver.onJump -= OnJump;
     }
     driver = newDriver;
     if (driver != null)
     {
         driver.onJump += OnJump;
     }
 }
    void Start()
    {
        if (rootNode == null)
        {
            rootNode = transform;
        }

        if (driver == null)
        {
            driver = GetComponentInParent <IBipedDriver>();
        }

        // Setup segments
        foreach (BendingSegment segment in segments)
        {
            Quaternion parentRot    = segment.firstTransform.parent.rotation;
            Quaternion parentRotInv = Quaternion.Inverse(parentRot);
            segment.referenceLookDir =
                parentRotInv * rootNode.rotation * headLookVector.normalized;
            segment.referenceUpDir =
                parentRotInv * rootNode.rotation * headUpVector.normalized;
            segment.angleH = 0;
            segment.angleV = 0;
            segment.dirUp  = segment.referenceUpDir;

            segment.chainLength = 1;
            Transform t = segment.lastTransform;
            while (t != segment.firstTransform && t != t.root)
            {
                segment.chainLength++;
                t = t.parent;
            }

            segment.origRotations = new Quaternion[segment.chainLength];
            t = segment.lastTransform;
            for (int i = segment.chainLength - 1; i >= 0; i--)
            {
                segment.origRotations[i] = t.localRotation;
                t = t.parent;
            }
        }
    }
 public void SetDriver(IBipedDriver driver)
 {
     this.driver = driver;
 }