System.Collections.Generic.List.Contains(VRMSpringBoneColliderGroup)

Here are the examples of the csharp api System.Collections.Generic.List.Contains(VRMSpringBoneColliderGroup) taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

1 Examples 7

19 Source : DynamicBoneReplacer.cs
with Mozilla Public License 2.0
from esperecyan

private static void SetSpringBones(GameObject instance, ParametersConverter swayingParametersConverter)
        {
            var boneInfo = new BoneInfo(instance.GetComponent<VRMMeta>());
            var secondary = instance.transform.Find("secondary").gameObject;
            GameObject.DestroyImmediate(secondary.GetComponent<VRMSpringBone>());

            foreach (var dynamicBones in instance.GetComponentsInChildren(DynamicBoneType)
                .Select((dynamic dynamicBone) =>
                {
                    var parameters = swayingParametersConverter(new DynamicBoneParameters()
                    {
                        Damping = dynamicBone.m_Damping,
                        DampingDistrib = dynamicBone.m_DampingDistrib,
                        Elasticity = dynamicBone.m_Elasticity,
                        ElasticityDistrib = dynamicBone.m_ElasticityDistrib,
                        Stiffness = dynamicBone.m_Stiffness,
                        StiffnessDistrib = dynamicBone.m_StiffnessDistrib,
                        Inert = dynamicBone.m_Inert,
                        InertDistrib = dynamicBone.m_InertDistrib,
                    }, boneInfo);

                    var colliderGroups = new List<VRMSpringBoneColliderGroup>();
                    if (dynamicBone.m_Colliders != null)
                    {
                        foreach (var collider in dynamicBone.m_Colliders)
                        {
                            // コライダーが削除された、などで消失状態の場合がある
                            if (collider == null)
                            {
                                continue;
                            }
                            if (!collider.transform.IsChildOf(instance.transform))
                            {
                                // ルート外の参照を除外
                                continue;
                            }

                            VRMSpringBoneColliderGroup colliderGroup
                                = collider.GetComponent<VRMSpringBoneColliderGroup>();
                            if (colliderGroup == null || colliderGroups.Contains(colliderGroup))
                            {
                                continue;
                            }

                            colliderGroups.Add(colliderGroup);
                        }
                    }

                    Vector3 gravity = dynamicBone.m_Gravity;
                    return (dynamicBone, parameters, colliderGroups, compare: string.Join("\n", new[]
                    {
                        parameters.StiffnessForce,
                        gravity.x,
                        gravity.y,
                        gravity.z,
                        parameters.DragForce,
                        (float)dynamicBone.m_Radius,
                    }.Select(parameter => parameter.ToString("F2"))
                    .Concat(colliderGroups
                        .Select(colliderGroup => colliderGroup.transform.RelativePathFrom(instance.transform)))
                    ));
                })
                .GroupBy(dynamicBones => dynamicBones.compare)) // 同一パラメータでグループ化
            {
                var dynamicBone = dynamicBones.First();
                var springBone = secondary.AddComponent<VRMSpringBone>();
                springBone.m_stiffnessForce = dynamicBone.parameters.StiffnessForce;
                Vector3 gravity = dynamicBone.dynamicBone.m_Gravity;
                springBone.m_gravityPower = gravity.magnitude;
                springBone.m_gravityDir = gravity.normalized;
                springBone.m_dragForce = dynamicBone.parameters.DragForce;
                springBone.RootBones = dynamicBones.Select(db => (Transform)db.dynamicBone.m_Root)
                    .Where(transform => transform != null && transform.IsChildOf(instance.transform))
                    .Distinct()
                    .ToList();
                springBone.m_hitRadius = dynamicBone.dynamicBone.m_Radius;
                springBone.ColliderGroups = dynamicBone.colliderGroups.ToArray();
            }
        }