Beispiel #1
0
        public void CreateSoftEffectReferencAndDisposeDoesNotFreeMemory()
        {
            Effect effect = Effect.Blindness();

            Assert.That(effect.IsValid, Is.True, "Effect was not valid after creation.");

            CGameEffect gameEffect = effect;

            Assert.That(gameEffect, Is.Not.Null, "Native effect was not valid after implicit cast.");

            Effect softReference = gameEffect.ToEffect(false) !;

            softReference.Dispose();
            Assert.That(softReference.IsValid, Is.True, "The soft reference disposed the memory of the original effect.");
        }
Beispiel #2
0
            private static int OnEffectRemoved(void *pEffectListHandler, void *pObject, void *pEffect)
            {
                CNWSObject  gameObject = CNWSObject.FromPointer(pObject);
                CGameEffect gameEffect = CGameEffect.FromPointer(pEffect);

                if (gameObject == null || gameEffect == null)
                {
                    return(Hook.CallOriginal(pEffectListHandler, pObject, pEffect));
                }

                EffectDurationType durationType = (EffectDurationType)gameEffect.GetDurationType();

                if (durationType != EffectDurationType.Temporary && durationType != EffectDurationType.Permanent)
                {
                    return(Hook.CallOriginal(pEffectListHandler, pObject, pEffect));
                }

                OnEffectRemove eventData = ProcessEvent(new OnEffectRemove
                {
                    Object = gameObject.ToNwObject() !,
                    Effect = gameEffect.ToEffect(false) !,
                });