| 
|||||||||
| Atavism Version 2018.1 | AGIS API | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectatavism.server.voice.BasicVoiceGroup
atavism.server.voice.PositionalVoiceGroup
public class PositionalVoiceGroup
This class implements VoiceGroup interface, and is used to implement positional voice groups. In a positional voice group, each listener hears the players who are nearby, and the speaker volume falls off as the distance between speaker and listener increases.
| Nested Class Summary | |
|---|---|
static class | 
PositionalVoiceGroup.CompareLocations
A comparator class that compares locations of speakers to order the closest ones near the front of the list.  | 
| Field Summary | |
|---|---|
protected  float | 
audibleRadius
Initialized by the constructor; the maximum distance in millimeters between players in a positional voice group at which they can hear each other, adjusted by the hystericalMargin.  | 
protected  float | 
hystericalMargin
The hysteresis constant: don't change whether a pair of positonal group members are in-radius of each other if the distance in millimeters is within this distance of the audibleRadius.  | 
| Fields inherited from class atavism.server.voice.BasicVoiceGroup | 
|---|
allowedMembers, association, defaultPriority, groupOid, lock, loggingRecomputeVoices, maxVoices, members, voiceSender | 
| Constructor Summary | |
|---|---|
PositionalVoiceGroup(OID groupOid,
                     java.lang.Object association,
                     VoiceSender voiceSender,
                     int maxVoices,
                     float audibleRadius,
                     float hystericalMargin)
Create a PositionalVoiceGroup  | 
|
| Method Summary | |
|---|---|
 byte | 
addListenerVoice(PositionalGroupMember speaker,
                 PositionalGroupMember listener)
Allocate a listener voice number for the given sound speaker.  | 
 GroupMember | 
addMember(OID memberOid,
          VoiceConnection memberCon,
          int priority,
          boolean allowedSpeaker)
Create a member with the given oid, and associate it with memberCon.  | 
protected  void | 
addSpeakerListenerPair(PositionalGroupMember speaker,
                       PositionalGroupMember listener)
Create a positional speaker/listener pair.  | 
 void | 
addTrackedPerceiver(PositionalGroupMember perceiverMember,
                    OID instanceOid)
Called by the VoicePlugin to indicate that a member's location should be tracked when a member is added to a positional group  | 
protected  void | 
changeListening(GroupMember listener,
                boolean add)
Change a listener from not listening to listening, or vice versa  | 
protected  void | 
changeSpeaking(GroupMember gspeaker,
               boolean add)
Change a speaker from not speaking to speaking, or vice versa  | 
protected  void | 
clearMembersPerceived(PositionalGroupMember perceiverMember)
Clear the set of perceivedOids and membersInRadius for a member, but if the member itself is in the membersInRadius, add it back, because this is how the listenToYourself mechanism works.  | 
 void | 
handlePositionalSpeakerChange(PositionalGroupMember speaker,
                              PositionalGroupMember listener,
                              boolean inRadius)
Handle a positional speaker moving in and out of the audible radius of positional listener.  | 
 boolean | 
isPositional()
Return true if the group is a positional group; that is, if membership in the group is determined by being near the listener, and the priority of speakers is determined by how near any speaker is.  | 
protected  java.lang.String | 
makeOidString(java.util.Collection<OID> oids)
Return a string of comma-separated oids from a collection of oids, used for logging.  | 
protected  java.lang.String | 
makeOidStringFromMembers(java.util.Collection<PositionalGroupMember> members)
Return a string of comma-separated oids from a collection of members, used for logging.  | 
 void | 
maybeChangePerceivedObject(PositionalGroupMember perceiverMember,
                           OID perceivedOid,
                           boolean added)
Called by the VoicePlugin in response to a PerceptionMessage to indicate that another member should be added or removed from the member's perceivedOids.  | 
 java.util.List<GroupMember> | 
membersListeningToSpeaker(PositionalGroupMember speaker)
Return a list of members listening to this member.  | 
 boolean | 
nowListeningTo(PositionalGroupMember speaker,
               PositionalGroupMember listener)
