void Start() { refTransform = new GameObject().transform; refTransform.parent = part.transform; refTransform.rotation = Quaternion.LookRotation(vessel.ReferenceTransform.up, -vessel.ReferenceTransform.forward); shipHeading = new Firespitter.ShipHeading(refTransform); try // overdoing the error protection a bit just because I can't be sure the renderer will be valid { Transform innerDiscTransform = base.internalProp.FindModelTransform(innerDiscName); if (innerDiscTransform != null) { innerDisc = innerDiscTransform.gameObject; discMat = innerDisc.GetComponent <Renderer>().material; } } catch { Log.err("FSartificialHorizon: Can't find object, or its material: {0}", innerDiscName); } if (discMat == null) { useOffset = false; Log.info("FSartificialHorizon: Couldn't find disc material"); } if (useOffset) { testButton = base.internalProp.FindModelTransform(testButtonName).gameObject; minusButton = base.internalProp.FindModelTransform(minusButtonName).gameObject; plusButton = base.internalProp.FindModelTransform(plusButtonName).gameObject; testButtonHandler = testButton.AddComponent <FSgenericButtonHandler>(); minusButtonHandler = minusButton.AddComponent <FSgenericButtonHandler>(); plusButtonHandler = plusButton.AddComponent <FSgenericButtonHandler>(); testButtonHandler.mouseDownFunction = testCageToggle; minusButtonHandler.mouseDownFunction = cageMinus; plusButtonHandler.mouseDownFunction = cagePlus; } needle = base.internalProp.FindModelTransform(outerRingName); }