/// <summary> /// Register a liquid /// </summary> /// <param name="id"><see cref="Identifiable.Id"/> of the liquid</param> /// <param name="inFX">The effect when vacced in</param> /// <param name="vacFailFX">The effect when vaccing fails</param> public static void RegisterLiquid(Identifiable.Id id, GameObject inFX, GameObject vacFailFX) { LiquidDefinition definition = ScriptableObject.CreateInstance <LiquidDefinition>(); definition.id = id; definition.inFX = inFX; definition.vacFailFX = vacFailFX; RegisterLiquid(definition); }
/// <summary> /// Creates a Liquid Definition /// </summary> /// <param name="id">The ID of the liquid for this definition</param> /// <param name="inFX">The effect when vacced in</param> /// <param name="vacFailFX">The effect when vaccing fails</param> public static LiquidDefinition CreateLiquidDefinition(Identifiable.Id id, GameObject inFX, GameObject vacFailFX) { LiquidDefinition definition = ScriptableObject.CreateInstance <LiquidDefinition>(); definition.SetPrivateField("id", id); definition.SetPrivateField("inFX", inFX); definition.SetPrivateField("vacFailFX", vacFailFX); return(definition); }
/// <summary> /// Register <paramref name="liquid"/> into the <see cref="LookupDirector"/> /// </summary> /// <param name="liquid">Liquid to register</param> public static void RegisterLiquid(LiquidDefinition liquid) { switch (SRModLoader.CurrentLoadingStep) { case LoadingStep.PRELOAD: liquidsToPatch.Add(liquid); break; default: GameContext.Instance.LookupDirector.liquidDefinitions.AddAndRemoveWhere(liquid, (x, y) => x.id == y.id); GameContext.Instance.LookupDirector.liquidDict[liquid.id] = liquid; break; } }