Documentation ¶
Overview ¶
Package sendtables contains sendtable specific magic and should really be better documented (TODO).
Index ¶
- type Entity
- func (e *Entity) ApplyUpdate(reader *bit.BitReader)
- func (e *Entity) BindPosition(pos *r3.Vector)
- func (e *Entity) BindProperty(name string, variable interface{}, valueType PropertyValueType)
- func (e *Entity) Destroy()
- func (e *Entity) FindProperty(name string) (prop *Property)
- func (e *Entity) FindPropertyI(name string) IProperty
- func (e *Entity) ID() int
- func (e *Entity) OnCreateFinished(delegate func())
- func (e *Entity) OnDestroy(delegate func())
- func (e *Entity) OnPositionUpdate(h func(pos r3.Vector))
- func (e *Entity) Position() r3.Vector
- func (e *Entity) Properties() (out []Property)
- func (e *Entity) PropertiesI() (out []IProperty)
- func (e *Entity) ServerClass() *ServerClass
- type EntityCreatedHandler
- type IEntity
- type IProperty
- type Property
- type PropertyUpdateHandler
- type PropertyValue
- type PropertyValueType
- type SendTableParser
- type ServerClass
- func (sc *ServerClass) BaseClasses() []*ServerClass
- func (sc *ServerClass) DataTableID() int
- func (sc *ServerClass) DataTableName() string
- func (sc *ServerClass) ID() int
- func (sc *ServerClass) Name() string
- func (sc *ServerClass) OnEntityCreated(handler EntityCreatedHandler)
- func (sc *ServerClass) PropertyEntries() []string
- func (sc *ServerClass) String() string
- type ServerClasses
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Entity ¶
type Entity struct {
// contains filtered or unexported fields
}
Entity stores a entity in the game (e.g. players etc.) with its properties.
func (*Entity) ApplyUpdate ¶
ApplyUpdate reads an update to an Enitiy's properties and triggers registered PropertyUpdateHandlers if values changed.
Intended for internal use only.
func (*Entity) BindPosition ¶ added in v1.0.0
BindPosition binds the entity's position to a pointer variable. The pointer is updated every time a position-relevant property is updated.
See also OnPositionUpdate()
func (*Entity) BindProperty ¶ added in v0.5.4
func (e *Entity) BindProperty(name string, variable interface{}, valueType PropertyValueType)
BindProperty combines FindPropertyI() & Property.Bind() into one. Essentially binds a property's value to a pointer. See the docs of the two individual functions for more info.
func (*Entity) Destroy ¶ added in v0.5.4
func (e *Entity) Destroy()
Destroy triggers all via OnDestroy() registered functions.
Intended for internal use only.
func (*Entity) FindProperty ¶
FindProperty is deprecated, use FindPropertyI() instead which returns an interface.
func (*Entity) FindPropertyI ¶ added in v1.2.0
FindPropertyI finds a property on the Entity by name.
Returns nil if the property wasn't found.
Panics if more than one property with the same name was found.
func (*Entity) OnCreateFinished ¶ added in v0.5.4
func (e *Entity) OnCreateFinished(delegate func())
OnCreateFinished registers a function to be called once the entity is fully created - i.e. once all property updates have been sent out.
func (*Entity) OnDestroy ¶ added in v0.5.4
func (e *Entity) OnDestroy(delegate func())
OnDestroy registers a function to be called on the entity's destruction.
func (*Entity) OnPositionUpdate ¶ added in v1.0.0
OnPositionUpdate registers a handler for the entity's position update. The handler is called with the new position every time a position-relevant property is updated.
See also Position()
func (*Entity) Position ¶ added in v0.5.4
Position returns the entity's position in world coordinates.
func (*Entity) Properties ¶ added in v1.0.0
Properties is deprecated, use PropertiesI() instead which returns a slice of interfaces.
func (*Entity) PropertiesI ¶ added in v1.2.0
PropertiesI returns all properties of the Entity.
func (*Entity) ServerClass ¶
func (e *Entity) ServerClass() *ServerClass
ServerClass returns the entity's server-class.
type EntityCreatedHandler ¶
type EntityCreatedHandler func(*Entity)
EntityCreatedHandler is the interface for handlers that are interested in EntityCreatedEvents.
type IEntity ¶ added in v1.1.0
type IEntity interface { // ServerClass returns the entity's server-class. ServerClass() *ServerClass // ID returns the entity's ID. ID() int // Properties is deprecated, use PropertiesI() instead which returns a slice of interfaces. Properties() (out []Property) // PropertiesI returns all properties of the Entity. PropertiesI() (out []IProperty) // FindProperty is deprecated, use FindPropertyI() instead which returns an interface. FindProperty(name string) (prop *Property) // FindPropertyI finds a property on the Entity by name. // // Returns nil if the property wasn't found. // // Panics if more than one property with the same name was found. FindPropertyI(name string) IProperty // BindProperty combines FindPropertyI() & Property.Bind() into one. // Essentially binds a property's value to a pointer. // See the docs of the two individual functions for more info. BindProperty(name string, variable interface{}, valueType PropertyValueType) // ApplyUpdate reads an update to an Enitiy's properties and // triggers registered PropertyUpdateHandlers if values changed. // // Intended for internal use only. ApplyUpdate(reader *bit.BitReader) // Position returns the entity's position in world coordinates. Position() r3.Vector // OnPositionUpdate registers a handler for the entity's position update. // The handler is called with the new position every time a position-relevant property is updated. // // See also Position() OnPositionUpdate(h func(pos r3.Vector)) // BindPosition binds the entity's position to a pointer variable. // The pointer is updated every time a position-relevant property is updated. // // See also OnPositionUpdate() BindPosition(pos *r3.Vector) // OnDestroy registers a function to be called on the entity's destruction. OnDestroy(delegate func()) // Destroy triggers all via OnDestroy() registered functions. // // Intended for internal use only. Destroy() // OnCreateFinished registers a function to be called once the entity is fully created - // i.e. once all property updates have been sent out. OnCreateFinished(delegate func()) }
IEntity is an auto-generated interface for Entity, intended to be used when mockability is needed. Entity stores a entity in the game (e.g. players etc.) with its properties.
type IProperty ¶ added in v1.2.0
type IProperty interface { // Name returns the property's name. Name() string // Value returns current value of the property. Value() PropertyValue // OnUpdate registers a handler for updates of the Property's value. // // The handler will be called with the current value upon registration. OnUpdate(handler PropertyUpdateHandler) /* Bind binds a property's value to a pointer. Example: var i int Property.Bind(&i, ValTypeInt) This will bind the property's value to i so every time it's updated i is updated as well. The valueType indicates which field of the PropertyValue to use for the binding. */ Bind(variable interface{}, valueType PropertyValueType) }
IProperty is an auto-generated interface for Property, intended to be used when mockability is needed. Property wraps a flattenedPropEntry and allows registering handlers that can be triggered on a update of the property.
type Property ¶ added in v1.0.0
type Property struct {
// contains filtered or unexported fields
}
Property wraps a flattenedPropEntry and allows registering handlers that can be triggered on a update of the property.
func (*Property) Bind ¶ added in v1.0.0
func (pe *Property) Bind(variable interface{}, valueType PropertyValueType)
Bind binds a property's value to a pointer.
Example:
var i int Property.Bind(&i, ValTypeInt)
This will bind the property's value to i so every time it's updated i is updated as well.
The valueType indicates which field of the PropertyValue to use for the binding.
func (*Property) OnUpdate ¶ added in v1.0.0
func (pe *Property) OnUpdate(handler PropertyUpdateHandler)
OnUpdate registers a handler for updates of the Property's value.
The handler will be called with the current value upon registration.
func (*Property) Value ¶ added in v1.0.0
func (pe *Property) Value() PropertyValue
Value returns current value of the property.
type PropertyUpdateHandler ¶
type PropertyUpdateHandler func(PropertyValue)
PropertyUpdateHandler is the interface for handlers that are interested in Property changes.
type PropertyValue ¶ added in v1.0.0
type PropertyValue struct { VectorVal r3.Vector IntVal int ArrayVal []PropertyValue StringVal string FloatVal float32 }
PropertyValue stores parsed & decoded send-table values. For instance player health, location etc.
type PropertyValueType ¶ added in v1.1.0
type PropertyValueType int
PropertyValueType specifies the type of a PropertyValue
const ( ValTypeInt PropertyValueType = iota ValTypeFloat32 ValTypeFloat64 // Like ValTypeFloat32 but with additional cast to float64 ValTypeString ValTypeVector ValTypeArray ValTypeBoolInt // Int that is treated as bool (1 -> true, != 1 -> false) )
Possible types of property values. See Property.Bind()
type SendTableParser ¶ added in v0.4.0
type SendTableParser struct {
// contains filtered or unexported fields
}
SendTableParser provides functions for parsing send-tables.
Intended for internal use only.
func NewSendTableParser ¶ added in v1.0.0
func NewSendTableParser() *SendTableParser
NewSendTableParser returns a new SendTableParser.
Intended for internal use only.
func (*SendTableParser) ParsePacket ¶ added in v0.4.0
func (p *SendTableParser) ParsePacket(r *bit.BitReader)
ParsePacket parses a send-table packet.
Intended for internal use only.
func (*SendTableParser) ReadEnterPVS ¶ added in v1.0.0
func (p *SendTableParser) ReadEnterPVS(r *bit.BitReader, entityID int) *Entity
ReadEnterPVS reads an entity entering the PVS (potentially visible system).
Intended for internal use only.
func (*SendTableParser) ServerClasses ¶ added in v0.4.0
func (p *SendTableParser) ServerClasses() ServerClasses
ServerClasses returns the parsed server-classes.
Intended for internal use only.
func (*SendTableParser) SetInstanceBaseline ¶ added in v1.0.0
func (p *SendTableParser) SetInstanceBaseline(scID int, data []byte)
SetInstanceBaseline sets the raw instance-baseline data for a serverclass by ID.
Intended for internal use only.
type ServerClass ¶
type ServerClass struct {
// contains filtered or unexported fields
}
ServerClass stores meta information about Entity types (e.g. palyers, teams etc.).
func (*ServerClass) BaseClasses ¶
func (sc *ServerClass) BaseClasses() []*ServerClass
BaseClasses returns the base-classes of this server-class.
func (*ServerClass) DataTableID ¶
func (sc *ServerClass) DataTableID() int
DataTableID returns the data-table ID.
func (*ServerClass) DataTableName ¶ added in v1.0.0
func (sc *ServerClass) DataTableName() string
DataTableName returns the data-table name.
func (*ServerClass) ID ¶ added in v1.0.0
func (sc *ServerClass) ID() int
ID returns the server-class's ID.
func (*ServerClass) Name ¶
func (sc *ServerClass) Name() string
Name returns the server-class's name.
func (*ServerClass) OnEntityCreated ¶ added in v1.0.0
func (sc *ServerClass) OnEntityCreated(handler EntityCreatedHandler)
OnEntityCreated registers a function to be called when a new entity is created from this ServerClass.
func (*ServerClass) PropertyEntries ¶ added in v1.0.0
func (sc *ServerClass) PropertyEntries() []string
PropertyEntries returns the names of all property-entries on this server-class.
func (*ServerClass) String ¶
func (sc *ServerClass) String() string
type ServerClasses ¶ added in v1.0.0
type ServerClasses []*ServerClass
ServerClasses is a searchable list of ServerClasses.
func (ServerClasses) FindByName ¶ added in v1.0.0
func (sc ServerClasses) FindByName(name string) *ServerClass
FindByName finds and returns a server-class by it's name.
Returns nil if the server-class wasn't found.
Panics if more than one server-class with the same name was found.