public ChangeWeaponMaterialLogic(VfxAction.ChangeWeaponMaterialVfx config, float timeToLive, Character caster, Environment environment) { this.config = config; this.timeToLive = timeToLive; this.caster = caster; this.environment = environment; Entity entity = caster.GameObject().GetComponent <EntityReference>().Entity; CustomizeVisualComponent cvc = entity.GetComponent <CustomizeVisualComponent>(); EquipmentCollectData equipmentCollectData = cvc.EquipmentCollectData; if (equipmentCollectData == null) { material = environment.FindDefaultMaterialById( caster.CharacterId(), config.id ); } else { material = environment.FindMaterialById( caster.CharacterId(), equipmentCollectData.EquipmentConfigId.VisualId, config.id ); } if (material == null) { Interrupt(); return; } EntityGameObjectComponent egoc = entity .GetComponent <EntityGameObjectComponent>(); affectedRenderer = ((GameObjectComponent)egoc).WeaponRenderer; if (material != null) { originalMaterials = new SsarTuple <Material, Material[]>(affectedRenderer.material, affectedRenderer.materials); affectedRenderer.material = material; List <Material> materials = new List <Material>(); materials.Add(material); for (int kIndex = 0; kIndex < config.valueModifiers.Count; kIndex++) { VfxAction.MaterialValueModifier mvm = config.valueModifiers[kIndex]; valueModifiers.Add(new ValueModifier(mvm, materials)); } for (int kIndex = 0; kIndex < config.colorModifiers.Count; kIndex++) { VfxAction.MaterialColorModifier mcm = config.colorModifiers[kIndex]; colorModifiers.Add(new ColorModifier(mcm, materials)); } } }
public AddMaterialLogic(VfxAction.AddMaterialVfx config, float timeToLive, Character caster) { this.config = config; this.timeToLive = timeToLive; material = config.ShowMaterial(); // DLog.Log("debug AddMaterialLogic material from config " + material.GetHashCode()); EntityGameObjectComponent gameObjectComponent = caster.GameObject().GetComponent <EntityReference>().Entity.GetComponent <EntityGameObjectComponent>(); IEnumerable <Renderer> allRenderers = ((GameObjectComponent)gameObjectComponent).RendererComponents; foreach (Renderer renderer in allRenderers) { if (!config.parent.Equals(ALL)) { if (!renderer.gameObject.name.Equals(config.parent)) { continue; } } affectedRenderers.Add(renderer); Material[] materials = new Material[renderer.sharedMaterials.Length + 1]; materials[renderer.sharedMaterials.Length] = material; for (int i = 0; i < renderer.sharedMaterials.Length; i++) { materials[i] = renderer.sharedMaterials[i]; // DLog.Log("debug AddMaterialLogic new sharedMaterial " + materials[i].GetHashCode()); } renderer.sharedMaterials = materials; } valueModifiers = new List <ValueModifier>(); for (int kIndex = 0; kIndex < config.valueModifiers.Count; kIndex++) { VfxAction.MaterialValueModifier mvm = config.valueModifiers[kIndex]; valueModifiers.Add(new ValueModifier(mvm, new List <Material>(new [] { material }))); } colorModifiers = new List <ColorModifier>(); for (int kIndex = 0; kIndex < config.colorModifiers.Count; kIndex++) { VfxAction.MaterialColorModifier mcm = config.colorModifiers[kIndex]; colorModifiers.Add(new ColorModifier(mcm, new List <Material>(new [] { material }))); } // DLog.Log("debug AddMaterialLogic"); }