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);
        }
Exemple #3
0
 public AppliedEffect(IWorldObjectEffectHandler handler, WorldObjectBehaviour worldObject, ResourceActivationContext activationContext, WorldObjectEffectPlayer effectPlayer, IScriptObject effect)
 {
     Handler           = handler;
     WorldObject       = worldObject;
     ActivationContext = activationContext;
     EffectPlayer      = effectPlayer;
     Effect            = effect;
 }
Exemple #4
0
        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;
                    }
                }
            }
        }
Exemple #6
0
        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);
                    }
                }
            }
        }