private byte[] ConvertWorld(ImportedObject obj) { var world = new NwWorld(); { var texs = new List <NwTexture2D>(); foreach (var t in obj.Textures) { var bm = AssetConverter.ToNwTexture2D(t.SrcBitmap, t.Name); texs.Add(bm); } var cubes = new List <NwCubemap>(); cubes.Add(AssetConverter.ToNwTextureCube(new Bitmap[] { Resources.posx2, Resources.posy2, Resources.posz2, Resources.negx2, Resources.negy2, Resources.negz2, }, null)); var mats = new List <NwMaterial>(); foreach (var m in obj.Materials) { var mat = AssetConverter.ToNwMaterial(m, m.Name, ref texs, ref cubes); mats.Add(mat); } world.Texture2Ds = texs.ToArray(); world.Cubemaps = cubes.ToArray(); world.Materials = mats.ToArray(); var meshes = new List <NwMesh>(); foreach (var mesh in obj.Meshes) { meshes.Add(AssetConverter.ToNwMesh(mesh)); } world.Meshes = meshes.ToArray(); var colMeshes = new List <NwColliderMesh>(); foreach (var mesh in obj.Meshes) { colMeshes.Add(AssetConverter.ToNwColliderMesh(mesh)); } world.ColliderMeshes = colMeshes.ToArray(); world.Environments = new NwEnvironment[1]; world.Environments[0] = new NwEnvironment() { EnvMap = world.Cubemaps[0].Hash, }; } var json = Util.SerializeJson(world); var comp = Util.Compress(Encoding.UTF8.GetBytes(json)); return(comp); }
public static World FromNwWorld(NwWorld world) { var w = new World(); w.nwWorld = world; w.Name = world.Name; w.Texture2Ds = new Texture2D[world.Texture2Ds.Length]; for (var i = 0; i < world.Texture2Ds.Length; i++) { w.Texture2Ds[i] = FromNwTexture2D(world.Texture2Ds[i]); w.Texture2Ds[i].UseMipmap = true; w.Texture2Ds[i].MinFilter = OpenTK.Graphics.OpenGL4.TextureMinFilter.LinearMipmapLinear; w.Texture2Ds[i].MagFilter = OpenTK.Graphics.OpenGL4.TextureMagFilter.Linear; w.Texture2Ds[i].WrapMode = OpenTK.Graphics.OpenGL4.TextureWrapMode.Repeat; } w.TextureCubes = new TextureCube[world.Cubemaps.Length]; for (var i = 0; i < world.Cubemaps.Length; i++) { w.TextureCubes[i] = FromNwTextureCube(world.Cubemaps[i]); w.TextureCubes[i].UseMipmap = true; w.TextureCubes[i].MinFilter = OpenTK.Graphics.OpenGL4.TextureMinFilter.LinearMipmapLinear; w.TextureCubes[i].MagFilter = OpenTK.Graphics.OpenGL4.TextureMagFilter.Linear; w.TextureCubes[i].WrapMode = OpenTK.Graphics.OpenGL4.TextureWrapMode.Repeat; } w.Meshes = new Mesh[world.Meshes.Length]; for (var i = 0; i < world.Meshes.Length; i++) { w.Meshes[i] = FromNwMesh(world.Meshes[i]); } w.ColliderMeshes = new ColliderMesh[world.ColliderMeshes.Length]; for (var i = 0; i < world.ColliderMeshes.Length; i++) { w.ColliderMeshes[i] = FromNwColliderMesh(world.ColliderMeshes[i]); } w.Materials = new Material[world.Materials.Length]; for (var i = 0; i < world.Materials.Length; i++) { w.Materials[i] = FromNwMaterial(world.Materials[i], ref world.Texture2Ds, ref w.Texture2Ds); } w.Environments = new Assets.Environment[world.Environments.Length]; for (var i = 0; i < world.Environments.Length; i++) { var idx = Array.FindIndex(world.Cubemaps, tex => tex.Hash == world.Environments[i].EnvMap); w.Environments[i] = FromNwEnvironment(world.Environments[i], idx >= 0 ? w.TextureCubes[idx] : null); } return(w); }