Exemplo n.º 1
0
        public override void OnGameTick(float deltaTime)
        {
            if (entity.State == EnumEntityState.Inactive || !entity.IsInteractable)
            {
                return;
            }
            if (entity.World.ElapsedMilliseconds < 2000)
            {
                return;
            }

            double touchdist = entity.SelectionBox.XSize / 2;

            pushVector.Set(0, 0, 0);

            ownPosRepulseX = entity.ownPosRepulse.X;
            ownPosRepulseY = entity.ownPosRepulse.Y;
            ownPosRepulseZ = entity.ownPosRepulse.Z;
            mySize         = entity.SelectionBox.Length * entity.SelectionBox.Height;

            partitionUtil.WalkEntityPartitions(entity.ownPosRepulse, touchdist + partitionUtil.LargestTouchDistance + 0.1, WalkEntity);

            pushVector.X = GameMath.Clamp(pushVector.X, -3, 3);
            pushVector.Y = GameMath.Clamp(pushVector.Y, -3, 3);
            pushVector.Z = GameMath.Clamp(pushVector.Z, -3, 3);

            entity.SidedPos.Motion.Add(pushVector.X / 30, pushVector.Y / 30, pushVector.Z / 30);
        }
Exemplo n.º 2
0
        public override void OnGameTick(float deltaTime)
        {
            if (entity.World.ElapsedMilliseconds < 2000)
            {
                return;
            }
            if (entity.State == EnumEntityState.Inactive || !entity.IsInteractable)
            {
                return;
            }

            ownPos.Set(
                entity.LocalPos.X + (entity.CollisionBox.X2 - entity.OriginCollisionBox.X2),
                entity.LocalPos.Y + (entity.CollisionBox.Y2 - entity.OriginCollisionBox.Y2),
                entity.LocalPos.Z + (entity.CollisionBox.Z2 - entity.OriginCollisionBox.Z2)
                );

            ownTouchDistance = (entity.CollisionBox.X2 - entity.CollisionBox.X1) / 2;

            pushVector.Set(0, 0, 0);

            partitionUtil.WalkEntityPartitions(ownPos, ownTouchDistance + partitionUtil.LargestTouchDistance + 0.1, WalkEntity);

            pushVector.X = GameMath.Clamp(pushVector.X, -3, 3);
            pushVector.Y = GameMath.Clamp(pushVector.Y, -3, 3);
            pushVector.Z = GameMath.Clamp(pushVector.Z, -3, 3);
            entity.LocalPos.Motion.Add(pushVector.X / 30, pushVector.Y / 30, pushVector.Z / 30);

            entity.World.FrameProfiler.Mark("entity-repulse");
        }