/// <summary>
        /// Inits model data of the actor.
        /// </summary>
        public void InitModelFile()
        {
            if (InitModel == null)
            {
                return;
            }

            if (!string.IsNullOrEmpty(InitModel.ExternalTextureFile))
            {
                string path = $"{GlobalSettings.GamePath}\\ObjectData\\{InitModel.ExternalTextureFile}.szs";
                if (!File.Exists(path))
                {
                    Console.WriteLine($"Failed to find external texture file at path {path}!");
                    return;
                }

                var fileArchive = STFileLoader.OpenFileFormat(path) as IArchiveFile;
                foreach (var file in fileArchive.Files)
                {
                    TextureArchive = file.OpenFile() as IRenderableFile;
                }
            }
        }
        private void AttachJoint(PartsModel partInfo, IRenderableFile actorRender)
        {
            var modelPart = actorRender.Renderer.Models[0];

            foreach (ModelAsset model in ModelFile.Renderer.Models)
            {
                var bone = model.ModelData.Skeleton.SearchBone(partInfo.JointName);

                if (bone != null)
                {
                    //Setup local transform
                    var localPosition = new OpenTK.Vector3(
                        partInfo.LocalTranslate.X,
                        partInfo.LocalTranslate.Y,
                        partInfo.LocalTranslate.Z);
                    var localRotation = STMath.FromEulerAngles(new OpenTK.Vector3(
                                                                   partInfo.LocalRotate.X,
                                                                   partInfo.LocalRotate.Y,
                                                                   partInfo.LocalRotate.Z) * STMath.Deg2Rad);
                    var localScale = new OpenTK.Vector3(
                        partInfo.LocalScale.X,
                        partInfo.LocalScale.Y,
                        partInfo.LocalScale.Z);

                    modelPart.ModelData.Skeleton.LocalTransform =
                        OpenTK.Matrix4.CreateScale(localScale) *
                        OpenTK.Matrix4.CreateFromQuaternion(localRotation) *
                        OpenTK.Matrix4.CreateTranslation(localPosition);

                    //Attach bone children
                    bone.AttachSkeleton(modelPart.ModelData.Skeleton);
                    model.ModelData.Skeleton.Update();
                    break;
                }
            }
        }
Esempio n. 3
0
 public void AddFile(IRenderableFile bfres)
 {
     Pipeline.AddFile(bfres);
 }
 public void AddFile(IRenderableFile renderFile)
 {
     Files.Add(renderFile);
     _context.Scene.AddRenderObject(renderFile.Renderer);
 }
Esempio n. 5
0
 private void Update(IRenderableFile file)
 {
     selectedFile = $"{file.Renderer.Name}_{file.Renderer.ID}";
 }