void DestroySoundPoint(SoundPoint sp) { //AkSoundEngine.PostEvent(sp.stopEventName, sp.gameObject); sp.stopEvent.Post(sp.gameObject); Destroy(sp.gameObject); multiPosEventTree.Remove(sp.startEvent.Name); }
public RenderPoint(Point ACenter, SoundPoint ALink) { Link = ALink; Center = ACenter; Region = new EllipseGeometry(ACenter, Radius, Radius); Region.Freeze(); Bounds = new Rect(ACenter.X - Radius, ACenter.Y - Radius, Radius * 2, Radius * 2); }
public void RemoveSoundPoint(GameObject soundpointGO) { SoundPoint sp = soundpointGO.GetComponent <SoundPoint>(); SPMultiPosEvent eventPosList; if (!multiPosEventTree.TryGetValue(sp.startEvent.Name, out eventPosList)) { return; } eventPosList.list.Remove(sp); UpdateMultiPosition(sp); }
//Update multiposition for parent destroyed void UpdateMultiPosition(SoundPoint soundpoint) { SPMultiPosEvent eventPosList = multiPosEventTree[soundpoint.startEvent.Name]; SoundPoint parentSoundPoint = eventPosList.parentSoundPoint; if (eventPosList.list.Count == 0) { DestroySoundPoint(parentSoundPoint); return; } AkPositionArray positionArray = BuildMultiplePositions(eventPosList.list); AkSoundEngine.SetMultiplePositions(parentSoundPoint.gameObject, positionArray, (ushort)positionArray.Count, AkMultiPositionType.MultiPositionType_MultiSources); }
private void Start() { selfTransform = transform; maze = GetComponent <Maze>(); dMaze = maze.dMaze; if (pointOut == null) { pointOut = GetComponentInChildren <SoundPoint>(); } var li = LevelManager.Instance; var gi = GlobalHub.Instance; if ((gi.GlobalKeyFlag & (1 << (int)COLOR_TYPE.RED)) == 0) { StartCoroutine(CheckPosition(li.PlayerTrans)); // 检查玩家的位置 } }
void SetMultiPosition(SoundPoint soundpoint) { SPMultiPosEvent multiPosEvent = multiPosEventTree[soundpoint.startEvent.Name]; SoundPoint soundPointParent = multiPosEvent.parentSoundPoint; AkGameObj[] gameObj = soundpoint.gameObject.GetComponents <AkGameObj>(); for (int i = 0; i < gameObj.Length; i++) { gameObj[i].enabled = false; } AkPositionArray positionArray = BuildMultiplePositions(multiPosEvent.list); AkSoundEngine.SetMultiplePositions(soundPointParent.gameObject, positionArray, (ushort)positionArray.Count, AkMultiPositionType.MultiPositionType_MultiSources); if (!multiPosEvent.eventIsPlaying) { soundpoint.startEvent.Post(soundPointParent.gameObject, (uint)AkCallbackType.AK_EndOfEvent, AKCallBackFinishedPlaying); //AkSoundEngine.PostEvent(soundpoint.eventName, soundPointParent.gameObject, (uint)AkCallbackType.AK_EndOfEvent, AKCallBackFinishedPlaying, null, 0, null, AkSoundEngine.AK_INVALID_PLAYING_ID); //AkSoundEngine.PostEvent() multiPosEvent.eventIsPlaying = true; } }
public void AddSoundPoint(GameObject soundpointGO) { SoundPoint sp = soundpointGO.GetComponent <SoundPoint>(); SPMultiPosEvent eventPosList; if (multiPosEventTree.TryGetValue(sp.startEvent.Name, out eventPosList)) { if (!eventPosList.list.Contains(sp)) { eventPosList.list.Add(sp); if (eventPosList.parentSoundPoint == null && sp.isParentgameObject) { eventPosList.parentSoundPoint = sp; } } } else { eventPosList = new SPMultiPosEvent(); eventPosList.list.Add(sp); if (eventPosList.parentSoundPoint == null && sp.isParentgameObject) { eventPosList.parentSoundPoint = sp; } else if (eventPosList.parentSoundPoint != null && sp.isParentgameObject) { sp.isParentgameObject = false; } multiPosEventTree.Add(sp.startEvent.Name, eventPosList); } Debug.Log("for Soundpoint : " + soundpointGO.name + " parent soundpoint : " + eventPosList.parentSoundPoint); if (eventPosList.parentSoundPoint != null) { SetMultiPosition(sp); } }
public void UpdateMultiPositionTransform(SoundPoint soundpoint) { UpdateMultiPosition(soundpoint); }