コード例 #1
0
        private SequenceModifier AddSequenceModifier(IntPtr p)
        {
            if (p == IntPtr.Zero)
            {
                return(null);
            }
            var modifier = new SequenceModifier(p, _mta);

            _modifiers.Add(modifier);
            return(modifier);
        }
コード例 #2
0
ファイル: PathModifier.cs プロジェクト: backviet/winengine
        public PathModifier(float pDuration, IEntity entity, Path path, IEntityModifierListener entityModiferListener,
                            IInterpolation function)
            : base(entityModiferListener)
        {
            int pathSize = path.Size();

            if (pathSize < 2)
            {
                throw new Exception("Path needs at least 2 waypoints!");
            }

            this.entity = entity;

            this.path = path;

            MoveModifier[] moveModifiers = new MoveModifier[pathSize - 1];

            float[] coordinatesX = path.CoordinatesX();
            float[] coordinatesY = path.CoordinatesY();

            float velocity = path.Length() / pDuration;

            int modifierCount = moveModifiers.Length;

            for (int i = 0; i < modifierCount; i++)
            {
                float duration = path.SegmentLength(i) / velocity;
                moveModifiers[i] = new MoveModifier(duration, coordinatesX[i], coordinatesX[i + 1], coordinatesY[i],
                                                    coordinatesY[i + 1], null, function);
            }

            /* Create a new SequenceModifier and register the listeners that
             * call through to mEntityModifierListener and mPathModifierListener. */

            sequenceModifier = new SequenceModifier <IEntity>(moveModifiers);
            sequenceModifier.StartSequenceAction  += (sender => SequenceStarted());
            sequenceModifier.FinishSequenceAction += (sender => SequenceFinished());
            sequenceModifier.StartModifierAction  += (sender => SequenceListenerStarted(this.entity));
            sequenceModifier.FinishModifierAction += (sender => SequenceListenerFinished(this.entity));
        }
コード例 #3
0
ファイル: PathModifier.cs プロジェクト: backviet01/winengine
        public PathModifier(float pDuration, IEntity entity, Path path, IEntityModifierListener entityModiferListener,
            IInterpolation function)
            : base(entityModiferListener)
        {
            int pathSize = path.Size();

            if (pathSize < 2)
            {
                throw new Exception("Path needs at least 2 waypoints!");
            }

            this.entity = entity;

            this.path = path;

            MoveModifier[] moveModifiers = new MoveModifier[pathSize - 1];

            float[] coordinatesX = path.CoordinatesX();
            float[] coordinatesY = path.CoordinatesY();

            float velocity = path.Length() / pDuration;

            int modifierCount = moveModifiers.Length;
            for (int i = 0; i < modifierCount; i++)
            {
                float duration = path.SegmentLength(i) / velocity;
                moveModifiers[i] = new MoveModifier(duration, coordinatesX[i], coordinatesX[i + 1], coordinatesY[i],
                    coordinatesY[i + 1], null, function);
            }

            /* Create a new SequenceModifier and register the listeners that
             * call through to mEntityModifierListener and mPathModifierListener. */

            sequenceModifier = new SequenceModifier<IEntity>(moveModifiers);
            sequenceModifier.StartSequenceAction += (sender => SequenceStarted());
            sequenceModifier.FinishSequenceAction += (sender => SequenceFinished());
            sequenceModifier.StartModifierAction += (sender => SequenceListenerStarted(this.entity));
            sequenceModifier.FinishModifierAction += (sender => SequenceListenerFinished(this.entity));
        }