/// <summary> /// Sets the sibling animations by destroying what the sibling has then replacing it /// </summary> private void SetSiblingAnimations(PlayerAnimationContainer genderAnimation) { Sibling youngSibling = GameObject.Find(StringsNPC.SiblingYoung).GetComponent<Sibling>(); Sibling middleSibling = GameObject.Find(StringsNPC.SiblingMiddle).GetComponent<Sibling>(); Sibling oldSibling = GameObject.Find(StringsNPC.SiblingOld).GetComponent<Sibling>(); string gender = (playerGender == CharacterGender.MALE ? "Female" : "Male"); youngSibling.ChangeGender(gender, genderAnimation.youngBoneAnimation); middleSibling.ChangeGender(gender, genderAnimation.middleBoneAnimation); oldSibling.ChangeGender(gender, genderAnimation.oldBoneAnimation); /* SmoothMoves.BoneAnimation youngSiblingAnimation = youngSibling.GetComponent<SmoothMoves.BoneAnimation>(); SmoothMoves.BoneAnimation middleSiblingAnimation = middleSibling.GetComponent<SmoothMoves.BoneAnimation>(); SmoothMoves.BoneAnimation oldSiblingAnimation = oldSibling.GetComponent<SmoothMoves.BoneAnimation>(); for (int i = 0; i < youngSiblingAnimation.GetClipCount(); i++){ youngSiblingAnimation.RemoveClip(youngSiblingAnimation[youngSiblingAnimation.GetAnimationClipName(i)].clip); middleSiblingAnimation.RemoveClip(middleSiblingAnimation[middleSiblingAnimation.GetAnimationClipName(i)].clip); oldSiblingAnimation.RemoveClip(oldSiblingAnimation[oldSiblingAnimation.GetAnimationClipName(i)].clip); } youngSibling.animationData = genderAnimation.youngBoneAnimation; middleSibling.animationData = genderAnimation.middleBoneAnimation; oldSibling.animationData = genderAnimation.oldBoneAnimation; for (int i = 0; i < genderAnimation.middleBoneAnimation.GetClipCount(); i++){ string clipName = genderAnimation.youngBoneAnimation.GetAnimationClipName(i); youngSiblingAnimation.AddClip(genderAnimation.youngBoneAnimation[clipName].clip, clipName); Debug.Log("clip = " + clipName); clipName = genderAnimation.middleBoneAnimation.GetAnimationClipName(i); middleSiblingAnimation.AddClip(genderAnimation.middleBoneAnimation[clipName].clip, clipName); clipName = genderAnimation.oldBoneAnimation.GetAnimationClipName(i); oldSiblingAnimation.AddClip(genderAnimation.oldBoneAnimation[clipName].clip, clipName); } /* genderAnimation.youngBoneAnimation.transform.position = youngSibling.transform.position; SiblingYoung newSiblingYoung = genderAnimation.youngBoneAnimation.transform.gameObject.AddComponent<SiblingYoung>(); newSiblingYoung.Init(); newSiblingYoung.tag = Strings.tag_NPC; Collider tempCollider = newSiblingYoung.gameObject.AddComponent<BoxCollider>(); tempCollider = youngSibling.collider; tempCollider.isTrigger = true; newSiblingYoung.animationData = genderAnimation.youngBoneAnimation; newSiblingYoung.SpriteLookingLeft = youngSibling.SpriteLookingLeft; genderAnimation.youngBoneAnimation.transform.parent = youngSibling.transform.parent; genderAnimation.middleBoneAnimation.transform.name = middleSibling.name; genderAnimation.middleBoneAnimation.transform.position = middleSibling.transform.position; SiblingMiddle newSiblingMiddle = genderAnimation.middleBoneAnimation.transform.gameObject.AddComponent<SiblingMiddle>(); newSiblingMiddle.Init(); newSiblingMiddle.tag = Strings.tag_NPC; tempCollider = newSiblingMiddle.gameObject.AddComponent<BoxCollider>(); tempCollider.isTrigger = true; tempCollider = middleSibling.collider; newSiblingMiddle.animationData = genderAnimation.middleBoneAnimation; newSiblingMiddle.SpriteLookingLeft = middleSibling.SpriteLookingLeft; genderAnimation.middleBoneAnimation.transform.parent = middleSibling.transform.parent; genderAnimation.oldBoneAnimation.transform.name = oldSibling.name; genderAnimation.oldBoneAnimation.transform.position = oldSibling.transform.position; SiblingOld newSiblingOld = genderAnimation.oldBoneAnimation.transform.gameObject.AddComponent<SiblingOld>(); newSiblingOld.Init(); newSiblingOld.tag = Strings.tag_NPC; tempCollider = newSiblingOld.gameObject.AddComponent<BoxCollider>(); tempCollider.isTrigger = true; newSiblingOld.gameObject.collider = tempCollider; newSiblingOld.animationData = genderAnimation.oldBoneAnimation; newSiblingOld.SpriteLookingLeft = oldSibling.SpriteLookingLeft; genderAnimation.oldBoneAnimation.transform.parent = oldSibling.transform.parent; Destroy(youngSibling.gameObject); Destroy(middleSibling.gameObject); Destroy(oldSibling.gameObject);*/ }
/// <summary> /// Sets the gender. And will destroy the other gender data to save space /// </summary> private void SetGender(CharacterGender gender) { GameObject[] maleAnimations = GetMaleAnimations(); GameObject[] femaleAnimations = GetFemaleAnimations(); switch(gender){ case CharacterGender.MALE: genderAnimationInUse = genderAnimations[(int)CharacterGender.MALE]; siblingGenderAnimations = genderAnimations[(int)CharacterGender.FEMALE]; DisableAnimations(maleAnimations); DisableAnimations(femaleAnimations); break; case CharacterGender.FEMALE: genderAnimationInUse = genderAnimations[(int)CharacterGender.FEMALE]; siblingGenderAnimations = genderAnimations[(int)CharacterGender.MALE]; DisableAnimations(femaleAnimations); DisableAnimations(maleAnimations); break; } }