 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
- Variables
- func GetKusamaPluginID() umid.UMID
- func GetSystemPluginID() umid.UMID
- func InitializeIDs(systemPluginID, kusamaPluginID umid.UMID) error
- func InitializeNode(node Node)
- type APIRegister
- type Activities
- type Activity
- type Asset2d
- type Asset3d
- type AssetUserIDPair
- type Assets2d
- type Assets2dFilterPredicateFn
- type Assets3d
- type Assets3dFilterPredicateFn
- type AttributeOptionsGetter
- type AttributeType
- type AttributeTypes
- type AttributeTypesFilterPredicateFn
- type AttributeUserRoleGetter
- type Attributes
- type CacheInvalidator
- type Calendar
- type Collector
- type Enabler
- type IDer
- type Initializer
- type LoadSaver
- type Loader
- type Node
- type NodeAttributes
- type Object
- type ObjectAttributes
- type ObjectFilterPredicateFn
- type ObjectType
- type ObjectTypes
- type ObjectTypesFilterPredicateFn
- type ObjectUserAttributes
- type ObjectsCacher
- type ObjectsFilterPredicateFn
- type Plugin
- type Plugins
- type PluginsFilterPredicateFn
- type Processor
- type ReservedAttribute
- type RunStopper
- type Runner
- type Saver
- type SortType
- type Stopper
- type User
- type UserAsset3d
- type UserAttributes
- type UserObjects
- type UserType
- type UserTypes
- type UserTypesFilterPredicateFn
- type UserUserAttributes
- type UsersFilterPredicateFn
- type World
- type WorldSettings
- type Worlds
- type WorldsFilterPredicateFn
Constants ¶
This section is empty.
Variables ¶
      View Source
      
  
    var CustomisableObjectTypeID = umid.MustParse("4ed3a5bb-53f8-4511-941b-079029111111")
    
      View Source
      
  