Return true if the listener is now listening to the speaker.  | 
protected  void | 
recomputeListenersInRadius(PositionalGroupMember speaker)
For each listener in radius of the speaker, recompute the voices for the listener.  | 
protected  void | 
recomputeListenerVoices(GroupMember glistener)
Recompute the voice channels for the given listener  | 
protected  void | 
recomputeListenerVoices(PositionalGroupMember listener,
                        java.util.Set<PositionalGroupMember> membersToConsider)
Recompute the voice channels for the given listener, drawing potential speakers from the membersToConsider.  | 
protected  void | 
removeSpeakerListenerPair(PositionalGroupMember speaker,
                          PositionalGroupMember listener)
Remove a positional speaker/listener pair.  | 
 void | 
removeTrackedPerceiver(OID playerOid)
Called by the VoicePlugin to indicate that a member's location should be no longer be tracked when a member is removed from a positional group, or the member changes instances.  | 
 void | 
removeTrackedPerceiver(PositionalGroupMember perceiverMember)
Called by the VoicePlugin to indicate that a member's location should be no longer be tracked when a member is removed from a positional group, or the member changes instances.  | 
 void | 
testProximity(PositionalGroupMember perceiverMember,
              PositionalGroupMember perceivedMember,
              boolean interpolatePerceiver,
              boolean interpolatePerceived)
Test if the perceived object has come in or out of range of the perceiver object; if so, we change the inRangeOids set for the perceiver and the perceived members.  | 
 void | 
unloadInstance(OID instanceOid)
Called by the VoicePlugin when an instance is terminated.  | 
 void | 
updateWorldNode(PositionalGroupMember perceiverMember,
                BasicWorldNode bwnode)
Called by the voice plugin when an UpdateWorldNode message is received for a player in the group.  | 
| Methods inherited from class java.lang.Object | 
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | 
| Field Detail | 
|---|
protected float audibleRadius
protected float hystericalMargin
| Constructor Detail | 
|---|
public PositionalVoiceGroup(OID groupOid,
                            java.lang.Object association,
                            VoiceSender voiceSender,
                            int maxVoices,
                            float audibleRadius,
                            float hystericalMargin)
groupOid - The oid of the group, which is unique across all 
 voice groups.association - An object-valued data member that is unused
 in BasicVoiceGroup, but available to derived classes.voiceSender - The abstraction that allows the voice group to 
 send messages to listeners.maxVoices - The maximum number of voice channels that may 
 ever be simultaneously in use by any clientaudibleRadius - The maximum distance in millimeters between players in
 a positional voice group at which they can hear each other, adjusted by
 the hystericalMargin.hystericalMargin - The distance in millimeters of hysteresis in 
 initiating or terminating a pair of players hearing each other.  The
 hysterical margin ensures that when a player moves back and forth slightly, 
 we don't continuously initiate and terminate the voice channel to other
 players.| Method Detail | 
|---|
public GroupMember addMember(OID memberOid,
                             VoiceConnection memberCon,
                             int priority,
                             boolean allowedSpeaker)
addMember in interface VoiceGroupaddMember in class BasicVoiceGroupmemberOid - The oid of the member.memberCon - The VoiceConnection object connecting the 
 voice server with the clientpriority - The speaking priority that the member should be
 assigned; speakers with higher priorities will be heard over
 speakers with lower priorities.allowedSpeaker - If true, the new member is allowed to 
 speak in the group; if false they will not be heard by members 
 by members of the group.
protected void changeSpeaking(GroupMember gspeaker,
                              boolean add)
changeSpeaking in class BasicVoiceGroupgspeaker - A GroupMember instance whose speaking state is to be changed.add - If true, change the speaker from not speaking to speaking, if 
 false, from speaking to not speaking.
protected void changeListening(GroupMember listener,
                               boolean add)
changeListening in class BasicVoiceGrouplistener - A GroupMember instance whose listening state is to be changed.add - If true, change the listener from not listening to listening, if 
 false, from listening to not listening.
public void updateWorldNode(PositionalGroupMember perceiverMember,
                            BasicWorldNode bwnode)
