public void RemoveFromBoundary() { inBoundary = false; boundary = null; if (isAttached) { waterSceneNode.DetachObject(this); isAttached = false; } box = null; DisposeBuffers(); }
public static void RemoveAxes(SceneNode node) { if (EngineConfig.DisplayAxes) { node.DetachObject("Axes_" + node.Name); } }
private void clearScene(SceneNode node) { ushort j = 0; // Clear Scene while (node.NumChildren() > j) { if (node.GetChild(j).Name.StartsWith("Element")) { SceneNode cnode = (SceneNode)node.GetChild(j); clearScene(cnode); while (cnode.NumAttachedObjects() > 0) { string entname = cnode.GetAttachedObject(0).Name; cnode.DetachObject(entname); mgr.DestroyManualObject(entname); } node.RemoveChild(cnode.Name); mgr.DestroySceneNode(cnode.Name); } else { j++; } } }
protected void ClearCreatedObjects() { for (int i = 0; i < sceneNodeList.Count; i++) { SceneNode node = sceneNodeList[i]; Entity entity = entityList[i]; node.DetachObject(entity); scene.RemoveEntity(entity); node.RemoveFromParent(); } sceneNodeList.Clear(); entityList.Clear(); foreach (Material material in materialList) { material.Dispose(); MaterialManager.Instance.Unload(material); } materialList.Clear(); foreach (Texture texture in textureList) { texture.Dispose(); TextureManager.Instance.Unload(texture); } textureList.Clear(); totalVertexCount = 0; }
public void SceneNode_AddThenRemoveEntity_ShouldNotThrowException() { var sceneNode = new SceneNode(this.sceneManager, "Root"); var newEntity = sceneManager.CreateEntity("", ""); sceneNode.AttachObject(newEntity); sceneNode.DetachObject(newEntity); // detach old object Assert.IsTrue(sceneNode.ObjectCount == 0); }
public void Dispose() { // clean up the scene node sceneNode.DetachObject(this); sceneNode.Creator.DestroySceneNode(string.Format("DetailVeg-{0}", pageCoord)); // free the vertex buffer if (vertexData != null) { vertexData.vertexBufferBinding.GetBuffer(0).Dispose(); vertexData = null; } }
public void Dispose() { string nodeName = String.Format("TerrainPage[{0},{1}]", (int)(location.x / TerrainManager.oneMeter), (int)(location.z / TerrainManager.oneMeter)); sceneNode.DetachObject(this); // DEBUG - Console.WriteLine("Disposing {0}", nodeName); sceneNode.Creator.DestroySceneNode(nodeName); terrainMaterial.Dispose(); terrainMaterial = null; FreeBuffers(); }
public void Dispose() { parentSceneNode.DetachObject(this); ClearBounds(); }
/// <summary> /// /// </summary> /// <param name="force"></param> protected void RenderTextures(bool force) { Texture renderTexture = null; RenderTexture renderTarget = null; Camera renderCamera = null; Viewport renderViewport = null; //Set up RTT texture int textureSize = ImpostorPage.ImpostorResolution; if (renderTexture == null) { renderTexture = (Texture)TextureManager.Singleton.CreateManual(GetUniqueID("ImpostorTexture"), "Impostors", TextureType.TwoD, textureSize * ImpostorYawAngles, textureSize * ImpostorPitchAngles, 0, MogreLibMedia.PixelFormat.A8B8G8R8, TextureUsage.RenderTarget, mLoader); } renderTexture.MipmapCount = 0x7FFFFFFF; //Set up render target renderTarget = renderTexture.GetBuffer().GetRenderTarget(); renderTarget.IsAutoUpdated = false; //Set up camera renderCamera = mSceneMgr.CreateCamera(GetUniqueID("ImpostorCam")); renderCamera.LodBias = 1000.0f; renderViewport = renderTarget.AddViewport(renderCamera); renderViewport.ShowOverlays = false; #warning why is set == protected? // renderViewport.ClearEveryFrame = true; renderViewport.ShowShadows = false; renderViewport.BackgroundColor = ImpostorPage.ImpostorBackgroundColor; //Set up scene node SceneNode node = mSceneMgr.GetSceneNode("ImpostorPage.RenderNode"); SceneNode oldSceneNode = mEntity.ParentSceneNode; if (oldSceneNode != null) { oldSceneNode.DetachObject(mEntity); } node.AttachObject(mEntity); node.Position = -mEntityCenter; //Set up camera FOV float objectDist = mEntityRadius * 100; float nearDist = objectDist - (mEntityRadius + 1); float farDist = objectDist + (mEntityRadius + 1); renderCamera.AspectRatio = 1.0f; renderCamera.FieldOfView = (float)MogreLibMath.Utility.ATan(mEntityDiameter / objectDist); renderCamera.Near = nearDist; renderCamera.Far = farDist; //Disable mipmapping (without this, masked textures look bad) MaterialManager mm = MaterialManager.Instance; FilterOptions oldMinFilter = mm.GetDefaultTextureFiltering(FilterType.Min); FilterOptions oldMagFilter = mm.GetDefaultTextureFiltering(FilterType.Mag); FilterOptions oldMipFilter = mm.GetDefaultTextureFiltering(FilterType.Mip); mm.SetDefaultTextureFiltering(FilterOptions.Point, FilterOptions.Linear, FilterOptions.None); //Disable fog FogMode oldFogMode = mSceneMgr.FogMode; ColorEx oldFogColor = mSceneMgr.FogColor; float oldFogDensity = mSceneMgr.FogDensity; float oldFogStart = mSceneMgr.FogStart; float oldFogEnd = mSceneMgr.FogEnd; mSceneMgr.FogMode = FogMode.None; // Get current status of the queue mode SpecialCaseRenderQueueMode oldSpecialCaseRenderQueueMode = mSceneMgr.SpecialCaseRenderQueueList.RenderQueueMode; //Only render the entity mSceneMgr.SpecialCaseRenderQueueList.RenderQueueMode = SpecialCaseRenderQueueMode.Include; mSceneMgr.SpecialCaseRenderQueueList.AddRenderQueue(RenderQueueGroupID.Six + 1); RenderQueueGroupID oldRenderGroup = mEntity.RenderQueueGroup; mEntity.RenderQueueGroup = RenderQueueGroupID.Six + 1; bool oldVisible = mEntity.IsVisible; mEntity.IsVisible = true; #warning implement float oldMaxDistance = entity->getRenderingDistance(); #warning implement entity->setRenderingDistance(0); bool needsRegen = true; //Calculate the filename used to uniquely identity this render string strKey = mEntityKey; char[] key = new char[32]; int i = 0; foreach (char c in mEntityKey) { key[i] ^= c; i = (i + 1) % key.Length; } for (i = 0; i < key.Length; i++) { key[i] = (char)((key[i] % 26) + 'A'); } ResourceGroupManager.Instance.AddResourceLocation(".", "Folder", "BinFolder"); string keyStr = string.Empty; foreach (char c in key) { keyStr += c.ToString(); } string fileName = "Impostor." + keyStr + "." + textureSize + ".png"; //Attempt to load the pre-render file if allowed needsRegen = force; if (!needsRegen) { try { mTexture = (Texture)TextureManager.Singleton.Load(fileName, "BinFolder", TextureType.TwoD, 0x7FFFFFFF); } catch { needsRegen = true; } } if (needsRegen) { //If this has not been pre-rendered, do so now float xDivFactor = 1.0f / ImpostorYawAngles; float yDivFactor = 1.0f / ImpostorPitchAngles; for (int o = 0; o < ImpostorPitchAngles; o++) //4 pitch angle renders { Radian pitch = (Radian) new Degree((Real)((90.0f * o) * yDivFactor)); //0, 22.5, 45, 67.5 for (i = 0; i < ImpostorYawAngles; i++) //8 yaw angle renders { Radian yaw = (Radian) new Degree((Real)((360.0f * i) * xDivFactor)); //0, 45, 90, 135, 180, 225, 270, 315 //Position camera renderCamera.Position = new Vector3(0, 0, 0); renderCamera.Orientation = Quaternion.Identity; renderCamera.Pitch((float)-pitch); renderCamera.Yaw((float)yaw); renderCamera.MoveRelative(new Vector3(0, 0, objectDist)); //Render the impostor renderViewport.SetDimensions((float)(i * xDivFactor), (float)(o * yDivFactor), xDivFactor, yDivFactor); renderTarget.Update(); } } //Save RTT to file renderTarget.WriteContentsToFile(fileName); //Load the render into the appropriate texture view mTexture = (Texture)TextureManager.Singleton.Load(fileName, "BinFolder", TextureType.TwoD, 0x7FFFFFFF); } mEntity.IsVisible = oldVisible; mEntity.RenderQueueGroup = oldRenderGroup; #warning entity->setRenderingDistance(oldMaxDistance); mSceneMgr.SpecialCaseRenderQueueList.RemoveRenderQueue(RenderQueueGroupID.Six + 1); // Restore original state mSceneMgr.SpecialCaseRenderQueueList.RenderQueueMode = oldSpecialCaseRenderQueueMode; //Re-enable mipmapping mm.SetDefaultTextureFiltering(oldMinFilter, oldMagFilter, oldMipFilter); //Re-enable fog mSceneMgr.SetFog(oldFogMode, oldFogColor, oldFogDensity, oldFogStart, oldFogEnd); //Delete camera renderTarget.RemoveViewport(0); renderCamera.SceneManager.DestroyCamera(renderCamera); //Delete scene node node.DetachAllObjects(); if (oldSceneNode != null) { oldSceneNode.AttachObject(mEntity); } //Delete RTT texture Debug.Assert(renderTexture != null); string texName2 = renderTexture.Name; renderTexture = null; if (TextureManager.Singleton != null) { TextureManager.Singleton.Remove(texName2); } }
public void Drop() { itemNode.DetachObject(ItemEnt); }