Skip to main content
source

Types​


actor-link-info: basicsource
Fields​
type: type
process: process
next: entity-actor
prev: entity-actor
Methods​
get-matching-actor-type-mask(obj: actor-link-info, matching-type: type) => intsource

Iterate through all actors that are part of this actor list.
If the nth actor is type matching-type, then set the nth bit of the result.

actor-count-before(obj: actor-link-info) => intsource

Get the number of actors before this actor in the list.

link-to-next-and-prev-actor(obj: actor-link-info) => entity-actorsource

Redo the linking in the constructor by looking up the next/prev actor.

get-next(obj: actor-link-info) => entity-actorsource
get-prev(obj: actor-link-info) => entity-actorsource
get-next-process(obj: actor-link-info) => processsource

Get the process for the next, if it exists.

get-prev-process(obj: actor-link-info) => processsource

Get the process for the prev, if it exists

apply-function-forward(obj: actor-link-info, arg0: function, arg1: object) => intsource

Iterate forward through actors, and apply this function. Starts at (-> obj next)
If the function returns truthy, stop iterating.

apply-function-reverse(obj: actor-link-info, arg0: function, arg1: object) => intsource

Iterate backward through actors and apply function.
If the function returns truth, stop iterating.

apply-all(obj: actor-link-info, arg0: function, arg1: object) => intsource

Apply to all entities. Starts at the back and hits everyone, including this object.

send-to-all(obj: actor-link-info, msg: symbol) => nonesource
send-to-all-after(obj: actor-link-info, message: symbol) => objectsource

Send an event to all processes after this link with no parameters.

send-to-all-before(obj: actor-link-info, message: symbol) => objectsource

Send an event to all processes before this link with no parameters.

send-to-next-and-prev(obj: actor-link-info, msg: symbol) => nonesource

Send an event to both next and prev with no params.

send-to-next(obj: actor-link-info, message: symbol) => nonesource

Send event arg0 to the next actor's process

send-to-prev(obj: actor-link-info, message: symbol) => nonesource

Send event arg1 to the next actor's process.

actor-count(obj: actor-link-info) => intsource

Count the number of actors in the entire list

Functions​


actor-link-dead-hook(arg0: entity-actor, arg1: pointer) => symbolsource

Sets arg1 is the thing is dead. Does not continue the apply if the dead perm is set.

actor-link-subtask-complete-hook(arg0: entity-actor, arg1: pointer) => symbolsource

Sets arg1 if the thing is complete. Does not continue the apply if the complete perm is set.

alt-actor-list-subtask-incomplete-count​

alt-actor-list-subtask-incomplete-count(arg0: process-drawable) => intsource

Get the number of alt-actors which do not have the complete bit set in their perm.

entity-actor-count​

entity-actor-count(res: res-lump, name: symbol) => intsource

Get the number of entities that this res references under the name.
This works on more than just next/prev.

entity-actor-lookup​

entity-actor-lookup(lump: res-lump, name: symbol, idx: int) => entity-actorsource

Given an entity (the res-lump), look up a reference to another entity and return that entity.

ambient​

source

Functions​


ambient-hint-init-by-other​

ambient-hint-init-by-other(arg0: string, arg1: vector, arg2: symbol) => nonesource

ambient-hint-spawn​

ambient-hint-spawn(arg0: string, arg1: vector, arg2: process-tree, arg3: symbol) => objectsource

ambient-type-dark​

ambient-type-dark(arg0: drawable-ambient, arg1: vector) => nonesource

ambient-type-error​

ambient-type-error(arg0: drawable-ambient, arg1: vector) => nonesource

ambient-type-hint​

ambient-type-hint(arg0: drawable-ambient, arg1: vector) => nonesource

ambient-type-light​

ambient-type-light(arg0: drawable-ambient, arg1: vector) => nonesource

ambient-type-music​

ambient-type-music(arg0: drawable-ambient, arg1: vector) => nonesource

ambient-type-ocean-near-off​

ambient-type-ocean-near-off(arg0: drawable-ambient, arg1: vector) => nonesource

ambient-type-ocean-off​

ambient-type-ocean-off(arg0: drawable-ambient, arg1: vector) => nonesource

ambient-type-poi​

ambient-type-poi(arg0: drawable-ambient, arg1: vector) => nonesource

ambient-type-sound​

ambient-type-sound(arg0: drawable-ambient, arg1: vector) => nonesource

ambient-type-sound-loop​

ambient-type-sound-loop(arg0: drawable-ambient, arg1: vector) => nonesource

