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); }
void Awake() { gpuSkinning = GetComponent <GPUSkinRenderer>(); CapsuleCollider collider = GetComponent <CapsuleCollider>(); Radius = Math.Max(collider.radius, collider.height / 2); }