示例#1
0
 void DestroySoundPoint(SoundPoint sp)
 {
     //AkSoundEngine.PostEvent(sp.stopEventName, sp.gameObject);
     sp.stopEvent.Post(sp.gameObject);
     Destroy(sp.gameObject);
     multiPosEventTree.Remove(sp.startEvent.Name);
 }
示例#2
0
 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);
 }
示例#3
0
    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);
    }
示例#4
0
    //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);
    }
示例#5
0
    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));  // 检查玩家的位置
        }
    }
示例#6
0
    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;
        }
    }
示例#7
0
    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);
        }
    }
示例#8
0
 public void UpdateMultiPositionTransform(SoundPoint soundpoint)
 {
     UpdateMultiPosition(soundpoint);
 }