示例#1
0
    static void BakeAnimations()
    {
        GameObject      go       = Selection.activeGameObject;
        Animator        animator = go.GetComponent <Animator>();
        CrowdManager    crowd    = go.GetComponent <CrowdManager>();
        GPUSkinRenderer renderer = go.GetComponent <GPUSkinRenderer>();

        if (animator == null || crowd == null)
        {
            Debug.LogError("Invalid object. Please assign an animator and a virtual crowd to the game object");
            return;
        }

        animator.speed = 0;
        allBones       = RetrieveBoneDictionary(go.GetComponentInChildren <SkinnedMeshRenderer>());
        boneTransforms = new DualQuaternion[allBones.Count];
        if (!allBones.TryGetValue(renderer.weaponBone.name, out weaponBoneID))
        {
            weaponBoneID = -1;
            Debug.Log("Weapon binding bone is not valid, skipping...");
        }

        // Bake character bones
        BakeAnimation(crowd, animator, go, true);
        BakeAnimation(crowd, animator, go, false);
    }
示例#2
0
    void Awake()
    {
        gpuSkinning = GetComponent <GPUSkinRenderer>();

        CapsuleCollider collider = GetComponent <CapsuleCollider>();

        Radius = Math.Max(collider.radius, collider.height / 2);
    }