Universe.Physics.BulletSPlugin.BSTerrainHeightmap.BuildHeightmapTerrain C# (CSharp) Method

BuildHeightmapTerrain() static private method

static private BuildHeightmapTerrain ( ) : void
return void
        void BuildHeightmapTerrain()
        {
            // Create the terrain shape from the mapInfo
            m_mapInfo.terrainShape = PhysicsScene.PE.CreateTerrainShape(m_mapInfo.ID,
                new Vector3(m_mapInfo.sizeX, m_mapInfo.sizeY, 0), m_mapInfo.minZ, m_mapInfo.maxZ,
                m_mapInfo.heightMap, 1f, BSParam.TerrainCollisionMargin);


            // The terrain object initial position is at the center of the object
            Vector3 centerPos;
            centerPos.X = m_mapInfo.minCoords.X + (m_mapInfo.sizeX / 2f);
            centerPos.Y = m_mapInfo.minCoords.Y + (m_mapInfo.sizeY / 2f);
            centerPos.Z = m_mapInfo.minZ + ((m_mapInfo.maxZ - m_mapInfo.minZ) / 2f);

            m_mapInfo.terrainBody = PhysicsScene.PE.CreateBodyWithDefaultMotionState(m_mapInfo.terrainShape,
                m_mapInfo.ID, centerPos, Quaternion.Identity);

            // Set current terrain attributes
            PhysicsScene.PE.SetFriction(m_mapInfo.terrainBody, BSParam.TerrainFriction);
            PhysicsScene.PE.SetHitFraction(m_mapInfo.terrainBody, BSParam.TerrainHitFraction);
            PhysicsScene.PE.SetRestitution(m_mapInfo.terrainBody, BSParam.TerrainRestitution);
            PhysicsScene.PE.SetCollisionFlags(m_mapInfo.terrainBody, CollisionFlags.CF_STATIC_OBJECT);

            // Return the new terrain to the world of physical objects
            PhysicsScene.PE.AddObjectToWorld(PhysicsScene.World, m_mapInfo.terrainBody);

            // redo its bounding box now that it is in the world
            PhysicsScene.PE.UpdateSingleAabb(PhysicsScene.World, m_mapInfo.terrainBody);

            m_mapInfo.terrainBody.collisionType = CollisionType.Terrain;
            m_mapInfo.terrainBody.ApplyCollisionMask(PhysicsScene);

            // Make it so the terrain will not move or be considered for movement.
            PhysicsScene.PE.ForceActivationState(m_mapInfo.terrainBody, ActivationState.DISABLE_SIMULATION);

            return;
        }