Esempio n. 1
0
        private static void ClearSkinModifications(ModificationObjects modificatons)
        {
            Destroy(modificatons.swordAccessoryInstance);
            Destroy(modificatons.swordAccessoryArmature);
            Destroy(modificatons.swordAccessoryDynamicBone);

            Destroy(modificatons.skirtInstance);
            Destroy(modificatons.skirtArmature);
            Destroy(modificatons.skirtDynamicBone);

            Destroy(modificatons.pelvisDynamicBoneCollider);
            Destroy(modificatons.thighL1DynamicBoneCollider);
            Destroy(modificatons.thighL2DynamicBoneCollider);
            Destroy(modificatons.thighR1DynamicBoneCollider);
            Destroy(modificatons.thighR2DynamicBoneCollider);
            Destroy(modificatons.stomachDynamicBoneCollider);

            var oldBones = modificatons.mercMeshRenderer.bones.ToList();

            oldBones.RemoveRange(buttBoneIndex, 3);
            oldBones.RemoveRange(breastBoneIndex, 3);
            modificatons.mercMeshRenderer.bones  = oldBones.ToArray();
            modificatons.swordMeshRenderer.bones = oldBones.ToArray();

            Destroy(modificatons.mercBreastDynamicBone);
            Destroy(modificatons.breastBonesInstance);

            Destroy(modificatons.mercButtDynamicBone);
            Destroy(modificatons.buttBonesInstance);
        }
Esempio n. 2
0
        private static void ApplyButtModifications(GameObject modelObject, ModificationObjects modificatons)
        {
            var pelvis = modelObject.transform.Find("MercArmature/ROOT/base/pelvis");

            modificatons.buttBonesInstance = Instantiate(ButtBonesPrefab, pelvis, false);

            var newBones = modificatons.mercMeshRenderer.bones.ToList();

            newBones.InsertRange(
                buttBoneIndex,
                new[]
            {
                modificatons.buttBonesInstance.transform,
                modificatons.buttBonesInstance.transform.GetChild(0),
                modificatons.buttBonesInstance.transform.GetChild(1)
            });

            modificatons.mercMeshRenderer.bones  = newBones.ToArray();
            modificatons.swordMeshRenderer.bones = newBones.ToArray();

            modificatons.mercButtDynamicBone              = modelObject.AddComponent <DynamicBone>();
            modificatons.mercButtDynamicBone.m_Root       = modificatons.buttBonesInstance.transform;
            modificatons.mercButtDynamicBone.m_Damping    = 0.2F;
            modificatons.mercButtDynamicBone.m_Elasticity = 0.05F;
            modificatons.mercButtDynamicBone.m_Stiffness  = 0.925F;
            modificatons.mercButtDynamicBone.m_Inert      = 0.5F;
        }
Esempio n. 3
0
        private static ModificationObjects ApplySkinModifications(GameObject modelObject)
        {
            var characterModel = modelObject.GetComponent <CharacterModel>();

            var modificatons = new ModificationObjects
            {
                mercMeshRenderer  = modelObject.transform.Find("MercMesh").GetComponent <SkinnedMeshRenderer>(),
                swordMeshRenderer = modelObject.transform.Find("MercSwordMesh").GetComponent <SkinnedMeshRenderer>()
            };

            ApplyBreastModifications(modelObject, modificatons);
            ApplyButtModifications(modelObject, modificatons);
            ApplySwordAccessoriesModifications(modelObject, modificatons, characterModel);
            ApplySkirtModifications(modelObject, modificatons, characterModel);

            return(modificatons);
        }
