core

package
v0.3.18 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 20, 2024 License: MIT Imports: 14 Imported by: 2

Documentation

Index

Constants

View Source
const (
	MaxAllocBytes = 2 << 28
)

Variables

View Source
var (
	Internal                             InternalImpl
	GDExtensionBindingInitCallbacks      [GDEXTENSION_MAX_INITIALIZATION_LEVEL]GDExtensionBindingCallback
	GDExtensionBindingTerminateCallbacks [GDEXTENSION_MAX_INITIALIZATION_LEVEL]GDExtensionBindingCallback
)

Functions

func Alloc

func Alloc(bytes int) unsafe.Pointer

Alloc returns allocated memory in C memory.

func AllocArrayPtr

func AllocArrayPtr[T any](len int) *T

AllocArrayPtr

func AllocCopy

func AllocCopy(src unsafe.Pointer, bytes int) unsafe.Pointer

AllocCopy returns a duplicated data allocated in C memory.

func AllocCopyVariantPtrSliceAsGDExtensionVariantPtrPtr

func AllocCopyVariantPtrSliceAsGDExtensionVariantPtrPtr(ptrs []*Variant) *GDExtensionConstVariantPtr

AllocCopyVariantPtrSliceAsGDExtensionVariantPtrPtr

func AllocZeros

func AllocZeros(bytes int) unsafe.Pointer

AllocZeros returns zeroed out bytes allocated in C memory.

func ClassDBAddProperty

func ClassDBAddProperty(
	inst GDClass,
	p_property_type GDExtensionVariantType,
	p_property_name string,
	p_setter string,
	p_getter string,
)

ClassDBAddProperty default p_index = -1

func ClassDBAddPropertyGroup

func ClassDBAddPropertyGroup(t GDClass, p_name string, p_prefix string)

func ClassDBAddPropertySubgroup

func ClassDBAddPropertySubgroup(t GDClass, p_name string, p_prefix string)

func ClassDBAddSignal

func ClassDBAddSignal(t GDClass, signalName string, params ...SignalParam)

func ClassDBBindBitfieldFlag

func ClassDBBindBitfieldFlag(t GDClass, p_enum_name, p_constant_name string, p_constant_value int)

ClassDBBindBitfieldFlag binds a bitfield value in godot.

func ClassDBBindConstant

func ClassDBBindConstant(t GDClass, p_constant_name string, p_constant_value int)

ClassDBBindConstant binds a constant in godot.

func ClassDBBindEnumConstant

func ClassDBBindEnumConstant(t GDClass, p_enum_name, p_constant_name string, p_constant_value int)

ClassDBBindEnumConstant binds a enum value in godot.

func ClassDBRegisterClass

func ClassDBRegisterClass[T Object](
	in T,
	propertyList []GDExtensionPropertyInfo,
	validateProperty func(*GDExtensionPropertyInfo),
	bindMethodsFunc func(t GDClass),
)

func CreateGDClassInstance

func CreateGDClassInstance(tn string) GDClass

func Free

func Free(ptr unsafe.Pointer)

Free frees allocated memory.

func GDExtensionBindingDeinitializeLevel

func GDExtensionBindingDeinitializeLevel(userdata unsafe.Pointer, pLevel C.GDExtensionInitializationLevel)

func GDExtensionBindingInitializeLevel

func GDExtensionBindingInitializeLevel(userdata unsafe.Pointer, pLevel C.GDExtensionInitializationLevel)

func GDExtensionTypePtrFromReflectValue

func GDExtensionTypePtrFromReflectValue(value reflect.Value, rOut GDExtensionUninitializedTypePtr)

func GDExtensionVariantPtrFromReflectValue

func GDExtensionVariantPtrFromReflectValue(value reflect.Value, rOut GDExtensionUninitializedVariantPtr)

func GoCallback_ClassCreationInfoCallVirtualWithData

func GoCallback_ClassCreationInfoCallVirtualWithData(pInstance C.GDExtensionClassInstancePtr, pName C.GDExtensionConstStringNamePtr, pUserdata unsafe.Pointer, p_args *C.GDExtensionConstTypePtr, rRet C.GDExtensionTypePtr)

func GoCallback_ClassCreationInfoCreateInstance

func GoCallback_ClassCreationInfoCreateInstance(data unsafe.Pointer) C.GDExtensionObjectPtr

GoCallback_ClassCreationInfoCreateInstance is registered as a callback when a new GDScript instance is created.

func GoCallback_ClassCreationInfoFreeInstance

func GoCallback_ClassCreationInfoFreeInstance(data unsafe.Pointer, ptr C.GDExtensionClassInstancePtr)

func GoCallback_ClassCreationInfoFreePropertyList

func GoCallback_ClassCreationInfoFreePropertyList(pInstance C.GDExtensionClassInstancePtr, pList *C.GDExtensionPropertyInfo)

func GoCallback_ClassCreationInfoGetPropertyList

