Click or drag to resize

Light Class

The light source in the scene.
Inheritance Hierarchy
SystemObject
  NeoAxisComponent
    NeoAxisObjectInSpace
      NeoAxisLight

Namespace: NeoAxis
Assembly: NeoAxis.Core (in NeoAxis.Core.dll) Version: 2026.1.1.0 (2026.1.1.0)
Syntax
C#
public class Light : ObjectInSpace

The Light type exposes the following members.

Constructors
 NameDescription
Public methodLightInitializes a new instance of the Light class
Top
Properties
 NameDescription
Public propertyAnyData The user data of the component.
(Inherited from Component)
Public propertyAttenuationFar The maximum distance of the source light.
Public propertyAttenuationNear The minimum distance of the source light.
Public propertyAttenuationPower The multiplier of light attenuation power.
Public propertyBaseType Gets the base type of the object.
(Inherited from Component)
Public propertyBrightness The light's brightness.
Public propertyCanBeSelected Whether the object is selectable in the scene view.
(Inherited from ObjectInSpace)
Public propertyCanBeSelectedInHierarchy
(Inherited from ObjectInSpace)
Public propertyCloneSupport Whether the object supports cloning.
(Inherited from Component)
Public propertyColor The color of emitted light.
Public propertyComponents Gets the collection of the child components.
(Inherited from Component)
Public propertyCreatedByBaseType Whether the object is created using a base type.
(Inherited from Component)
Public propertyDisplayInEditor Whether to show the object in the editor.
(Inherited from Component)
Public propertyDisposed Whether the object is disposed.
(Inherited from Component)
Public propertyEditorDocumentConfiguration Gets or sets the configuration data of the object's settings in the editor.
(Inherited from Component)
Public propertyEditorReadOnly Whether the object is read only in the editor.
(Inherited from Component)
Public propertyEditorReadOnlyInHierarchy Whether the object is read-only in the editor with respect to parent objects.
(Inherited from Component)
Public propertyEnabled Whether the component is enabled. Any functionality of component is not works when it disabled.
(Inherited from Component)
Public propertyEnabledInHierarchy Determines whether the object is attached to a hierarchy of the components and enabled. The object will be enabled only when all parents are enabled, and the property Enabled is enabled.
(Inherited from Component)
Public propertyEnabledInHierarchyAndIsInstance Determines when the object is attached to a hierarchy of the components, is enabled and the object if not part of a resource (it is usual object instance). The object will be enabled only when all parents are enabled, and the property Enabled is enabled.
(Inherited from Component)
Public propertyEnabledSelectionByCursor
(Inherited from ObjectInSpace)
Public propertyFlareBlending The method of drawing the image of the flare on the screen.
Public propertyFlareColor The color of the flare.
Public propertyFlareDepthCheckOffset 
Public propertyFlareImage The image of the flare.
Public propertyFlarePosition The position of the flare.
Public propertyFlareSize The size of the flare. It is indicated as a ratio of screen size vertically.
Public propertyFlareSizeFadeByDistance 
Public propertyHierarchyController Gets the object hierarchy control controller.
(Inherited from Component)
Public propertyIsResource
(Inherited from Component)
Public propertyMask The light mask used by the light source.
Public propertyMaskTransform The position, rotation and scale of the light mask.
Public propertyName The name of the component.
(Inherited from Component)
Public propertyNetworkID
(Inherited from Component)
Public propertyNetworkIsClient
(Inherited from Component)
Public propertyNetworkIsServer Whether to work in network server mode. It is false until the scene is not loaded.
(Inherited from Component)
Public propertyNetworkIsSingle
(Inherited from Component)
Public propertyNetworkIsSingleOrClient
(Inherited from Component)
Public propertyNetworkMode Whether to enable synchronization of the component between server and clients.
(Inherited from Component)
Public propertyNetworkModeUsers
(Inherited from Component)
Public propertyParent Gets the parent object.
(Inherited from Component)
Public propertyParentRoot Gets the parent root object.
(Inherited from Component)
Public propertyParentScene
(Inherited from ObjectInSpace)
Public propertyRemainingLifetime The lifetime of the component during the simulation.
(Inherited from ObjectInSpace)
Public propertyRemoveFromParentQueued Whether the object is placed in the detach queue from the parent.
(Inherited from Component)
Public propertySaveSupport Whether the object supports saving to a file.
(Inherited from Component)
Public propertyScreenLabel The displaying mode of an on-screen label of the component in the scene editor.
(Inherited from Component)
Public propertyShadowBias Shadow bias moves the shadow away from the light source. Adjusting it may help to fix shadow artifacts.
Public propertyShadowContact Whether to detail the shadows by means the screen-space contact shadows technique. The contact shadows works only for deferred shading.
Public propertyShadowContactLength The maximal length of the contact shadows.
Public propertyShadowIntensity The intensity of the shadows.
Public propertyShadowLODWorst Whether to use worst lod, usually voxel, for the shadow generation step. Use for not important light sources.
Public propertyShadowNearClipDistance The precision and minimal distance from the light source to generate shadows.
Public propertyShadowNormalBias Normal bias moves the shadow perpendicular to the shadowed surface. Adjusting it may help to fix shadow artifacts.
Public propertyShadows If active, the light will cast shadows on the surfaces.
Public propertyShadowSoftness The softness multiplier of shadows.
Public propertyShadowStatic Whether to enable static shadow optimization for this light. Only for Point and Spot lights.
Public propertyShadowTextureSize A method to get the size of a shadow map.
Public propertyShadowTextureSizeValue The size of a shadow texture.
Public propertySpaceBounds
(Inherited from ObjectInSpace)
Public propertySpaceBoundsOctreeOverride
(Inherited from ObjectInSpace)
Public propertySpaceBoundsOverride
(Inherited from ObjectInSpace)
Public propertySpotlightClipPlanes Returns 10 planes. Order: backward plane (0), far distance plane (1) and 8 side planes (2-9).
Public propertySpotlightFalloff The spot light fall-off.
Public propertySpotlightInnerAngle The inner angle of the spot light.
Public propertySpotlightOuterAngle The outer angle of the spot light.
Public propertyStartDistance The distance of lighting effect from the light position.
Public propertyTransform The position, rotation and scale of the object.
(Inherited from ObjectInSpace)
Public propertyTransformV Simplier form of Transform.Value.
(Inherited from ObjectInSpace)
Public propertyType The type of light source.
Public propertyTypeSettingsPrivateObjects Object settings when used as a type.
(Inherited from Component)
Public propertyVisible Whether the object is visible in the scene.
(Inherited from ObjectInSpace)
Public propertyVisibleInHierarchy
(Inherited from ObjectInSpace)
Top
Methods
 NameDescription
