private static void ReplaceLoaderSmokeRampTextures() { Texture2D smokeRamp = VRMod.VRAssetBundle.LoadAsset <Texture2D>("SmokeRamp");; EntityStateConfiguration state = LegacyResourcesAPI.Load <EntityStateConfiguration>("entitystateconfigurations/EntityStates.Loader.BaseChargeFist"); if (state) { HG.GeneralSerializer.SerializedField effectField = state.serializedFieldsCollection.serializedFields.First(x => x.fieldName == "chargeVfxPrefab"); GameObject effectPrefab = effectField.fieldValue.objectValue as GameObject; Transform dustObject = effectPrefab.transform.Find("Dust"); if (dustObject) { ReplaceSmokeRampTexture(dustObject, smokeRamp); } } state = LegacyResourcesAPI.Load <EntityStateConfiguration>("entitystateconfigurations/EntityStates.Loader.BaseSwingChargedFist"); if (state) { HG.GeneralSerializer.SerializedField effectField = state.serializedFieldsCollection.serializedFields.First(x => x.fieldName == "swingEffectPrefab"); GameObject effectPrefab = effectField.fieldValue.objectValue as GameObject; Transform dustObject = effectPrefab.transform.Find("Dust"); if (dustObject) { ReplaceSmokeRampTexture(dustObject, smokeRamp); } } GameObject hookPrefab = LegacyResourcesAPI.Load <GameObject>("prefabs/projectiles/LoaderHook"); if (hookPrefab) { Transform dustObject = hookPrefab.transform.Find("FistMesh/RopeFront/Dust"); if (dustObject) { ReplaceSmokeRampTexture(dustObject, smokeRamp); } dustObject = hookPrefab.transform.Find("RopeEnd/Dust"); if (dustObject) { ReplaceSmokeRampTexture(dustObject, smokeRamp); } } }
public static bool RegisterEntityStateConfig(EntityStateConfiguration entityStateConfiguration) { //Check if the EntityStateConfiguration has already been registered. if (EntityStateConfigurationDefinitions.Contains(entityStateConfiguration)) { string error = entityStateConfiguration.name + " has already been registered, please do not register the same EntityStateConfiguration twice."; if (entityStateConfiguration.targetType == default) { error = error + " And/Or, the target type has not been set. Please make sure your target has been set before creating your SurvivorDef."; } LogCore.LogE(error); return(false); } //If not, add it to our EntityStateConfigurationDefinitions EntityStateConfigurationDefinitions.Add(entityStateConfiguration); return(true); }
/// <summary> /// Adds an EntityStateConfiguration to your Mod's ContentPack /// <para>ESC's Target Type must inherit from EntityState</para> /// <para>ESC's Target Type cannot be Abstract</para> /// </summary> /// <param name="entityStateConfiguration">The EntityStateConfiguration to Add</param> /// <returns>true if valid and added, false if one of the requirements is not met</returns> public static bool AddEntityStateConfiguration(EntityStateConfiguration entityStateConfiguration) { var asm = Assembly.GetCallingAssembly(); if (CatalogBlockers.GetAvailability <EntityStateConfiguration>()) { Type type = Type.GetType(entityStateConfiguration.targetType.assemblyQualifiedName); if (!type.IsSubclassOf(typeof(EntityState))) { RejectContent(entityStateConfiguration, asm, "EntityStateConfiguration", $"but it's targetType ({type.Name}) is not a type that derives from EntityState!"); return(false); } if (type.IsAbstract) { RejectContent(entityStateConfiguration, asm, "EntityStateConfiguration", $"but it's targetType ({type.Name}) is abstract!"); return(false); } R2APIContentManager.HandleContentAddition(asm, entityStateConfiguration); return(true); } RejectContent(entityStateConfiguration, asm, "EntityStateConfiguration", "but the EntityStateCatalog has already initialized!"); return(false); }