/// <summary> /// Buduje quada o wymaganych parametrach. Quad bedzie mogl byc wyswietlony w przestrzeni 3D. Ma nakladn¹ teksture wg textureName /// </summary> /// <param name="quadrangle"></param> /// <param name="origin"></param> /// <param name="textureName"></param> public void SetCorners3D(Quadrangle quadrangle, Vector3 origin, String textureName) { this.quadrangle = quadrangle; Vector2 leftBottom = quadrangle.Peaks[0].ToVector2(); Vector2 leftTop = quadrangle.Peaks[1].ToVector2(); Vector2 rightTop = quadrangle.Peaks[2].ToVector2(); Vector2 rightBottom = quadrangle.Peaks[3].ToVector2(); float extend = 1.25f; corners = new float[4][]; corners[0] = new float[3]; corners[0][0] = extend * rightBottom.x + origin.x; corners[0][1] = extend * rightBottom.y + origin.y; corners[0][2] = origin.z; corners[1] = new float[3]; corners[1][0] = extend * rightTop.x + origin.x; corners[1][1] = extend * rightTop.y + origin.y; corners[1][2] = origin.z; corners[2] = new float[3]; corners[2][0] = extend * leftTop.x + origin.x; corners[2][1] = extend * leftTop.y + origin.y; corners[2][2] = origin.z; corners[3] = new float[3]; corners[3][0] = extend * leftBottom.x + origin.x; corners[3][1] = extend * leftBottom.y + origin.y; corners[3][2] = origin.z; float textureTop = 0; float textureLeft = 0; float textureBottom = 1; float textureRight = 1; // manualObject.RenderQueueGroup = (byte)RenderQueueGroupID.RENDER_QUEUE_MAIN - 1; manualObject.Clear(); manualObject.Begin("Misc/BoundingQuadrangle", RenderOperation.OperationTypes.OT_TRIANGLE_LIST); manualObject.Position(origin.x + leftBottom.x, origin.y + leftBottom.y, origin.z); manualObject.TextureCoord(textureLeft, textureBottom); manualObject.Position(origin.x + leftTop.x, origin.y + leftTop.y, origin.z); manualObject.TextureCoord(textureLeft, textureTop); manualObject.Position(origin.x + rightTop.x, origin.y + rightTop.y, origin.z); manualObject.TextureCoord(textureRight, textureTop); manualObject.Position(origin.x + rightBottom.x, origin.y + rightBottom.y, origin.z); manualObject.TextureCoord(textureRight, textureBottom); /* manualObject.Position( origin.x + leftBottom.x, origin.y + leftBottom.y, origin.z); * manualObject.TextureCoord(0, 0);*/ manualObject.Quad(3, 2, 1, 0); manualObject.End(); /* * AxisAlignedBox box = new AxisAlignedBox(); * float hwidth = 1.4f * (quadrangle.RightMostX - quadrangle.LeftMostX) * 0.5f; * float hheight = 1.4f * (quadrangle.HighestY - quadrangle.LowestY) * 0.5f; * box.SetMinimum(origin.x - hwidth, origin.y - hheight, origin.z - 10); * box.SetMaximum(origin.x + hwidth, origin.y + hheight, origin.z + 10); * * manualObject.BoundingBox = box; */ MaterialPtr mat = ViewHelper.CloneMaterial("AdMaterial", manualObject.Name + "AdMaterial"); Pass pass = mat.GetBestTechnique().GetPass(0); pass.DepthWriteEnabled = true; pass.SetSceneBlending(SceneBlendType.SBT_TRANSPARENT_ALPHA); TextureUnitState state = pass.GetTextureUnitState(0); state.SetTextureName(textureName); manualObject.SetMaterialName(0, mat.Name); manualObject.CastShadows = false; OnSetCorners(); // manualObject.SetMaterialName(0, "Concrete"); }