public NiTransformInterpolator(BinaryReader reader, NiFile niFile) : base(reader, niFile)
 {
     Transform = new NiQuatTransform(reader, niFile);
     Data      = new NiRef <NiTransformData>(niFile, reader.ReadInt32());
 }
示例#2
0
 public NiFloat(BinaryReader reader, NiFile niFile) : base(reader, niFile)
 {
     Value = reader.ReadSingle();
 }
示例#3
0
 public NiObject(BinaryReader reader, NiFile niFile)
 {
     Reader = reader;
     File   = niFile;
 }
 public NiKeyBasedInterpolator(BinaryReader reader, NiFile niFile) : base(reader, niFile)
 {
 }
示例#5
0
 public NifObjectBuilder(NiFile file, MaterialManager materialManager, int markerLayer)
 {
     _file            = file;
     _materialManager = materialManager;
     _markerLayer     = markerLayer;
 }
示例#6
0
 public NiSwitchNode(BinaryReader reader, NiFile file) : base(reader, file)
 {
     Flags = (NiSwitchFlags)reader.ReadUInt16();
     Index = reader.ReadUInt32();
 }
示例#7
0
        public NiTextureProperty(BinaryReader reader, NiFile file) : base(reader, file)
        {
            Flags = reader.ReadInt16();

            Image = new NiRef <NiImage>(file, reader.ReadInt32());
        }
示例#8
0
 public NiSpecularProperty(BinaryReader reader, NiFile file) : base(reader, file)
 {
     Flags = reader.ReadInt16();
 }
示例#9
0
 public NiTexCoord(BinaryReader reader, NiFile niFile) : base(reader, niFile)
 {
     U = reader.ReadSingle();
     V = reader.ReadSingle();
 }
示例#10
0
 public NiVisController(BinaryReader reader, NiFile niFile) : base(reader, niFile)
 {
 }
示例#11
0
 public NiKeyframeController(BinaryReader reader, NiFile niFile) : base(reader, niFile)
 {
 }
示例#12
0
 public NiBillboardNode(BinaryReader reader, NiFile file) : base(reader, file)
 {
     Mode = (BillboardMode)reader.ReadUInt16();
 }
示例#13
0
 public NifObjectBuilder(NiFile obj, MaterialManager materialManager, int markerLayer)
 {
     _obj             = obj;
     _materialManager = materialManager;
     _markerLayer     = markerLayer;
 }
示例#14
0
 public NiTriangle(BinaryReader reader, NiFile niFile) : base(reader, niFile)
 {
     V1 = reader.ReadUInt16();
     V2 = reader.ReadUInt16();
     V3 = reader.ReadUInt16();
 }
示例#15
0
        public override void OnLoad()
        {
            if (_renderGameObject != null)
            {
                DestroyImmediate(_renderGameObject);
            }

            if (_renderAsset != null)
            {
                _renderAsset = _renderAsset.Replace("\\\\", "\\").Replace('\\', '/');

                var renderAsset = _renderAsset;

                FileStream stream    = null;
                string     directory = null;

                if (Path.GetExtension(renderAsset) == ".kfm")
                {
                    foreach (var file in Directory.GetFiles(
                                 WorkspaceControl.CurrentWorkspace.WorkingRoot,
                                 Path.GetFileNameWithoutExtension(renderAsset) + ".nif*",
                                 SearchOption.AllDirectories)
                             )
                    {
                        renderAsset = file;

                        directory = Path.GetDirectoryName(file);

                        Debug.Log($"Found NIF from KFM: {file}");

                        stream = File.OpenRead(renderAsset);

                        break;
                    }
                }
                else if (Path.GetExtension(renderAsset) == ".nif")
                {
                    directory = Path.GetDirectoryName(renderAsset.ToLower());

                    stream = Utilities.OpenAssetStreamRead(renderAsset.ToLower());
                }
                else
                {
                    Debug.Log($"Unknown render file {renderAsset} format");

                    return;
                }

                if (stream == null)
                {
                    throw new FileNotFoundException($"{renderAsset}");
                }

                using var reader = new BitReader(stream);

                var nif = new NiFile();
                nif.Deserialize(reader);
                nif.ReadBlocks(reader);

                var constructor = new ModelConstructor();

                constructor.NifPath      = directory;
                constructor.File         = nif;
                constructor.Name         = Path.GetFileNameWithoutExtension(renderAsset);
                constructor.CreatePrefab = true;
                constructor.PrefabPath   = Path.Combine(
                    WorkspaceControl.CurrentWorkspace.AssetModelsPath,
                    constructor.Name
                    );

                var root = constructor.Construct();

                root.transform.parent = transform;

                root.transform.localPosition = Vector3.zero;

                _renderGameObject = root;

                stream.Dispose();
            }
        }
示例#16
0
 public NiTexture(BinaryReader reader, NiFile file) : base(reader, file)
 {
 }
示例#17
0
 public NiFloatData(BinaryReader reader, NiFile niFile) : base(reader, niFile)
 {
     Data = new NiKeyGroup <NiFloat>(reader, niFile);
 }
示例#18
0
 public NiTransform(BinaryReader reader, NiFile niFile) : base(reader, niFile)
 {
     Rotation = new NiMatrix3X3(reader, niFile);
     Position = new NiVector3(reader, niFile);
     Scale    = reader.ReadSingle();
 }
示例#19
0
 public NiExtraData(BinaryReader Reader, NiFile niFile) : base(Reader, niFile)
 {
 }
示例#20
0
 public NiTriBasedGeomData(BinaryReader reader, NiFile niFile) : base(reader, niFile)
 {
     TriangleCount = reader.ReadUInt16();
 }
示例#21
0
 public NiPoint3InterpController(BinaryReader reader, NiFile niFile) : base(reader, niFile)
 {
 }
        public NiStringExtraData(BinaryReader reader, NiFile niFile) : base(reader, niFile)
        {
            return;

            String = new NiString(reader);
        }