ambient-type-weather-off​

ambient-type-weather-off(arg0: drawable-ambient, arg1: vector) => nonesource

can-grab-display?​

can-grab-display?(arg0: process) => symbolsource

kill-current-level-hint​

kill-current-level-hint(arg0: pair, arg1: pair, arg2: symbol) => nonesource

level-hint-displayed?​

level-hint-displayed?() => symbolsource

level-hint-init-by-other​

level-hint-init-by-other(arg0: text-id, arg1: string, arg2: entity) => nonesource

level-hint-process-cmd​

level-hint-process-cmd(arg0: pointer, arg1: int, arg2: int) => intsource

level-hint-spawn​

level-hint-spawn(arg0: text-id, arg1: string, arg2: entity, arg3: process-tree, arg4: game-task) => nonesource

level-hint-surpress!​

level-hint-surpress!() => nonesource

level-hint-task-process​

level-hint-task-process(arg0: entity, arg1: uint128, arg2: string) => intsource

Variables​


*execute-ambients*​

*execute-ambients*: symbolsource

*hint-semaphore*​

*hint-semaphore*: pointersource

*level-hint-spool-name*​

*level-hint-spool-name*: stringsource

entity-h​

source

Types​


actor-bank​

actor-bank: basicsource
Fields​
type: type
pause-dist: float
birth-dist: float
birth-max: int32

entity​

entity: res-lumpsource
Fields​
type: type
length: int32
allocated-length: int32
data-base: pointer
data-top: pointer
data-size: int32
extra: entity-links
tag: pointer
trans: vector
aid: uint32
Methods​
birth!(obj: entity) => _type_source

children of entity should override this.

kill!(obj: entity) => _type_source

children of entity should override this.

add-to-level!(obj: entity, lev-group: level-group, lev: level, aid: actor-id) => nonesource

Add us to a level.

remove-from-level!(obj: entity, arg0: level-group) => _type_source

Remove us from the level.

get-level(obj: entity) => levelsource

Get the level that the entity belongs to.

entity-actor​

entity-actor: entitysource
Fields​
type: type
length: int32
allocated-length: int32
data-base: pointer
data-top: pointer
data-size: int32
extra: entity-links
tag: pointer
trans: vector
aid: uint32
nav-mesh: nav-mesh
etype: type
task: game-task
vis-id: uint16
vis-id-signed: int16
quat: quaternion
Methods​
next-actor(obj: entity-actor) => entity-actorsource

Utility function to look up the next actor in the list, assuming we don't have actor-link-info yet.

prev-actor(obj: entity-actor) => entity-actorsource

Look up previous actor in the list

debug-print(obj: entity-actor, mode: symbol, expected-type: type) => nonesource

Debug print info about an entity-actor. This is designed to generate rows for the table
printed by method debug-print-entities of level-group.

set-or-clear-status!(obj: entity-actor, arg0: entity-perm-status, arg1: symbol) => nonesource

entity-ambient​

entity-ambient: entitysource
Fields​
type: type
length: int32
allocated-length: int32
data-base: pointer
data-top: pointer
data-size: int32
extra: entity-links
tag: pointer
trans: vector
aid: uint32
ambient-data: entity-ambient-data
Methods​
draw-debug(obj: entity-ambient) => nonesource
birth-ambient!(obj: entity-ambient) => nonesource

entity-ambient-data​

entity-ambient-data: structuresource
Fields​
user-object: object
function: function
quad: uint128
user-uint64: uint64
user-float: float
user-int32: int32
user-uint32: uint32
user-int16: int16
user-uint16: uint16
user-int8: int8
user-uint8: uint8

entity-ambient-data-array​

entity-ambient-data-array: inline-array-classsource
Fields​
type: type
length: int32
allocated-length: int32
_data: uint8
data: entity-ambient-data

entity-camera​

entity-camera: entitysource
Fields​
type: type
length: int32
allocated-length: int32
data-base: pointer
data-top: pointer
data-size: int32
extra: entity-links
tag: pointer
trans: vector
aid: uint32
connect: connectable

entity-info​

entity-info: basicsource
Fields​
type: type
ptype: type
package: basic
art-group: pair
pool: basic
heap-size: int32
entity-links: structuresource
Fields​
prev-link: entity-links
next-link: entity-links
entity: entity
process: process
level: level
vis-id: int32
trans: vector
perm: entity-perm
status: uint16
aid: actor-id
task: game-task
Methods​
birth?(obj: entity-links, arg0: vector) => symbolsource
entity-links-array: inline-array-classsource
Fields​
type: type
length: int32
allocated-length: int32
_data: uint8
data: entity-links