func GoCallback_ClassCreationInfoGetPropertyList(pInstance C.GDExtensionClassInstancePtr, rCount *C.uint32_t) *C.GDExtensionPropertyInfo

func GoCallback_ClassCreationInfoGetVirtualCallWithData

func GoCallback_ClassCreationInfoGetVirtualCallWithData(pUserdata unsafe.Pointer, pName C.GDExtensionConstStringNamePtr) unsafe.Pointer

func GoCallback_ClassCreationInfoNotification

func GoCallback_ClassCreationInfoNotification(p_instance C.GDExtensionClassInstancePtr, p_what C.int32_t, p_reversed C.GDExtensionBool)

func GoCallback_ClassCreationInfoPropertyCanRevert

func GoCallback_ClassCreationInfoPropertyCanRevert(p_instance C.GDExtensionClassInstancePtr, p_name C.GDExtensionConstStringNamePtr) C.GDExtensionBool

func GoCallback_ClassCreationInfoToString

func GoCallback_ClassCreationInfoToString(
	p_instance C.GDExtensionClassInstancePtr,
	r_is_valid *C.GDExtensionBool,
	p_out C.GDExtensionStringPtr)

func GoCallback_ClassCreationInfoValidateProperty

func GoCallback_ClassCreationInfoValidateProperty(pInstance C.GDExtensionClassInstancePtr, pProperty *C.GDExtensionPropertyInfo) C.GDExtensionBool

func GoCallback_MethodBindMethodCall

func GoCallback_MethodBindMethodCall(
	methodUserData unsafe.Pointer,
	instPtr C.GDExtensionClassInstancePtr,
	argPtrs *C.GDExtensionVariantPtr,
	argumentCount C.GDExtensionInt,
	rReturn C.GDExtensionVariantPtr,
	rError *C.GDExtensionCallError,
)

GoCallback_MethodBindMethodCall is called when GDScript vararg methods calls into Go.

func GoCallback_MethodBindMethodPtrcall

func GoCallback_MethodBindMethodPtrcall(
	methodUserData unsafe.Pointer,
	instPtr C.GDExtensionClassInstancePtr,
	argPtrs *C.GDExtensionConstTypePtr,
	rReturn C.GDExtensionTypePtr,
)

called when godot calls into golang code

func NewGDExtensionClassMethodInfoFromMethodBind

func NewGDExtensionClassMethodInfoFromMethodBind(mb *MethodBindImpl) *GDExtensionClassMethodInfo

func NewSimpleGDExtensionPropertyInfo

func NewSimpleGDExtensionPropertyInfo(
	className string,
	variantType GDExtensionVariantType,
	name string,
) GDExtensionPropertyInfo

func Realloc

func Realloc(ptr unsafe.Pointer, bytes int) unsafe.Pointer

Realloc returns allocated memory in C memory.

func ReflectTypeToGDExtensionVariantType

func ReflectTypeToGDExtensionVariantType(t reflect.Type) GDExtensionVariantType

ReflectTypeToGDExtensionVariantType returns the correct GDExtensionVariantType given a reflect.Type.

Types

type ClassInfo

type ClassInfo struct {
	Name                      string
	NameAsStringNamePtr       GDExtensionConstStringNamePtr
	ParentName                string
	ParentNameAsStringNamePtr GDExtensionConstStringNamePtr
	Level                     GDExtensionInitializationLevel
	MethodMap                 map[string]*MethodBindAndClassMethodInfo
	SignalNameMap             map[string]struct{}
	VirtualMethodMap          map[string]*MethodBindAndClassMethodInfo
	PropertyNameMap           map[string]struct{}
	ConstantNameMap           map[string]struct{}
	ParentPtr                 *ClassInfo
	ClassType                 reflect.Type
	InheritType               reflect.Type
	PropertyList              []GDExtensionPropertyInfo
	ValidateProperty          func(*GDExtensionPropertyInfo)
}

func NewClassInfo

func NewClassInfo(
	name, parentName string,
	level GDExtensionInitializationLevel,
	classType, inheritType reflect.Type,
	parentPtr *ClassInfo,
	propertyList []GDExtensionPropertyInfo,
	validateProperty func(*GDExtensionPropertyInfo),
) *ClassInfo

func (*ClassInfo) Destroy

func (c *ClassInfo) Destroy()

func (*ClassInfo) String

func (c *ClassInfo) String() string

type GodotAllocator

type GodotAllocator struct{}

func (*GodotAllocator) Destroy

func (a *GodotAllocator) Destroy() error

func (*GodotAllocator) Free

func (a *GodotAllocator) Free(pointer unsafe.Pointer)

func (*GodotAllocator) Malloc

func (a *GodotAllocator) Malloc(size int) unsafe.Pointer

type InitObject

type InitObject struct {
	// contains filtered or unexported fields
}

func NewInitObject

func NewInitObject(
	getProcAddress GDExtensionInterfaceGetProcAddress,
	library GDExtensionClassLibraryPtr,
	initialization *GDExtensionInitialization,
) *InitObject

