public OceanPage(OceanConfig config) { this.config = config; config.ConfigChange += new ConfigChangeHandler(ConfigChanged); material = (Material)MaterialManager.Instance.GetByName("MVSMOcean"); if (material == null) { config.ShowOcean = false; return; } material.Load(); // if the shader technique is supported, then use shaders useShaders = material.GetTechnique(0).IsSupported; // build the vertex buffer BuildVertexBuffer(); // build the index buffer BuildIndexBuffer(); // force update of shader variables in material UpdateMaterial(); UpdateBounds(); CastShadows = false; }
public TextureScaleZValue(OceanConfig ocean) : base(AnimableType.Float) { this.ocean = ocean; SetAsBaseValue(0.0f); }
public BumpSpeedZValue(OceanConfig ocean) : base(AnimableType.Float) { this.ocean = ocean; SetAsBaseValue(0.0f); }
public ShallowColorValue(OceanConfig ocean) : base(AnimableType.ColorEx) { this.ocean = ocean; SetAsBaseValue(ColorEx.Black); }
public WaveHeightValue(OceanConfig ocean) : base(AnimableType.Float) { this.ocean = ocean; SetAsBaseValue(0.0f); }
public SeaLevelValue(OceanConfig ocean) : base(AnimableType.Float) { this.ocean = ocean; SetAsBaseValue(0.0f); }
/// <summary> /// Initialize the world manager /// </summary> public void Initialize(SceneManager sceneManager, ITerrainGenerator gen, ILODSpec clientLodSpec, SceneNode root) { Debug.Assert(!initialized, "Attempt to initialize already initialized TerrainManager"); scene = sceneManager; terrainGenerator = gen; terrainGenerator.TerrainChanged += TerrainGenerator_OnTerrainChanged; lodSpec = clientLodSpec ?? defaultLODSpec; pageSize = lodSpec.PageSize; visPageRadius = lodSpec.VisiblePageRadius; pageArraySize = (visPageRadius * 2) + 1; // Compute the size of a "subPage", which is the same as the smalles tile size. // We assume that the page containing the camera will have the smallest sized tiles. subPageSize = pageSize / TilesPerPage(0); minMetersPerSample = lodSpec.MetersPerSample(Vector3.Zero, 0, 0); maxMetersPerSample = lodSpec.MetersPerSample(Vector3.Zero, visPageRadius, visPageRadius * pageSize / subPageSize); rootSceneNode = root; worldRootSceneNode = rootSceneNode.CreateChildSceneNode("TerrainRoot"); oceanSceneNode = rootSceneNode.CreateChildSceneNode("OceanNode"); terrainMaterialConfig = new AutoSplatConfig(); terrainDecalManager = new TerrainDecalManager(pageArraySize); shadowConfig = new ShadowConfig(scene); oceanConfig = new OceanConfig(); oceanConfig.ConfigChange += OceanConfigChanged; ocean = new OceanPage(oceanConfig); oceanSceneNode.AttachObject(ocean); //ocean.ShowBoundingBox = true; showOcean = true; detailVeg = new DetailVeg(65, rootSceneNode); // allocate the page array pages = new Page[pageArraySize, pageArraySize]; InitPages(); heightFieldsCreated = false; boundaries = new List<Boundary>(); roads = new Roads(); SpeedTreeWrapper.SetDropToBillboard(true); // make sure variables based on camera location are up to date CameraLocation = cameraLocation; // set up material used by water boundaries waterMaterial = MaterialManager.Instance.GetByName("MVSMWater"); if (waterMaterial != null) waterMaterial.Load(); initialized = true; }