|
|||||||||
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 VoiceGroup
addMember
in class BasicVoiceGroup
memberOid
- 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 BasicVoiceGroup
gspeaker
- 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 BasicVoiceGroup
listener
- 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 VoiceGroup
isPositional
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 BasicVoiceGroup
glistener
- 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 |