public ItemColliderInfo(List <string> animationNames, List <string> itemBones, DynamicBoneColliderBase.Direction direction, float colliderRadius, float colliderHeight)
 {
     this.animationNames = animationNames;
     this.itemBones      = itemBones;
     this.direction      = direction;
     this.colliderRadius = colliderRadius;
     this.colliderHeight = colliderHeight;
 }
Пример #2
0
        public void getCollider(DynamicBonePlaneCollider collider, Animator an)
        {
            type = ColliderType.DynamicBonePlaneCollider;

            bone.setTransform(collider.transform, an);

            m_Direction = collider.m_Direction;
            m_Center    = collider.m_Center;
            m_Bound     = collider.m_Bound;
        }
Пример #3
0
    public override void Collide(ref Vector3 particlePosition, float particleRadius)
    {
        float num  = this.m_Radius * Mathf.Abs(base.transform.lossyScale.x);
        float num2 = this.m_Height * 0.5f - this.m_Radius;

        if (num2 <= 0f)
        {
            if (this.m_Bound == DynamicBoneColliderBase.Bound.Outside)
            {
                DynamicBoneCollider.OutsideSphere(ref particlePosition, particleRadius, base.transform.TransformPoint(this.m_Center), num);
            }
            else
            {
                DynamicBoneCollider.InsideSphere(ref particlePosition, particleRadius, base.transform.TransformPoint(this.m_Center), num);
            }
        }
        else
        {
            Vector3 center  = this.m_Center;
            Vector3 center2 = this.m_Center;
            DynamicBoneColliderBase.Direction direction = this.m_Direction;
            if (direction != DynamicBoneColliderBase.Direction.X)
            {
                if (direction != DynamicBoneColliderBase.Direction.Y)
                {
                    if (direction == DynamicBoneColliderBase.Direction.Z)
                    {
                        center.z  -= num2;
                        center2.z += num2;
                    }
                }
                else
                {
                    center.y  -= num2;
                    center2.y += num2;
                }
            }
            else
            {
                center.x  -= num2;
                center2.x += num2;
            }
            if (this.m_Bound == DynamicBoneColliderBase.Bound.Outside)
            {
                DynamicBoneCollider.OutsideCapsule(ref particlePosition, particleRadius, base.transform.TransformPoint(center), base.transform.TransformPoint(center2), num);
            }
            else
            {
                DynamicBoneCollider.InsideCapsule(ref particlePosition, particleRadius, base.transform.TransformPoint(center), base.transform.TransformPoint(center2), num);
            }
        }
    }
Пример #4
0
    private void OnDrawGizmosSelected()
    {
        if (!base.enabled)
        {
            return;
        }
        if (this.m_Bound == DynamicBoneColliderBase.Bound.Outside)
        {
            Gizmos.color = Color.yellow;
        }
        else
        {
            Gizmos.color = Color.magenta;
        }
        float radius = this.m_Radius * Mathf.Abs(base.transform.lossyScale.x);
        float num    = this.m_Height * 0.5f - this.m_Radius;

        if (num <= 0f)
        {
            Gizmos.DrawWireSphere(base.transform.TransformPoint(this.m_Center), radius);
        }
        else
        {
            Vector3 center  = this.m_Center;
            Vector3 center2 = this.m_Center;
            DynamicBoneColliderBase.Direction direction = this.m_Direction;
            if (direction != DynamicBoneColliderBase.Direction.X)
            {
                if (direction != DynamicBoneColliderBase.Direction.Y)
                {
                    if (direction == DynamicBoneColliderBase.Direction.Z)
                    {
                        center.z  -= num;
                        center2.z += num;
                    }
                }
                else
                {
                    center.y  -= num;
                    center2.y += num;
                }
            }
            else
            {
                center.x  -= num;
                center2.x += num;
            }
            Gizmos.DrawWireSphere(base.transform.TransformPoint(center), radius);
            Gizmos.DrawWireSphere(base.transform.TransformPoint(center2), radius);
        }
    }
Пример #5
0
    private void OnDrawGizmosSelected()
    {
        if (!base.enabled)
        {
            return;
        }
        if (this.m_Bound == DynamicBoneColliderBase.Bound.Outside)
        {
            Gizmos.color = Color.yellow;
        }
        else
        {
            Gizmos.color = Color.magenta;
        }
        Vector3 b = Vector3.up;

        DynamicBoneColliderBase.Direction direction = this.m_Direction;
        if (direction != DynamicBoneColliderBase.Direction.X)
        {
            if (direction != DynamicBoneColliderBase.Direction.Y)
            {
                if (direction == DynamicBoneColliderBase.Direction.Z)
                {
                    b = base.transform.forward;
                }
            }
            else
            {
                b = base.transform.up;
            }
        }
        else
        {
            b = base.transform.right;
        }
        Vector3 vector = base.transform.TransformPoint(this.m_Center);

        Gizmos.DrawLine(vector, vector + b);
    }
Пример #6
0
    public override void Collide(ref Vector3 particlePosition, float particleRadius)
    {
        Vector3 vector = Vector3.up;

        DynamicBoneColliderBase.Direction direction = this.m_Direction;
        if (direction != DynamicBoneColliderBase.Direction.X)
        {
            if (direction != DynamicBoneColliderBase.Direction.Y)
            {
                if (direction == DynamicBoneColliderBase.Direction.Z)
                {
                    vector = base.transform.forward;
                }
            }
            else
            {
                vector = base.transform.up;
            }
        }
        else
        {
            vector = base.transform.right;
        }
        Vector3 inPoint         = base.transform.TransformPoint(this.m_Center);
        Plane   plane           = new Plane(vector, inPoint);
        float   distanceToPoint = plane.GetDistanceToPoint(particlePosition);

        if (this.m_Bound == DynamicBoneColliderBase.Bound.Outside)
        {
            if (distanceToPoint < 0f)
            {
                particlePosition -= vector * distanceToPoint;
            }
        }
        else if (distanceToPoint > 0f)
        {
            particlePosition -= vector * distanceToPoint;
        }
    }