private void BuildModelInstance() { if (modelInfo == null || ModelInstance) { return; } icon.color = Color.white; icon.texture = modelInfo.characterBody.portraitIcon; bodyNameText.text = modelInfo.localizedBodyName; modelNameText.text = modelInfo.modelName; ModelInstance = Instantiate(modelInfo.modelPrefab, modelSpawnPosition.position, modelSpawnPosition.rotation); CharacterModel = ModelInstance.GetComponent <CharacterModel>(); ModelSkinController = ModelInstance.GetComponent <ModelSkinController>(); if (ModelSkinController && ModelSkinController.skins.Length != 0) { reverseSkin = new ReverseSkin(ModelInstance, ModelSkinController.skins[Mathf.Clamp(ModelSkinController.currentSkinIndex, 0, ModelSkinController.skins.Length - 1)]); } foreach (var aimAnimator in ModelInstance.GetComponentsInChildren <AimAnimator>()) { aimAnimator.inputBank = null; aimAnimator.directionComponent = null; aimAnimator.enabled = false; } foreach (var animator in ModelInstance.GetComponentsInChildren <Animator>()) { animator.SetBool("isGrounded", true); animator.SetFloat("aimPitchCycle", 0.5f); animator.SetFloat("aimYawCycle", 0.5f); animator.Play("Idle"); animator.Update(0.0f); } foreach (var ditherModel in ModelInstance.GetComponentsInChildren <DitherModel>()) { ditherModel.enabled = false; } foreach (var ikSimpleChain in this.ModelInstance.GetComponentsInChildren <IKSimpleChain>()) { ikSimpleChain.enabled = false; } foreach (var printController in this.ModelInstance.GetComponentsInChildren <PrintController>()) { printController.enabled = false; } foreach (var lightIntensityCurve in this.ModelInstance.GetComponentsInChildren <LightIntensityCurve>()) { if (!lightIntensityCurve.loop) { lightIntensityCurve.enabled = false; } } foreach (var akEvent in this.ModelInstance.GetComponentsInChildren <AkEvent>()) { akEvent.enabled = false; } foreach (var shackeEmmiter in ModelInstance.GetComponentsInChildren <ShakeEmitter>()) { shackeEmmiter.enabled = false; } foreach (var collider in ModelInstance.GetComponentsInChildren <Collider>()) { collider.enabled = false; } foreach (var inverseKinematic in ModelInstance.GetComponentsInChildren <InverseKinematics>()) { inverseKinematic.enabled = false; } foreach (var meshFilter in ModelInstance.GetComponentsInChildren <MeshFilter>()) { var collider = meshFilter.gameObject.AddComponent <MeshCollider>(); collider.convex = false; collider.sharedMesh = meshFilter.sharedMesh; meshFilter.gameObject.layer = 11; } foreach (var meshRenderer in ModelInstance.GetComponentsInChildren <SkinnedMeshRenderer>()) { var collider = meshRenderer.gameObject.AddComponent <MeshCollider>(); collider.convex = false; collider.sharedMesh = new Mesh(); meshRenderer.gameObject.layer = 11; CachedSkinnedMeshRenderers[meshRenderer] = collider; } }