Exemplo n.º 1
0
        public BEPUHeightField(int widthX, int widthZ, float[,] heights, Karen90MmoFramework.Quantum.Vector3 position)
            : base(heights, new AffineTransform(new Vector3(1, 1, 1), Quaternion.Identity, new Vector3(position.X, position.Y, position.Z)))
        {
            if (heights == null)
            {
                throw new ArgumentNullException("heights");
            }

            if (widthX * widthZ != heights.Length)
            {
                throw new ArgumentOutOfRangeException("heights");
            }

            this.position = position;
            this.widthX   = widthX;
            this.heights  = new float[widthX * widthZ];

            for (var z = 0; z < widthZ; z++)
            {
                for (var x = 0; x < widthX; x++)
                {
                    this.heights[z * widthX + x] = heights[x, z];
                }
            }
        }
Exemplo n.º 2
0
        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();
            }
        }