Public methodAddComponent Adds a component as a child.
(Inherited from Component)
Public methodBeginNetworkMessage(ServerNetworkService_ComponentsClientItem, String)
(Inherited from Component)
Public methodBeginNetworkMessage(IListServerNetworkService_ComponentsClientItem, String)
(Inherited from Component)
Public methodBeginNetworkMessage(IListServerNetworkService_UsersUserInfo, String)
(Inherited from Component)
Public methodBeginNetworkMessage(ServerNetworkService_UsersUserInfo, String)
(Inherited from Component)
Public methodBeginNetworkMessageToEveryone
(Inherited from Component)
Public methodBeginNetworkMessageToServer
(Inherited from Component)
Public methodCheckSelectionByRay
(Inherited from ObjectInSpace)
Public methodClone Creates a copy of the object.
(Inherited from Component)
Public methodCreateComponent(Type, Int32, Boolean, Boolean, NetworkModeEnum) Creates a child component.
(Inherited from Component)
Public methodCreateComponent(MetadataTypeInfo, Int32, Boolean, Boolean, NetworkModeEnum) Creates a child component.
(Inherited from Component)
Public methodCreateComponentT(Int32, Boolean, Boolean, NetworkModeEnum) Creates a child component.
(Inherited from Component)
Public methodDebugDraw 
Public methodDispose Detaches the object from the hierarchy and deletes the object data.
(Inherited from Component)
Public methodEqualsDetermines whether the specified object is equal to the current object.
(Inherited from Object)
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object)
Public methodFindParent(Type) Finds the parent of the specified type.
(Inherited from Component)
Public methodFindParent(MetadataTypeInfo) Finds the parent of the specified type.
(Inherited from Component)
Public methodFindParentT Finds the parent of the specified type.
(Inherited from Component)
Public methodFindThisOrParent(Type) Finds the parent or self of the specified type.
(Inherited from Component)
Public methodFindThisOrParent(MetadataTypeInfo) Finds the parent or self of the specified type.
(Inherited from Component)
Public methodFindThisOrParentT Finds the parent or self of the specified type.
(Inherited from Component)
Public methodGetAllParents Gets all parents of the component.
(Inherited from Component)
Public methodGetComponent(String, Boolean) Finds a child component by name.
(Inherited from Component)
Public methodGetComponent(Type, Boolean, Boolean) Finds a child component of the specified type.
(Inherited from Component)
Public methodGetComponent(MetadataTypeInfo, Boolean, Boolean) Finds a child component of the specified type.
(Inherited from Component)
Public methodGetComponentT(Boolean, Boolean) Finds a child component of the specified type.
(Inherited from Component)
Public methodGetComponentByNameWithIndex Finds a child component by name and number in the case when there are several components with the specified name.
(Inherited from Component)
Public methodGetComponentByPath Finds a child component by path.
(Inherited from Component)
Public methodGetComponents(Boolean, Boolean, Boolean, Boolean) Finds child components.
(Inherited from Component)
Public methodGetComponents(Boolean, Boolean, Boolean, Boolean, ActionComponent) Finds child components.
(Inherited from Component)
Public methodGetComponents(Type, Boolean, Boolean, Boolean, Boolean) Finds child components of the specified type.
(Inherited from Component)
Public methodGetComponents(MetadataTypeInfo, Boolean, Boolean, Boolean, Boolean) Finds child components of the specified type.
(Inherited from Component)
Public methodGetComponentsT(Boolean, Boolean, Boolean, Boolean, ActionT) Finds child components of the specified type.
(Inherited from Component)
Public methodGetHashCodeServes as the default hash function.
(Inherited from Object)
Public methodGetInclusiveVolume Returns precalculated inclusive volume of the light. Its includes convex polyedron and bounding box.
Public methodGetPathFromParent Returns the path to the object from the parent.
(Inherited from Component)
Public methodGetPathFromRoot Returns the object's access path from the root object.
(Inherited from Component)
Public methodGetProvidedType Returns a type when the object is used as a type.
(Inherited from Component)
Public methodGetScreenLabelInfo
(Overrides ComponentGetScreenLabelInfo)
Public methodGetTypeGets the Type of the current instance.
(Inherited from Object)
Public methodIsMethodInvoking Checks if a method is running over time. You can start executing such methods using MethodInvoke(String, Object, Double, Double) method.
(Inherited from Component)
Public methodLookAt(ObjectInSpace)
(Inherited from ObjectInSpace)
Public methodLookAt(Vector3)
(Inherited from ObjectInSpace)
Public methodLookAt(ObjectInSpace, Vector3)
(Inherited from ObjectInSpace)
Public methodLookAt(Vector3, Vector3)
(Inherited from ObjectInSpace)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object.
(Inherited from Object)
Public methodMetadataGetMemberBySignature Returns the object metadata member by name.
(Inherited from Component)
Public methodMetadataGetMembers Returns the object metadata members.
(Inherited from Component)
Public methodMethodInvoke Calls a method by name.
(Inherited from Component)
Public methodMethodInvokeCancel Cancels the execution of selected method that run over time. You can start executing such methods using MethodInvoke(String, Object, Double, Double) method.
(Inherited from Component)
Public methodMethodInvokeCancelAll Cancels the execution of all methods that run over time. You can start executing such methods using MethodInvoke(String, Object, Double, Double) method.
(Inherited from Component)
Public methodNetworkDisablePropertySynchronization
(Inherited from Component)
Public methodNetworkIsDisabledPropertySynchronization
(Inherited from Component)
Public methodNetworkModeAddUser
(Inherited from Component)
Public methodNetworkModeIsEnabledForUser
(Inherited from Component)
Public methodNetworkModeRemoveUser
(Inherited from Component)
Public methodNetworkRestoreDisabledPropertySynchronization
(Inherited from Component)
Public methodNewObjectSetDefaultConfiguration
(Overrides ComponentNewObjectSetDefaultConfiguration(Boolean))
Public methodNewObjectSetDefaultConfigurationUpdate Called during object creation in the editor. Designed to configure the initial state.
(Inherited from Component)
Protected methodOnAddedToParent
(Inherited from ObjectInSpace)
Protected methodOnCheckSelectionByRay
(Inherited from ObjectInSpace)
Protected methodOnClientConnectedAfterRootComponentEnabled
(Inherited from Component)
Protected methodOnClientConnectedBeforeRootComponentEnabled
(Inherited from Component)
Protected methodOnClientDisconnected
(Inherited from Component)
Protected methodOnClone Called when the object is cloned.
(Inherited from Component)
Protected methodOnComponentAdded Called when a child component is added.
(Inherited from Component)
Protected methodOnComponentRemoved Called when a child component is removed.
(Inherited from Component)
Protected methodOnDisabled Called when the object is detached from a hierarchy of the components or is disabled. See also EnabledInHierarchy property.
(Inherited from Component)
Protected methodOnDisabledInSimulation Called when the object is detached from a hierarchy of the components or is disabled. The method is called only in simulation application. See also EnabledInHierarchy property.
(Inherited from Component)
Protected methodOnDispose Called when the object is disposed.
(Inherited from Component)
Protected methodOnEditorGetTextInfoCenterBottomCorner
(Inherited from Component)
Protected methodOnEnabled Called when the object is attached to a hierarchy of the components and is enabled. See also EnabledInHierarchy property.
(Inherited from Component)
Protected methodOnEnabledChanged Called when value of Enabled property is changed.
(Inherited from Component)
Protected methodOnEnabledInHierarchyChanged
(Overrides ObjectInSpaceOnEnabledInHierarchyChanged)
Protected methodOnEnabledInSimulation Called when the object is attached to a hierarchy of the components and is enabled. The method is called only in simulation application. See also EnabledInHierarchy property.
(Inherited from Component)
Protected methodOnEnabledSelectionByCursor
(Overrides ObjectInSpaceOnEnabledSelectionByCursor)
Protected methodOnGetRenderSceneData
(Overrides ObjectInSpaceOnGetRenderSceneData(ViewportRenderingContext, GetRenderSceneDataMode, SceneGetObjectsInSpaceItem))
Protected methodOnGetSceneObjectFlags
(Inherited from ObjectInSpace)
Protected methodOnLifetimeEnd
(Inherited from ObjectInSpace)
Protected methodOnLoad Called during object loading.
(Inherited from Component)
Protected methodOnMetadataGetMemberBySignature Called when the object metadata member is received by name.
(Inherited from Component)
Protected methodOnMetadataGetMembers Called upon receipt of the object's metadata members.
(Inherited from Component)
Protected methodOnMetadataGetMembersFilter
(Overrides ComponentOnMetadataGetMembersFilter(MetadataGetMembersContext, MetadataMember, Boolean))
Protected methodOnOcclusionCullingDataGet
(Inherited from ObjectInSpace)
Protected methodOnPreloadResources Called when preloading the resources used by the object.
(Inherited from Component)
Protected methodOnReceiveNetworkMessageFromClient
(Inherited from Component)
Protected methodOnReceiveNetworkMessageFromServer
(Inherited from Component)
Protected methodOnRemovedFromParent
(Inherited from ObjectInSpace)
Protected methodOnSave Called during object saving.
(Inherited from Component)
Protected methodOnSimulationStep
(Inherited from ObjectInSpace)
Protected methodOnSimulationStepClient
(Inherited from ObjectInSpace)
Protected methodOnSpaceBoundsUpdate
(Overrides ObjectInSpaceOnSpaceBoundsUpdate(SpaceBounds))
Protected methodOnSpaceBoundsUpdateIncludeChildren
(Inherited from ObjectInSpace)
Protected methodOnTransformChanged
(Overrides ObjectInSpaceOnTransformChanged)
Protected methodOnTransformUpdating
(Inherited from ObjectInSpace)
Protected methodOnUpdate Called during the update process of all objects.
(Inherited from Component)
Public methodPreloadResources Preload resources used by the object.
(Inherited from Component)
Public methodPropertyGet(String, Object, Boolean) Gets the value of a property by name.
(Inherited from Component)
Public methodPropertySet Sets the value of a property by name.
(Inherited from Component)
Public methodRemoveAllComponents Removes all child components.
(Inherited from Component)
Public methodRemoveComponent Removes a child component.
(Inherited from Component)
Public methodRemoveFromParent Detaches the object from its parent.
(Inherited from Component)
Public methodResetStaticShadowsCache 
Public methodSetPosition(Vector3)
(Inherited from ObjectInSpace)
Public methodSetPosition(Double, Double, Double)
(Inherited from ObjectInSpace)
Public methodSetRotation(Angles)
(Inherited from ObjectInSpace)
Public methodSetRotation(Quaternion)
(Inherited from ObjectInSpace)
Public methodSetRotation(Double, Double, Double)
(Inherited from ObjectInSpace)
Public methodSetScale(Double)
(Inherited from ObjectInSpace)
Public methodSetScale(Vector3)
(Inherited from ObjectInSpace)
Public methodSetScale(Double, Double, Double)
(Inherited from ObjectInSpace)
Public methodSpaceBoundsUpdate
(Inherited from ObjectInSpace)
Public methodToString Returns the name and type of the object as a string.
(Inherited from Component)
Public methodTypeSettingsIsPublic Checks whether the object provided as a type is public.
(Inherited from Component)
Public methodTypeSettingsIsPublicMember Checks whether the member is set up as public.
(Inherited from Component)
Top
Events
 NameDescription
