This code example shows how you can use the Managed Hydrax Wrapper under Mogre 1.7.
The code was written by user Jo0oker for his game engine Tehadon.
For questions use this forum topic.
Overview
- THydraxItem.cs
... TODO ... - ITHydraxItem.cs
... TODO ... - THydraxManager.cs
... TODO ...
TODO:
- Add a short description for the classes
- Attach code files as zip archive to wiki page
THydraxItem.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using MHydrax; using Mogre; namespace Tehadon.Gfx.THydrax { public class THydraxItem : ITHydraxItem { #region Private Members //Manager private THydraxManager myTHydraxManager; //Hydrax private MNoise myNoise; private MProjectedGrid.MOptions myOptions; private MModule myModule; private MHydrax.MHydrax myHydrax; private string myConfigFile; private Plane myPlane; private bool myDoUpdate; #endregion #region Constructor /// <summary> /// Constructor /// </summary> /// <param name="THydraxManager"></param> public THydraxItem(THydraxManager THydraxManager) { myTHydraxManager = THydraxManager; myDoUpdate = true; } #endregion #region Update /// <summary> /// Update /// </summary> /// <param name="evt"></param> /// <returns></returns> public bool Update(FrameEvent evt) { if (!myDoUpdate) { return true; } if (myHydrax != null) { myHydrax.Update(evt.timeSinceLastFrame); } return true; } #endregion #region Create Grid /// <summary> /// Create the Projectiongrid /// </summary> public void CreateProjectedGrid() { myOptions = new MProjectedGrid.MOptions(); } #endregion #region Create Plane /// <summary> /// Create the Ogre-Plaine /// </summary> public void CreatePlane() { myPlane = new Plane(new Vector3(0, 1, 0), new Vector3(0, 0, 0)); } #endregion #region Create Noise /// <summary> /// Create Noise /// </summary> public void CreateNoise() { myNoise = new MPerlin(); } #endregion #region Create Module /// <summary> /// Create the Main-Modul for Hydrax /// </summary> public void CreateModule() { myModule = new MProjectedGrid(myHydrax, myNoise, myPlane, MMaterialManager.MNormalMode.NM_VERTEX, myOptions); } #endregion #region Create /// <summary> /// Create MHyydrax /// </summary> public void Create() { // create Hydrax instance myHydrax = new MHydrax.MHydrax(myTHydraxManager.GfxManager.TOgreManager.Singelton.SceneManager, myTHydraxManager.GfxManager.TOgreManager.Singelton.Camera, myTHydraxManager.GfxManager.TOgreManager.Singelton.Viewport); CreateModule(); // set module and load settings myHydrax.SetModule(myModule); myHydrax.LoadCfg(myConfigFile); // create water myHydrax.Create(); } #endregion #region Public Members public MHydrax.MHydrax Hydrax { get { return myHydrax; } set { myHydrax = value; } } public MNoise Noise { get { return myNoise; } set { myNoise = value; } } public MProjectedGrid.MOptions Options { get { return myOptions; } set { myOptions = value; } } public MModule Module { get { return myModule; } set { myModule = value; } } public string ConfigFile { get { return myConfigFile; } set { myConfigFile = value; } } public Plane Plane { get { return myPlane; } set { myPlane = value; } } #endregion } }
ITHydraxItem.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Mogre; using MHydrax; namespace Tehadon.Gfx.THydrax { public interface ITHydraxItem { #region Update /// <summary> /// Update /// </summary> /// <param name="evt"></param> /// <returns></returns> bool Update(FrameEvent evt); #endregion #region Create Grid /// <summary> /// Create the Projectiongrid /// </summary> void CreateProjectedGrid(); #endregion #region Create Plane /// <summary> /// Create the Ogre-Plaine /// </summary> void CreatePlane(); #endregion #region Create Noise /// <summary> /// Create Noise /// </summary> void CreateNoise(); #endregion #region Create Module /// <summary> /// Create the Main-Modul for Hydrax /// </summary> void CreateModule(); #endregion #region Create /// <summary> /// Create MHyydrax /// </summary> void Create(); #endregion #region Public Members MNoise Noise { get; set; } MProjectedGrid.MOptions Options { get; set; } MModule Module { get; set; } string ConfigFile { get; set; } Plane Plane { get; set; } MHydrax.MHydrax Hydrax { get; set; } #endregion } }
THydraxManager.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Tehadon.Gfx.THydrax { public class THydraxManager { #region Private Members private GfxManager myGfxManager; #endregion #region Constructor /// <summary> /// Constructor /// </summary> /// <param name="GfxManager"></param> public THydraxManager(GfxManager GfxManager) { myGfxManager = GfxManager; } #endregion #region GetNew public ITHydraxItem GetNew() { return new THydraxItem(this); } #endregion #region Public Members public GfxManager GfxManager { get { return myGfxManager; } set { myGfxManager = value; } } #endregion } }