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