Esempio n. 4
0
        private static void ApplySwordAccessoriesModifications(GameObject modelObject, ModificationObjects modificatons, CharacterModel characterModel)
        {
            var swordBase = modelObject.transform.Find("MercArmature/ROOT/base/stomach/chest/SwingCenter/SwordBase");

            modificatons.swordAccessoryInstance = Instantiate(SwordAccessoryPrefab, modelObject.transform, false);

            modificatons.swordAccessoryArmature = modificatons.swordAccessoryInstance.transform.Find("SwordAccessoryArmature").gameObject;
            modificatons.swordAccessoryArmature.transform.SetParent(swordBase, false);

            modificatons.swordAccessoryDynamicBone              = modelObject.AddComponent <DynamicBone>();
            modificatons.swordAccessoryDynamicBone.m_Root       = modificatons.swordAccessoryArmature.transform.GetChild(0);
            modificatons.swordAccessoryDynamicBone.m_Force      = new Vector3(0, -0.05F, 0);
            modificatons.swordAccessoryDynamicBone.m_Damping    = 0;
            modificatons.swordAccessoryDynamicBone.m_Elasticity = 0.05F;
            modificatons.swordAccessoryDynamicBone.m_Stiffness  = 0;
            modificatons.swordAccessoryDynamicBone.m_Inert      = 0;

            Array.Resize(ref characterModel.baseRendererInfos, characterModel.baseRendererInfos.Length + 1);

            var swordAccessoryRenderer = modificatons.swordAccessoryInstance.transform.Find("SwordAccessory").GetComponent <SkinnedMeshRenderer>();

            characterModel.baseRendererInfos[characterModel.baseRendererInfos.Length - 1] = new CharacterModel.RendererInfo
            {
                renderer                 = swordAccessoryRenderer,
                ignoreOverlays           = false,
                defaultShadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On,
                defaultMaterial          = swordAccessoryRenderer.sharedMaterial
            };
        }