var ( ReservedAttributes = struct { Node struct { GuestUserType ReservedAttribute NormalUserType ReservedAttribute PortalObjectType ReservedAttribute WorldTemplate ReservedAttribute JWTKey ReservedAttribute } World struct { Meta ReservedAttribute Settings ReservedAttribute TeleportDestination ReservedAttribute } Object struct { Name ReservedAttribute Description ReservedAttribute WorldAvatar ReservedAttribute WebsiteLink ReservedAttribute NewsFeedItems ReservedAttribute PortalDockFace ReservedAttribute Events ReservedAttribute } Kusama struct { User struct { Wallet ReservedAttribute } Challenges ReservedAttribute } User struct { HighFive ReservedAttribute Role ReservedAttribute } }{ Node: struct { GuestUserType ReservedAttribute NormalUserType ReservedAttribute PortalObjectType ReservedAttribute WorldTemplate ReservedAttribute JWTKey ReservedAttribute }{ GuestUserType: ReservedAttribute{ Name: "node_settings", Key: "guest_user_type", }, NormalUserType: ReservedAttribute{ Name: "node_settings", Key: "normal_user_type", }, PortalObjectType: ReservedAttribute{ Name: "node_settings", Key: "docking_hub_object_type", }, WorldTemplate: ReservedAttribute{ Name: "world_template", }, JWTKey: ReservedAttribute{ Name: "jwt_key", Key: "secret", }, }, World: struct { Meta ReservedAttribute Settings ReservedAttribute TeleportDestination ReservedAttribute }{ Meta: ReservedAttribute{ Name: "world_meta", }, Settings: ReservedAttribute{ Name: "world_settings", }, TeleportDestination: ReservedAttribute{ Name: "teleport", Key: "DestinationWorldID", }, }, Object: struct { Name ReservedAttribute Description ReservedAttribute WorldAvatar ReservedAttribute WebsiteLink ReservedAttribute NewsFeedItems ReservedAttribute PortalDockFace ReservedAttribute Events ReservedAttribute }{ Name: ReservedAttribute{ Name: "name", Key: "name", }, Description: ReservedAttribute{ Name: "description", Key: "description", }, WorldAvatar: ReservedAttribute{ Name: "world_avatar", Key: "render_hash", }, WebsiteLink: ReservedAttribute{ Name: "website_link", Key: "website_link", }, NewsFeedItems: ReservedAttribute{ Name: "news_feed", Key: "items", }, PortalDockFace: ReservedAttribute{ Name: "dock_face", Key: "render_hash", }, Events: ReservedAttribute{ Name: "events", Key: "", }, }, Kusama: struct { User struct { Wallet ReservedAttribute } Challenges ReservedAttribute }{ User: struct { Wallet ReservedAttribute }{ Wallet: ReservedAttribute{ Name: "wallet", Key: "wallet", }, }, Challenges: ReservedAttribute{ Name: "challenge_store", Key: "challenges", }, }, User: struct { HighFive ReservedAttribute Role ReservedAttribute }{ HighFive: ReservedAttribute{ Name: "high_five", Key: "counter", }, Role: ReservedAttribute{ Name: "role", Key: "role", }, }, } )
Functions ¶
func GetKusamaPluginID ¶
func GetSystemPluginID ¶
func InitializeIDs ¶
func InitializeNode ¶
func InitializeNode(node Node)
Types ¶
type APIRegister ¶
type Activities ¶ added in v0.4.0
type Activities interface {
	Initializer
	LoadSaver
	Collector
	Processor
	CreateActivity(activityID umid.UMID) (Activity, error)
	GetActivity(activityID umid.UMID) (Activity, bool)
	GetActivities() map[umid.UMID]Activity
	GetPaginatedActivities(page int, pageSize int) ([]Activity, int)
	GetPaginatedActivitiesByObjectID(objectID *umid.UMID, page int, pageSize int) ([]Activity, int)
	GetActivitiesByUserID(userID umid.UMID) map[umid.UMID]Activity
	AddActivity(activity Activity, updateDB bool) error
	AddActivities(activities []Activity, updateDB bool) error
	RemoveActivity(activity Activity, updateDB bool) (bool, error)
	RemoveActivities(activities2d []Activity, updateDB bool) (bool, error)
}
    type Activity ¶ added in v0.4.0
type Activity interface {
	IDer
	Initializer
	GetActivities() Activities
	GetData() *entry.ActivityData
	SetData(modifyFn modify.Fn[entry.ActivityData], updateDB bool) (*entry.ActivityData, error)
	GetType() *entry.ActivityType
	SetType(activityType *entry.ActivityType, updateDB bool) error
	GetObjectID() umid.UMID
	SetObjectID(objectID umid.UMID, updateDB bool) error
	GetUserID() umid.UMID
	SetUserID(userID umid.UMID, updateDB bool) error
	GetEntry() *entry.Activity
	LoadFromEntry(entry *entry.Activity) error
	GetCreatedAt() time.Time
	SetCreatedAt(createdAt time.Time, updateDB bool) error
}
    type Asset2d ¶
type Asset2d interface {
	IDer
	GetMeta() entry.Asset2dMeta
	SetMeta(meta entry.Asset2dMeta, updateDB bool) error
	GetOptions() *entry.Asset2dOptions
	SetOptions(modifyFn modify.Fn[entry.Asset2dOptions], updateDB bool) (*entry.Asset2dOptions, error)
	GetEntry() *entry.Asset2d
	LoadFromEntry(entry *entry.Asset2d) error
}
    type Asset3d ¶
type Asset3d interface {
	IDer
	GetMeta() *entry.Asset3dMeta
	SetMeta(meta *entry.Asset3dMeta, updateDB bool) error
	GetOptions() *entry.Asset3dOptions
	SetOptions(modifyFn modify.Fn[entry.Asset3dOptions], updateDB bool) (*entry.Asset3dOptions, error)
	GetEntry() *entry.Asset3d
	LoadFromEntry(entry *entry.Asset3d) error
}
    type AssetUserIDPair ¶ added in v0.4.0
