Exemple #1
0
        private void UpdateScrewInfoTightness(GameObject screw, int tightness)
        {
            ScrewInfo screwInfo = screw.GetComponent <ScrewInfo>();

            if (screwInfo != null)
            {
                screwInfo.tightness = tightness;
            }
        }
        /// <summary>
        /// makes the part screwable by adding the screw gameObjects to the parent gameObject
        /// </summary>
        /// <param name="screws">Screws values needed</param>
        /// <param name="screwsScale">The scale to apply to the screw when creating it</param>
        /// <param name="screwArr">The array of screw objects</param>
        private void MakePartScrewable(Screws screws, Vector3[] screwsScale, Screw[] screwArr)
        {
            if (screws != null && screws.screwsPositionsLocal != null && screws.screwsRotationLocal != null && screws.screwsTightness != null && screwsScale != null)
            {
                for (int i = 0; i < screwArr.Length; i++)
                {
                    GameObject screw = GameObject.Instantiate(screwArr[i].model);
                    screw.name = (parentGameObject.name + "_SCREW" + (i + 1));
                    screw.transform.SetParent(parentGameObject.transform);
                    screw.transform.localPosition = screws.screwsPositionsLocal[i];
                    screw.transform.localScale    = screwsScale[i];
                    screw.transform.localRotation = new Quaternion {
                        eulerAngles = screws.screwsRotationLocal[i]
                    };
                    screw.layer = LayerMask.NameToLayer("DontCollide");
                    screw.SetActive(true);

                    ScrewInfo screwInfo = screw.AddComponent <ScrewInfo>();

                    screwInfo.tightness = screws.screwsTightness[i];
                    screwInfo.size      = screws.screwsSize[i];
                }

                this.parentGameObjectCollider = this.parentGameObject.GetComponent <Collider>();
            }
            screwableLogic = parentGameObject.AddComponent <ScrewableLogic>();
            screwableLogic.SetSavedInformation(screws, screw_material, screw_soundClip, parentGameObject, parentGameObjectCollider, this);

            if (screws.screwsTightness.All(element => element == screwableLogic.maxTightness))
            {
                //All Screws tight. Make part fixed
                this.parentGameObjectCollider.enabled = false;
                partFixed = true;
                screwableLogic.SetPartFixed(partFixed);
            }
        }
Exemple #3
0
        private void DetectScrewing(GameObject hitScrew)
        {
            if (spannerRatchetGameObject == null)
            {
                spannerRatchetGameObject = GameObject.Find("2Spanner");
            }

            if (spannerRatchetGameObject != null)
            {
                Component[] comps = spannerRatchetGameObject.GetComponentsInChildren <Transform>();
                for (int i = 0; i < comps.Length; i++)
                {
                    if (comps[i].name == "Spanner")
                    {
                        ratchetInHand = false;
                        break;
                    }
                    else if (comps[i].name == "Ratchet")
                    {
                        ratchetInHand = true;

                        ratchetSwitch = PlayMakerFSM.FindFsmOnGameObject(GameObject.Find("Ratchet"), "Switch").FsmVariables.GetFsmBool("Switch").Value;

                        break;
                    }
                }
            }

            string screwName = hitScrew.name.Substring(hitScrew.name.LastIndexOf("_SCREW"));
            int    index     = Convert.ToInt32(screwName.Replace("_SCREW", "")) - 1;

            int wrenchSize = Mathf.RoundToInt(this._wrenchSize.Value * 10f);

            if (wrenchSize > 0)
            {
                if ((bool)ScrewablePart.showScrewSize.Value)
                {
                    ScrewInfo screwInfo = hitObject.GetComponent <ScrewInfo>();
                    try
                    {
                        if (screwInfo != null)
                        {
                            ScrewablePart.GuiInteraction = "Screw size: " + screwInfo.size;
                        }
                    }
                    catch
                    {
                    }
                }
            }

            int screwSize = this.screws.screwsSize[index];

            if (wrenchSize == screwSize)
            {
                //Highlighting the currently aimed at screw
                MeshRenderer renderer = hitObject.GetComponentInChildren <MeshRenderer>();
                renderer.material.shader = Shader.Find("GUI/Text Shader");
                renderer.material.SetColor("_Color", Color.green);

                screwingTimer += Time.deltaTime;

                if (Input.GetAxis("Mouse ScrollWheel") > 0f && screwingTimer >= _boltingSpeed.Value) // forward
                {
                    screwingTimer = 0;
                    if (ratchetInHand)
                    {
                        if (!ratchetSwitch)
                        {
                            ScrewOut(hitScrew, screws, index);
                        }
                        else
                        {
                            ScrewIn(hitScrew, screws, index);
                        }
                    }
                    else
                    {
                        ScrewIn(hitScrew, screws, index);
                    }
                }
                else if (Input.GetAxis("Mouse ScrollWheel") < 0f && screwingTimer >= _boltingSpeed.Value) // backwards
                {
                    screwingTimer = 0;
                    if (ratchetInHand)
                    {
                        if (!ratchetSwitch)
                        {
                            ScrewOut(hitScrew, screws, index);
                        }
                        else
                        {
                            ScrewIn(hitScrew, screws, index);
                        }
                    }
                    else
                    {
                        ScrewOut(hitScrew, screws, index);
                    }
                }

                if (this.screws.screwsTightness.All(element => element == maxTightness) && !partFixed)
                {
                    this.parentGameObjectCollider.enabled = false;
                    partFixed = true;
                    screwablePart.SetPartFixed(true);
                }
                else if (!partFixed)
                {
                    this.parentGameObjectCollider.enabled = true;
                }
            }
        }