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); }
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); }