Page 1 of 1

C++ Reflection System

Posted: Fri Mar 26, 2021 3:18 pm
by radiofono
Hi there,
are there any resources that covers in theory how cryengine uses reflection system and the relationship with schematyc?

Re: C++ Reflection System

Posted: Wed Mar 31, 2021 4:05 am
by mknmknjk
only source code only, no documetation.
https://github.com/CRYTEK/CRYENGINE/tre ... Reflection


check out GalaxSys project.
sample code

Code: Select all

static void ReflectType(Schematyc::CTypeDesc<CExplosionComponent>& desc) { desc.SetLabel("Explosion"); desc.SetEditorCategory("Physics"); desc.SetDescription("Component that can explode!"); desc.SetGUID("{6FD38556-6248-4289-9DEC-9E917EA1CC5F}"_cry_guid); desc.SetComponentFlags(EEntityComponentFlags::Transform); desc.AddMember(&CExplosionComponent::m_pressure, 'prs', "PressureAtRadius", "Pressure at Radius", "The pressure at the inner radius.", SDefault::pressure); desc.AddMember(&CExplosionComponent::m_radiusMin, 'rmin', "RadiusMin", "Explosion Inner Radius", "The minimum radius from the epicenter that affects objects.", SDefault::radiusMin); desc.AddMember(&CExplosionComponent::m_radiusMax, 'rmax', "RadiusMax", "Explosion Outer Radius", "The maximum radius of the explosion that affects objects.", SDefault::radiusMax); desc.AddMember(&CExplosionComponent::m_epicenter, 'epic', "Epicenter", "Explosion Epicenter", "The epicenter of the explosion.", Vec3(SDefault::epicenter[0], SDefault::epicenter[1], SDefault::epicenter[2])); desc.AddMember(&CExplosionComponent::m_useComponentPosition, 'upp', "UseComponentPosition", "Component as Epicenter", "Use the component world position for the epicenter position.", SDefault::useComponentPosition); desc.AddMember(&CExplosionComponent::m_explodeImmediately, 'exim', "ExplodeImmediately", "Explode Immediately", "Trigger explosion immediately on initialisation of this component.", SDefault::explodeImmediately); desc.AddMember(&CExplosionComponent::m_direction, 'dirc', "ExplosionDirection", "Explosion Direction", "Direction of the triggered explosion.", Vec3(SDefault::direction[0], SDefault::direction[1], SDefault::direction[2])); }