Public eventAddedToParent Occurs when a component is added to the parent.
(Inherited from Component)
Public eventAttenuationFarChangedOccurs when the AttenuationFar property value changes.
Public eventAttenuationNearChangedOccurs when the AttenuationNear property value changes.
Public eventAttenuationPowerChangedOccurs when the AttenuationPower property value changes.
Public eventBrightnessChangedOccurs when the Brightness property value changes.
Public eventCanBeSelectedChangedOccurs when the CanBeSelected property value changes.
(Inherited from ObjectInSpace)
Public eventCloneEvent Occurs when object is cloned.
(Inherited from Component)
Public eventCloneSupportChanged Occurs after changing value of CloneSupport property.
(Inherited from Component)
Public eventColorChangedOccurs when the Color property value changes.
Public eventComponentAdded Occurs when a child component is added.
(Inherited from Component)
Public eventComponentRemoved Occurs when a child component is removed.
(Inherited from Component)
Public eventComponentsChanged Occurs when the set of children is changed.
(Inherited from Component)
Public eventDisabledEvent Occurs when the object is disabled from a hierarchy of the components or is disabled. See also EnabledInHierarchy property.
(Inherited from Component)
Public eventDisabledInSimulation Occurs when the object is detached from a hierarchy of the components or is disabled. The method is called only in simulation application. See also EnabledInHierarchy property.
(Inherited from Component)
Public eventDisplayInEditorChanged Occurs when value of DisplayInEditor property is changed.
(Inherited from Component)
Public eventDisposeEvent Occurs when the object is disposed.
(Inherited from Component)
Public eventEnabledChanged Occurs when the Enabled property value changes.
(Inherited from Component)
Public eventEnabledEvent Occurs when the object is attached to a hierarchy of the components and is enabled. See also EnabledInHierarchy property.
(Inherited from Component)
Public eventEnabledInHierarchyChanged Occurs when the EnabledInHierarchy property value changes.
(Inherited from Component)
Public eventEnabledInSimulation Occurs when the object is attached to a hierarchy of the components and is enabled. The method is called only in simulation application. See also EnabledInHierarchy property.
(Inherited from Component)
Public eventFlareBlendingChangedOccurs when the FlareBlending property value changes.
Public eventFlareColorChangedOccurs when the FlareColor property value changes.
Public eventFlareDepthCheckOffsetChangedOccurs when the FlareDepthCheckOffset property value changes.
Public eventFlareImageChangedOccurs when the FlareImage property value changes.
Public eventFlarePositionChangedOccurs when the FlarePosition property value changes.
Public eventFlareSizeChangedOccurs when the FlareSize property value changes.
Public eventFlareSizeFadeByDistanceChangedOccurs when the FlareSizeFadeByDistance property value changes.
Public eventGetRenderSceneData
(Inherited from ObjectInSpace)
Public eventGetRenderSceneDataBefore
(Inherited from ObjectInSpace)
Public eventLifetimeEnd
(Inherited from ObjectInSpace)
Public eventLoadEvent Occurs during object loading.
(Inherited from Component)
Public eventMaskChangedOccurs when the Mask property value changes.
Public eventMaskTransformChangedOccurs when the Transform property value changes.
Public eventMetadataGetMemberBySignatureEvent Occurs when the object metadata member is received by name.
(Inherited from Component)
Public eventMetadataGetMembersEvent Occurs upon receipt of the object's metadata members.
(Inherited from Component)
Public eventMetadataGetMembersFilterEvent Occurs when filtering receive members of the object metadata.
(Inherited from Component)
Public eventNameChanged Occurs when component name is changed.
(Inherited from Component)
Public eventNetworkModeChangedOccurs when the NetworkMode property value changes.
(Inherited from Component)
Public eventPreloadResourcesEvent Occurs when preloading the resources used by the object.
(Inherited from Component)
Public eventReceiveNetworkMessageFromClient
(Inherited from Component)
Public eventReceiveNetworkMessageFromServer
(Inherited from Component)
Public eventRemainingLifetimeChangedOccurs when the RemainingLifetime property value changes.
(Inherited from ObjectInSpace)
Public eventRemovedFromParent Occurs when a component is removed from the parent.
(Inherited from Component)
Public eventSaveEvent Occurs during object saving.
(Inherited from Component)
Public eventSaveSupportChanged Occurs after changing value of SaveSupport property.
(Inherited from Component)
Public eventScreenLabelChangedOccurs when the ScreenLabel property value changes.
(Inherited from Component)
Public eventShadowBiasChangedOccurs when the ShadowBias property value changes.
Public eventShadowContactChangedOccurs when the ShadowContact property value changes.
Public eventShadowContactLengthChangedOccurs when the ShadowContactLength property value changes.
Public eventShadowIntensityChangedOccurs when the ShadowIntensity property value changes.
Public eventShadowLODWorstChangedOccurs when the ShadowLODWorst property value changes.
Public eventShadowNearClipDistanceChangedOccurs when the ShadowNearClipDistance property value changes.
Public eventShadowNormalBiasChangedOccurs when the ShadowNormalBias property value changes.
Public eventShadowsChangedOccurs when the Shadows property value changes.
Public eventShadowSoftnessChangedOccurs when the ShadowSoftness property value changes.
Public eventShadowStaticChangedOccurs when the ShadowStatic property value changes.
Public eventShadowTextureSizeChangedOccurs when the ShadowTextureSize property value changes.
Public eventShadowTextureSizeValueChangedOccurs when the ShadowTextureSizeValue property value changes.
Public eventSimulationStep Occurs during the simulation step.
(Inherited from Component)
Public eventSimulationStepClient Occurs during the simulation step.
(Inherited from Component)
Public eventSpaceBoundsUpdateEvent
(Inherited from ObjectInSpace)
Public eventSpaceBoundsUpdateIncludeChildrenEvent
(Inherited from ObjectInSpace)
Public eventSpotlightFalloffChangedOccurs when the SpotlightFalloff property value changes.
Public eventSpotlightInnerAngleChangedOccurs when the SpotlightInnerAngle property value changes.
Public eventSpotlightOuterAngleChangedOccurs when the SpotlightOuterAngle property value changes.
Public eventStartDistanceChangedOccurs when the StartDistance property value changes.
Public eventTransformChangedOccurs when the Transform property value changes.
(Inherited from ObjectInSpace)
Public eventTypeChangedOccurs when the Type property value changes.
Public eventUpdateEvent Occurs during the update process of all objects.
(Inherited from Component)
Public eventVisibleChangedOccurs when the Visible property value changes.
(Inherited from ObjectInSpace)
Top
Fields
 NameDescription
Public fieldEditorCameraTransform
(Inherited from ObjectInSpace)
Top
Extension Methods
 NameDescription
Public Extension MethodMethodInvoke Calls the object method by name.
(Defined by ObjectEx)
Public Extension MethodPropertyGet Gets the value of the object property by name.
(Defined by ObjectEx)
Public Extension MethodPropertyGetT Gets the value of the object property by name.
(Defined by ObjectEx)
Public Extension MethodPropertySet Sets the value of the object property by name.
(Defined by ObjectEx)
Top
See Also