private bool TryGetModel(out ModelDefinition model, out ModelVariantIdentifier variant)
        {
            model   = null;
            variant = default(ModelVariantIdentifier);
            if (SelectedEquipment == null)
            {
                return(false);
            }

            var charType = SelectedEquipment.GetModelCharacterType();

            if (charType == 0)
            {
                return(false);
            }
            try {
                model = SelectedEquipment.GetModel(charType, out variant.ImcVariant);
                if (SelectedEquipment.IsDyeable && SelectedStain != null)
                {
                    variant.StainKey = SelectedStain.Key;
                }

                var result = (model != null);
                if (!result)
                {
                    System.Windows.MessageBox.Show(string.Format("Unable to find model for {0} (c{1:D4}).", SelectedEquipment.Name, charType), "Model not found", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Error);
                }
                return(result);
            } catch (Exception e) {
                System.Windows.MessageBox.Show(string.Format("Failed to load model for {0} (c{1:D4}):{2}{3}", SelectedEquipment.Name, charType, Environment.NewLine, e), "Read failure", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Error);
                return(false);
            }
        }
示例#2
0
        private bool MoveNextStain()
        {
            if (!_IsCurrentStained)
            {
                return(false);
            }
            if (!_StainEnumerator.MoveNext())
            {
                return(false);
            }

            var variant = new ModelVariantIdentifier {
                ImcVariant = _CurrentVariant,
                StainKey   = null
            };

            if (_StainEnumerator.Current.Key > 0)
            {
                variant.StainKey = _StainEnumerator.Current.Key;
            }

            CurrentComponent  = new Content.ContentModel(_Engine, variant, _CurrentModel);
            CurrentTargetFile = GetTargetFile(_EquipmentIterator.Current, _StainEnumerator.Current);
            CurrentName       = GetName(_EquipmentIterator.Current, _StainEnumerator.Current);

            return(true);
        }
示例#3
0
 public ContentMesh(ContentModel model, PrimitiveMesh primitive, ModelVariantIdentifier variant)
     : base(model.Engine)
 {
     this.Model          = model;
     this.Primitive      = primitive;
     this.Variant        = variant;
     this.Transformation = Matrix.Identity;
 }
 public ContentMesh(ContentModel model, PrimitiveMesh primitive, ModelVariantIdentifier variant)
     : base(model.Engine)
 {
     this.Model = model;
     this.Primitive = primitive;
     this.Variant = variant;
     this.Transformation = Matrix.Identity;
 }
        public ContentModel(Engine engine, ModelVariantIdentifier variant, ModelDefinition definition, ModelQuality quality)
            : base(engine)
        {
            this.Definition = definition;
            this.Quality = quality;
            this.Variant = variant;
            this.Transformation = Matrix.Identity;

            Init();
        }
示例#6
0
        public ContentModel(Engine engine, ModelVariantIdentifier variant, ModelDefinition definition, ModelQuality quality)
            : base(engine)
        {
            this.Definition     = definition;
            this.Quality        = quality;
            this.Variant        = variant;
            this.Transformation = Matrix.Identity;

            Init();
        }
        public AnimatedModel(Engine engine, Skeleton skeleton, ModelVariantIdentifier variant, ModelDefinition definition, ModelQuality quality)
            : base(engine, variant, definition, quality)
        {
            Skeleton = skeleton;
            _AnimationPlayer = new AnimationPlayer();

            var nameMap = new Dictionary<string, int>();
            for (var i = 0; i < Skeleton.BoneNames.Length; ++i)
                nameMap.Add(Skeleton.BoneNames[i], i);
            _BoneMap = Definition.BoneNames.Select(n => nameMap[n]).ToArray();
            _InvertedReferencePose = Skeleton.ReferencePose.Select(_ => Matrix.Invert(_)).ToArray();
        }
示例#8
0
        public AnimatedModel(Engine engine, Skeleton skeleton, ModelVariantIdentifier variant, ModelDefinition definition, ModelQuality quality)
            : base(engine, variant, definition, quality)
        {
            Skeleton         = skeleton;
            _AnimationPlayer = new AnimationPlayer();

            var nameMap = new Dictionary <string, int>();

            for (var i = 0; i < Skeleton.BoneNames.Length; ++i)
            {
                nameMap.Add(Skeleton.BoneNames[i], i);
            }
            _BoneMap = Definition.BoneNames.Select(n => nameMap[n]).ToArray();
            _InvertedReferencePose = Skeleton.ReferencePose.Select(_ => Matrix.Invert(_)).ToArray();
        }
示例#9
0
 public ContentModel(Engine engine, ModelVariantIdentifier variant, ModelDefinition definition) : this(engine, variant, definition, ModelQuality.High)
 {
 }
示例#10
0
 public ContentModel(Engine engine, ModelVariantIdentifier variant, ModelFile file, ModelQuality quality) : this(engine, variant, file.GetModelDefinition(), quality)
 {
 }
        private bool MoveNextStain()
        {
            if (!_IsCurrentStained)
                return false;
            if (!_StainEnumerator.MoveNext())
                return false;

            var variant = new ModelVariantIdentifier {
                ImcVariant = _CurrentVariant,
                StainKey = null
            };
            if(_StainEnumerator.Current.Key > 0)
                variant.StainKey = _StainEnumerator.Current.Key;

            CurrentComponent = new Content.ContentModel(_Engine, variant, _CurrentModel);
            CurrentTargetFile = GetTargetFile(_EquipmentIterator.Current, _StainEnumerator.Current);
            CurrentName = GetName(_EquipmentIterator.Current, _StainEnumerator.Current);

            return true;
        }
 public AnimatedModel(Engine engine, Skeleton skeleton, ModelVariantIdentifier variant, ModelDefinition definition)
     : this(engine, skeleton, variant, definition, ModelQuality.High)
 {
 }
示例#13
0
 public AnimatedModel(Engine engine, Skeleton skeleton, ModelVariantIdentifier variant, ModelDefinition definition) : this(engine, skeleton, variant, definition, ModelQuality.High)
 {
 }
 public ContentModel(Engine engine, ModelVariantIdentifier variant, ModelDefinition definition)
     : this(engine, variant, definition, ModelQuality.High)
 {
 }
 public ContentModel(Engine engine, ModelVariantIdentifier variant, ModelFile file, ModelQuality quality)
     : this(engine, variant, file.GetModelDefinition(), quality)
 {
 }
 public AnimatedModel(Engine engine, Skeleton skeleton, ModelVariantIdentifier variant, ModelFile file, ModelQuality quality)
     : this(engine, skeleton, variant, file.GetModelDefinition(), quality)
 {
 }
示例#17
0
 public AnimatedModel(Engine engine, Skeleton skeleton, ModelVariantIdentifier variant, ModelFile file, ModelQuality quality) : this(engine, skeleton, variant, file.GetModelDefinition(), quality)
 {
 }