コード例 #1
0
 public void SelectSkin(int index)
 {
     if (!ModelSkinController)
     {
         return;
     }
     if (reverseSkin != null)
     {
         reverseSkin.Apply();
     }
     ModelSkinController.ApplySkin(index);
     reverseSkin = new ReverseSkin(ModelInstance, ModelSkinController.skins[ModelSkinController.currentSkinIndex]);
 }
コード例 #2
0
        private void DestroyModelInstance()
        {
            CachedSkinnedMeshRenderers.Clear();
            Destroy(ModelInstance);

            ModelInstance       = null;
            ModelSkinController = null;
            CharacterModel      = null;

            icon.color   = Color.clear;
            icon.texture = null;

            bodyNameText.text  = null;
            modelNameText.text = null;

            reverseSkin = null;
        }
コード例 #3
0
        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;
            }
        }