예제 #1
0
 public JWaterTile(float centerX, float centerZ, float height, JTerrainTexture colorTexture)
 {
     this.X            = centerX;
     this.Z            = centerZ;
     this.Height       = height;
     this.ColorTexture = colorTexture;
 }
예제 #2
0
        /// <summary>
        /// GraphicsMode used for anitaliasing.
        /// </summary>
        public JGameWindow() : base(WIDTH, HEIGHT, new OpenTK.Graphics.GraphicsMode(32, 24, 0, 8), "JModelViewer", GameWindowFlags.Default, DisplayDevice.Default, 3, 0, GraphicsContextFlags.ForwardCompatible)
        {
            PlayerTexturePath = JFileUtils.GetPathToResFile("Cowboy\\CowboyTexture.png");
            PlayerModelPath   = JFileUtils.GetPathToResFile("Cowboy\\Cowboy.obj");

            Version  version        = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
            DateTime buildDate      = new DateTime(2000, 1, 1).AddDays(version.Build).AddSeconds(version.Revision * 2);
            string   displayVersion = $"{version} ({buildDate})";

            Console.WriteLine("JGameEngine v." + displayVersion);

            Console.WriteLine("OpenGL version: " + GL.GetString(StringName.Version));

            Loader          = new JLoader();
            PlayerModelData = JObjFileLoader.LoadObj(PlayerModelPath);

            Console.WriteLine("Using .obj file: " + PlayerModelPath);
            PlayerModel = Loader.LoadToVAO(PlayerModelData.Vertices, PlayerModelData.TextureCoords, PlayerModelData.Normals, PlayerModelData.Indices);

            Console.WriteLine("Using .png texture file: " + PlayerTexturePath + "...");
            JModelTexture texture = new JModelTexture(Loader.loadTexture(PlayerTexturePath));

            TexturedModel = new JTexturedModel(PlayerModel, texture);
            Light         = new JLight(new Vector3(0, 0, 0), new Vector3(1, 1, 1));

            JTerrainTexture textureWaterDeep       = new JTerrainTexture(Loader.loadTexture(JFileUtils.GetPathToResFile("Terrain\\WaterDeep.png")));
            JTerrainTexture textureWaterShallow    = new JTerrainTexture(Loader.loadTexture(JFileUtils.GetPathToResFile("Terrain\\WaterShallow.png")));
            JTerrainTexture textureSand            = new JTerrainTexture(Loader.loadTexture(JFileUtils.GetPathToResFile("Terrain\\Sand.png")));
            JTerrainTexture textureGrassNatural    = new JTerrainTexture(Loader.loadTexture(JFileUtils.GetPathToResFile("Terrain\\GrassNatural.png")));
            JTerrainTexture textureGrassLush       = new JTerrainTexture(Loader.loadTexture(JFileUtils.GetPathToResFile("Terrain\\GrassLush.png")));
            JTerrainTexture textureMountainNatural = new JTerrainTexture(Loader.loadTexture(JFileUtils.GetPathToResFile("Terrain\\MountainNatural.png")));
            JTerrainTexture textureMountainRocky   = new JTerrainTexture(Loader.loadTexture(JFileUtils.GetPathToResFile("Terrain\\MountainRocky.png")));
            JTerrainTexture textureSnow            = new JTerrainTexture(Loader.loadTexture(JFileUtils.GetPathToResFile("Terrain\\Snow.png")));

            JTerrainTexturePack texturePack = new JTerrainTexturePack();

            texturePack.AddTerrainTexture(textureWaterDeep, 0.1f);
            texturePack.AddTerrainTexture(textureWaterShallow, 0.15f);
            texturePack.AddTerrainTexture(textureSand, 0.18f);
            texturePack.AddTerrainTexture(textureGrassNatural, 0.35f);
            texturePack.AddTerrainTexture(textureGrassLush, 0.45f);
            texturePack.AddTerrainTexture(textureMountainNatural, 0.6f);
            texturePack.AddTerrainTexture(textureMountainRocky, 0.7f);
            texturePack.AddTerrainTexture(textureSnow, 0.8f);

            MasterRenderer = new JMasterRenderer(texturePack);

            WaterBuffer = new JWaterFrameBuffer(this);
            WaterShader = new JWaterShader();
            waterTiles  = new List <JWaterTile>();
            WaterTile   = new JWaterTile(400, -400, 8, textureWaterShallow);
            waterTiles.Add(WaterTile);
            waterRenderer = new JWaterRenderer(Loader, WaterShader, MasterRenderer.projectionMatrix, WaterBuffer, WaterTile);

            terrain = new JPerlinTerrain(0, -1, Loader, texturePack);

            Entity     = new JBoundedEntity(TexturedModel, new Vector3(50, 0, -50), new Vector3(0, 0, 1), 0.1f, Loader);
            Entity2    = new JBoundedEntity(TexturedModel, new Vector3(100, 0, -50), new Vector3(0, 0, 1), 0.1f, Loader);
            EntityList = new List <JBoundedEntity>();
            EntityList.Add(Entity);
            EntityList.Add(Entity2);

            // Generate Trees
            JEntityGenerator entityGenerator = new JEntityGenerator(Loader, terrain, WaterTile);

            StaticEntities = entityGenerator.GenerateTrees();

            Camera = new JCameraFree();

            picker = new JMousePicker(Camera, MasterRenderer.projectionMatrix, terrain, this);

            LastFrameTime = GetCurrentTime();
        }