Ejemplo n.º 1
0
        private void FileOpen(string[] Files, bool MergeMode)
        {
            if (!MergeMode)
            {
                Renderer.DeleteAll();

                Renderer.Lights.Add(new Light()
                {
                    Ambient         = new Color4(0.1f, 0.1f, 0.1f, 1.0f),
                    Diffuse         = new Color4(0.9f, 0.9f, 0.9f, 1.0f),
                    Specular0       = new Color4(0.8f, 0.8f, 0.8f, 1.0f),
                    Specular1       = new Color4(0.4f, 0.4f, 0.4f, 1.0f),
                    TwoSidedDiffuse = true,
                    Enabled         = true
                });

                ResetTransforms();

                Scene = FileIO.Merge(Files, Renderer);

                if (Scene != null)
                {
                    TextureManager.Textures = Scene.Textures;
                    ModelsList.Bind(Scene.Models);
                    TexturesList.Bind(Scene.Textures);
                    CamerasList.Bind(Scene.Cameras);
                    LightsList.Bind(Scene.Lights);
                    SklAnimsList.Bind(Scene.SkeletalAnimations);
                    MatAnimsList.Bind(Scene.MaterialAnimations);
                    VisAnimsList.Bind(Scene.VisibilityAnimations);
                    CamAnimsList.Bind(Scene.CameraAnimations);
                    LUTsList.Bind(Scene.LUTs);

                    Animator.Enabled     = false;
                    LblAnimSpeed.Text    = string.Empty;
                    LblAnimLoopMode.Text = string.Empty;
                    AnimSeekBar.Value    = 0;
                    AnimSeekBar.Maximum  = 0;
                    AnimGrp.Frame        = 0;
                    AnimGrp.FramesCount  = 0;

                    if (Scene.Models.Count > 0)
                    {
                        ModelsList.Select(0);
                    }
                    else
                    {
                        UpdateTransforms();
                    }
                }
            }
            else
            {
                Scene = FileIO.Merge(Files, Renderer, Scene);
            }
        }
Ejemplo n.º 2
0
        public void Prepare()
        {
            scenes[0].Prepare();

            // Do not export empty arrays
            if (NodesList.Count > 0)
            {
                nodes = NodesList.ToArray();
                NodesList.ForEach(node => node.Prepare());
            }
            if (CamerasList.Count > 0)
            {
                cameras = CamerasList.ToArray();
            }
            if (BuffersList.Count > 0)
            {
                buffers = BuffersList.ToArray();
            }
            if (BufferViewsList.Count > 0)
            {
                bufferViews = BufferViewsList.ToArray();
            }
            if (AccessorsList.Count > 0)
            {
                accessors = AccessorsList.ToArray();
            }
            if (MeshesList.Count > 0)
            {
                meshes = MeshesList.ToArray();
            }
            if (MaterialsList.Count > 0)
            {
                materials = MaterialsList.ToArray();
            }
            if (TexturesList.Count > 0)
            {
                textures = TexturesList.ToArray();
            }
            if (ImagesList.Count > 0)
            {
                images = ImagesList.ToArray();
            }
            if (SamplersList.Count > 0)
            {
                samplers = SamplersList.ToArray();
            }
            if (AnimationsList.Count > 0)
            {
                animations = AnimationsList.ToArray();
                AnimationsList.ForEach(animation => animation.Prepare());
            }
            if (SkinsList.Count > 0)
            {
                skins = SkinsList.ToArray();
            }
        }
Ejemplo n.º 3
0
        public GLTFTexture AddTexture(GLTFImage image, GLTFSampler sampler)
        {
            GLTFTexture gltfTexture = new GLTFTexture();

            gltfTexture.index   = TexturesList.Count;
            gltfTexture.sampler = sampler?.index;
            gltfTexture.source  = image?.index;
            TexturesList.Add(gltfTexture);
            return(gltfTexture);
        }
Ejemplo n.º 4
0
        private void FileOpen(string[] Files, bool MergeMode)
        {
            if (!MergeMode)                     //if not merging in a model
            {
                Renderer.DeleteAll();           //clear existing meshes

                Renderer.Lights.Add(new Light() //add a new light to the {scene/renderer}
                {
                    Ambient         = new Color4(0.1f, 0.1f, 0.1f, 1.0f),
                    Diffuse         = new Color4(0.9f, 0.9f, 0.9f, 1.0f),
                    Specular0       = new Color4(0.8f, 0.8f, 0.8f, 1.0f),
                    Specular1       = new Color4(0.4f, 0.4f, 0.4f, 1.0f),
                    TwoSidedDiffuse = true,
                    Enabled         = true
                });

                ResetTransforms();

                Scene = FileIO.Merge(Files, Renderer);

                TextureManager.Textures = Scene.Textures;

                ModelsList.Bind(Scene.Models);
                TexturesList.Bind(Scene.Textures);
                CamerasList.Bind(Scene.Cameras);
                LightsList.Bind(Scene.Lights);
                SklAnimsList.Bind(Scene.SkeletalAnimations);
                MatAnimsList.Bind(Scene.MaterialAnimations);
                VisAnimsList.Bind(Scene.VisibilityAnimations);
                CamAnimsList.Bind(Scene.CameraAnimations);

                Animator.Enabled     = false;
                LblAnimSpeed.Text    = string.Empty;
                LblAnimLoopMode.Text = string.Empty;
                AnimSeekBar.Value    = 0;
                AnimSeekBar.Maximum  = 0;
                AnimGrp.Frame        = 0;
                AnimGrp.FramesCount  = 0;

                if (Scene.Models.Count > 0)
                {
                    //TODO: if not moving camera on model select, move camera to default pos here
                    ModelsList.Select(0);
                }
                else
                {
                    UpdateTransforms();
                }
            }
            else
            {
                Scene = FileIO.Merge(Files, Renderer, Scene);
            }
        }
        private static bool LoadData(String fileName)
        {
            bool succeeded = true;

            try
            {
                using (BinaryReader reader = new BinaryReader(new FileStream(fileName, FileMode.Open)))
                {
                    // conversion, lines, grades, abbr, waste min, waste max
                    int listLen = reader.ReadInt32();

                    StringDoubleConversionList.Clear();
                    for (; listLen > 0; --listLen)
                    {
                        String item1 = reader.ReadString();
                        double item2 = reader.ReadDouble();
                        StringDoubleConversionList.Add(new Tuple <string, double>(item1, item2));
                    }

                    //grades and abbr
                    listLen = reader.ReadInt32();
                    GradesList.Clear();
                    GradeAbbrList.Clear();

                    for (; listLen > 0; --listLen)
                    {
                        String grade = reader.ReadString();
                        String abbr  = reader.ReadString();
                        GradesList.Add(grade);
                        GradeAbbrList.Add(abbr);
                    }

                    // lines
                    listLen = reader.ReadInt32();
                    CoatingLines.Clear();
                    for (; listLen > 0; --listLen)
                    {
                        String line = reader.ReadString();
                        CoatingLines.Add(line);
                    }

                    //waste
                    WasteMin     = reader.ReadDouble();
                    WasteMax     = reader.ReadDouble();
                    CurrentWaste = reader.ReadDouble();

                    listLen = reader.ReadInt32();
                    TexturesList.Clear();
                    for (; listLen > 0; --listLen)
                    {
                        TexturesList.Add(Texture.Load(reader));
                    }


                    // WiP Marker
                    WiPMarker = reader.ReadChar();
                }
            }
            catch (Exception)
            {
                succeeded = false;
            }
            if (succeeded)
            {
                _loaded = true;
            }

            return(succeeded);
        }