public bool IgnoreThis(BroadPhaseEntry entry) { if (entry is EntityCollidable ec && ec.Entity == Entity) { return(false); } if (CollisionRules.GetCollisionRule(entity.CollisionInformation, entry) == CollisionRule.NoBroadPhase) { return(false); } return(CollisionUtil.ShouldCollide(entry)); }
public WheelStepUpConstraint(Entity e, CollisionUtil collis, double height) { Entity = e; HopHeight = height; Collision = collis; }
public void BuildWorld() { MainThread = Thread.CurrentThread; MainThreadID = MainThread.ManagedThreadId; ParallelLooper pl = new ParallelLooper(); for (int i = 0; i < Environment.ProcessorCount; i++) { pl.AddThread(); } CollisionDetectionSettings.AllowedPenetration = 0.01f; PhysicsWorld = new Space(pl); PhysicsWorld.TimeStepSettings.MaximumTimeStepsPerFrame = 10; PhysicsWorld.ForceUpdater.Gravity = new Vector3(0, 0, -9.8f * 3f / 2f); PhysicsWorld.DuringForcesUpdateables.Add(new LiquidVolume(this)); PhysicsWorld.TimeStepSettings.TimeStepDuration = 1f / TheServer.CVars.g_fps.ValueF; Collision = new CollisionUtil(PhysicsWorld); EntityConstructors.Add(EntityType.ITEM, new ItemEntityConstructor()); EntityConstructors.Add(EntityType.BLOCK_ITEM, new BlockItemEntityConstructor()); EntityConstructors.Add(EntityType.GLOWSTICK, new GlowstickEntityConstructor()); EntityConstructors.Add(EntityType.MODEL, new ModelEntityConstructor()); EntityConstructors.Add(EntityType.SMOKE_GRENADE, new SmokeGrenadeEntityConstructor()); EntityConstructors.Add(EntityType.MUSIC_BLOCK, new MusicBlockEntityConstructor()); ChunkManager = new ChunkDataManager(); ChunkManager.Init(this); //LoadRegion(new Location(-MaxViewRadiusInChunks * 30), new Location(MaxViewRadiusInChunks * 30), true); //TheServer.Schedule.RunAllSyncTasks(0.016); // TODO: Separate per-region scheduler // Also don't freeze the entire server/region just because we're waiting on chunks >.> //SysConsole.Output(OutputType.INIT, "Finished building chunks! Now have " + LoadedChunks.Count + " chunks!"); }
/// <summary> /// Builds the physics world. /// </summary> public void BuildWorld() { ParallelLooper pl = new ParallelLooper(); for (int i = 0; i < Environment.ProcessorCount; i++) { pl.AddThread(); } CollisionDetectionSettings.AllowedPenetration = 0.01f; PhysicsWorld = new Space(pl); PhysicsWorld.TimeStepSettings.MaximumTimeStepsPerFrame = 10; // Set the world's general default gravity PhysicsWorld.ForceUpdater.Gravity = new BEPUutilities.Vector3(0, 0, -9.8f * 3f / 2f); PhysicsWorld.DuringForcesUpdateables.Add(new LiquidVolume(this)); // Load a CollisionUtil instance Collision = new CollisionUtil(PhysicsWorld); }