public override void Write(NiHeader header, BinaryWriter writer) { List <int> blockReferences = header.GetBlockReferences(); if (blockReferences.Count > 0) { if (this.collisionObject != -1) { this.collisionObject = blockReferences[this.collisionObject]; } } base.Write(header, writer); writer.Write(this.flags); if ((header.GetUserVersion() >= 11U) && (header.GetUserVersion2() >= 26U)) { writer.Write(this.flags2); } Utils.WriteVector3(writer, this.translation); Utils.WriteMatrix33(writer, this.rotation); writer.Write(this.scale); if ((header.GetVersion() <= 335544325U) || (header.GetUserVersion() <= 11U)) { writer.Write((uint)this.properties.Count); for (int index = 0; (long)index < this.properties.Count; ++index) { if (blockReferences.Count > 0) { this.properties[index] = blockReferences[this.properties[index]]; } writer.Write(this.properties[index]); } } writer.Write(this.collisionObject); }
public override void Write(NiHeader header, BinaryWriter writer) { List <int> blockReferences = header.GetBlockReferences(); base.Write(header, writer); writer.Write(this.numChildren); for (int index = 0; (long)index < (long)this.numChildren; ++index) { if (blockReferences.Count > 0) { if (this.children[index] != -1) { this.children[index] = blockReferences[this.children[index]]; } } writer.Write(this.children[index]); } if (header.GetUserVersion2() < 130) { writer.Write(this.numEffects); for (int index = 0; (long)index < (long)this.numEffects; ++index) { if (blockReferences.Count > 0) { if (this.effects[index] != -1) { this.effects[index] = blockReferences[this.effects[index]]; } } writer.Write(this.effects[index]); } } }
public override void Write(NiHeader header, BinaryWriter writer) { List <int> blockReferences = header.GetBlockReferences(); if (blockReferences.Count > 0) { if (this.data != -1) { this.data = blockReferences[this.data]; } if (this.skinPartition != -1) { this.skinPartition = blockReferences[this.skinPartition]; } if (this.skeletonRoot != -1) { this.skeletonRoot = blockReferences[this.skeletonRoot]; } } base.Write(header, writer); writer.Write(this.data); writer.Write(this.skinPartition); writer.Write(this.skeletonRoot); writer.Write(this.numBones); for (int index = 0; index < this.numBones; index++) { if (this.bones[index] != -1) { this.bones[index] = blockReferences[this.bones[index]]; } writer.Write(this.bones[index]); } }
public override void Write(NiHeader header, BinaryWriter writer) { List <int> blockReferences = header.GetBlockReferences(); base.Write(header, writer); writer.Write(this.numBones); for (int index = 0; (long)index < (long)this.numBones; ++index) { if (blockReferences.Count > 0) { if (this.bones[index] != -1) { this.bones[index] = blockReferences[this.bones[index]]; } } writer.Write(this.bones[index]); } writer.Write(this.numBones2); for (int index = 0; (long)index < (long)this.numBones2; ++index) { if (blockReferences.Count > 0) { if (this.bones2[index] != -1) { this.bones2[index] = blockReferences[this.bones2[index]]; } } writer.Write(this.bones2[index]); } }
public override void Write(NiHeader header, BinaryWriter writer) { List <int> blockReferences = header.GetBlockReferences(); if (blockReferences.Count > 0) { if (this.interpolator != -1) { this.interpolator = blockReferences[this.interpolator]; } } base.Write(header, writer); writer.Write(this.interpolator); }
public override void Write(NiHeader header, BinaryWriter writer) { List <int> blockReferences = header.GetBlockReferences(); if (blockReferences.Count > 0) { if (this.body != -1) { this.body = blockReferences[this.body]; } } base.Write(header, writer); writer.Write(this.flags); writer.Write(this.body); }
public override void Write(NiHeader header, BinaryWriter writer) { List <int> blockReferences = header.GetBlockReferences(); if (blockReferences.Count > 0) { if (this.data != 1) { this.data = blockReferences[this.data]; } } base.Write(header, writer); Utils.WriteVector3(writer, this.value); writer.Write(this.data); }
public override void Write(NiHeader header, BinaryWriter writer) { List <int> blockReferences = header.GetBlockReferences(); if (blockReferences.Count > 0) { if (this.shape != -1) { this.shape = blockReferences[this.shape]; } } base.Write(header, writer); writer.Write(this.shape); writer.Write(this.stuff); }
public override void Write(NiHeader header, BinaryWriter writer) { List <int> blockReferences = header.GetBlockReferences(); if (blockReferences.Count > 0) { if (this.controller != -1) { this.controller = blockReferences[this.controller]; } } base.Write(header, writer); if (header.GetVersion() <= 335544325U) { if (this.name != "") { Utils.WriteSizedString(writer, this.name); } else if (this.nameIdx == -1) { Utils.WriteSizedString(writer, "Scene Root"); } else { Utils.WriteSizedString(writer, header.GetString((uint)this.nameIdx)); } } else { writer.Write(this.nameIdx); } writer.Write(this.extraData.Count); if (this.extraData.Count > 0) { for (int index = 0; index < this.extraData.Count; index++) { if (blockReferences.Count > 0) { if (this.extraData[index] != -1) { this.extraData[index] = blockReferences[this.extraData[index]]; } } writer.Write(this.extraData[index]); } } writer.Write(controller); }
public override void Write(NiHeader header, BinaryWriter writer) { List <int> blockReferences = header.GetBlockReferences(); if (blockReferences.Count > 0) { if (this.multiBound != -1) { this.multiBound = blockReferences[this.multiBound]; } } base.Write(header, writer); writer.Write(this.multiBound); if (header.GetUserVersion() >= 12) { writer.Write(this.cullMode); } }
public override void Write(NiHeader header, BinaryWriter writer) { List <int> blockReferences = header.GetBlockReferences(); if (blockReferences.Count > 0) { if (this.target != -1) { this.target = blockReferences[this.target]; } if (this.data != -1) { this.data = blockReferences[this.data]; } } base.Write(header, writer); writer.Write(this.target); writer.Write(this.stuff); writer.Write(this.data); }
public override void Write(NiHeader header, BinaryWriter writer) { List <int> blockReferences = header.GetBlockReferences(); if (blockReferences.Count > 0) { if (this.shape != -1) { this.shape = blockReferences[this.shape]; } } base.Write(header, writer); writer.Write(this.shape); writer.Write(this.stuff); writer.Write(this.moppSize); writer.Write(this.stuff2); for (int index = 0; index < this.moppSize; index++) { writer.Write(this.moppData[index]); } }
public override void Write(NiHeader header, BinaryWriter writer) { List <int> blockReferences = header.GetBlockReferences(); if (blockReferences.Count > 0) { if (this.nextController != -1) { this.nextController = blockReferences[this.nextController]; } if (this.target != -1) { this.target = blockReferences[this.target]; } } base.Write(header, writer); writer.Write(this.nextController); writer.Write(this.flags); writer.Write(this.frequency); writer.Write(this.phase); writer.Write(this.startTime); writer.Write(this.stopTime); writer.Write(this.target); }
public override void Write(NiHeader header, BinaryWriter writer) { List <int> blockReferences = header.GetBlockReferences(); if (blockReferences.Count > 0) { if (this.textureSet != -1) { this.textureSet = blockReferences[this.textureSet]; } } base.Write(header, writer); writer.Write(this.Flags); writer.Write(this.shaderType); writer.Write(this.shaderFlags); writer.Write(this.unknownInt2); writer.Write(this.envmapScale); writer.Write(this.unknownInt3); writer.Write(this.textureSet); writer.Write(this.unknownFloat2); writer.Write(this.refractionPeriod); writer.Write(this.unknownFloat4); writer.Write(this.unknownFloat5); }
public override void Write(NiHeader header, BinaryWriter writer) { List <int> blockReferences = header.GetBlockReferences(); base.Write(header, writer); writer.Write(this.stuff); writer.Write(this.numConstraints); for (int index = 0; index < numConstraints; index++) { if (blockReferences.Count > 0) { this.constraints[index] = blockReferences[this.constraints[index]]; } writer.Write(this.constraints[index]); } if (header.GetUserVersion() <= 11) { writer.Write(this.unknownInt9); } else { writer.Write(this.unknownInt91); } }
public override void Write(NiHeader header, BinaryWriter writer) { List <int> blockReferences = header.GetBlockReferences(); if (blockReferences.Count > 0) { if (this.skinInstance != -1) { this.skinInstance = blockReferences[this.skinInstance]; } if (this.bsProperties[0] != -1) { this.bsProperties[0] = blockReferences[this.bsProperties[0]]; } if (this.bsProperties[1] != -1) { this.bsProperties[1] = blockReferences[this.bsProperties[1]]; } } base.Write(header, writer); /*if (header.GetUserVersion2() == 100 || header.GetUserVersion2() == 130) * { * Utils.WriteVector3(writer, this.center); * writer.Write(this.radius); * writer.Write(this.skinInstance); * writer.Write(this.bsProperties[0]); * writer.Write(this.bsProperties[1]); * } * else*/ { writer.Write(this.data); writer.Write(this.skinInstance); if (header.GetVersion() > 335544325U) { writer.Write(this.numMaterials); for (int index = 0; (long)index < (long)this.numMaterials; ++index) { writer.Write(this.materialNames[index]); } for (int index = 0; (long)index < (long)this.numMaterials; ++index) { writer.Write(this.materialExtraData[index]); } writer.Write(this.activeMaterial); Utils.WriteBool(writer, this.dirtyFlag); if (header.GetUserVersion() == 12) { writer.Write(this.bsProperties[0]); writer.Write(this.bsProperties[1]); } } else { Utils.WriteBool(writer, this.hasShader); if (!this.hasShader) { return; } Utils.WriteSizedString(writer, this.shaderName); writer.Write(this.unknownInt); } } }
public override void Write(NiHeader header, BinaryWriter writer) { List <int> blockReferences = header.GetBlockReferences(); if (blockReferences.Count > 0) { if (this.textureSet != -1) { this.textureSet = blockReferences[this.textureSet]; } } writer.Write(this.shaderType); base.Write(header, writer); writer.Write(this.shaderFlags1); writer.Write(this.shaderFlags2); Utils.WriteUVCoord(writer, this.uvOffset); Utils.WriteUVCoord(writer, this.uvScale); writer.Write(this.textureSet); Utils.WriteColor3(writer, this.emissiveColor); writer.Write(this.emissiveMultiple); if (header.GetVersion() == 335675399U && header.GetUserVersion2() == 130) { writer.Write(this.wetMaterialIdx); } writer.Write(this.textureClampMode); writer.Write(this.alpha); writer.Write(this.refractionStrength); writer.Write(this.glossiness); Utils.WriteColor3(writer, this.specularColor); writer.Write(this.specularStrength); if (header.GetVersion() == 335675399U && header.GetUserVersion2() == 130) { writer.Write(this.subsurfaceRolloff); writer.Write(this.unkownFloat1); writer.Write(this.backlightPower); writer.Write(this.grayscaleToPaletteScale); writer.Write(this.fresnelPower); writer.Write(this.wetnessSpecScale); writer.Write(this.wetnessSpecPower); writer.Write(this.wetnessMinVar); writer.Write(this.wetnessEnvMapScale); writer.Write(this.wetnessFresnelPower); writer.Write(this.wetnessMetalness); } else { writer.Write(this.lightingEffect1); writer.Write(this.lightingEffect2); } if ((int)this.shaderType == 1) { writer.Write(this.environmentMapScale); } else if ((int)this.shaderType == 5) { Utils.WriteColor3(writer, this.skinTintColor); } else if ((int)this.shaderType == 6) { Utils.WriteColor3(writer, this.hairTintColor); } else if ((int)this.shaderType == 7) { writer.Write(this.maxPasses); writer.Write(this.scale); } else if ((int)this.shaderType == 11) { writer.Write(this.parallaxInnerLayerThickness); writer.Write(this.parallaxRefractionScale); Utils.WriteUVCoord(writer, this.parallaxInnerLayerTextureScale); writer.Write(this.parallaxEnvmapStrength); } else if ((int)this.shaderType == 14) { Utils.WriteVector4(writer, this.sparkleParameters); } else { if ((int)this.shaderType != 16) { return; } writer.Write(this.eyeCubemapScale); Utils.WriteVector3(writer, this.leftEyeReflectionCenter); Utils.WriteVector3(writer, this.rightEyeReflectionCenter); } }
public override void Write(NiHeader header, BinaryWriter writer) { List <int> blockReferences = header.GetBlockReferences(); if (blockReferences.Count > 0) { if (this.skinInstance != -1) { this.skinInstance = blockReferences[this.skinInstance]; } if (this.bsProperties[0] != -1) { this.bsProperties[0] = blockReferences[this.bsProperties[0]]; } if (this.bsProperties[1] != -1) { this.bsProperties[1] = blockReferences[this.bsProperties[1]]; } } base.Write(header, writer); Utils.WriteVector3(writer, this.center); writer.Write(this.radius); writer.Write(this.skinInstance); writer.Write(this.bsProperties[0]); writer.Write(this.bsProperties[1]); this.vertexSize = 0; this.vertexFlags = 0; // 16 = vertex // 32 = uv // 128 = normals // 256 = tangents // 512 = vertex colors // 1024 = skinned // 4096 = male eyes // 16384 = full precision if (this.vertices.Count > 0) { this.vertexFlags |= 16; this.vertexSize += 2; } if (this.uvCoords.Count >= 0) { this.vertexFlags |= 32; this.vertexSize++; } if (this.normals.Count > 0) { this.vertexFlags |= 128; this.vertexSize += 2; } if (this.tangents.Count > 0) { this.vertexFlags |= 256; this.vertexSize += 2; } if (this.vertexColors.Count > 0) { this.vertexFlags |= 512; this.vertexSize++; this.vertexFlag4 = 7; } writer.Write(this.vertexSize); if (((this.vertexFlags & 16384) == 16384) || (header.GetUserVersion2() == 100)) { this.floatSize = 4; } writer.Write(this.floatSize); writer.Write(this.vertexFlag3); writer.Write(this.vertexFlag4); writer.Write(this.vertexFlag5); writer.Write(this.vertexFlags); writer.Write(this.vertexFlag8); if (header.GetUserVersion2() == 100) { writer.Write((ushort)this.numTriangles); } else { writer.Write(this.numTriangles); } writer.Write(this.numVertices); writer.Write(GetDataSize(header)); if (this.dataSize > 0) { for (int index = 0; index < this.numVertices; index++) { if ((this.vertexFlags & 16) == 16) { if (header.GetUserVersion2() == 100 || (this.vertexFlags & 16384) == 16384) { writer.Write(this.vertices[index][0]); writer.Write(this.vertices[index][1]); writer.Write(this.vertices[index][2]); if (this.bitangents.Count > 0) { writer.Write(this.bitangents[index][0]); } else { writer.Write((uint)0); } } else { writer.Write(Utils.FloatToShort(this.vertices[index][0])); writer.Write(Utils.FloatToShort(this.vertices[index][1])); writer.Write(Utils.FloatToShort(this.vertices[index][2])); if (this.bitangents.Count > 0) { writer.Write(Utils.FloatToShort(this.bitangents[index][0])); } else { writer.Write((ushort)0); } } } if ((this.vertexFlags & 32) == 32) { writer.Write(Utils.FloatToShort(this.uvCoords[index][0])); writer.Write(Utils.FloatToShort(this.uvCoords[index][1])); } if ((this.vertexFlags & 128) == 128) { writer.Write(Utils.FloatToByte(this.normals[index][0])); writer.Write(Utils.FloatToByte(this.normals[index][1])); writer.Write(Utils.FloatToByte(this.normals[index][2])); if (this.bitangents.Count > 0) { writer.Write(Utils.FloatToByte(this.bitangents[index][1])); } else { writer.Write((byte)0); } } if ((this.vertexFlags & 256) == 256) { writer.Write(Utils.FloatToByte(this.tangents[index][0])); writer.Write(Utils.FloatToByte(this.tangents[index][1])); writer.Write(Utils.FloatToByte(this.tangents[index][2])); if (this.bitangents.Count > 0) { writer.Write(Utils.FloatToByte(this.bitangents[index][2])); } else { writer.Write((byte)0); } } if ((this.vertexFlags & 512) == 512) { writer.Write((byte)(this.vertexColors[index][0] * 255)); writer.Write((byte)(this.vertexColors[index][1] * 255)); writer.Write((byte)(this.vertexColors[index][2] * 255)); writer.Write((byte)(this.vertexColors[index][3] * 255)); } if ((this.vertexFlags & 1024) == 1024) { Console.WriteLine("boneweight not supported yet"); System.Environment.Exit(667); } if ((this.vertexFlags & 4096) == 4096) { writer.Write((uint)0); } } } for (int index = 0; index < this.triangles.Count; ++index) { Utils.WriteTriangle(writer, this.triangles[index]); } if (header.GetUserVersion2() == 100) { writer.Write(particleDataSize); } }