type Assets2d ¶
type Assets2d interface {
	LoadSaver
	APIRegister
	CreateAsset2d(asset2dID umid.UMID) (Asset2d, error)
	GetAsset2d(asset2dID umid.UMID) (Asset2d, bool)
	GetAssets2d() map[umid.UMID]Asset2d
	FilterAssets2d(predicateFn Assets2dFilterPredicateFn) map[umid.UMID]Asset2d
	AddAsset2d(asset2d Asset2d, updateDB bool) error
	AddAssets2d(assets2d []Asset2d, updateDB bool) error
	RemoveAsset2d(asset2d Asset2d, updateDB bool) (bool, error)
	RemoveAssets2d(assets2d []Asset2d, updateDB bool) (bool, error)
}
    type Assets3d ¶
type Assets3d interface {
	LoadSaver
	APIRegister
	// Create new instance if doesn't exist, returns the existing/created asset3d and bool isCreated
	CreateAsset3d(assetID umid.UMID) (Asset3d, error, bool)
	CreateUserAsset3d(assetID umid.UMID, userID umid.UMID, isPrivate bool) (UserAsset3d, error)
	GetAsset3d(assetID umid.UMID) (Asset3d, bool)
	GetUserAsset3d(assetID umid.UMID, userID umid.UMID) (UserAsset3d, bool)
	GetAssets3d() map[umid.UMID]Asset3d
	GetUserAssets3d() map[AssetUserIDPair]UserAsset3d
	FilterUserAssets3d(predicateFn Assets3dFilterPredicateFn) map[AssetUserIDPair]UserAsset3d
	AddAsset3d(asset3d Asset3d, updateDB bool) error
	AddUserAsset3d(asset3d UserAsset3d, updateDB bool) error
	RemoveUserAsset3dByID(assets3dID AssetUserIDPair, updateDB bool) (bool, error)
}
    type Assets3dFilterPredicateFn ¶
