/// <summary> /// This method can be used to register the new modded arm. /// </summary> /// <remarks> /// Call it from the <see cref="CraftableModdedArm.RegisterArm"/> method. /// </remarks> public void RegisterArm(CraftableModdedArm armPrefab, IArmModdingRequest armModdingRequest) { if (!waitForRegistration.ContainsKey(armPrefab)) { waitForRegistration.Add(armPrefab, armModdingRequest); } isWaitForRegistration = true; }
internal void RegisterNewArm(CraftableModdedArm armPrefab, IArmModdingRequest armModdingRequest) { if (ModdedArmPrefabs.ContainsKey(armPrefab.TechType)) { return; } string techName = TechTypeExtensions.AsString(armPrefab.TechType); GameObject clonedArm = Instantiate(ArmsTemplateCache[armPrefab.ArmTemplate], InactiveCache.transform); clonedArm.name = techName; clonedArm.SetActive(false); SetupHelper graphicsHelper = clonedArm.AddComponent <SetupHelper>(); ArmTag armTag = clonedArm.AddComponent <ArmTag>(); armTag.armType = armPrefab.ArmType; armTag.armTemplate = armPrefab.ArmTemplate; armTag.techType = armPrefab.TechType; armModdingRequest.SetUpArm(clonedArm, graphicsHelper); if (armPrefab.ArmType == ArmType.ExosuitArm) { armModdingRequest.GetExosuitArmHandler(clonedArm); } else { armModdingRequest.GetSeamothArmHandler(clonedArm); } ModdedArmPrefabs.Add(armPrefab.TechType, clonedArm); SNLogger.Log($"New {armPrefab.ArmType} registered: TechType ID: [{(int)armPrefab.TechType}], TechType name: [{techName}]"); }