コード例 #1
0
 public void loadIndexes(BobModelChunk bmc)
 {
     if (bmc.indexType == Bob.IndexFormat.USHORT)
     {
         myModel.myIbo.setData(bmc.indexShort);
     }
     else if (bmc.indexType == Bob.IndexFormat.UINT)
     {
         myModel.myIbo.setData(bmc.indexInt);
     }
 }
コード例 #2
0
        public void loadVerts(BobModelChunk bmc)
        {
            for (int i = 0; i < bmc.vertexCount; i++)
            {
                V3N3T2 v = new V3N3T2();
                v.Position = bmc.verts[i];
                v.Normal   = bmc.normals[i];
                v.TexCoord = bmc.uvs[i];
                myVerts.Add(v);
            }

            myModel.myVbo.setData(myVerts);
        }
コード例 #3
0
        public void loadModel(BobModelChunk bmc)
        {
            loadMaterials(bmc.myMaterials);

            loadVerts(bmc);

            loadIndexes(bmc);

            foreach (BobMesh bm in bmc.myMeshes)
            {
                Mesh mesh = new Mesh();
                mesh.primativeType = bmc.primativeType;
                mesh.indexBase     = (int)bm.indexOffset;
                mesh.indexCount    = (int)bm.indexCount;
                mesh.material      = findMaterial(bm.material);
                myModel.myMeshes.Add(mesh);
            }

            //should probably build a bounding box
            myModel.size = (findMax() - findMin()).Length / 2.0f;
        }
コード例 #4
0
        public bool loadFile(string filename)
        {
            LuaState vm = new LuaState();

            try
            {
                if (vm.doFile(filename) == false)
                {
                    Warn.print("Unable to open BOB file {0}", filename);
                    return(false);
                }

                LuaObject data = vm.findObject("BOB");
                if (data == null)
                {
                    Warn.print("Unable to find BOB data in file {0}", filename);
                    return(false);
                }

                myVersion = data.get <UInt32>("version");

                //read the registry
                LuaObject registry = data.get <LuaObject>("registry");

                //read the chunks
                LuaObject chunks = data.get <LuaObject>("chunks");
                for (int i = 1; i <= chunks.count(); i++)
                {
                    LuaObject chunk = chunks[i];
                    switch (chunk.get <String>("type"))
                    {
                    case "model":
                        BobModelChunk model = new BobModelChunk();
                        model.parse(chunk);
                        myChunks.Add(model);
                        break;

                    case "skeleton":
                        Warn.print("Skipping .BOB skeleton");
                        break;

                    case "animation":
                        Warn.print("Skipping .BOB animation");
                        break;

                    case "texture":
                        Warn.print("Skipping .BOB texture");
                        break;

                    case "particle":
                        Warn.print("Skipping .BOB particle system");
                        break;

                    case "audio":
                        Warn.print("Skipping .BOB audio");
                        break;

                    default:
                        Warn.print("Unknown type: {0}", chunk.get <String>("type"));
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Error while loading BOB model from definition file ( " + filename + " ).", ex);
            }
            return(true);
        }