public void SetLargeGear(BlockEntity be)
 {
     if (largeGear == null)
     {
         largeGear = be.GetBehavior <BEBehaviorMPLargeGear3m>();
     }
 }
        protected void CheckLargeGearJoin()
        {
            string orientations = (Block as BlockAngledGears).Orientation;

            if (orientations.Length == 2 && orientations[0] == orientations[1])
            {
                BlockPos    largeGearPos = this.Position.AddCopy(this.orientation.Opposite);
                BlockEntity be           = this.Api.World?.BlockAccessor.GetBlockEntity(largeGearPos);
                largeGear = be?.GetBehavior <BEBehaviorMPLargeGear3m>();
            }
        }
        public float LargeGearAngleRad(float unchanged)
        {
            if (largeGear == null)
            {
                BlockPos    largeGearPos = this.Position.AddCopy(this.orientation.Opposite);
                BlockEntity be           = this.Api.World?.BlockAccessor.GetBlockEntity(largeGearPos);
                largeGear = be?.GetBehavior <BEBehaviorMPLargeGear3m>();
                if (largeGear == null)
                {
                    return(unchanged);
                }
            }
            int dir = this.orientation == BlockFacing.SOUTH ? -1 : 1;

            return(dir * largeGear.GetSmallgearAngleRad() % GameMath.TWOPI);
        }
 public void ClearLargeGear()
 {
     this.largeGear = null;
 }
 public void AddToLargeGearNetwork(BEBehaviorMPLargeGear3m largeGear, BlockFacing outFacing)
 {
     this.JoinNetwork(largeGear.Network);
     this.SetPropagationDirection(new MechPowerPath(outFacing, largeGear.GearedRatio * largeGear.ratio, null, largeGear.GetPropagationDirection() == BlockFacing.DOWN));
 }