/// <summary> /// 构造函数 /// </summary> /// <param name="_loction">位置</param> /// <param name="_shape">点的显示控件</param> /// <param name="_layerindex"></param> /// <param name="_offsetX"></param> /// <param name="_offsetY"></param> /// <param name="_label"></param> /// <param name="_labelOffsetX"></param> /// <param name="_labelOffsetY"></param> /// <param name="_needCloseButton"></param> /// <param name="_closeButtonWidth"></param> /// <param name="_closeButtonHeight"></param> /// <param name="_closebuttonOffsetX"></param> /// <param name="_closebuttonOffsetY"></param> public ParametersForDrawPoint( PointLatLng _loction, UIElement _shape, LayerIndex _layerindex, double _offsetX = 0, double _offsetY = 0, UIElement _label = null, double _labelOffsetX = 0, double _labelOffsetY = 0, bool _needCloseButton = true, double _closeButtonWidth = 12, double _closeButtonHeight = 12, double _closebuttonOffsetX = 9, double _closebuttonOffsetY = -17) { loction = _loction; shape = _shape; layerindex = _layerindex; offsetX = _offsetX; offsetY = _offsetY; label = _label; labelOffsetX = _labelOffsetX; labelOffsetY = _labelOffsetY; needCloseButton = _needCloseButton; closeButtonWidth = _closeButtonWidth; closeButtonHeight = _closeButtonHeight; closebuttonOffsetX = _closebuttonOffsetX; closebuttonOffsetY = _closebuttonOffsetY; }
public override int GetHashCode() { int hash = 103; unchecked { hash = hash + 29 * StateID.GetHashCode(); hash = hash * 97 + LayerIndex.GetHashCode(); } return(hash); }
public override bool Equals(object obj) { if (!(obj is ToolpathPreviewVertex o)) { return(false); } return (CustomColorData.Equals(o.CustomColorData) && Point.Equals(o.Point) && Color.Equals(o.Color) && FillType.Equals(o.FillType) && LayerIndex.Equals(o.LayerIndex) && Brightness.Equals(o.Brightness)); }
public override int GetHashCode() { int hash = 1; if (LayerIndex != 0) { hash ^= LayerIndex.GetHashCode(); } if (InstanceId != 0) { hash ^= InstanceId.GetHashCode(); } if (PlayerX != 0) { hash ^= PlayerX.GetHashCode(); } if (PlayerY != 0) { hash ^= PlayerY.GetHashCode(); } return(hash); }
/// <summary> /// Get the orignal internal and external F0s. /// </summary> /// <param name="intUtt">Internal utterance.</param> /// <param name="extUvSeg">External uvSeg.</param> /// <param name="layerIndex">Certain syllable/phone/state's position.</param> /// <param name="extNotNullF0">Out float[], External F0s.</param> /// <param name="intNotNullF0Position">Not null F0s' phones' position.</param> public static void GetF0(SP.TtsUtterance intUtt, ScriptUvSeg extUvSeg, LayerIndex layerIndex, out float[] extNotNullF0, out List<int> intNotNullF0Position) { intNotNullF0Position = new List<int>(); if (extUvSeg.SegType == ScriptUvSegType.Voiced) { extNotNullF0 = new float[extUvSeg.F0Contour.Contour.Count]; for (int i = 0; i < extUvSeg.F0Contour.Contour.Count; i++) { extNotNullF0[i] = extUvSeg.F0Contour.Contour[i]; } } else if (extUvSeg.SegType == ScriptUvSegType.Mixed) { List<float> extNotNullF0List = new List<float>(); for (int i = 0; i < extUvSeg.F0Contour.Contour.Count; i++) { if (extUvSeg.F0Contour.Contour[i] != 0) { extNotNullF0List.Add(extUvSeg.F0Contour.Contour[i]); } } extNotNullF0 = new float[extNotNullF0List.Count]; extNotNullF0List.CopyTo(extNotNullF0); } else { extNotNullF0 = null; } int interF0Index = 0; for (int i = 0; i < layerIndex.StartPhone; i++) { for (int j = 0; j < (int)intUtt.Acoustic.Durations.Column; j++) { interF0Index += (int)intUtt.Acoustic.Durations[i][j]; } } for (int i = layerIndex.StartPhone; i < layerIndex.EndPhone; i++) { for (int j = 0; j < (int)intUtt.Acoustic.Durations.Column; j++) { for (int k = 0; k < intUtt.Acoustic.Durations[i][j]; k++) { if (intUtt.Acoustic.F0s[interF0Index][0] != 0) { intNotNullF0Position.Add(interF0Index); } interF0Index++; } } } }
/// <summary> /// Find the to be updated syllable/phone/state's position. /// </summary> /// <param name="stateIndex">State index.</param> /// <param name="phoneIndex">Phone index.</param> /// <param name="syllableIndex">Syllable index.</param> /// <param name="wordIndex">Word index.</param> /// <param name="totalPhoneIndex">Phone index array of sentence.</param> /// <returns>Certain syllable/phone/state's position.</returns> public LayerIndex FindLayerIndex(int stateIndex, int phoneIndex, int syllableIndex, int wordIndex, int[][,] totalPhoneIndex) { LayerIndex layerIndex = new LayerIndex(); if (wordIndex >= 0) { layerIndex.StartPhone = totalPhoneIndex[wordIndex][totalPhoneIndex[wordIndex].GetLength(0) - 1, 1]; } if (wordIndex < totalPhoneIndex.GetLength(0) - 1) { layerIndex.EndPhone = totalPhoneIndex[wordIndex + 1][0, 0]; } else { layerIndex.EndPhone = layerIndex.StartPhone + 1; } layerIndex.State = stateIndex; if (layerIndex.StartPhone == layerIndex.EndPhone) { layerIndex.State = NotUpdateState; } else if (stateIndex != NotUpdateState) { layerIndex.EndPhone = layerIndex.StartPhone; } return layerIndex; }
/// <summary> /// Find the to be updated syllable/phone/state's position. /// </summary> /// <param name="stateIndex">State index.</param> /// <param name="phoneIndex">Phone index.</param> /// <param name="syllableIndex">Syllable index.</param> /// <param name="wordIndex">Word index.</param> /// <param name="totalPhoneIndex">Phone index array of sentence.</param> /// <returns>Certain syllable/phone/state's position.</returns> public LayerIndex FindLayerIndex(int stateIndex, int phoneIndex, int syllableIndex, int wordIndex, int[][,] totalPhoneIndex) { LayerIndex layerIndex = new LayerIndex(); layerIndex.StartPhone = totalPhoneIndex[wordIndex][syllableIndex, 0] + phoneIndex; layerIndex.EndPhone = layerIndex.StartPhone; layerIndex.State = stateIndex; return layerIndex; }
/// <summary> /// Execute update duration. /// </summary> /// <param name="intUtt">Internal utterance.</param> /// <param name="extTotalDur">Given exteranl duration.</param> /// <param name="layerIndex">Certain syllable/phone/state's position.</param> /// <returns>True if success, false if not.</returns> private bool ExecuteUpdateDuration(SP.TtsUtterance intUtt, uint extTotalDur, LayerIndex layerIndex) { int phoneCount = layerIndex.EndPhone - layerIndex.StartPhone; uint[] intDur; if (phoneCount == 0) { intDur = new uint[1]; intDur[0] = intUtt.Acoustic.Durations[layerIndex.StartPhone][layerIndex.State]; } else { intDur = new uint[phoneCount * (int)intUtt.Acoustic.Durations.Column]; int duraIndex = 0; for (int i = layerIndex.StartPhone; i < layerIndex.EndPhone; ++i) { for (int j = 0; j < (int)intUtt.Acoustic.Durations.Column; ++j) { intDur[duraIndex] = intUtt.Acoustic.Durations[i][j]; duraIndex++; } } } uint exceptionTimes; bool calcuSuccess = AcousticReplacement.MapDuration(extTotalDur, ref intDur, out exceptionTimes); if (!calcuSuccess) { return false; } if (phoneCount == 0) { intUtt.Acoustic.Durations[layerIndex.StartPhone][layerIndex.State] = intDur[0]; } else { int duraIndex = 0; for (int i = layerIndex.StartPhone; i < layerIndex.EndPhone; ++i) { for (int j = 0; j < (int)intUtt.Acoustic.Durations.Column; ++j) { intUtt.Acoustic.Durations[i][j] = intDur[duraIndex]; duraIndex++; } } } return true; }
internal static TriggerCallbackController CreateBox(Vector3 center, Vector3 size, Quaternion rotation, Boolean continuous, LayerIndex layer, Boolean debugVisible = false) { var obj = new GameObject("BoxCallback"); obj.transform.position = center; obj.transform.rotation = rotation; var box = obj.AddComponent <BoxCollider>(); box.size = size; box.isTrigger = true; return(Create(obj, box, continuous, layer, debugVisible)); }
internal static TriggerCallbackController CreateSphere(Single radius, Vector3 position, Boolean continuous, LayerIndex layer, Boolean debugVisible = false) { var obj = new GameObject("SphereCallback"); if (debugVisible) { var deb = GameObject.CreatePrimitive(PrimitiveType.Sphere); deb.transform.parent = obj.transform; deb.transform.localPosition = Vector3.zero; deb.transform.localRotation = Quaternion.identity; deb.transform.localScale = new Vector3(radius, radius, radius) * 2f; var rb = deb.GetComponent <Rigidbody>(); if (rb) { UnityEngine.Object.Destroy(rb); } var col = deb.GetComponent <SphereCollider>(); if (col) { UnityEngine.Object.Destroy(col); } } obj.transform.position = position; var sphere = obj.AddComponent <SphereCollider>(); sphere.radius = radius; sphere.isTrigger = true; return(Create(obj, sphere, continuous, layer, debugVisible)); }
private static TriggerCallbackController Create(GameObject obj, Collider collider, Boolean continuous, LayerIndex layer, Boolean debugVisible) { obj.layer = layer.intVal; var call = obj.AddComponent <TriggerCallbackController>(); if (continuous) { var rb = obj.AddComponent <Rigidbody>(); rb.isKinematic = true; rb.collisionDetectionMode = CollisionDetectionMode.ContinuousSpeculative; call.rb = rb; } if (debugVisible) { call.line = obj.AddComponent <LineRenderer>(); var bounds = collider.bounds; call.line.positionCount = 8; var extX = bounds.extents.x; var extY = bounds.extents.y; var extZ = bounds.extents.z; var corners = new[] { bounds.center + new Vector3(-extX, extY, -extZ), bounds.center + new Vector3(-extX, extY, extZ), bounds.center + new Vector3(-extX, -extY, extZ), bounds.center + new Vector3(-extX, -extY, -extZ), bounds.center + new Vector3(extX, -extY, -extZ), bounds.center + new Vector3(extX, -extY, extZ), bounds.center + new Vector3(extX, extY, extZ), bounds.center + new Vector3(extX, extY, -extZ), }; call.corners = corners; call.line.SetPositions(corners); call.line.loop = true; call.line.startWidth = 0.1f; call.line.endWidth = 0.1f; call.line.startColor = Color.white; call.line.endColor = Color.white; } call.col = collider; return(call); }
internal static TriggerCallbackController CreateCapsule(Vector3 center, CapsuleDirection direction, Single radius, Single height, Quaternion rotation, Boolean continuous, LayerIndex layer, Boolean debugVisible = false) { var obj = new GameObject("CapsuleCallback"); obj.transform.position = center; obj.transform.rotation = rotation; var cap = obj.AddComponent <CapsuleCollider>(); cap.direction = (Int32)direction; cap.radius = radius; cap.height = height; cap.isTrigger = true; return(Create(obj, cap, continuous, layer, debugVisible)); }