26ed99fda6
Build and deploy / Build (push) Has been cancelled
Build and deploy / Update Contributors (push) Has been cancelled
Build and deploy / Deploy (push) Has been cancelled
74 lines
2.3 KiB
Go
74 lines
2.3 KiB
Go
package session
|
|
|
|
import "github.com/df-mc/dragonfly/server/world"
|
|
|
|
// ViewLayer returns the session's ViewLayer. The layer may be used to override how entities are viewed
|
|
// by this session, such as with a different name tag or visibility state.
|
|
func (s *Session) ViewLayer() *world.ViewLayer {
|
|
return s.viewLayer
|
|
}
|
|
|
|
// ViewNameTag overwrites the public name tag of the entity and immediately refreshes it for this session.
|
|
func (s *Session) ViewNameTag(entity world.Entity, nameTag string) {
|
|
if s.viewLayer == nil {
|
|
return
|
|
}
|
|
s.viewLayer.ViewNameTag(entity, nameTag)
|
|
}
|
|
|
|
// ViewPublicNameTag removes the name tag override from the entity and immediately refreshes it for this session.
|
|
func (s *Session) ViewPublicNameTag(entity world.Entity) {
|
|
if s.viewLayer == nil {
|
|
return
|
|
}
|
|
s.viewLayer.ViewPublicNameTag(entity)
|
|
}
|
|
|
|
// ViewScoreTag overwrites the public score tag of the entity and immediately refreshes it for this session.
|
|
func (s *Session) ViewScoreTag(entity world.Entity, scoreTag string) {
|
|
if s.viewLayer == nil {
|
|
return
|
|
}
|
|
s.viewLayer.ViewScoreTag(entity, scoreTag)
|
|
}
|
|
|
|
// ViewPublicScoreTag removes the score tag override from the entity and immediately refreshes it for this session.
|
|
func (s *Session) ViewPublicScoreTag(entity world.Entity) {
|
|
if s.viewLayer == nil {
|
|
return
|
|
}
|
|
s.viewLayer.ViewPublicScoreTag(entity)
|
|
}
|
|
|
|
// ViewVisibility overwrites the public visibility of the entity and immediately refreshes it for this session.
|
|
func (s *Session) ViewVisibility(entity world.Entity, level world.VisibilityLevel) {
|
|
if s.viewLayer == nil {
|
|
return
|
|
}
|
|
s.viewLayer.ViewVisibility(entity, level)
|
|
}
|
|
|
|
// RemoveViewLayer removes all overrides for the entity and immediately refreshes it for this session.
|
|
func (s *Session) RemoveViewLayer(entity world.Entity) {
|
|
if s.viewLayer == nil {
|
|
return
|
|
}
|
|
s.viewLayer.Remove(entity)
|
|
}
|
|
|
|
// ViewLayerEntityChanged refreshes the entity metadata for this session if the entity is currently visible.
|
|
func (s *Session) ViewLayerEntityChanged(e world.Entity) {
|
|
if s.entityHidden(e) || !s.viewingEntity(e.H()) {
|
|
return
|
|
}
|
|
s.ViewEntityState(e)
|
|
}
|
|
|
|
// viewingEntity checks if this session currently has a runtime ID assigned to the entity handle.
|
|
func (s *Session) viewingEntity(handle *world.EntityHandle) bool {
|
|
s.entityMutex.RLock()
|
|
_, ok := s.entityRuntimeIDs[handle]
|
|
s.entityMutex.RUnlock()
|
|
return ok
|
|
}
|