public void ApplyEffects(ResourceActivationContext context, WorldObjectEffectPlayer resource) { if (resource.WorldObjectReferences != null && resource.Effects != null) { foreach (var wo in resource.WorldObjectReferences) { var instId = context.GetInstanceId(wo.ObjectId); var worldObjs = m_worldObjects[instId]; if (worldObjs != null) { foreach (var worldObj in worldObjs) { ApplyEffects(worldObj, context, resource); } } else { m_pendingEffects.Add(instId, new ActiveResourceContainer <WorldObjectEffectPlayer>(context, resource)); } } } }
public void RemoveEffects(ResourceActivationContext context, WorldObjectEffectPlayer resource) { if (m_effects.ContainsKey(context.InstanceId)) { var effects = m_effects[context.InstanceId]; if (effects != null) { foreach (var effect in effects) { GameObject.Destroy(effect); } } } if (resource.WorldObjectReferences != null) { foreach (var objRef in resource.WorldObjectReferences) { var instId = context.GetInstanceId(objRef.ObjectId); m_pendingEffects.RemoveAll(instId); } } m_effects.RemoveAll(context.InstanceId); }
public AppliedEffect(IWorldObjectEffectHandler handler, WorldObjectBehaviour worldObject, ResourceActivationContext activationContext, WorldObjectEffectPlayer effectPlayer, IScriptObject effect) { Handler = handler; WorldObject = worldObject; ActivationContext = activationContext; EffectPlayer = effectPlayer; Effect = effect; }
public void RemoveEffects(ResourceActivationContext context, WorldObjectEffectPlayer resource) { var appliedEffects = m_appliedEffects[context.InstanceId]; if (appliedEffects != null) { foreach (var effect in appliedEffects) { effect.Handler.RemoveEffect(effect); } } if (resource.WorldObjectReferences != null) { foreach (var objRef in resource.WorldObjectReferences) { var objInstId = context.GetInstanceId(objRef.ObjectId); m_pendingEffects.RemoveAll(objInstId); } } m_appliedEffects.RemoveAll(context.InstanceId); }
void ApplyEffects(WorldObjectBehaviour worldObj, ResourceActivationContext effectContext, WorldObjectEffectPlayer resource) { if (resource.Effects != null) { foreach (var eref in resource.Effects) { switch (eref.Type) { case "motive.unity.animation": var anim = eref as UnityAnimation; if (anim != null) { var asset = anim.Asset; if (asset != null) { var animTgt = worldObj.GetAnimationTarget(); if (animTgt) { // Target may have been destroyed somewhere var objAnim = worldObj.GetAnimationTarget().AddComponent <WorldObjectAnimation>(); objAnim.AnimationAsset = asset; m_effects.Add(effectContext.InstanceId, objAnim); } } } break; } } } }
void ApplyEffects(WorldObjectBehaviour worldObj, ResourceActivationContext effectContext, WorldObjectEffectPlayer resource) { if (resource.Effects != null) { foreach (var eref in resource.Effects) { IWorldObjectEffectHandler handler; if (m_effectHandlers.TryGetValue(eref.Type, out handler)) { var appliedEffect = new AppliedEffect(handler, worldObj, effectContext, resource, eref); handler.ApplyEffect(appliedEffect); m_appliedEffects.Add(effectContext.InstanceId, appliedEffect); } else { var errStr = string.Format("Could not find handler for effect type {0}", eref.Type); SystemErrorHandler.Instance.ReportError(errStr); m_logger.Warning(errStr); } } } }