Esempio n. 5
0
        private static void ApplySkirtModifications(GameObject modelObject, ModificationObjects modificatons, CharacterModel characterModel)
        {
            var stomach = modelObject.transform.Find("MercArmature/ROOT/base/stomach");

            modificatons.skirtInstance = Instantiate(SkirtPrefab, modelObject.transform, false);

            modificatons.skirtArmature = modificatons.skirtInstance.transform.Find("SkirtArmature").gameObject;
            modificatons.skirtArmature.transform.SetParent(stomach, false);

            modificatons.stomachDynamicBoneCollider             = stomach.gameObject.AddComponent <DynamicBoneCollider>();
            modificatons.stomachDynamicBoneCollider.m_Center    = new Vector3(0, 0.7F, 0);
            modificatons.stomachDynamicBoneCollider.m_Height    = 0.6F;
            modificatons.stomachDynamicBoneCollider.m_Direction = DynamicBoneCollider.Direction.X;
            modificatons.stomachDynamicBoneCollider.m_Bound     = DynamicBoneCollider.Bound.Outside;

            var pelvis = modelObject.transform.Find("MercArmature/ROOT/base/pelvis");

            modificatons.pelvisDynamicBoneCollider             = pelvis.gameObject.AddComponent <DynamicBoneCollider>();
            modificatons.pelvisDynamicBoneCollider.m_Center    = new Vector3(0, 0.2F, -0.05F);
            modificatons.pelvisDynamicBoneCollider.m_Height    = 0.54F;
            modificatons.pelvisDynamicBoneCollider.m_Radius    = 0.25F;
            modificatons.pelvisDynamicBoneCollider.m_Direction = DynamicBoneCollider.Direction.X;
            modificatons.pelvisDynamicBoneCollider.m_Bound     = DynamicBoneCollider.Bound.Outside;

            var thighl = pelvis.Find("thigh.l");

            modificatons.thighL1DynamicBoneCollider             = thighl.gameObject.AddComponent <DynamicBoneCollider>();
            modificatons.thighL1DynamicBoneCollider.m_Center    = new Vector3(-0.1F, 0.24F, 0.04F);
            modificatons.thighL1DynamicBoneCollider.m_Height    = 0.6F;
            modificatons.thighL1DynamicBoneCollider.m_Radius    = 0.1F;
            modificatons.thighL1DynamicBoneCollider.m_Direction = DynamicBoneCollider.Direction.Y;
            modificatons.thighL1DynamicBoneCollider.m_Bound     = DynamicBoneCollider.Bound.Outside;

            modificatons.thighL2DynamicBoneCollider             = thighl.gameObject.AddComponent <DynamicBoneCollider>();
            modificatons.thighL2DynamicBoneCollider.m_Center    = new Vector3(0.1F, 0.24F, 0.04F);
            modificatons.thighL2DynamicBoneCollider.m_Height    = 0.6F;
            modificatons.thighL2DynamicBoneCollider.m_Radius    = 0.1F;
            modificatons.thighL2DynamicBoneCollider.m_Direction = DynamicBoneCollider.Direction.Y;
            modificatons.thighL2DynamicBoneCollider.m_Bound     = DynamicBoneCollider.Bound.Outside;

            var thighr = pelvis.Find("thigh.r");

            modificatons.thighR1DynamicBoneCollider             = thighr.gameObject.AddComponent <DynamicBoneCollider>();
            modificatons.thighR1DynamicBoneCollider.m_Center    = new Vector3(-0.1F, 0.24F, 0.04F);
            modificatons.thighR1DynamicBoneCollider.m_Height    = 0.6F;
            modificatons.thighR1DynamicBoneCollider.m_Radius    = 0.1F;
            modificatons.thighR1DynamicBoneCollider.m_Direction = DynamicBoneCollider.Direction.Y;
            modificatons.thighR1DynamicBoneCollider.m_Bound     = DynamicBoneCollider.Bound.Outside;

            modificatons.thighR2DynamicBoneCollider             = thighr.gameObject.AddComponent <DynamicBoneCollider>();
            modificatons.thighR2DynamicBoneCollider.m_Center    = new Vector3(0.1F, 0.24F, 0.04F);
            modificatons.thighR2DynamicBoneCollider.m_Height    = 0.6F;
            modificatons.thighR2DynamicBoneCollider.m_Radius    = 0.1F;
            modificatons.thighR2DynamicBoneCollider.m_Direction = DynamicBoneCollider.Direction.Y;
            modificatons.thighR2DynamicBoneCollider.m_Bound     = DynamicBoneCollider.Bound.Outside;

            modificatons.skirtDynamicBone              = modelObject.AddComponent <DynamicBone>();
            modificatons.skirtDynamicBone.m_Root       = modificatons.skirtArmature.transform.GetChild(0);
            modificatons.skirtDynamicBone.m_Exclusions = new List <Transform> {
                modificatons.skirtDynamicBone.m_Root.Find("skirt.base")
            };
            modificatons.skirtDynamicBone.m_Damping       = 0.5F;
            modificatons.skirtDynamicBone.m_Elasticity    = 0.25F;
            modificatons.skirtDynamicBone.m_Stiffness     = 0;
            modificatons.skirtDynamicBone.m_Inert         = 0.75F;
            modificatons.skirtDynamicBone.m_Radius        = 0.15F;
            modificatons.skirtDynamicBone.m_RadiusDistrib = new AnimationCurve(new Keyframe(0, 0.6F), new Keyframe(1, 1))
            {
                postWrapMode = WrapMode.Loop,
                preWrapMode  = WrapMode.Loop
            };
            modificatons.skirtDynamicBone.m_Colliders = new List <DynamicBoneCollider>
            {
                modificatons.pelvisDynamicBoneCollider,
                modificatons.thighL1DynamicBoneCollider,
                modificatons.thighL2DynamicBoneCollider,
                modificatons.thighR1DynamicBoneCollider,
                modificatons.thighR2DynamicBoneCollider,
                modificatons.stomachDynamicBoneCollider
            };

            Array.Resize(ref characterModel.baseRendererInfos, characterModel.baseRendererInfos.Length + 1);

            var skirtRenderer = modificatons.skirtInstance.transform.Find("Skirt").GetComponent <SkinnedMeshRenderer>();

            characterModel.baseRendererInfos[characterModel.baseRendererInfos.Length - 1] = new CharacterModel.RendererInfo
            {
                renderer                 = skirtRenderer,
                ignoreOverlays           = false,
                defaultShadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On,
                defaultMaterial          = skirtRenderer.sharedMaterial
            };
        }