public static void VIB_init(BinaryReader reader) { try { VIB_DEF value = default(VIB_DEF); value.magic = (UInt16)reader.ReadInt16(); value.fps = (UInt16)reader.ReadInt16(); value.trackCount = (UInt16)reader.ReadInt16(); value.trackOffset = (UInt16)reader.ReadInt16(); Int32 trackCount = (Int32)value.trackCount; VIB_TRACK_DEF[] array = new VIB_TRACK_DEF[trackCount]; for (Int32 i = 0; i < trackCount; i++) { reader.BaseStream.Seek((Int64)((Int32)value.trackOffset + i * 12), SeekOrigin.Begin); array[i] = default(VIB_TRACK_DEF); array[i].sampleFlags = new UInt16[2]; array[i].sampleCount = new UInt16[2]; array[i].sampleOffset = new UInt16[2]; array[i].sampleFlags[0] = (UInt16)reader.ReadInt16(); array[i].sampleFlags[1] = (UInt16)reader.ReadInt16(); array[i].sampleCount[0] = (UInt16)reader.ReadInt16(); array[i].sampleCount[1] = (UInt16)reader.ReadInt16(); array[i].sampleOffset[0] = (UInt16)reader.ReadInt16(); array[i].sampleOffset[1] = (UInt16)reader.ReadInt16(); } Byte[][][] array2 = new Byte[trackCount][][]; for (Int32 j = 0; j < trackCount; j++) { VIB_TRACK_DEF vib_TRACK_DEF = array[j]; array2[j] = new Byte[2][]; Int32 count = (Int32)vib_TRACK_DEF.sampleCount[(Int32)vib.VIB_SAMPLE_LO]; Int32 num = (Int32)vib_TRACK_DEF.sampleOffset[(Int32)vib.VIB_SAMPLE_LO]; reader.BaseStream.Seek((Int64)num, SeekOrigin.Begin); array2[j][0] = reader.ReadBytes(count); count = (Int32)vib_TRACK_DEF.sampleCount[(Int32)vib.VIB_SAMPLE_HI]; num = (Int32)vib_TRACK_DEF.sampleOffset[(Int32)vib.VIB_SAMPLE_HI]; reader.BaseStream.Seek((Int64)num, SeekOrigin.Begin); array2[j][1] = reader.ReadBytes(count); } vib.Parms.vibPtr = new VIB_DEF?(value); vib.Parms.tracks = array; vib.Parms.frameData = array2; } catch (Exception message) { global::Debug.LogError(message); } finally { reader.Close(); } vib.Parms.statusFlags = (UInt16)vib.VIB_STATUS_INIT; vib.Parms.frameRate = 256; vib.Parms.frameNdx = 0; vib.Parms.frameStart = 0; UInt32 num2 = vib.VIB_computeFrameCount(); vib.Parms.frameStop = (Int16)(num2 - 1u); vib.VIB_initSamples(); }
public static VIB_TRACK_DEF VIB_TRACK_PTR(VIB_DEF vibPtr, Int32 ndx, BinaryReader reader = null) { if (reader != null) { reader.BaseStream.Seek((Int64)((Int32)vibPtr.trackOffset + ndx), SeekOrigin.Begin); } return(vib.Parms.tracks[ndx]); }
public static void VIB_TRACK_HEAD(VIB_DEF vibPtr, Int32 ndx, BinaryReader reader = null) { vib.VIB_TRACK_PTR(vibPtr, 0, reader); }
public static void VIB_service() { if ((vib.Parms.statusFlags & (UInt16)vib.VIB_STATUS_INIT) == 0) { return; } if (PersistenSingleton <UIManager> .Instance.IsPause) { return; } VIB_DEF?vibPtr = vib.Parms.vibPtr; if (vibPtr == null) { return; } if ((vib.Parms.statusFlags & (UInt16)vib.VIB_STATUS_ACTIVE) != 0 && (vib.Parms.statusFlags & (UInt16)(vib.VIB_STATUS_LOOP | vib.VIB_STATUS_PLAY_SET)) != 0) { VIB_DEF value = vib.Parms.vibPtr.Value; Int32 num = 0; Int32 num2 = 0; Int32 num3 = vib.Parms.frameNdx >> 8; for (Int32 i = 0; i < (Int32)value.trackCount; i++) { VIB_TRACK_DEF vib_TRACK_DEF = vib.Parms.tracks[i]; if ((vib_TRACK_DEF.sampleFlags[(Int32)vib.VIB_SAMPLE_LO] & (UInt16)vib.VIB_SAMPLE_ACTIVE) != 0 && num3 < (Int32)vib_TRACK_DEF.sampleCount[(Int32)vib.VIB_SAMPLE_LO]) { num += (Int32)vib.Parms.frameData[i][(Int32)vib.VIB_SAMPLE_LO][num3]; } if ((vib_TRACK_DEF.sampleFlags[(Int32)vib.VIB_SAMPLE_HI] & (UInt16)vib.VIB_SAMPLE_ACTIVE) != 0 && num3 < (Int32)vib_TRACK_DEF.sampleCount[(Int32)vib.VIB_SAMPLE_HI]) { num2 += (Int32)vib.Parms.frameData[i][(Int32)vib.VIB_SAMPLE_HI][num3]; } } if (num > 255) { num = 255; } if (num2 > 127) { num2 = 1; } if ((FF9StateSystem.Settings.cfg.vibe == (UInt64)FF9CFG.FF9CFG_VIBE_ON || PersistenSingleton <FF9StateSystem> .Instance.mode == 5) && (num > 0 || num2 > 0)) { vib.VIB_actuatorSet(0, (Single)num2 / 255f, (Single)num / 255f); if (PersistenSingleton <FF9StateSystem> .Instance.mode == 2) { vib.VIB_actuatorSet(1, (Single)num2 / 255f, (Single)num / 255f); } } vib.Parms.frameNdx = vib.Parms.frameNdx + (Int32)vib.Parms.frameRate; if (vib.Parms.frameNdx >> 8 > (Int32)vib.Parms.frameStop) { if ((vib.Parms.statusFlags & (UInt16)vib.VIB_STATUS_WRAP) != 0) { vib.Parms.frameNdx = (Int32)vib.Parms.frameStop << 8; vib.VIB_setFrameRate((Int16)(-vib.Parms.frameRate)); } else { vib.Parms.frameNdx = (Int32)vib.Parms.frameStart << 8; } vib.Parms.statusFlags = (UInt16)(vib.Parms.statusFlags & (UInt16)(~(UInt16)vib.VIB_STATUS_PLAY_SET)); if ((vib.Parms.statusFlags & (UInt16)vib.VIB_STATUS_LOOP) == 0) { vib.VIB_actuatorReset(0); vib.VIB_actuatorReset(1); vib.Parms.statusFlags = (UInt16)(vib.Parms.statusFlags & (UInt16)(~(UInt16)vib.VIB_STATUS_ACTIVE)); } } if (vib.Parms.frameNdx >> 8 < (Int32)vib.Parms.frameStart) { if ((vib.Parms.statusFlags & (UInt16)vib.VIB_STATUS_WRAP) != 0) { vib.Parms.frameNdx = (Int32)vib.Parms.frameStart << 8; vib.VIB_setFrameRate((Int16)(-vib.Parms.frameRate)); } else { vib.Parms.frameNdx = (Int32)vib.Parms.frameStop << 8; } vib.Parms.statusFlags = (UInt16)(vib.Parms.statusFlags & (UInt16)(~(UInt16)vib.VIB_STATUS_PLAY_SET)); if ((vib.Parms.statusFlags & (UInt16)vib.VIB_STATUS_LOOP) == 0) { vib.VIB_actuatorReset(0); vib.VIB_actuatorReset(1); vib.Parms.statusFlags = (UInt16)(vib.Parms.statusFlags & (UInt16)(~(UInt16)vib.VIB_STATUS_ACTIVE)); } } } }