/// <summary> /// Initializes a new instance of the <see cref="CustomModel"/> class. /// </summary> /// <param name="factory">The factory.</param> /// <param name="loader">The loader.</param> public CustomModel(GraphicFactory factory, ObjectInformation[] loader) : base(factory, loader[0].modelName, false) { System.Diagnostics.Debug.Assert(loader != null); System.Diagnostics.Debug.Assert(loader.Count() != 0); BatchInformations = new BatchInformation[1][]; BatchInformations[0] = new BatchInformation[loader.Count()]; TextureInformations = new TextureInformation[1][]; TextureInformations[0] = new TextureInformation[loader.Count()]; BoundingSphere bs = new BoundingSphere(); for (int i = 0; i < loader.Count(); i++) { BatchInformations[0][i] = loader[i].batchInformation; TextureInformations[0][i] = loader[i].textureInformation; float radius; Vector3 center; ModelBuilderHelper.ExtractModelRadiusAndCenter(BatchInformations[0][i], out radius, out center); bs = BoundingSphere.CreateMerged(bs, new BoundingSphere(center, radius)); } modelRadius = bs.Radius; }
/// <summary> /// Initializes a new instance of the <see cref="CustomModel"/> class. /// </summary> /// <param name="factory">The factory.</param> /// <param name="modelName">Name of the model.</param> /// <param name="meshindex">The meshindex.</param> /// <param name="binfo">The binfo.</param> /// <param name="diffuse">The diffuse.</param> public CustomModel(GraphicFactory factory, String modelName, int meshindex, BatchInformation[] binfo, Texture2D diffuse = null) : base(factory, modelName, false) { System.Diagnostics.Debug.Assert(binfo != null); System.Diagnostics.Debug.Assert(binfo.Count() != 0); BatchInformations = new BatchInformation[1][]; BatchInformations[0] = binfo; BoundingSphere bs = new BoundingSphere(); for (int i = 0; i < binfo.Count(); i++) { float radius; Vector3 center; ModelBuilderHelper.ExtractModelRadiusAndCenter(binfo[i], out radius, out center); bs = BoundingSphere.CreateMerged(bs, new BoundingSphere(center, radius)); } modelRadius = bs.Radius; TextureInformations = new TextureInformation[1][]; TextureInformations[0] = new TextureInformation[binfo.Count()]; for (int j = 0; j < TextureInformations[0].Count(); j++) { TextureInformations[0][j] = new TextureInformation(isInternal, factory); TextureInformations[0][j].LoadTexture(); if (diffuse == null) { if (model != null) { BasicEffect effect = model.Meshes[meshindex].MeshParts[j].Effect as BasicEffect; if (effect != null) { TextureInformations[0][j].SetTexture(effect.Texture, TextureType.DIFFUSE); } } } else { SetTexture(diffuse, TextureType.DIFFUSE, meshindex, j); } } }
/// <summary> /// Initializes a new instance of the <see cref="CustomModel"/> class. /// </summary> /// <param name="factory">The factory.</param> /// <param name="modelName">Name of the model.</param> /// <param name="BatchInformation">The batch information.</param> /// <param name="TextureInformation">The texture information.</param> /// <param name="meshindex">The meshindex.</param> /// <param name="meshpartIndex">Index of the meshpart.</param> public CustomModel(GraphicFactory factory, String modelName, BatchInformation BatchInformation, TextureInformation TextureInformation, int meshindex = 0, int meshpartIndex = 0) : base(factory, modelName, false) { System.Diagnostics.Debug.Assert(BatchInformation != null); System.Diagnostics.Debug.Assert(TextureInformation != null); BatchInformations = new BatchInformation[1][]; BatchInformations[0] = new BatchInformation[1]; BatchInformations[0][0] = BatchInformation; BoundingSphere bs = new BoundingSphere(); { float radius; Vector3 center; ModelBuilderHelper.ExtractModelRadiusAndCenter(BatchInformation, out radius, out center); bs = BoundingSphere.CreateMerged(bs, new BoundingSphere(center, radius)); } modelRadius = bs.Radius; TextureInformations = new TextureInformation[1][]; TextureInformations[0] = new TextureInformation[1]; TextureInformations[0][0] = TextureInformation; if (TextureInformation.getTexture(TextureType.DIFFUSE) == null) { if (model != null) { BasicEffect effect = model.Meshes[meshindex].MeshParts[meshpartIndex].Effect as BasicEffect; if (effect != null) { TextureInformations[0][0].SetTexture(effect.Texture, TextureType.DIFFUSE); } } } }