IEnumerator SendIntensity(SendPosition position) { //送信するインテンシティオブジェクトに変換 sendIntensityData = intensityManager.MicPosReceived(position); yield return(null); if (sendIntensityData.sendType == SendType.Intensity) { tServer.SendAllClient(transferData.SerializeJson <IntensityPackage>(sendIntensityData)); logPanelManager.WriteConsole(sendIntensityData.num, sendIntensityData.sendPos, sendIntensityData.intensity); } yield return(null); }
public IntensityPackage MicPosReceived(SendPosition sendPosition) { if (CheckPlotDistance(sendPosition.sendPos)) { GameObject micPoint = new GameObject("measurementPoint" + Num); micPoint.transform.parent = copyStandard.transform; micPoint.transform.localPosition = sendPosition.sendPos; micPoint.transform.localRotation = sendPosition.sendRot; // 音声取得 var soundSignals = asiocsharpdll.GetAsioSoundSignals(MeasurementParameter.SampleNum, MeasurementParameter.CalibValue); //intensity計算 var intensityDir = AcousticMathNew.CrossSpectrumMethod(soundSignals, MeasurementParameter.Fs, length_bit, MeasurementParameter.FreqMin, MeasurementParameter.FreqMax, MeasurementParameter.AtmDensity, MeasurementParameter.MInterval); float intensityLv_dB = AcousticMathNew.CalcuIntensityLevel(intensityDir); //オブジェクト作成 var vectorObj = Instantiate(Cone) as GameObject; vectorObj.transform.localScale = new Vector3(MeasurementParameter.objSize, MeasurementParameter.objSize, MeasurementParameter.objSize * 4); vectorObj.transform.parent = micPoint.transform; vectorObj.transform.localPosition = Vector3.zero; vectorObj.transform.localRotation = Quaternion.LookRotation(10000000000 * intensityDir); var vecColor = ColorBar.DefineColor(MeasurementParameter.colormapID, intensityLv_dB, MeasurementParameter.MinIntensity, MeasurementParameter.MaxIntensity); vectorObj.transform.GetComponent <Renderer>().material.color = vecColor; vectorObj.name = "IntensityObj"; intensities.Add(Num, vectorObj); //データそのものを保管 DataStorage data = new DataStorage(Num, sendPosition.sendPos, sendPosition.sendRot, soundSignals, intensityDir); dataStorages.Add(Num, data); //送信データを作成 var sendData = new IntensityPackage(sendPosition, intensityDir, Num); Num++; return(sendData); } else { return(new IntensityPackage()); } }