entity-perm​

entity-perm: structuresource
Fields​
user-object: object
user-uint64: uint64
user-float: float
user-int32: int32
user-uint32: uint32
user-int16: int16
user-uint16: uint16
user-int8: int8
user-uint8: uint8
status: entity-perm-status
dummy: uint8
task: game-task
aid: actor-id
quad: uint128
Methods​
update-perm!(obj: entity-perm, arg0: symbol, arg1: entity-perm-status) => _type_source

entity-perm-array​

entity-perm-array: inline-array-classsource
Fields​
type: type
length: int32
allocated-length: int32
_data: uint8
data: entity-perm

Variables​


*ACTOR-bank*​

*ACTOR-bank*: actor-banksource

*generate-actor-vis-output*​

*generate-actor-vis-output*: symbolsource

*generate-actor-vis-start*​

*generate-actor-vis-start*: symbolsource

*generate-actor-vis*​

*generate-actor-vis*: symbolsource

entity-table​

source

Functions​


entity-info-lookup​

entity-info-lookup(arg0: type) => entity-infosource

Look up the entity-info for a given type.
to speed-up the lookup in the future,
this caches the result in the method table...

Variables​


*entity-info*​

*entity-info*: arraysource

entity​

source

Functions​


entity-birth-no-kill​

entity-birth-no-kill(arg0: entity) => nonesource

entity-by-aid​

entity-by-aid(arg0: uint) => entitysource

Get an entity by actor-id. This looks through the entity-links-array, so it
will require that the level is somewhat loaded.

entity-by-meters​

entity-by-meters(arg0: float, arg1: float, arg2: float) => entity-actorsource

Get an entity by position. The coordinate are rounded to the nearest 1/4096th of a meter.

entity-by-name​

entity-by-name(arg0: string) => entitysource

Get an entity with the given name. Will search in
-actors, for each level
-ambients, for each level
-cameras, for each level.
All the searching is in the bsp.

entity-by-type​

entity-by-type(arg0: type) => entity-actorsource

Get an entity-actor with the exactly the given type.
Searches over all entity-actors in all levels, looking in the bsp

entity-count​

entity-count() => intsource

Count the number of entities. Uses the entity-links

entity-deactivate-handler​

entity-deactivate-handler(arg0: process, arg1: entity-actor) => nonesource

Handle a deactivation in the entity.
The entity directly stores a process so it should remove that after deactivating.

entity-process-count​

entity-process-count(arg0: symbol) => intsource

Count the number of entities with a process. If arg0 is 'vis, will count visible entities.

entity-remap-names​

entity-remap-names(arg0: pair) => nonesource

Rename entities by location. Changes their res.

entity-task-complete-off​

entity-task-complete-off(arg0: entity) => nonesource

entity-task-complete-on​

entity-task-complete-on(arg0: entity) => nonesource

expand-vis-box-with-point​

expand-vis-box-with-point(arg0: entity, arg1: vector) => nonesource

Expand the visibility box of the given entity to include the given point.

init-entity​

init-entity(proc: process, ent: entity-actor) => nonesource

This function starts up an entity!
The process should not be activated yet.

process-by-ename​

process-by-ename(arg0: string) => processsource

Get the process for the entity with the given name. If there is no entity or process, #f.

process-drawable-from-entity!​

process-drawable-from-entity!(arg0: process-drawable, arg1: entity-actor) => nonesource

process-entity-status!​

process-entity-status!(arg0: process, arg1: entity-perm-status, arg2: symbol) => intsource

process-status-bits​

process-status-bits(arg0: process, arg1: symbol) => nonesource

reset-actors​

reset-actors(arg0: symbol) => nonesource

reset-cameras​

reset-cameras() => nonesource

update-actor-vis-box​

update-actor-vis-box(proc: process-drawable, min-pt: vector, max-pt: vector) => nonesource

Update the min-pt and max-pt vector so that the box encloses the bounding box around the bounds sphere
in the process-drawable.

Variables​


*compact-actors*​

*compact-actors*: symbolsource

*spawn-actors*​

*spawn-actors*: symbolsource

*vis-actors*​

*vis-actors*: symbolsource

Types​


res-lump​

res-lump: basicsource
Fields​
type: type
length: int32
allocated-length: int32
data-base: pointer
data-top: pointer
data-size: int32
extra: entity-links
tag: pointer
Methods​
get-property-data(obj: res-lump, name: symbol, mode: symbol, time: float, default: pointer, tag-addr: pointer, buf-addr: pointer) => pointersource

