예제 #1
0
 public void InitTarget(GameObject transform)
 {
     _partSettings = GetComponent <PartSettings>();
     _target       = transform;
     _robber.InitPosition(_target.transform);
     _partSettings.destinationObjectTag = _target.name;
 }
        public override void SecondPassOnLoad()
        {
            // Written, 20.09.2021

            GameObject satsuma = GameObject.Find("SATSUMA(557kg, 248)");

            GameObject[] wheels = Object.FindObjectsOfType <GameObject>().Where(go => vaildWheelNames.Any(vwn => vwn == go.name)).ToArray();
            wheelParts = new Part[wheels.Length];

            saveData = loadData();

            Trigger trigger = new Trigger("spareTireTrigger", satsuma, new Vector3(0, -0.053f, -1.45f), Vector3.forward * 90);
            AssemblyTypeJointSettings jointSettings = new AssemblyTypeJointSettings(satsuma.GetComponent <Rigidbody>());
            PartSettings settings = new PartSettings()
            {
                assembleType = AssembleType.joint,
                setPositionRotationOnInitialisePart = false,
                assemblyTypeJointSettings           = jointSettings,
                setPhysicsMaterialOnInitialisePart  = true
            };

            for (int i = 0; i < wheels.Length; i++)
            {
                GameObject wheel = wheels[i];

                PlayMakerFSM useFsm             = wheel.GetPlayMaker("Use");
                PlayMakerFSM removalFsm         = wheel.GetPlayMaker("Removal");
                string       wheelID            = useFsm.FsmVariables.GetFsmString("ID").Value;
                bool         isThisWheelInstall = false;
                if (saveData?.installedWheelID == wheelID)
                {
                    isThisWheelInstall = useFsm.FsmVariables.GetFsmString("Corner").Value == "";
                }

                wheelParts[i] = wheel.AddComponent <Part>();
                wheelParts[i].defaultSaveInfo = new PartSaveInfo()
                {
                    installed = wheelID == "wheel_steel5" && !removalFsm.enabled
                };
                wheelParts[i].initPart(isThisWheelInstall ? new PartSaveInfo()
                {
                    installed = true
                } : null, settings, trigger);
            }
            ModConsole.Print(string.Format("{0} v{1}: Loaded.", Name, Version));
        }