public EventScenarioData CreateShowSongTitle(long tick, int measure, int beat, int track) { var ev = new EventScenarioData(); ev.AbsoluteTime = CalculateAbsoluteTime(tick); ev.Tick = tick; ev.Measure = measure; ev.Beat = beat; ev.Track = track; ev.Type = ScenarioDataType.ShowSongTitle; return(ev); }
private static EventScenarioData[] ReadEventScenarioDataList([NotNull] string[] lines, ref int index) { index += 2; var cc = lines[index++].ConvInt32(12); var result = new EventScenarioData[cc]; for (var i = 0; i < cc; ++i) { result[i] = ReadEventScenarioData(lines, ref index, true); } return(result); }
private void ProcessFacialExpression([NotNull] EventScenarioData ev) { var currentTime = playerControl.relativeTime; if (ev.param != _currFacialExprKey) { #if UNITY_EDITOR string message; if (_expressionMaps.ContainsKey(ev.param)) { message = $"Setting expr {ev.param.ToString()} for idol {placement.formationNumber.ToString()} @ {ev.absTime.ToString()}"; } else { message = $"Unknown expr {ev.param.ToString()} for idol {placement.formationNumber.ToString()} @ {ev.absTime.ToString()}"; } Debug.Log(message); #endif _prevFacialExprKey = _currFacialExprKey; _currFacialExprKey = ev.param; _expressionStartTime = currentTime; var currMap = FindExpressionOrDefault(_currFacialExprKey); var prevMap = FindExpressionOrDefault(_prevFacialExprKey); FacialFrameToBuffer(currMap, _currFacialExpression); FacialFrameToBuffer(prevMap, _prevFacialExpression); } // TODO: eye movement collision prevention (e.g. E_wink_* & E_metoji_*)? if (ev.eyeclose != _currEyeClosed) { if (!IsWinking()) { _prevEyeClosed = _currEyeClosed; _currEyeClosed = ev.eyeclose; _eyeCloseStartTime = currentTime; } } }
internal ScenarioSignalEventArgs([NotNull] EventScenarioData data, ScenarioVariation variation) { Data = data; Variation = variation; }
private static EventScenarioData ReadEventScenarioData([NotNull] string[] lines, ref int index, bool isArrayElement) { index += isArrayElement ? 2 : 1; var outerOffset = isArrayElement ? 0 : -2; var result = new EventScenarioData(); result.absTime = lines[index++].ConvDouble(20 + outerOffset); result.selected = lines[index++].ConvBoolean(20 + outerOffset); result.tick = lines[index++].ConvInt64(17 + outerOffset); result.measure = lines[index++].ConvInt32(17 + outerOffset); result.beat = lines[index++].ConvInt32(14 + outerOffset); result.track = lines[index++].ConvInt32(15 + outerOffset); result.type = (ScenarioNoteType)lines[index++].ConvInt32(14 + outerOffset); result.param = lines[index++].ConvInt32(15 + outerOffset); result.target = lines[index++].ConvInt32(16 + outerOffset); result.duration = lines[index++].ConvInt64(21 + outerOffset); ++index; result.str = string.Empty; ++index; result.info = string.Empty; result.on = lines[index++].ConvInt32(12 + outerOffset); result.on2 = lines[index++].ConvInt32(13 + outerOffset); result.col = ReadColorRgba(lines, ref index, isArrayElement, false); result.col2 = ReadColorRgba(lines, ref index, isArrayElement, false); result.cols = ReadFloatList(lines, ref index, isArrayElement ? 3 : 1); index += 3; result.tex = null; result.texInx = lines[index++].ConvInt32(16 + outerOffset); result.trig = lines[index++].ConvInt32(14 + outerOffset); result.speed = lines[index++].ConvSingle(17 + outerOffset); result.idol = lines[index++].ConvInt32(14 + outerOffset); result.mute = ReadBooleanList(lines, ref index, isArrayElement ? 3 : 1); result.addf = lines[index++].ConvBoolean(16 + outerOffset); result.eye_x = lines[index++].ConvSingle(17 + outerOffset); result.eye_y = lines[index++].ConvSingle(17 + outerOffset); result.formation = ReadVector4List(lines, ref index, isArrayElement ? 3 : 1); result.appeal = lines[index++].ConvBoolean(18 + outerOffset); result.cheeklv = lines[index++].ConvInt32(17 + outerOffset); result.eyeclose = lines[index++].ConvBoolean(20 + outerOffset); result.talking = lines[index++].ConvBoolean(19 + outerOffset); result.delay = lines[index++].ConvBoolean(17 + outerOffset); result.clratio = ReadInt32List(lines, ref index, isArrayElement ? 3 : 1); result.clcols = ReadInt32List(lines, ref index, isArrayElement ? 3 : 1); result.camcut = lines[index++].ConvInt32(16 + outerOffset); result.vjparam = ReadVjParam(lines, ref index, isArrayElement); return(result); }
private static void WriteScenarioNote([NotNull] this TextWriter writer, int baseIndent, [NotNull] string name, EventScenarioData data) { WriteLine("EventScenarioData " + name, baseIndent); WriteLine("double absTime = " + data.absTime.ToString(CultureInfo.InvariantCulture), baseIndent + 1); WriteLine("UInt8 selected = 0", baseIndent + 1); WriteLine("SInt64 tick = " + data.tick.ToString(), baseIndent + 1); WriteLine("int measure = " + data.measure.ToString(), baseIndent + 1); WriteLine("int beat = " + data.beat.ToString(), baseIndent + 1); WriteLine("int track = " + data.track.ToString(), baseIndent + 1); WriteLine("int type = " + ((int)data.type).ToString(), baseIndent + 1); WriteLine("int param = " + data.param.ToString(), baseIndent + 1); WriteLine("int target = " + data.target.ToString(), baseIndent + 1); WriteLine("SInt64 duration = " + data.duration.ToString(), baseIndent + 1); WriteLine("string str = \"" + data.str + "\"", baseIndent + 1); WriteLine("string info = \"" + data.info + "\"", baseIndent + 1); WriteLine("int on = " + data.on.ToString(), baseIndent + 1); WriteLine("int on2 = " + data.on2.ToString(), baseIndent + 1); WriteLine("ColorRGBA col", baseIndent + 1); WriteLine("float r = " + data.col.r.ToString(CultureInfo.InvariantCulture), baseIndent + 2); WriteLine("float g = " + data.col.g.ToString(CultureInfo.InvariantCulture), baseIndent + 2); WriteLine("float b = " + data.col.b.ToString(CultureInfo.InvariantCulture), baseIndent + 2); WriteLine("float a = " + data.col.a.ToString(CultureInfo.InvariantCulture), baseIndent + 2); WriteLine("ColorRGBA col2", baseIndent + 1); WriteLine("float r = " + data.col2.r.ToString(CultureInfo.InvariantCulture), baseIndent + 2); WriteLine("float g = " + data.col2.g.ToString(CultureInfo.InvariantCulture), baseIndent + 2); WriteLine("float b = " + data.col2.b.ToString(CultureInfo.InvariantCulture), baseIndent + 2); WriteLine("float a = " + data.col2.a.ToString(CultureInfo.InvariantCulture), baseIndent + 2); const string fixedFormat = @" vector cols Array Array int size = 0 PPtr<$Texture> tex int m_FileID = 0 SInt64 m_PathID = 0 int texInx = -1 int trig = 0 float speed = 1 int idol = 0 vector mute Array Array int size = 0 UInt8 addf = 0 float eye_x = 0 float eye_y = 0 vector formation Array Array int size = 0 UInt8 appeal = 0 int cheeklv = 0 UInt8 eyeclose = 0 UInt8 talking = 0 UInt8 delay = 0 vector clratio Array Array int size = 0 vector clcols Array Array int size = 0 int camCut = -1 VjParam vjparam UInt8 use = 0 UInt8 renderTex = 0 int col = 8 int row = 4 int begin = 0 int speed = 16 ColorRGBA color float r = 0 float g = 0 float b = 0 float a = 0" ; var fixedLines = fixedFormat.Split(WinNewLineSeparators, StringSplitOptions.None); foreach (var line in fixedLines) { WriteLine(line, baseIndent); } void WriteLine(string str, int indent) { if (indent > 0) { writer.Write(new string('\t', indent)); } writer.WriteLine(str); } }