private void CreateViewport() { Mogre.NameValuePairList parameters = new Mogre.NameValuePairList(); parameters["Name"] = "intViewCamera" + Mogre.StringConverter.ToString(ViewportIndex); parameters["ClipDistance"] = "0.1 40000"; BaseEditor scnMgr = MogitorsRoot.Instance.SceneManagerEditor; ViewCamera = CameraEditor.Factory.CreateObject(ref scnMgr, parameters) as CameraEditor; ViewCamera.Load(); this.handle = MogitorsRoot.Instance.RenderTarget.AddViewport(ViewCamera.Camera, (int)ViewportIndex, dimensions.x, dimensions.y, dimensions.z, dimensions.w); if (Name == "") { this.name = "Viewport" + Mogre.StringConverter.ToString(ViewportIndex); } ViewCamera.Camera.AspectRatio = (float)this.handle.ActualWidth / (float)this.handle.ActualHeight; ViewCamera.ShowHelper = false; ActiveCamera = ViewCamera; this.handle.BackgroundColour = this.colour; PopCompositors(); ProjectOptions opt = MogitorsRoot.Instance.ProjectOptions; if (opt.Cameras.Count > 0) { ViewCamera.Position = opt.Cameras[opt.Cameras.Count - 1].Position; ViewCamera.Orientation = opt.Cameras[opt.Cameras.Count - 1].Orientation; } LoadEditorObjects(); }
public override bool UnLoad() { if (!IsLoaded) { return(true); } UnLoadAllChildren(); DestroyBoundingBox(); if (this.handle != null) { //throw new NotImplementedException("this.viewGrid = null"); ViewCamera.Destroy(false); ViewCamera = null; MogitorsRoot.Instance.RenderTarget.RemoveViewport(this.handle.ZOrder); this.handle = null; } IsLoaded = false; return(true); }
public bool Initialise() { m_Shutdown = false; m_Rand = new Random(); new Mogre.LogManager(); m_Log = Mogre.LogManager.Singleton.CreateLog("OgreLogfile.log", true, true, false); m_Root = new Root(); ConfigFile cf = new ConfigFile(); cf.Load("Resources.cfg", "\t:=", true); ConfigFile.SectionIterator seci = cf.GetSectionIterator(); while (seci.MoveNext()) { ConfigFile.SettingsMultiMap settings = seci.Current; foreach (KeyValuePair<string, string> pair in settings) ResourceGroupManager.Singleton.AddResourceLocation(pair.Value, pair.Key, seci.CurrentKey); } if (!m_Root.RestoreConfig()) // comment this line to view configuration dialog box if (!m_Root.ShowConfigDialog()) return false; m_RenderWindow = m_Root.Initialise(true); ResourceGroupManager.Singleton.InitialiseAllResourceGroups(); m_SceneManager = m_Root.CreateSceneManager(SceneType.ST_GENERIC); m_Camera = m_SceneManager.CreateCamera("MainCamera"); m_Viewport = m_RenderWindow.AddViewport(m_Camera); m_Camera.NearClipDistance = 0.1f; m_Camera.FarClipDistance = 1000.0f; MOIS.ParamList pl = new MOIS.ParamList(); IntPtr windowHnd; m_RenderWindow.GetCustomAttribute("WINDOW", out windowHnd); pl.Insert("WINDOW", windowHnd.ToString()); m_InputManager = MOIS.InputManager.CreateInputSystem(pl); m_Keyboard = (MOIS.Keyboard)m_InputManager.CreateInputObject(MOIS.Type.OISKeyboard, true); m_Mouse = (MOIS.Mouse)m_InputManager.CreateInputObject(MOIS.Type.OISMouse, true); m_NewtonWorld = new World(); m_NewtonWorld.SetWorldSize(new AxisAlignedBox(-500, -500, -500, 500, 500, 500)); m_NewtonDebugger = new Debugger(m_NewtonWorld); m_NewtonDebugger.Init(m_SceneManager); m_GameCamera = new GameCamera(); m_ObjectManager = new ObjectManager(); m_StateManager = new StateManager(); m_PhysicsManager = new PhysicsManager(); m_SoundDict = new SoundDict(); /* * To co tu mamy nalezy przeniesc jak najszybciej do ogitora * Materialy dla kazdej mapy moga byc inne inne parametry inne powiazania itp wiec tworzone * sa oddzielnie dla kazdej nowej mapy, a potem przy obiektach konkretny material jest przypsiywany * przy starcie ladowania physicsmanager powinien byc wyczyszczony */ //inicjalizacja konkretnych obiektow, w sumie tylko nadanie nazw w dictionary m_PhysicsManager.addMaterial("Metal"); //podstawowe m_PhysicsManager.addMaterial("Ground"); m_PhysicsManager.addMaterial("Trigger"); m_PhysicsManager.addMaterial("Player"); m_PhysicsManager.addMaterial("NPC"); //laczenie materialow w pary //dla kazdej mapy rozne powiazania (zapewne beda sie powtarzac ale im wieksza ilosc //materialow tym wieksze obciazenie dla silnika wiec nalezy to ograniczac //dla kazdej pary materialow mozna ustawic rozne parametry kolizji //jak tarcie, elastycznosc, miekkosc kolizji oraz callback ktory jest wywolywany przy kolizji m_PhysicsManager.addMaterialPair("Metal", "Metal"); m_PhysicsManager.getMaterialPair("MetalMetal").SetDefaultFriction(1.5f, 1.4f); m_PhysicsManager.setPairCallback("MetalMetal", "MetalCallback"); //obowiazkowe m_PhysicsManager.addMaterialPair("Trigger", "Player");//wyzwalacze pozycja obowiazkowa m_PhysicsManager.setPairCallback("TriggerPlayer", "TriggerCallback"); //obowiazkowe m_PhysicsManager.addMaterialPair("Ground", "Player");//ground material podstawowy m_PhysicsManager.getMaterialPair("GroundPlayer").SetDefaultElasticity(0); m_PhysicsManager.setPairCallback("GroundPlayer", "GroundPlayerCallback"); // NPC: //m_PhysicsManager.addMaterialPair("NPC", "NPC");//ground material podstawowy //m_PhysicsManager.getMaterialPair("NPCNPC").SetDefaultElasticity(0); //m_PhysicsManager.setPairCallback("NPCNPC", "NPCNPCCallback"); //m_PhysicsManager.addMaterialPair("Ground", "NPC");//ground material podstawowy //m_PhysicsManager.getMaterialPair("GroundNPC").SetDefaultElasticity(0); // m_PhysicsManager.setPairCallback("GroundNPC", "GroundPlayerCallback"); /* * Koniec inicjalizacji materialow ktora musi sie znalezc w opisie mapy, dla niekumatych w ogitorze. */ CreateOgitorScene(); //CreateScene(); /* * Rejestracja listenerów **/ m_Root.FrameRenderingQueued += new FrameListener.FrameRenderingQueuedHandler(Update); m_Keyboard.KeyPressed += new MOIS.KeyListener.KeyPressedHandler(KeyPressed); m_Keyboard.KeyReleased += new MOIS.KeyListener.KeyReleasedHandler(KeyReleased); m_Keyboard.KeyPressed += new MOIS.KeyListener.KeyPressedHandler(m_StateManager.KeyPressed); m_Keyboard.KeyReleased += new MOIS.KeyListener.KeyReleasedHandler(m_StateManager.KeyReleased); m_Mouse.MouseMoved += new MOIS.MouseListener.MouseMovedHandler(m_StateManager.MouseMoved); m_Mouse.MousePressed += new MOIS.MouseListener.MousePressedHandler(m_StateManager.MousePressed); m_Mouse.MouseReleased += new MOIS.MouseListener.MouseReleasedHandler(m_StateManager.MouseReleased); Tools.ConsoleParser.Init(); m_RenderWindow.SetDeactivateOnFocusChange(false); return true; }
public override bool UnLoad() { if (!IsLoaded) return true; UnLoadAllChildren(); DestroyBoundingBox(); if (this.handle != null) { //throw new NotImplementedException("this.viewGrid = null"); ViewCamera.Destroy(false); ViewCamera = null; MogitorsRoot.Instance.RenderTarget.RemoveViewport(this.handle.ZOrder); this.handle = null; } IsLoaded = false; return true; }