|
|||||||||
| 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 | ||||||||