Beispiel #1
0
        public HullDataManager(HullGeometryInfo geometryInfo)
        {
            NumDecks = geometryInfo.NumDecks;
            CurDeck = 0;
            VisibleDecks = NumDecks;
            HullBuffers = geometryInfo.HullWallTexBuffers;
            DeckBuffers = geometryInfo.DeckFloorBuffers;
            DeckFloorBoundingBoxes = geometryInfo.DeckFloorBoundingBoxes;
            FloorVertexes = geometryInfo.FloorVertexes;
            DeckHeight = geometryInfo.DeckHeight;
            WallResolution = geometryInfo.WallResolution;
            CenterPoint = geometryInfo.CenterPoint;

            WallBuffers = new ObjectBuffer<ObjectIdentifier>[NumDecks];
            for (int i = 0; i < WallBuffers.Count(); i++){
                int potentialWalls = geometryInfo.FloorVertexes[i].Count()*2;
                WallBuffers[i] = new ObjectBuffer<ObjectIdentifier>(potentialWalls, 10, 20, 30, "HullWallTex");
            }

            WallIdentifiers = new List<ObjectIdentifier>[NumDecks];
            for (int i = 0; i < WallIdentifiers.Length; i++){
                WallIdentifiers[i] = new List<ObjectIdentifier>();
            }

            //override default lighting
            foreach (var buffer in DeckBuffers){
                buffer.DiffuseDirection = new Vector3(0, 1, 0);
            }
            foreach (var buffer in HullBuffers){
                buffer.DiffuseDirection = new Vector3(0, -1, 1);
                buffer.CullMode = CullMode.None;
            }
        }