Home
last modified time | relevance | path

Searched refs:SCENE_NS (Results 1 - 25 of 76) sorted by relevance

1234

/foundation/graphic/graphic_3d/lume/scenewidgetplugin/plugin/src/
H A Dpostprocess_effect_impl.cpp29 using SCENE_NS::MakeTask;
30 using SCENE_NS::IBitmap;
105 class BloomImpl : public META_NS::ObjectFwd<BloomImpl, SCENE_NS::ClassId::Bloom, META_NS::ClassId::Object,
106 SCENE_NS::IBloom, IPostProcessEffectPrivate, SCENE_NS::IProxyObject> {
108 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::IPostProcessEffect, bool, Enabled)
110 SCENE_NS::IBloom, SCENE_NS::IBloom::BloomType, Type, SCENE_NS::IBloom::BloomType::NORMAL)
111 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS
[all...]
H A Dcomponent_dll.cpp55 SCENE_NS::IPendingRequest<T>, SCENE_NS::IPendingRequestData<T>> {
105 class SceneBitmap : public META_NS::ObjectFwd<SceneBitmap, SCENE_NS::ClassId::Bitmap, META_NS::ClassId::Object,
106 SCENE_NS::IBitmap, META_NS::INamed> {
110 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::IBitmap, BASE_NS::string, Uri, {})
112 META_IMPLEMENT_INTERFACE_READONLY_PROPERTY(SCENE_NS::IBitmap, BASE_NS::Math::UVec2, Size,
114 META_IMPLEMENT_INTERFACE_EVENT(SCENE_NS::IBitmap, META_NS::IOnChanged, ResourceChanged)
115 META_IMPLEMENT_INTERFACE_READONLY_PROPERTY(SCENE_NS::IBitmap, SCENE_NS::IBitmap::BitmapStatus, Status,
116 SCENE_NS
[all...]
H A Dnode_impl.h27 class NodeImpl : public META_NS::ObjectContainerFwd<NodeImpl, SCENE_NS::ClassId::Node, SCENE_NS::INode,
29 SCENE_NS::IEcsObject, SCENE_NS::IProxyObject/*, UI_NS::Input::IInputFilter*/> {
30 using Super = META_NS::ObjectContainerFwd<NodeImpl, SCENE_NS::ClassId::Node, SCENE_NS::INode, META_NS::IContainable,
31 META_NS::IMutableContainable, INodeEcsInterfacePrivate, SCENE_NS::IEcsObject, SCENE_NS::IProxyObject/*,
36 META_IMPLEMENT_INTERFACE_READONLY_PROPERTY(SCENE_NS::INode, BASE_NS::string, Path, {}, META_NS::ObjectFlagBits::INTERNAL)
37 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS
[all...]
H A Drender_configuration_impl.cpp25 using namespace SCENE_NS;
30 : public META_NS::ObjectFwd<RenderConfigurationImpl, SCENE_NS::ClassId::RenderConfiguration,
31 META_NS::ClassId::Object, SCENE_NS::IRenderConfiguration, IResourcePrivate, SCENE_NS::IProxyObject> {
32 using Fwd = META_NS::ObjectFwd<RenderConfigurationImpl, SCENE_NS::ClassId::RenderConfiguration,
33 META_NS::ClassId::Object, SCENE_NS::IRenderConfiguration, IResourcePrivate, SCENE_NS::IProxyObject>;
36 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::IRenderConfiguration, SCENE_NS::IEnvironment::Ptr, Environment)
51 ecsObject_ = META_NS::GetObjectRegistry().Create<SCENE_NS
[all...]
H A Dscene_impl.cpp52 using SCENE_NS::MakeTask;
67 class SceneImpl final : public META_NS::ObjectContainerFwd<SceneImpl, SCENE_NS::ClassId::Scene, SCENE_NS::IScene,
68 SCENE_NS::IEcsScene, META_NS::IContent, META_NS::IAnimationController> {
83 SCENE_NS::IScene, BASE_NS::string, SystemGraphUri, "project://assets/config/system_graph.json")
85 SCENE_NS::IScene, uint32_t, Status, SCENE_STATUS_UNINITIALIZED, META_NS::DEFAULT_PROPERTY_FLAGS_NO_SER)
86 META_IMPLEMENT_INTERFACE_READONLY_PROPERTY(SCENE_NS::IScene, SCENE_NS::INode::Ptr, RootNode, {})
87 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::IScene, SCENE_NS
[all...]
H A Dcamera_impl.cpp25 using SCENE_NS::MakeTask;
29 : public META_NS::ConcreteBaseMetaObjectFwd<CameraImpl, NodeImpl, SCENE_NS::ClassId::Camera, SCENE_NS::ICamera> {
30 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::ICamera, float, FoV, 60.f * BASE_NS::Math::DEG2RAD)
31 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::ICamera, float, AspectRatio, -1.f)
32 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::ICamera, float, NearPlane, 0.3f)
33 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::ICamera, float, FarPlane, 1000.f)
34 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::ICamera, float, XMagnification, 0.f)
35 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::ICamera, float, YMagnification, 0.f)
36 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS
[all...]
H A Dpostprocess_impl.cpp28 using SCENE_NS::MakeTask;
33 : public META_NS::ObjectFwd<PostProcessImpl, SCENE_NS::ClassId::PostProcess, META_NS::ClassId::Object,
34 SCENE_NS::IPostProcess, IPostProcessPrivate, SCENE_NS::IProxyObject> {
36 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::IPostProcess, SCENE_NS::IBloom::Ptr, Bloom)
37 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::IPostProcess, SCENE_NS::IBlur::Ptr, Blur)
38 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::IPostProcess, SCENE_NS
[all...]
H A Dmesh_impl.cpp28 using SCENE_NS::MakeTask;
33 : public META_NS::ConcreteBaseMetaObjectFwd<MeshImpl, NodeImpl, SCENE_NS::ClassId::Mesh, SCENE_NS::IMesh> {
53 SCENE_NS::IMesh, SCENE_NS::IMaterial::Ptr, MaterialOverride, {}, )
54 META_IMPLEMENT_INTERFACE_READONLY_PROPERTY(SCENE_NS::IMesh, BASE_NS::string, MaterialOverrideUri, {},
58 SCENE_NS::IMesh, SCENE_NS::ISubMesh::Ptr, SubMeshes, {}, )
59 META_IMPLEMENT_INTERFACE_READONLY_PROPERTY(SCENE_NS::IMesh, BASE_NS::Math::Vec3, AABBMin,
61 META_IMPLEMENT_INTERFACE_READONLY_PROPERTY(SCENE_NS
[all...]
H A Dmaterial_impl.cpp33 using SCENE_NS::MakeTask;
34 #define GET_HOLDER(info) interface_pointer_cast<SCENE_NS::IProxyObjectHolder>(info)->Holder()
92 class MaterialImpl : public META_NS::ConcreteBaseMetaObjectFwd<MaterialImpl, NodeImpl, SCENE_NS::ClassId::Material,
93 SCENE_NS::IMaterial, ITextureStorage> {
112 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::IMaterial, uint8_t, Type, 0)
114 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::IMaterial, float, AlphaCutoff, 1.f)
115 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::IMaterial, uint32_t, LightingFlags,
120 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::IMaterial, SCENE_NS::IShader::Ptr, MaterialShader, {})
121 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS
[all...]
H A Dsubmesh_impl.cpp26 using SCENE_NS::MakeTask;
29 class SubMeshImpl : public META_NS::ObjectFwd<SubMeshImpl, SCENE_NS::ClassId::SubMesh, META_NS::ClassId::Object,
30 SCENE_NS::ISubMesh, SCENE_NS::ISubMeshPrivate> {
33 SCENE_NS::ISubMesh, SCENE_NS::IMaterial::Ptr, Material, {})
34 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::ISubMesh, uint64_t, Handle, {}, META_NS::ObjectFlagBits::INTERNAL)
35 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::ISubMesh, BASE_NS::Math::Vec3, AABBMin,
37 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::ISubMesh, BASE_NS::Math::Vec3, AABBMax,
40 SCENE_NS
[all...]
H A Dnode_impl.cpp19 using SCENE_NS::MakeTask;
46 size_t GetChildIndex(SCENE_NS::INode& parent, SCENE_NS::INode& child) in GetChildIndex()
69 if (META_NS::TypeId(uid) == SCENE_NS::InterfaceId::IEnvironment.Id()) { in GetInterface()
78 if (META_NS::TypeId(uid) == SCENE_NS::InterfaceId::IEnvironment.Id()) { in GetInterface()
85 SCENE_NS::NodeState NodeImpl::GetAttachedState() const in GetAttachedState()
92 if (Status()->GetValue() == SCENE_NS::INode::NODE_STATUS_CONNECTED || in IsConnected()
93 Status()->GetValue() == SCENE_NS::INode::NODE_STATUS_FULLY_CONNECTED) in IsConnected()
116 if (auto sceneInterface = interface_pointer_cast<SCENE_NS::IEcsScene>(sceneObject)) { in Connect()
198 attachedState_ = SCENE_NS in AttachToHierarchy()
[all...]
H A Dlight_impl.cpp24 : public META_NS::ConcreteBaseMetaObjectFwd<LightImpl, NodeImpl, SCENE_NS::ClassId::Light, SCENE_NS::ILight> {
62 SCENE_NS::ILight, SCENE_NS::Color, Color, SCENE_NS::Colors::WHITE)
63 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::ILight, float, Intensity, 1.f)
64 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::ILight, float, NearPlane, 0.5f)
66 SCENE_NS::ILight, bool, ShadowEnabled, true)
68 SCENE_NS::ILight, float, ShadowStrength, 1.0f)
70 SCENE_NS
[all...]
H A Dgraphicsstate_impl.cpp23 class GraphicsStateImpl : public META_NS::ObjectFwd<GraphicsStateImpl, SCENE_NS::ClassId::GraphicsState,
24 META_NS::ClassId::Object, SCENE_NS::IGraphicsState, ISceneHolderRef> {
25 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::IGraphicsState, BASE_NS::string, Uri, "")
26 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::IGraphicsState, BASE_NS::string, Variant, "")
54 void SetGraphicsState(const RENDER_NS::GraphicsState& state, SCENE_NS::IMaterial::Ptr mat) override
60 if (auto mat = interface_cast<SCENE_NS::IEcsObject>(material.lock())) {
71 SCENE_NS::IShaderGraphicsState::Ptr GetGraphicsState(SCENE_NS::IMaterial::Ptr mat) override
74 META_NS::GetObjectRegistry().Create<SCENE_NS::IShaderGraphicsState>(SCENE_NS
[all...]
H A Dsubmeshhandler.cpp27 using SCENE_NS::MakeTask;
30 class SubMeshHandler : public META_NS::ObjectFwd<SubMeshHandler, SCENE_NS::ClassId::SubMeshHandler,
31 META_NS::ClassId::Object, SCENE_NS::IEcsProxyObject, SCENE_NS::ISubMeshBridge> {
40 submeshes_ = META_NS::ArrayProperty<SCENE_NS::ISubMesh::Ptr>(submeshes);
61 listener_->RemoveEntity(entity_, GetSelf<SCENE_NS::IEcsProxyObject>(),
68 void SetCommonListener(BASE_NS::shared_ptr<SCENE_NS::EcsListener> listener) override
71 listener_->RemoveEntity(entity_, GetSelf<SCENE_NS::IEcsProxyObject>(),
76 listener_->AddEntity(entity_, GetSelf<SCENE_NS::IEcsProxyObject>(),
83 SCENE_NS
[all...]
H A Dscene_holder.h125 const SCENE_NS::ICamera::Ptr& camera, BASE_NS::Math::UVec2 size, RENDER_NS::RenderHandleReference ref);
133 void ChangeCamera(SCENE_NS::ICamera::Ptr camera);
183 SCENE_NS::IEntityCollection* GetEntityCollection() in GetEntityCollection()
188 SCENE_NS::IAssetManager* GetAssetManager() in GetAssetManager()
236 CORE_NS::EntityReference BindUIBitmap(SCENE_NS::IBitmap::Ptr bitmap, bool createNew);
264 void SetShader(CORE_NS::Entity materialEntity, ShaderType type, SCENE_NS::IShader::Ptr shader);
265 void SetGraphicsState(CORE_NS::Entity materialEntity, ShaderType type, SCENE_NS::IGraphicsState::Ptr state);
266 SCENE_NS::IShader::Ptr GetShader(CORE_NS::Entity materialEntity, ShaderType type);
267 SCENE_NS::IGraphicsState::Ptr GetGraphicsState(CORE_NS::Entity materialEntity, ShaderType type);
272 CORE_NS::Entity materialEntity, ShaderType type, const SCENE_NS
[all...]
H A Dmultimesh_impl.cpp25 using SCENE_NS::MakeTask;
28 class MultiMeshImpl : public META_NS::ObjectFwd<MultiMeshImpl, SCENE_NS::ClassId::MultiMeshProxy,
29 META_NS::ClassId::Object, SCENE_NS::IMultiMeshProxy, IMultimeshInitilization> {
31 SCENE_NS::IMultiMeshProxy, SCENE_NS::IMaterial::Ptr, MaterialOverride, {}, META_NS::DEFAULT_PROPERTY_FLAGS_NO_SER)
33 // SCENE_NS::IMultiMeshProxy, BASE_NS::string, MaterialOverrideUri, {}, META_NS::DEFAULT_PROPERTY_FLAGS_NO_SER)
35 SCENE_NS::IMultiMeshProxy, SCENE_NS::IMesh::Ptr, Mesh, {}, META_NS::DEFAULT_PROPERTY_FLAGS_NO_SER)
36 META_IMPLEMENT_INTERFACE_PROPERTY(SCENE_NS::IMultiMeshProxy, size_t, VisibleInstanceCount, 0u)
37 META_IMPLEMENT_INTERFACE_ARRAY_PROPERTY(SCENE_NS
[all...]
/foundation/graphic/graphic_3d/lume/scenewidgetplugin/plugin/include/scene_plugin/interface/
H A Dintf_postprocess.h49 META_TYPE(SCENE_NS::SharpnessType);
50 META_TYPE(SCENE_NS::QualityType);
93 META_TYPE(SCENE_NS::ITonemap::TonemapType)
94 META_TYPE(SCENE_NS::ITonemap::WeakPtr);
95 META_TYPE(SCENE_NS::ITonemap::Ptr);
164 META_TYPE(SCENE_NS::IBloom::BloomType)
165 META_TYPE(SCENE_NS::IBloom::WeakPtr);
166 META_TYPE(SCENE_NS::IBloom::Ptr);
188 META_TYPE(SCENE_NS::IVignette::WeakPtr);
189 META_TYPE(SCENE_NS
[all...]
H A Dintf_mesh.h30 // Implemented by SCENE_NS::ClassId::SubMesh
35 META_PROPERTY(SCENE_NS::IMaterial::Ptr, Material)
45 virtual void SetMaterial(SCENE_NS::IMaterial::Ptr) = 0;
50 META_TYPE(SCENE_NS::ISubMesh::WeakPtr);
51 META_TYPE(SCENE_NS::ISubMesh::Ptr);
55 // Implemented by SCENE_NS::ClassId::Mesh
64 META_PROPERTY(SCENE_NS::IMaterial::Ptr, MaterialOverride)
157 META_TYPE(SCENE_NS::IMesh::WeakPtr);
158 META_TYPE(SCENE_NS::IMesh::Ptr);
162 // Implemented by SCENE_NS
[all...]
H A Dintf_material.h47 META_PROPERTY(SCENE_NS::IBitmap::Ptr, Image)
114 META_TYPE(SCENE_NS::ITextureInfo::WeakPtr);
115 META_TYPE(SCENE_NS::ITextureInfo::Ptr);
134 META_TYPE(SCENE_NS::IShader::WeakPtr);
135 META_TYPE(SCENE_NS::IShader::Ptr);
162 const RENDER_NS::GraphicsState& state, BASE_NS::shared_ptr<SCENE_NS::IMaterial> mat) = 0;
163 virtual IShaderGraphicsState::Ptr GetGraphicsState(BASE_NS::shared_ptr<SCENE_NS::IMaterial> mat) = 0;
168 META_TYPE(SCENE_NS::IGraphicsState::WeakPtr);
169 META_TYPE(SCENE_NS::IGraphicsState::Ptr);
173 // Implemented by SCENE_NS
[all...]
/foundation/graphic/graphic_3d/kits/js/src/
H A DToneMapJS.cpp33 using namespace SCENE_NS;
34 SCENE_NS::ITonemap::TonemapType ConvertTo(ToneMapJS::ToneMappingType typeI) in ConvertTo()
36 SCENE_NS::ITonemap::TonemapType type; in ConvertTo()
39 type = SCENE_NS::ITonemap::TonemapType::ACES; in ConvertTo()
42 type = SCENE_NS::ITonemap::TonemapType::ACES_2020; in ConvertTo()
45 type = SCENE_NS::ITonemap::TonemapType::FILMIC; in ConvertTo()
54 ToneMapJS::ToneMappingType ConvertFrom(SCENE_NS::ITonemap::TonemapType typeI) in ConvertFrom()
58 case SCENE_NS::ITonemap::TonemapType::ACES: in ConvertFrom()
61 case SCENE_NS::ITonemap::TonemapType::ACES_2020: in ConvertFrom()
64 case SCENE_NS in ConvertFrom()
[all...]
H A DNodeImpl.cpp117 if (auto node = interface_pointer_cast<SCENE_NS::INode>(GetThisNativeObject(ctx))) { in GetLayerMaskEnabled()
130 if (auto node = interface_pointer_cast<SCENE_NS::INode>(GetThisNativeObject(ctx))) { in SetLayerMaskEnabled()
147 if (auto node = interface_cast<SCENE_NS::INode>(GetThisNativeObject(ctx))) { in GetNodeType()
157 if (auto node = interface_cast<SCENE_NS::INode>(GetThisNativeObject(ctx))) { in GetLayerMask()
165 auto node = interface_pointer_cast<SCENE_NS::INode>(GetThisNativeObject(ctx)); in GetPath()
182 auto node = interface_pointer_cast<SCENE_NS::INode>(GetThisNativeObject(ctx)); in GetVisible()
196 auto node = interface_pointer_cast<SCENE_NS::INode>(GetThisNativeObject(ctx)); in SetVisible()
208 auto node = interface_pointer_cast<SCENE_NS::INode>(GetThisNativeObject(ctx)); in GetPosition()
220 auto node = interface_pointer_cast<SCENE_NS::INode>(GetThisNativeObject(ctx)); in SetPosition()
233 auto node = interface_pointer_cast<SCENE_NS in GetScale()
[all...]
H A DLightJS.cpp53 if (!GetNativeMeta<SCENE_NS::IScene>(scene_.GetObject())) { in Create()
57 auto scn = GetNativeMeta<SCENE_NS::IScene>(scene); in Create()
88 SCENE_NS::ILight::Ptr node; in Create()
90 node = scn->CreateNode<SCENE_NS::ILight>(nodePath, true); in Create()
144 if (auto light = interface_pointer_cast<SCENE_NS::ILight>(tro->GetNativeObject())) { in DisposeNative()
150 auto node = interface_pointer_cast<SCENE_NS::INode>(light); in DisposeNative()
167 if (auto node = interface_cast<SCENE_NS::ILight>(GetThisNativeObject(ctx))) { in GetlightType()
178 auto node = interface_pointer_cast<SCENE_NS::INode>(GetThisNativeObject(ctx)); in GetEnabled()
193 auto node = interface_pointer_cast<SCENE_NS::INode>(GetThisNativeObject(ctx)); in SetEnabled()
204 auto node = interface_pointer_cast<SCENE_NS in GetColor()
[all...]
H A DEnvironmentJS.cpp30 using namespace SCENE_NS;
123 auto en = interface_pointer_cast<SCENE_NS::INode>(e); in DisposeNative()
159 if (!GetNativeMeta<SCENE_NS::IScene>(scene_.GetObject())) { in EnvironmentJS()
187 env = scene->CreateNode<SCENE_NS::IEnvironment>(nameS); in EnvironmentJS()
256 if (auto environment = interface_cast<SCENE_NS::IEnvironment>(GetNativeObject())) { in GetEnvironmentImage()
257 SCENE_NS::IBitmap::Ptr image; in GetEnvironmentImage()
277 SCENE_NS::IBitmap::Ptr image; in SetEnvironmentImage()
279 image = interface_pointer_cast<SCENE_NS::IBitmap>(nat->GetNativeObject()); in SetEnvironmentImage()
281 if (auto environment = interface_cast<SCENE_NS::IEnvironment>(GetNativeObject())) { in SetEnvironmentImage()
291 if (auto environment = interface_cast<SCENE_NS in GetRadianceImage()
[all...]
H A DCameraJS.cpp59 if (auto camera = interface_pointer_cast<SCENE_NS::ICamera>(GetNativeObject())) { in DisposeNative()
72 auto camnode = interface_pointer_cast<SCENE_NS::INode>(cam); in DisposeNative()
124 auto scn = GetNativeMeta<SCENE_NS::IScene>(scene); in CameraJS()
156 uint32_t pipeline = SCENE_NS::ICamera::SceneCameraPipeline::SCENE_CAM_PIPELINE_LIGHT_FORWARD; in CameraJS()
174 SCENE_NS::ICamera::Ptr node; in CameraJS()
176 node = scn->CreateNode<SCENE_NS::ICamera>(nodePath, true); in CameraJS()
195 if (auto camera = interface_pointer_cast<SCENE_NS::ICamera>(GetNativeObject())) { in Finalize()
197 if (auto scene = interface_cast<SCENE_NS::INode>(camera)->GetScene()) { in Finalize()
212 if (auto camera = interface_cast<SCENE_NS::ICamera>(GetNativeObject())) { in GetFov()
230 if (auto camera = interface_cast<SCENE_NS in SetFov()
[all...]
H A DPostProcJS.cpp33 using namespace SCENE_NS;
127 auto postproc = interface_pointer_cast<SCENE_NS::IPostProcess>( in PostProcJS()
128 ((CameraJS*)(rootobject))->CreateObject(SCENE_NS::ClassId::PostProcess)); in PostProcJS()
145 SCENE_NS::ITonemap::Ptr tone; in PostProcJS()
156 SCENE_NS::IBloom::Ptr bloom = postproc->Bloom()->GetValue(); in PostProcJS()
175 auto postproc = interface_cast<SCENE_NS::IPostProcess>(GetNativeObject()); in SetToneMapping()
196 SCENE_NS::ITonemap::Ptr tonemap; in SetToneMapping()
209 tonemap = interface_pointer_cast<SCENE_NS::ITonemap>(native->GetNativeObject()); in SetToneMapping()
220 if (auto postproc = interface_cast<SCENE_NS::IPostProcess>(GetNativeObject())) { in GetToneMapping()
221 SCENE_NS in GetToneMapping()
[all...]

Completed in 12 milliseconds

1234