public void SetTargetedBy(ModuleActiveStrut targeter)
 {
     this.OldTargeter = this.Targeter;
     this.Targeter = targeter;
     this.Mode = Mode.Target;
 }
 public void SetTarget(ModuleActiveStrut target)
 {
     this.Target = target;
     this.Mode = Mode.Linked;
     this.IsLinked = true;
     this.IsConnectionOrigin = true;
     var type = target.IsTargetOnly ? LinkType.Normal : LinkType.Maximum;
     this.IsEnforced = Config.Instance.GlobalJointEnforcement || type == LinkType.Maximum;
     this.CreateJoint(this.part.rigidbody, target.part.parent.rigidbody, type, this.Target.transform.position);
     this.CreateStrut(target.Origin.position, target.IsTargetOnly ? 1 : 0.5f);
     Util.Util.ResetAllFromTargeting();
     OSD.PostMessage("Link established!");
     ActiveStrutsAddon.Mode = AddonMode.None;
     this.UpdateGui();
 }
 private void ResetActiveStrutToDefault()
 {
     this.Target = null;
     this.Targeter = null;
     this.IsConnectionOrigin = false;
     this.IsFreeAttached = false;
     this.Mode = Mode.Unlinked;
     this.IsHalfWayExtended = false;
     this.Id = Guid.NewGuid().ToString();
     this.LinkType = LinkType.None;
     this.OldTargeter = null;
     this.FreeAttachTarget = null;
     this.IsFreeAttached = false;
     this.IsLinked = false;
     if (!this.IsTargetOnly)
     {
         this.DestroyJoint();
         this.DestroyStrut();
     }
 }
 public StraightOutHintActivePart(Part part, Guid moduleId, GameObject hintObject, ModuleActiveStrut module)
     : base(part, moduleId)
 {
     this.HintObject = hintObject;
     this.Module = module;
     this.Duration = Config.Instance.StraightOutHintDuration;
 }
 private static void UpdateStraightOutHint(ModuleActiveStrut module, GameObject hint)
 {
     hint.SetActive(false);
     var ray = new Ray(module.Origin.position, module.Origin.transform.right*-1);
     RaycastHit info;
     var maxDist = Config.Instance.MaxDistance;
     var raycast = Physics.Raycast(ray, out info, maxDist);
     var trans = hint.transform;
     trans.position = module.Origin.position;
     var dist = raycast
                    ? info.distance/2f
                    : maxDist;
     if (raycast)
     {
         trans.LookAt(info.point);
     }
     else
     {
         trans.LookAt(module.Origin.transform.position + module.Origin.transform.right*-1);
     }
     trans.Rotate(new Vector3(0, 1, 0), 90f);
     trans.Rotate(new Vector3(0, 0, 1), 90f);
     trans.localScale = new Vector3(0.05f, dist, 0.05f);
     trans.Translate(new Vector3(0f, dist, 0f));
     hint.SetActive(true);
     //print(string.Format("claculated dist = {0}", dist));
 }
 private static GameObject CreateStraightOutHintForPart(ModuleActiveStrut module)
 {
     var go = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
     go.SetActive(false);
     go.name = Guid.NewGuid().ToString();
     DestroyImmediate(go.collider);
     var connDim = Config.Instance.ConnectorDimension;
     go.transform.localScale = new Vector3(connDim, connDim, connDim);
     var mr = go.GetComponent<MeshRenderer>();
     mr.name = go.name;
     mr.material = new Material(Shader.Find("Transparent/Diffuse")) {color = Util.Util.MakeColorTransparent(Color.blue)};
     UpdateStraightOutHint(module, go);
     return go;
 }