public GamePhysics(ILogger logger, ITime engineTime, SnapshotTime gameTime, ServerEntities entities, ServerEntityList entityList, BSPModel worldModel, ICommandContext commandContext) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _engineTime = engineTime ?? throw new ArgumentNullException(nameof(engineTime)); _gameTime = gameTime ?? throw new ArgumentNullException(nameof(gameTime)); _entities = entities ?? throw new ArgumentNullException(nameof(entities)); _entityList = entityList ?? throw new ArgumentNullException(nameof(entityList)); _worldModel = worldModel ?? throw new ArgumentNullException(nameof(worldModel)); //TODO: need to reset this on map spawn for singleplayer //TODO: mark as server cvar _sv_clienttrace = commandContext.RegisterVariable( new VariableInfo("sv_clienttrace") .WithHelpInfo("Scale multiplier for trace lines ran against studio models") .WithValue(1) .WithNumberFilter()); InitBoxHull(); box_hull = new Hull[1] { new Hull(0, PhysicsConstants.MaxBoxSides, Vector3.Zero, Vector3.Zero, box_clipnodes, new Memory <Models.BSP.FileFormat.Plane>(box_planes)) }; CreateAreaNode(0, ref _worldModel.SubModel.Mins, ref _worldModel.SubModel.Maxs); }
public void CreateEntityList() { EntityList = new ServerEntityList( EntityDictionary, _serverEngine.Clients.MaxClients, _entitiesNetworkList, this); }
public GameMovement(ILogger logger, ITime engineTime, SnapshotTime gameTime, IServerClients serverClients, ServerEntities entities, ServerEntityList entityList, Random random, GamePhysics physics, ICommandContext commandContext) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _engineTime = engineTime ?? throw new ArgumentNullException(nameof(engineTime)); _gameTime = gameTime ?? throw new ArgumentNullException(nameof(gameTime)); _serverClients = serverClients ?? throw new ArgumentNullException(nameof(serverClients)); _entities = entities ?? throw new ArgumentNullException(nameof(entities)); _entityList = entityList ?? throw new ArgumentNullException(nameof(entityList)); _random = random ?? throw new ArgumentNullException(nameof(random)); _physics = physics ?? throw new ArgumentNullException(nameof(physics)); //TODO: add a filter to enforce positive values only _sv_maxvelocity = commandContext.RegisterVariable( new VariableInfo("sv_maxvelocity") .WithHelpInfo("The maximum velocity in any axis that an entity can have. Any velocity greater than this is clamped to this value") .WithValue(2000) .WithNumberFilter() .WithNumberSignFilter(true)); //TODO: mark as server cvar _sv_stepsize = commandContext.RegisterVariable( new VariableInfo("sv_stepsize") .WithHelpInfo("Defines the maximum height that characters can still step over (e.g. stairs)") .WithValue(18) .WithNumberFilter() .WithNumberSignFilter(true)); //TODO: mark as server cvar _sv_bounce = commandContext.RegisterVariable( new VariableInfo("sv_bounce") .WithHelpInfo("Multiplier for physics bounce effect when objects collide with other objects") .WithValue(1) .WithNumberFilter() .WithNumberSignFilter(true)); //TODO: mark as server cvar _sv_gravity = commandContext.RegisterVariable( new VariableInfo("sv_gravity") .WithHelpInfo("The world's gravity amount, in units per second") .WithValue(800) .WithNumberFilter()); //TODO: mark as server cvar _sv_stopspeed = commandContext.RegisterVariable( new VariableInfo("sv_stopspeed") .WithHelpInfo("Minimum stopping speed when on the ground") .WithValue(100) .WithNumberFilter() .WithNumberSignFilter(true)); //TODO: mark as server cvar _sv_friction = commandContext.RegisterVariable( new VariableInfo("sv_friction") .WithHelpInfo("World friction") .WithValue(4) .WithNumberFilter() .WithNumberSignFilter(true)); }