public static SimpleColorSO SetupNewLightColourSOs(LightSwitchEventEffect light, String s, Color overrideMultiplierColour) { MultipliedColorSO mColorSO = light.GetField <MultipliedColorSO>(s); SimpleColorSO baseSO = mColorSO.GetField <SimpleColorSO>("_baseColor"); SimpleColorSO newBaseSO = ScriptableObject.CreateInstance <SimpleColorSO>();// new SimpleColorSO(); newBaseSO.SetColor(baseSO.color); MultipliedColorSO newMColorSO = ScriptableObject.CreateInstance <MultipliedColorSO>(); if (overrideMultiplierColour == Color.clear) { newMColorSO.SetField("_multiplierColor", mColorSO.GetField <Color>("_multiplierColor")); } else { newMColorSO.SetField("_multiplierColor", overrideMultiplierColour); } newMColorSO.SetField("_baseColor", newBaseSO); light.SetField(s, newMColorSO); if (!light.name.Contains("chroma")) { light.name = light.name + "_chroma"; } return(newBaseSO); }
//We still need to do the first half of this even if the LSECM already exists as custom map colours exist and we need to be able to know the default colour private void InitializeSOs(LightSwitchEventEffect lse, string id, ref SimpleColorSO sColorSO, ref Color originalColour, ref MultipliedColorSO mColorSO) { MultipliedColorSO lightMultSO = lse.GetField <MultipliedColorSO>(id); Color multiplierColour = lightMultSO.GetField <Color>("_multiplierColor"); SimpleColorSO lightSO = lightMultSO.GetField <SimpleColorSO>("_baseColor"); originalColour = lightSO.color; if (mColorSO == null) { mColorSO = ScriptableObject.CreateInstance <MultipliedColorSO>(); mColorSO.SetField("_multiplierColor", multiplierColour); sColorSO = ScriptableObject.CreateInstance <SimpleColorSO>(); sColorSO.SetColor(originalColour); mColorSO.SetField("_baseColor", sColorSO); } lse.SetField(id, mColorSO); }