public CollisionUtil(Space world) { World = world; // NonSolid Vs. Solid,NonSolid,WorldSolid (All) CollisionGroup.DefineCollisionRule(NonSolid, WorldSolid, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(WorldSolid, NonSolid, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(NonSolid, NonSolid, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(NonSolid, Solid, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(Solid, NonSolid, CollisionRule.NoBroadPhase); // Player Vs. NonSolid,Player CollisionGroup.DefineCollisionRule(Player, NonSolid, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(NonSolid, Player, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(Player, Player, CollisionRule.NoBroadPhase); // Item Vs. NonSolid (All) CollisionGroup.DefineCollisionRule(Item, NonSolid, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(NonSolid, Item, CollisionRule.NoBroadPhase); // Water Vs. NonSolid,Solid,Player,Item (All) CollisionGroup.DefineCollisionRule(Water, NonSolid, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(NonSolid, Water, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(Water, Solid, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(Solid, Water, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(Water, Player, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(Player, Water, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(Water, Item, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(Item, Water, CollisionRule.NoBroadPhase); // Non-player Character Vs. NonSolid,Item,Water CollisionGroup.DefineCollisionRule(Character, NonSolid, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(NonSolid, Character, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(Character, Water, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(Water, Character, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(Character, Item, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(Item, Character, CollisionRule.NoBroadPhase); }
static GameModel() { CollisionGroup.DefineCollisionRule(NormalGroup, GhostGroup, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(NormalGroup, NormalGroup, CollisionRule.Normal); CollisionGroup.DefineCollisionRule(GhostGroup, GhostGroup, CollisionRule.Normal); CollisionGroup.DefineCollisionRule(TerrainGroup, FunctionalGroup, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(FunctionalGroup, FunctionalGroup, CollisionRule.NoBroadPhase); }
public ActorManager(ObservableCollection <PlayerView> players) { mContentLoader = new ContentManager(SharedResources.Game.Services, "Content"); mCueSounds = new List <Cue>(); mCueSoundsDelete = new List <Cue>(); mPlayers = players; mActors = new Dictionary <int, Actor>(); WorldBounds = new BoundingBox(Vector3.Zero, Vector3.One); SimSpace = new Space(); SimSpace.ForceUpdater.Gravity = new BEPUutilities.Vector3(0.0f, -89.2f, 0.0f); // 9 units = 1 meter? CharactersCollisionGroup = new CollisionGroup(); PickupsCollisionGroup = new CollisionGroup(); CollisionGroup.DefineCollisionRule(CharactersCollisionGroup, PickupsCollisionGroup, CollisionRule.NoSolver); Random = new Random(); mTemplates = new Dictionary <string, ActorManifest>(); CameraClippingSimObjects = new HashSet <int>(); CollisionComponent.CollisionComponentInitialized += CollisionComponentInitializedHandler; CurrentTime = TimeSpan.Zero; }
public BEPUPhysicsWorld(Karen90MmoFramework.Quantum.Bounds bounds, Karen90MmoFramework.Quantum.Vector3 gravity, bool createBoundary = false) { var parallelLooper = new ParallelLooper(); if (Environment.ProcessorCount > 1) { for (var i = 0; i < Environment.ProcessorCount; i++) { parallelLooper.AddThread(); } } this.space = new Space(parallelLooper) { ForceUpdater = { Gravity = new Vector3(gravity.X, gravity.Y, gravity.Z) } }; this.bounds = bounds; this.frictionlessMaterial = new Material(0f, 0f, 0f); this.staticGroup = new CollisionGroup(); this.kinematicGroup = new CollisionGroup(); this.dynamicGroup = new CollisionGroup(); this.avatarGroup = new CollisionGroup(); CollisionGroup.DefineCollisionRule(this.staticGroup, this.staticGroup, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(this.staticGroup, this.kinematicGroup, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(this.staticGroup, this.dynamicGroup, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(this.staticGroup, this.avatarGroup, CollisionRule.Defer); CollisionGroup.DefineCollisionRule(this.kinematicGroup, this.kinematicGroup, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(this.kinematicGroup, this.dynamicGroup, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(this.kinematicGroup, this.avatarGroup, CollisionRule.Defer); CollisionGroup.DefineCollisionRule(this.dynamicGroup, this.dynamicGroup, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(this.dynamicGroup, this.avatarGroup, CollisionRule.Defer); CollisionGroup.DefineCollisionRule(this.avatarGroup, this.avatarGroup, CollisionRule.NoBroadPhase); if (createBoundary) { this.CreateWorldBoundary(); } }
static Actor() { CollisionGroup.DefineCollisionRule(staticObjects, staticObjects, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(staticObjects, dynamicObjects, CollisionRule.Normal); }
static Player() { CollisionGroup.DefineCollisionRule(noCollisionGroup, GameModel.GhostGroup, CollisionRule.NoBroadPhase); CollisionGroup.DefineCollisionRule(noCollisionGroup, GameModel.NormalGroup, CollisionRule.NoBroadPhase); }