Esempio n. 1
0
        //IOpsCommand
        public void Run(OpsContext context, OpsStatement statement)
        {
            FlattenArguments arguments = statement.Arguments as FlattenArguments;

            ArrayList models = statement.GetContent(context);

            OpsConsole.WriteLine("Flattening models into '{0}'", arguments.NewModel);


            Mesh[]             meshes;
            Matrix[]           localToWorlds;
            int[][]            adjacencies;
            ExtendedMaterial[] materials;
            EffectInstance[]   effectInstances;

            GetLists(models, out meshes, out localToWorlds, out adjacencies, out materials, out effectInstances);

            Mesh newMesh = PrtEngine.ConcatenateMeshes(
                meshes,
                MeshFlags.SystemMemory | MeshFlags.Use32Bit,
                localToWorlds,
                null,
                null,
                context.Device);

            int[] newAdj = ConcatenateAdjacency(newMesh, meshes, adjacencies);

            OpsMeshContainer newMC = new OpsMeshContainer();

            newMC.Name = arguments.NewModel;
            newMC.ReplaceMesh(newMesh);
            newMC.SetMaterials(materials);
            newMC.SetEffectInstances(effectInstances);
            newMC.SetAdjacency(newAdj);

            OpsFrame newFrame = new OpsFrame();

            newFrame.Name          = arguments.NewModel;
            newFrame.MeshContainer = newMC;

            OpsModel newModel = new OpsModel();

            newModel.Name          = arguments.NewModel;
            newModel.HierarchyRoot = newFrame;

            context.AddModel(newModel);
        }
Esempio n. 2
0
        //IOpsCommand
        public void Run(OpsContext context, OpsStatement statement)
        {
            FlattenArguments arguments = statement.Arguments as FlattenArguments;

            ArrayList models = statement.GetContent(context);

            OpsConsole.WriteLine( "Flattening models into '{0}'", arguments.NewModel);


            Mesh[] meshes;
            Matrix[] localToWorlds;
            int[][] adjacencies;
            ExtendedMaterial[] materials;
            EffectInstance[] effectInstances;

            GetLists( models, out meshes, out localToWorlds, out adjacencies, out materials, out effectInstances);

            Mesh newMesh = PrtEngine.ConcatenateMeshes( 
                meshes, 
                MeshFlags.SystemMemory|MeshFlags.Use32Bit,
                localToWorlds,
                null, 
                null, 
                context.Device);

            int[] newAdj = ConcatenateAdjacency( newMesh, meshes, adjacencies);

            OpsMeshContainer newMC = new OpsMeshContainer();
            newMC.Name = arguments.NewModel;
            newMC.ReplaceMesh( newMesh );
            newMC.SetMaterials( materials );
            newMC.SetEffectInstances( effectInstances );
            newMC.SetAdjacency( newAdj );

            OpsFrame newFrame = new OpsFrame();
            newFrame.Name = arguments.NewModel;
            newFrame.MeshContainer = newMC;

            OpsModel newModel = new OpsModel();
            newModel.Name = arguments.NewModel;
            newModel.HierarchyRoot = newFrame;

            context.AddModel(newModel);
        }