type Assets3dFilterPredicateFn func(asset3dUserID AssetUserIDPair, asset3d UserAsset3d) bool
type AttributeOptionsGetter ¶ added in v0.4.0
type AttributeOptionsGetter[ID comparable] interface { // Get the options set directly on this object. GetOptions(attributeID ID) (*entry.AttributeOptions, bool) // Get the merged options of this object and its parent type. GetEffectiveOptions(attributeID ID) (*entry.AttributeOptions, bool) }
type AttributeType ¶
type AttributeType interface {
	GetID() entry.AttributeTypeID
	GetName() string
	GetPluginID() umid.UMID
	GetOptions() *entry.AttributeOptions
	SetOptions(modifyFn modify.Fn[entry.AttributeOptions], updateDB bool) (*entry.AttributeOptions, error)
	GetDescription() *string
	SetDescription(description *string, updateDB bool) error
	GetEntry() *entry.AttributeType
	LoadFromEntry(entry *entry.AttributeType) error
}
    type AttributeTypes ¶
type AttributeTypes interface {
	LoadSaver
	APIRegister
	CreateAttributeType(attributeTypeID entry.AttributeTypeID) (AttributeType, error)
	GetAttributeType(attributeTypeID entry.AttributeTypeID) (AttributeType, bool)
	GetAttributeTypes() map[entry.AttributeTypeID]AttributeType
	FilterAttributeTypes(predicateFn AttributeTypesFilterPredicateFn) map[entry.AttributeTypeID]AttributeType
	AddAttributeType(attributeType AttributeType, updateDB bool) error
	AddAttributeTypes(attributeTypes []AttributeType, updateDB bool) error
	RemoveAttributeType(attributeType AttributeType, updateDB bool) (bool, error)
	RemoveAttributeTypes(attributeTypes []AttributeType, updateDB bool) (bool, error)
}
    type AttributeTypesFilterPredicateFn ¶
type AttributeTypesFilterPredicateFn func(attributeTypeID entry.AttributeTypeID, attributeType AttributeType) bool
type AttributeUserRoleGetter ¶ added in v0.4.0
type AttributeUserRoleGetter[T comparable] interface { // Retrieve roles a user has on an plugin attribute. GetUserRoles( ctx context.Context, attrType entry.AttributeType, targetID T, userID umid.UMID, ) ([]entry.PermissionsRoleType, error) }
type Attributes ¶
type Attributes[ID comparable] interface { AttributeUserRoleGetter[ID] AttributeOptionsGetter[ID] GetPayload(attributeID ID) (*entry.AttributePayload, bool) GetValue(attributeID ID) (*entry.AttributeValue, bool) Upsert(attributeID ID, modifyFn modify.Fn[entry.AttributePayload], updateDB bool) (*entry.AttributePayload, error) UpdateValue(attributeID ID, modifyFn modify.Fn[entry.AttributeValue], updateDB bool) (*entry.AttributeValue, error) UpdateOptions(attributeID ID, modifyFn modify.Fn[entry.AttributeOptions], updateDB bool) ( *entry.AttributeOptions, error, ) Remove(attributeID ID, updateDB bool) (bool, error) }
type CacheInvalidator ¶ added in v0.4.0
type CacheInvalidator interface {
	InvalidateCache()
}
    type Calendar ¶
type Calendar interface {
	RunStopper
	OnAttributeUpsert(attributeID entry.AttributeID, value any)
	OnAttributeRemove(attributeID entry.AttributeID)
}
    type Initializer ¶
type Initializer interface {
	Initialize(ctx types.NodeContext) error
}
    type Node ¶
type Node interface {
	Object
	Loader
	APIRegister
	ObjectsCacher
	GetConfig() *config.Config
	GetLogger() *zap.SugaredLogger
	ToObject() Object
	GetWorlds() Worlds
	GetActivities() Activities
	GetAssets2d() Assets2d
	GetAssets3d() Assets3d
	GetObjectTypes() ObjectTypes
	GetUserTypes() UserTypes
	GetAttributeTypes() AttributeTypes
	GetPlugins() Plugins
	GetUserObjects() UserObjects
	GetNodeAttributes() NodeAttributes
	GetUserAttributes() UserAttributes
	GetUserUserAttributes() UserUserAttributes
	GetObjectUserAttributes() ObjectUserAttributes
	CreateUsers(
		ctx context.Context, users ...*entry.User,
	) error // TODO: refactor, place Users next to Nodes in a universe
	AddAPIRegister(register APIRegister)
	WriteInfluxPoint(point *influxWrite.Point) error
	LoadUser(userID umid.UMID) (User, error)
}
    type NodeAttributes ¶
type NodeAttributes interface {
	LoadSaver
	Attributes[entry.AttributeID]
	GetAll() map[entry.AttributeID]*entry.AttributePayload
	Len() int
}
    type Object ¶ added in v0.4.0
type Object interface {
	IDer
	Enabler
	Initializer
	RunStopper
	Saver
	CacheInvalidator
	GetWorld() World
	GetName() string
	SetName(name string, updateDB bool) error
	GetDescription() string
	GetParent() Object
	SetParent(parent Object, updateDB bool) error
	GetOwnerID() umid.UMID
	SetOwnerID(ownerID umid.UMID, updateDB bool) error
	GetTransform() *cmath.Transform
	GetActualTransform() *cmath.Transform
	SetTransform(position *cmath.Transform, updateDB bool) error
	SetActualTransform(pos cmath.Transform, theta float64) error
	GetOptions() *entry.ObjectOptions
	GetEffectiveOptions() *entry.ObjectOptions
	SetOptions(modifyFn modify.Fn[entry.ObjectOptions], updateDB bool) (*entry.ObjectOptions, error)
	GetAsset2D() Asset2d
	SetAsset2D(asset2d Asset2d, updateDB bool) error
	GetAsset3D() Asset3d
	SetAsset3D(asset3d Asset3d, updateDB bool) error
	GetObjectType() ObjectType
	SetObjectType(objectType ObjectType, updateDB bool) error
	GetObjectAttributes() ObjectAttributes
	GetEntry() *entry.Object
	LoadFromEntry(entry *entry.Object, recursive bool) error
	Update(recursive bool) error
	UpdateChildrenPosition(recursive bool) error
	CreateObject(objectID umid.UMID) (Object, error)
	GetObject(objectID umid.UMID, recursive bool) (Object, bool)
	GetObjects(recursive bool) map[umid.UMID]Object
	FilterObjects(predicateFn ObjectsFilterPredicateFn, recursive bool) map[umid.UMID]Object
	AddObject(object Object, updateDB bool) error
	AddObjects(objects []Object, updateDB bool) error
	RemoveObject(object Object, recursive, updateDB bool) (bool, error)
	RemoveObjects(objects []Object, recursive, updateDB bool) (bool, error)
	GetUser(userID umid.UMID, recursive bool) (User, bool)
	GetUsers(recursive bool) map[umid.UMID]User
	AddUser(user User, updateDB bool) error
	RemoveUser(user User, updateDB bool) (bool, error)
	Send(msg *websocket.PreparedMessage, recursive bool) error
	SendSpawnMessage(sendFn func(msg *websocket.PreparedMessage) error, recursive bool)
	SendAttributes(sendFn func(*websocket.PreparedMessage), recursive bool)
	SendAllAutoAttributes(sendFn func(msg *websocket.PreparedMessage) error, recursive bool)
	LockUIObject(user User, state uint32) bool
	GetCreatedAt() time.Time
	GetUpdatedAt() time.Time
}
    type ObjectAttributes ¶ added in v0.4.0
type ObjectAttributes interface {
	LoadSaver
	Attributes[entry.AttributeID]
	GetAll() map[entry.AttributeID]*entry.AttributePayload
	Len() int
}
    type ObjectFilterPredicateFn ¶ added in v0.4.0
type ObjectType ¶ added in v0.4.0
type ObjectType interface {
	IDer
	GetName() string
	SetName(name string, updateDB bool) error
	GetCategoryName() string
	SetCategoryName(categoryName string, updateDB bool) error
	GetDescription() *string
	SetDescription(description *string, updateDB bool) error
	GetOptions() *entry.ObjectOptions
	SetOptions(modifyFn modify.Fn[entry.ObjectOptions], updateDB bool) (*entry.ObjectOptions, error)
	GetAsset2d() Asset2d
	SetAsset2d(asset2d Asset2d, updateDB bool) error
	GetAsset3d() Asset3d
	SetAsset3d(asset3d Asset3d, updateDB bool) error
	GetEntry() *entry.ObjectType
	LoadFromEntry(entry *entry.ObjectType) error
}
    type ObjectTypes ¶ added in v0.4.0
type ObjectTypes interface {
	LoadSaver
	APIRegister
	CreateObjectType(objectTypeID umid.UMID) (ObjectType, error)
	GetObjectType(objectTypeID umid.UMID) (ObjectType, bool)
	GetObjectTypes() map[umid.UMID]ObjectType
	FilterObjectTypes(predicateFn ObjectTypesFilterPredicateFn) map[umid.UMID]ObjectType
	AddObjectType(objectType ObjectType, updateDB bool) error
	AddObjectTypes(objectTypes []ObjectType, updateDB bool) error
	RemoveObjectType(objectType ObjectType, updateDB bool) (bool, error)
	RemoveObjectTypes(objectTypes []ObjectType, updateDB bool) (bool, error)
}
    type ObjectTypesFilterPredicateFn ¶ added in v0.4.0
type ObjectTypesFilterPredicateFn func(objectTypeID umid.UMID, objectType ObjectType) bool
type ObjectUserAttributes ¶ added in v0.4.0
type ObjectUserAttributes interface {
	Attributes[entry.ObjectUserAttributeID]
}
    ObjectUserAttributes ignores "updateDB" flag
type ObjectsCacher ¶ added in v0.4.0
type ObjectsCacher interface {
	GetAllObjects() map[umid.UMID]Object
	GetObjectFromAllObjects(objectID umid.UMID) (Object, bool)
	FilterAllObjects(predicateFn ObjectsFilterPredicateFn) map[umid.UMID]Object
	AddObjectToAllObjects(object Object) error
	RemoveObjectFromAllObjects(object Object) (bool, error)
}
    type ObjectsFilterPredicateFn ¶ added in v0.4.0
type Plugin ¶
type Plugin interface {
	IDer
	GetMeta() entry.PluginMeta
	SetMeta(meta entry.PluginMeta, updateDB bool) error
	GetOptions() *entry.PluginOptions
	SetOptions(modifyFn modify.Fn[entry.PluginOptions], updateDB bool) (*entry.PluginOptions, error)
	GetEntry() *entry.Plugin
	LoadFromEntry(entry *entry.Plugin) error
}
    type Plugins ¶
type Plugins interface {
	LoadSaver
	APIRegister
	CreatePlugin(pluginID umid.UMID) (Plugin, error)
	GetPlugin(pluginID umid.UMID) (Plugin, bool)
	GetPlugins() map[umid.UMID]Plugin
	FilterPlugins(predicateFn PluginsFilterPredicateFn) map[umid.UMID]Plugin
	AddPlugin(plugin Plugin, updateDB bool) error
	AddPlugins(plugins []Plugin, updateDB bool) error
	RemovePlugin(plugin Plugin, updateDB bool) (bool, error)
	RemovePlugins(plugins []Plugin, updateDB bool) (bool, error)
}
    type ReservedAttribute ¶
type RunStopper ¶
type User ¶
type User interface {
	IDer
	RunStopper
	GetWorld() World
	SetWorld(world World)
	GetObject() Object
	SetObject(object Object)
	GetUserType() UserType
	SetUserType(userType UserType, updateDB bool) error
	GetProfile() *entry.UserProfile
	GetTransform() *cmath.TransformNoScale
	SetTransform(cmath.TransformNoScale)
	GetPosition() cmath.Vec3
	GetRotation() cmath.Vec3
	SetPosition(position cmath.Vec3)
	//GetPosBuffer() []byte
	GetLastPosTime() int64
	GetLastSendPosTime() int64
	SetLastSendPosTime(int64)
	Update() error
	ReleaseSendBuffer()
	LockSendBuffer()
	IsTemporaryUser() (bool, error)
	SetOfflineTimer() (bool, error)
	DeleteTemporaryUser(uid umid.UMID) error
	GetSessionID() umid.UMID
	SetConnection(sessionID umid.UMID, socketConnection *websocket.Conn) error
	Send(message *websocket.PreparedMessage) error
	SendDirectly(message *websocket.PreparedMessage) error
	AddInfluxTags(prefix string, point *influxWrite.Point) *influxWrite.Point
	GetUserDefinition() *posbus.UserData
}
    type UserAsset3d ¶ added in v0.4.0
type UserAsset3d interface {
	GetAssetUserIDPair() AssetUserIDPair
	GetAssetID() umid.UMID
	GetUserID() umid.UMID
	GetAsset3d() *Asset3d
	GetMeta() *entry.Asset3dMeta
	SetMeta(meta *entry.Asset3dMeta, updateDB bool) error
	IsPrivate() bool
	SetIsPrivate(isPrivate bool, updateDB bool) error
	GetEntry() *entry.UserAsset3d
	LoadFromEntry(entry *entry.UserAsset3d) error
}
    type UserAttributes ¶
type UserAttributes interface {
	Attributes[entry.UserAttributeID]
}
    UserAttributes ignores "updateDB" flag
type UserObjects ¶ added in v0.4.0
type UserObjects interface {
	GetValue(userObjectID entry.UserObjectID) (*entry.UserObjectValue, bool)
	GetUserObjectsByObjectID(objectID umid.UMID) ([]*entry.UserObject, error)
	GetObjectIndirectAdmins(objectID umid.UMID) ([]*umid.UMID, bool)
	CheckIsIndirectAdmin(userObjectID entry.UserObjectID) (bool, error)
	Upsert(
		userObjectID entry.UserObjectID, modifyFn modify.Fn[entry.UserObjectValue], updateDB bool,
	) (*entry.UserObjectValue, error)
	UpdateValue(
		userObjectID entry.UserObjectID, modifyFn modify.Fn[entry.UserObjectValue], updateDB bool,
	) (*entry.UserObjectValue, error)
	Remove(userObjectID entry.UserObjectID, updateDB bool) (bool, error)
	RemoveMany(userObjectIDs []entry.UserObjectID, updateDB bool) (bool, error)
}
    UserObjects ignores "updateDB" flag
type UserType ¶
type UserType interface {
	IDer
	GetName() string
	SetName(name string, updateDB bool) error
	GetDescription() string
	SetDescription(description string, updateDB bool) error
	GetOptions() *entry.UserOptions
	SetOptions(modifyFn modify.Fn[entry.UserOptions], updateDB bool) (*entry.UserOptions, error)
	GetEntry() *entry.UserType
	LoadFromEntry(entry *entry.UserType) error
}
    type UserTypes ¶
type UserTypes interface {
	LoadSaver
	APIRegister
	CreateUserType(userTypeID umid.UMID) (UserType, error)
	GetUserType(userTypeID umid.UMID) (UserType, bool)
	GetUserTypes() map[umid.UMID]UserType
	FilterUserTypes(predicateFn UserTypesFilterPredicateFn) map[umid.UMID]UserType
	AddUserType(userType UserType, updateDB bool) error
	AddUserTypes(userTypes []UserType, updateDB bool) error
	RemoveUserType(userType UserType, updateDB bool) (bool, error)
	RemoveUserTypes(userTypes []UserType, updateDB bool) (bool, error)
}
    type UserUserAttributes ¶
type UserUserAttributes interface {
	Attributes[entry.UserUserAttributeID]
}
    UserUserAttributes ignores "updateDB" flag
type UsersFilterPredicateFn ¶ added in v0.4.0
type World ¶
type World interface {
	Object
	Loader
	ObjectsCacher
	ToObject() Object
	GetSettings() *WorldSettings
	GetTotalStake() uint8
	GetWorldAvatar() string
	GetWebsiteLink() string
	GetCalendar() Calendar
	WriteInfluxPoint(point *influxWrite.Point) error
	TempSetSkybox(msg *websocket.PreparedMessage)
	TempGetSkybox() *websocket.PreparedMessage
}
    type WorldSettings ¶
type WorldSettings struct {
	Kind        string               `db:"kind" json:"kind"`
	Objects     map[string]umid.UMID `db:"objects" json:"objects"`
	Attributes  map[string]umid.UMID `db:"attributes" json:"attributes"`
	ObjectTypes map[string]umid.UMID `db:"object_types" json:"object_types"`
	Effects     map[string]umid.UMID `db:"effects" json:"effects"`
}
    type Worlds ¶
type Worlds interface {
	RunStopper
	LoadSaver
	APIRegister
	CreateWorld(worldID umid.UMID) (World, error)
	GetWorld(worldID umid.UMID) (World, bool)
	GetWorlds() map[umid.UMID]World
	FilterWorlds(predicateFn WorldsFilterPredicateFn) map[umid.UMID]World
	AddWorld(world World, updateDB bool) error
	AddWorlds(worlds []World, updateDB bool) error
	RemoveWorld(world World, updateDB bool) (bool, error)
	RemoveWorlds(worlds []World, updateDB bool) (bool, error)
}
    
       Directories
      ¶
      Directories
      ¶
    
    | Path | Synopsis | 
|---|---|
| Package attributes provides functionality for handling/using the plugin attributes system. | Package attributes provides functionality for handling/using the plugin attributes system. | 
| 
          
            api/dto
            
            
          
           TODO: deal with this mess | TODO: deal with this mess | 
| Text chat functionality backed by getstream.io chat service. | Text chat functionality backed by getstream.io chat service. | 
 Click to show internal directories. 
   Click to hide internal directories.