Returns an address to a given property's data at a specific time stamp, or default on error.
name is the name of the property you want, mode is its lookup mode ('interp 'base 'exact), time is the timestamp.
default is the default result returned in the case of an error.
tag-addr is an address to a res-tag. The current base tag is written to this. Ignored if tag-addr is #f
buf-addr is an address to the data buffer used to write interpolated data to. It must have enough space! Only necessary for 'interp mode.

get-property-struct(obj: res-lump, name: symbol, mode: symbol, time: float, default: structure, tag-addr: pointer, buf-addr: pointer) => structuresource

Returns a given struct property's value at a specific time stamp, or default on error.
name is the name of the property you want, mode is its lookup mode ('interp 'base 'exact), time is the timestamp.
default is the default result returned in the case of an error.
tag-addr is an address to a res-tag. The current base tag is written to this. Ignored if tag-addr is #f
buf-addr is an address to the data buffer used to write interpolated data to. It must have enough space! Only necessary for 'interp mode.

get-property-value(obj: res-lump, name: symbol, mode: symbol, time: float, default: uint128, tag-addr: pointer, buf-addr: pointer) => uint128source

Returns a given value property's value at a specific time stamp, or default on error.
name is the name of the property you want, mode is its lookup mode ('interp 'base 'exact), time is the timestamp.
default is the default result returned in the case of an error.
tag-addr is an address to a res-tag. The current base tag is written to this. Ignored if tag-addr is #f
buf-addr is an address to the data buffer used to write interpolated data to. It must have enough space! Only necessary for 'interp mode.

get-property-value-float(obj: res-lump, name: symbol, mode: symbol, time: float, default: float, tag-addr: pointer, buf-addr: pointer) => floatsource

same as get-property-value but float type is checked first?

get-tag-index-data(obj: res-lump, n: int) => pointersource

get the data address of the n'th tag.

get-tag-data(obj: res-lump, tag: res-tag) => pointersource

get the data address of the specified tag.

allocate-data-memory-for-tag!(obj: res-lump, arg0: res-tag) => res-tagsource

Find space for the data described by arg0 in obj.
Returns a tag with data-offset set correctly for this res-lump.
If the lump already contains memory for the given tag, and it is big enough,
it will be reused. Alignment will be at least 8 bytes.
If the input tag has elt-count = 0, it will return a tag for elt-count = 1.

sort!(obj: res-lump) => _type_source

Sort all tags based on name, then key-frame.

add-data!(obj: res-lump, arg0: res-tag, arg1: pointer) => res-lumpsource

Given a tag and a pointer to its data, copy it to this res-lump.
This doesn't seem to do the right thing if the given tag is a non-inline tag
with > 1 element.

add-32bit-data!(obj: res-lump, arg0: res-tag, arg1: object) => res-lumpsource

Add a single 32-bit value using add-data.

lookup-tag-idx(obj: res-lump, name-sym: symbol, mode: symbol, time: float) => res-tag-pairsource

Look up the index of the tag containing with the given name and timestamp.
Correct lookups return a res-tag-pair, which contains one tag index in the lower 32 bits and one in the upper 32 bits.
Depending on the mode, they may be the same, or they may be two tags that you should interpolate
between, if the exact time was not found.

name-sym should be the name of the thing you want.
time is for the timestamp you want.
If mode = 'base, then both the indices are the same and the timestamp is ignored.
If mode = 'interp, then it tries to get closest below/closest above (or both the same, if exact match found)
If mode = 'exact, then it requires an exact timestamp match and both indices are the same.
If things go wrong, returns a negative number

make-property-data(obj: res-lump, time: float, tag-pair: res-tag-pair, buf: pointer) => pointersource

Returns (a pointer to) the value data of a property with the tag-pair.
If tag-pair does not represent an exact point in the timeline, then the data is interpolated based on time
with the result written into buf. buf must have enough space to copy all of the data.
Otherwise, simply returns an address to the resource binary.

get-curve-data!(obj: res-lump, curve-target: curve, points-name: symbol, knots-name: symbol, time: float) => symbolsource

Read curve data and write it to curve-target. Return #t if both control points and knots data was succesfully read, #f otherwise.

res-tag​

res-tag: uint128source

res-tag-pair​

res-tag-pair: uint64source

Variables​


*res-key-string*​

*res-key-string*: stringsource

Variables​


*res-static-buf*​

*res-static-buf*: pointersource