perceiverMember - The member whose position/direction/orientation should be updated.bwnode - The BasicWorldNode containing the new position/direction/orientation.
public void testProximity(PositionalGroupMember perceiverMember,
                          PositionalGroupMember perceivedMember,
                          boolean interpolatePerceiver,
                          boolean interpolatePerceived)
perceiverMember - The member who received the UpdateWorldNodeMessage or PerceptionMessageperceivedMember - A member in the perceivedOids set of the perceiverMember.interpolatePerceiver - If true, we should interpolate the location of the perceiver;
 if false, we should use the lastLoc of the perceiver.interpolatePerceived - If true, we should interpolate the location of the perceived;
 if false, we should use the lastLoc of the perceived.
public void handlePositionalSpeakerChange(PositionalGroupMember speaker,
                                          PositionalGroupMember listener,
                                          boolean inRadius)
speaker - The speaker member whose position has changed.listener - The listener member who may be inside the
 radius of the speaker.inRadius - True if the speaker and listener are now in
 listening range of each other; false otherwise.public boolean isPositional()
BasicVoiceGroup
isPositional in interface VoiceGroupisPositional in class BasicVoiceGroup
protected void addSpeakerListenerPair(PositionalGroupMember speaker,
                                      PositionalGroupMember listener)
speaker - The speaker group member of the pair.listener - The listener group member of the pair.
protected void removeSpeakerListenerPair(PositionalGroupMember speaker,
                                         PositionalGroupMember listener)
speaker - The speaker group member of the pair.listener - The listener group member of the pair.protected void recomputeListenersInRadius(PositionalGroupMember speaker)
speaker - The speaker group member of the pair.protected void recomputeListenerVoices(GroupMember glistener)
recomputeListenerVoices in class BasicVoiceGroupglistener - The listener group member whose voice channels will be recomputed.
protected void recomputeListenerVoices(PositionalGroupMember listener,
                                       java.util.Set<PositionalGroupMember> membersToConsider)
listener - The listener group member whose voice channels will be recomputed.membersToConsider - The set of speakers within radius from the listener.
public byte addListenerVoice(PositionalGroupMember speaker,
                             PositionalGroupMember listener)
speaker - The speaker group member of the speaker/listener pair.listener - The listener group member of the speaker/listener pair.
public java.util.List<GroupMember> membersListeningToSpeaker(PositionalGroupMember speaker)
speaker - The speaker group member whose listeners should be returned.
public boolean nowListeningTo(PositionalGroupMember speaker,
                              PositionalGroupMember listener)
speaker - The speaker group member of the pair.listener - The listener group member of the pair.
public void unloadInstance(OID instanceOid)
instanceOid - The oid of the instance being unloaded.
public void addTrackedPerceiver(PositionalGroupMember perceiverMember,
                                OID instanceOid)
perceiverMember - The member to be tracked.instanceOid - The oid of the instance to which the member belongs.protected java.lang.String makeOidString(java.util.Collection<OID> oids)
oids - A collection of oids to be formatted.
protected java.lang.String makeOidStringFromMembers(java.util.Collection<PositionalGroupMember> members)
members - A collection of members whose oids are to be formatted.
protected void clearMembersPerceived(PositionalGroupMember perceiverMember)
perceiverMember - The member whose perceivedOids and membersInRadius sets should be cleared.public void removeTrackedPerceiver(OID playerOid)
playerOid - The oid of the member that should no longer be tracked.public void removeTrackedPerceiver(PositionalGroupMember perceiverMember)
perceiverMember - The member that should no longer be tracked.
public void maybeChangePerceivedObject(PositionalGroupMember perceiverMember,
                                       OID perceivedOid,
                                       boolean added)
perceiverMember - The member whose perceivedOids should be adjusted.perceivedOid - The oid of the member that should be added
 or removed from the perceiverMember's perceivedOids.added - If true, the perceivedOid should be added; if false, removed.
  | 
 Copyright © 2018 Dragonsan Studios Sp. z o.o.  | 
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||