func (InitObject) Init

func (o InitObject) Init() bool

func (InitObject) RegisterCoreInitializer

func (o InitObject) RegisterCoreInitializer(pCoreInit GDExtensionBindingCallback)

func (InitObject) RegisterCoreTerminator

func (o InitObject) RegisterCoreTerminator(pCoreTerminate GDExtensionBindingCallback)

func (InitObject) RegisterEditorInitializer

func (o InitObject) RegisterEditorInitializer(pEditorInit GDExtensionBindingCallback)

func (InitObject) RegisterEditorTerminator

func (o InitObject) RegisterEditorTerminator(pEditorTerminate GDExtensionBindingCallback)

func (InitObject) RegisterSceneInitializer

func (o InitObject) RegisterSceneInitializer(pSceneInit GDExtensionBindingCallback)

func (InitObject) RegisterSceneTerminator

func (o InitObject) RegisterSceneTerminator(pSceneTerminate GDExtensionBindingCallback)

func (InitObject) RegisterServerInitializer

func (o InitObject) RegisterServerInitializer(pServerInit GDExtensionBindingCallback)

func (InitObject) RegisterServerTerminator

func (o InitObject) RegisterServerTerminator(pServerTerminate GDExtensionBindingCallback)

type InternalImpl

type InternalImpl struct {
	GDClassInstances      *SyncMap[GDObjectInstanceID, GDClass]
	GDRegisteredGDClasses *SyncMap[string, *ClassInfo]
}

type MethodBindAndClassMethodInfo

type MethodBindAndClassMethodInfo struct {
	MethodBind      *MethodBindImpl
	ClassMethodInfo *GDExtensionClassMethodInfo
}

type MethodBindImpl

type MethodBindImpl struct {
	ClassName      string
	MethodName     string
	GoMethodName   string
	MethodMetadata MethodMetadata
	PtrcallFunc    reflect.Value
}

func ClassDBBindMethod

func ClassDBBindMethod(inst GDClass, goMethodName string, gdMethodName string, argNames []string, defaultValues []Variant) *MethodBindImpl

func ClassDBBindMethodVarargs

func ClassDBBindMethodVarargs(
	inst GDClass,
	goMethodName string,
	gdMethodName string,
	argNames []string,
	defaultValues []Variant,
) *MethodBindImpl

func ClassDBBindMethodVirtual

func ClassDBBindMethodVirtual(inst GDClass, goMethodName string, gdMethodName string, argNames []string, defaultValues []Variant) *MethodBindImpl

func NewMethodBind

func NewMethodBind(
	className string,
	methodName string,
	goMethodName string,
	methodMetadata MethodMetadata,
	ptrcallFunc reflect.Value,
) *MethodBindImpl

func (*MethodBindImpl) Call

func (b *MethodBindImpl) Call(
	inst GDClass,
	gdArgs []Variant,
) Variant

Call is to be called by GDScript

func (*MethodBindImpl) Ptrcall

func (b *MethodBindImpl) Ptrcall(
	inst GDClass,
	gdArgs []GDExtensionConstTypePtr,
	rReturn GDExtensionUninitializedTypePtr,
)

func (*MethodBindImpl) String

func (b *MethodBindImpl) String() string

type MethodMetadata

type MethodMetadata struct {
	Func                reflect.Value
	GoReturnType        reflect.Type
	GoReturnStyle       ReturnStyle
	GoArgumentTypes     []reflect.Type
	ReturnType          GDExtensionVariantType
	ReturnPropertyInfo  GDExtensionPropertyInfo
	ArgumentsInfo       []GDExtensionPropertyInfo
	ArgumentsMetadata   []GDExtensionClassMethodArgumentMetadata
	ArgumentTypes       []GDExtensionVariantType
	DefaultArguments    []Variant
	DefaultArgumentPtrs []GDExtensionVariantPtr
	IsVariadic          bool
	IsVirtual           bool
	MethodFlags         MethodFlags
}

func NewMethodMetadata

func NewMethodMetadata(
	method reflect.Method,
	className string,
	methodName string,
	argumentNames []string,
	defaultArguments []Variant,
	methodFlags MethodFlags,
) *MethodMetadata

type PropertySetGet

type PropertySetGet struct {
	Index  int
	Setter string
	Getter string

	Type GDExtensionVariantType
	// contains filtered or unexported fields
}

PropertySetGet holds metadata of the getter and setting functions of a Godot property.

type ReturnStyle

type ReturnStyle uint8
const (
	NoneReturnStyle ReturnStyle = iota
	ValueReturnStyle
	ValueAndBoolReturnStyle
)

type SignalParam

type SignalParam struct {
	Type GDExtensionVariantType
	Name string
}

type VarargCallFunc

type VarargCallFunc func(GDClass, ...Variant) Variant

CallFunc is the function signature that can be called from GDScript

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL