Пример #1
0
    public bool SmudgeTo(Vector3 worldSkinnedBottom)
    {
        if (!this.Exists)
        {
            return(false);
        }
        Vector3 position = base.transform.position;

        if (position != worldSkinnedBottom)
        {
            Vector3 vector3;
            Vector3 vector7;
            Vector3 vector2 = worldSkinnedBottom - position;
            CCDesc  cCDesc  = base.totemicObject.CCDesc;
            if (cCDesc == null)
            {
                return(false);
            }
            vector3.x = vector3.z = 0f;
            vector3.y = (cCDesc.effectiveHeight * 0.5f) - cCDesc.radius;
            Vector3 center    = cCDesc.center;
            Vector3 vector5   = cCDesc.OffsetToWorld(center - vector3);
            Vector3 vector6   = cCDesc.OffsetToWorld(center + vector3);
            Vector3 vector8   = cCDesc.OffsetToWorld(center + new Vector3(cCDesc.skinnedRadius, 0f, 0f)) - cCDesc.worldCenter;
            float   magnitude = vector8.magnitude;
            float   distance  = vector2.magnitude;
            float   num3      = 1f / distance;
            vector7.x = vector2.x * num3;
            vector7.y = vector2.y * num3;
            vector7.z = vector2.z * num3;
            int layerMask = 0;
            int layer     = base.gameObject.layer;
            for (int i = 0; i < 0x20; i++)
            {
                if (!Physics.GetIgnoreLayerCollision(layer, i))
                {
                    layerMask |= ((int)1) << i;
                }
            }
            if (Physics.CapsuleCast(vector5, vector6, magnitude, vector7, distance, layerMask))
            {
                return(false);
            }
            Transform transform = base.totemicObject.CCDesc.transform;
            transform.position += vector2;
            for (int j = 0; j < base.totemicObject.Configuration.numRequiredTotemicFigures; j++)
            {
                Transform transform2 = base.totemicObject.TotemicFigures[j].CCDesc.transform;
                transform2.position += vector2;
            }
            this.BindPositions(new CCTotem.PositionPlacement(base.totemicObject.CCDesc.worldSkinnedBottom, base.totemicObject.CCDesc.worldSkinnedTop, base.totemicObject.CCDesc.transform.position, base.totemicObject.Configuration.poleExpandedHeight));
        }
        return(true);
    }
Пример #2
0
    public bool SmudgeTo(Vector3 worldSkinnedBottom)
    {
        Vector3 vector3  = new Vector3();
        Vector3 vector31 = new Vector3();

        if (!this.Exists)
        {
            return(false);
        }
        Vector3 vector32 = base.transform.position;

        if (vector32 == worldSkinnedBottom)
        {
            return(true);
        }
        Vector3 vector33 = worldSkinnedBottom - vector32;
        CCDesc  cCDesc   = this.totemicObject.CCDesc;

        if (!cCDesc)
        {
            return(false);
        }
        float single  = 0f;
        float single1 = single;

        vector3.z = single;
        vector3.x = single1;
        vector3.y = cCDesc.effectiveHeight * 0.5f - cCDesc.radius;
        Vector3 vector34 = cCDesc.center;
        Vector3 world    = cCDesc.OffsetToWorld(vector34 - vector3);
        Vector3 world1   = cCDesc.OffsetToWorld(vector34 + vector3);
        Vector3 world2   = cCDesc.OffsetToWorld(vector34 + new Vector3(cCDesc.skinnedRadius, 0f, 0f)) - cCDesc.worldCenter;
        float   single2  = world2.magnitude;
        float   single3  = vector33.magnitude;
        float   single4  = 1f / single3;

        vector31.x = vector33.x * single4;
        vector31.y = vector33.y * single4;
        vector31.z = vector33.z * single4;
        int num  = 0;
        int num1 = base.gameObject.layer;

        for (int i = 0; i < 32; i++)
        {
            if (!Physics.GetIgnoreLayerCollision(num1, i))
            {
                num = num | 1 << (i & 31 & 31);
            }
        }
        if (Physics.CapsuleCast(world, world1, single2, vector31, single3, num))
        {
            return(false);
        }
        Transform transforms = this.totemicObject.CCDesc.transform;

        transforms.position = transforms.position + vector33;
        for (int j = 0; j < this.totemicObject.Configuration.numRequiredTotemicFigures; j++)
        {
            Transform cCDesc1 = this.totemicObject.TotemicFigures[j].CCDesc.transform;
            cCDesc1.position = cCDesc1.position + vector33;
        }
        Vector3 cCDesc2 = this.totemicObject.CCDesc.worldSkinnedBottom;
        Vector3 cCDesc3 = this.totemicObject.CCDesc.worldSkinnedTop;
        Vector3 cCDesc4 = this.totemicObject.CCDesc.transform.position;

        CCTotem.Configuration configuration = this.totemicObject.Configuration;
        this.BindPositions(new CCTotem.PositionPlacement(cCDesc2, cCDesc3, cCDesc4, configuration.poleExpandedHeight));
        return(true);
    }