private void Rotate(int vectorIndex, bool inverse)
        {
            Vector3 eulerAngles = new Vector3(0, 0, 0);

            eulerAngles[vectorIndex] = inverse ? -deltaRotation : deltaRotation;

            if (part.isCompund)
            {
                CompoundPartTransform.Rotate((CompoundPart)part, eulerAngles, referenceSpace, compoundTargetSelected);
            }
            else
            {
                PartTransform.Rotate(part, eulerAngles, referenceSpace);
            }
        }
        private string SetRotation(int vectorIndex, string value)
        {
            float      fValue          = float.Parse(value, CultureInfo.InvariantCulture.NumberFormat);
            Quaternion rotation        = PartUtil.GetRotation(part, referenceSpace, compoundTargetSelected);
            Vector3    partEulerAngles = rotation.eulerAngles;
            Vector3    eulerAngles     = new Vector3(0, 0, 0);

            eulerAngles[vectorIndex] = fValue - partEulerAngles[vectorIndex];
            if (part.isCompund)
            {
                CompoundPartTransform.Rotate((CompoundPart)part, eulerAngles, referenceSpace, compoundTargetSelected);
            }
            else
            {
                PartTransform.Rotate(part, eulerAngles, referenceSpace);
            }
            return(value);
        }
        private string SetPosition(int vectorIndex, string value)
        {
            Vector3 newPosition = GetWorldPositionToBeSet(vectorIndex, value);
            Vector3 oldPosition = PartUtil.GetPosition(part, Space.World, compoundTargetSelected);
            Bounds  partBounds;

            if (PartUtil.IsTargetActive(part, compoundTargetSelected))
            {
                partBounds = FindChildGameObjectByName(part.gameObject, "obj_targetCollider").GetComponent <Collider>().bounds;
            }
            else
            {
                partBounds = part.collider.bounds;
            }

            if (!AreBoundsOutOfHangarBounds(partBounds))
            {
                Vector3 boundsOffset = partBounds.center - oldPosition;

                partBounds.center = newPosition + boundsOffset;
                if (AreBoundsOutOfHangarBounds(partBounds))
                {
                    return(value);
                }
            }
            if (newPosition == oldPosition)
            {
                return(value);
            }

            if (part.isCompund)
            {
                CompoundPartTransform.SetWorldPosition((CompoundPart)part, newPosition, compoundTargetSelected);
            }
            else
            {
                PartTransform.SetWorldPosition(part, newPosition);
            }

            return(value);
        }