@@ -206,6 +206,38 @@ namespace {
206206 makeFastProperty<ActionComponent, bool , &ActionComponent::ownedTarget>(" ownedTarget" , PropertyType::Bool, UpdateFlags_None),
207207 };
208208
209+ static const FastPropertyDescriptor kTimedActionProperties [] = {
210+ makeFastProperty<TimedActionComponent, float , &TimedActionComponent::duration>(" duration" , PropertyType::Float, UpdateFlags_None),
211+ makeFastProperty<TimedActionComponent, bool , &TimedActionComponent::loop>(" loop" , PropertyType::Bool, UpdateFlags_None),
212+ };
213+
214+ static const FastPropertyDescriptor kPositionActionProperties [] = {
215+ makeFastPropertyNoDefault<PositionActionComponent, Vector3, &PositionActionComponent::endPosition>(" endPosition" , PropertyType::Vector3, UpdateFlags_None),
216+ makeFastPropertyNoDefault<PositionActionComponent, Vector3, &PositionActionComponent::startPosition>(" startPosition" , PropertyType::Vector3, UpdateFlags_None),
217+ };
218+
219+ static const FastPropertyDescriptor kRotationActionProperties [] = {
220+ makeFastPropertyNoDefault<RotationActionComponent, Quaternion, &RotationActionComponent::endRotation>(" endRotation" , PropertyType::Quat, UpdateFlags_None),
221+ makeFastPropertyNoDefault<RotationActionComponent, Quaternion, &RotationActionComponent::startRotation>(" startRotation" , PropertyType::Quat, UpdateFlags_None),
222+ makeFastProperty<RotationActionComponent, bool , &RotationActionComponent::shortestPath>(" shortestPath" , PropertyType::Bool, UpdateFlags_None),
223+ };
224+
225+ static const FastPropertyDescriptor kScaleActionProperties [] = {
226+ makeFastPropertyNoDefault<ScaleActionComponent, Vector3, &ScaleActionComponent::endScale>(" endScale" , PropertyType::Vector3, UpdateFlags_None),
227+ makeFastPropertyNoDefault<ScaleActionComponent, Vector3, &ScaleActionComponent::startScale>(" startScale" , PropertyType::Vector3, UpdateFlags_None),
228+ };
229+
230+ static const FastPropertyDescriptor kColorActionProperties [] = {
231+ makeFastPropertyNoDefault<ColorActionComponent, Vector3, &ColorActionComponent::endColor>(" endColor" , PropertyType::Vector3, UpdateFlags_None),
232+ makeFastPropertyNoDefault<ColorActionComponent, Vector3, &ColorActionComponent::startColor>(" startColor" , PropertyType::Vector3, UpdateFlags_None),
233+ makeFastProperty<ColorActionComponent, bool , &ColorActionComponent::useSRGB>(" useSRGB" , PropertyType::Bool, UpdateFlags_None),
234+ };
235+
236+ static const FastPropertyDescriptor kAlphaActionProperties [] = {
237+ makeFastPropertyNoDefault<AlphaActionComponent, float , &AlphaActionComponent::endAlpha>(" endAlpha" , PropertyType::Float, UpdateFlags_None),
238+ makeFastPropertyNoDefault<AlphaActionComponent, float , &AlphaActionComponent::startAlpha>(" startAlpha" , PropertyType::Float, UpdateFlags_None),
239+ };
240+
209241 static const FastPropertyDescriptor kBundleProperties [] = {
210242 makeFastProperty<BundleComponent, std::string, &BundleComponent::name>(" name" , PropertyType::String, UpdateFlags_None),
211243 makeFastProperty<BundleComponent, std::string, &BundleComponent::path>(" path" , PropertyType::String, UpdateFlags_None),
@@ -1057,6 +1089,30 @@ namespace {
10571089 return resolveDirectProperties (static_cast <ActionComponent*>(comp), propertyName, kActionProperties );
10581090 }
10591091
1092+ PropertyData resolveTimedActionPropertyFast (void * comp, const std::string& propertyName) {
1093+ return resolveDirectProperties (static_cast <TimedActionComponent*>(comp), propertyName, kTimedActionProperties );
1094+ }
1095+
1096+ PropertyData resolvePositionActionPropertyFast (void * comp, const std::string& propertyName) {
1097+ return resolveDirectProperties (static_cast <PositionActionComponent*>(comp), propertyName, kPositionActionProperties );
1098+ }
1099+
1100+ PropertyData resolveRotationActionPropertyFast (void * comp, const std::string& propertyName) {
1101+ return resolveDirectProperties (static_cast <RotationActionComponent*>(comp), propertyName, kRotationActionProperties );
1102+ }
1103+
1104+ PropertyData resolveScaleActionPropertyFast (void * comp, const std::string& propertyName) {
1105+ return resolveDirectProperties (static_cast <ScaleActionComponent*>(comp), propertyName, kScaleActionProperties );
1106+ }
1107+
1108+ PropertyData resolveColorActionPropertyFast (void * comp, const std::string& propertyName) {
1109+ return resolveDirectProperties (static_cast <ColorActionComponent*>(comp), propertyName, kColorActionProperties );
1110+ }
1111+
1112+ PropertyData resolveAlphaActionPropertyFast (void * comp, const std::string& propertyName) {
1113+ return resolveDirectProperties (static_cast <AlphaActionComponent*>(comp), propertyName, kAlphaActionProperties );
1114+ }
1115+
10601116 PropertyData resolveSpriteAnimationPropertyFast (void * compRef, const std::string& propertyName) {
10611117 SpriteAnimationComponent* comp = static_cast <SpriteAnimationComponent*>(compRef);
10621118 if (!comp) return PropertyData ();
@@ -1320,6 +1376,30 @@ namespace {
13201376 enumerateFromDescriptors (comp, ps, kActionProperties );
13211377 }
13221378
1379+ void enumerateTimedActionProperties (void * comp, std::map<std::string, PropertyData>& ps) {
1380+ enumerateFromDescriptors (comp, ps, kTimedActionProperties );
1381+ }
1382+
1383+ void enumeratePositionActionProperties (void * comp, std::map<std::string, PropertyData>& ps) {
1384+ enumerateFromDescriptors (comp, ps, kPositionActionProperties );
1385+ }
1386+
1387+ void enumerateRotationActionProperties (void * comp, std::map<std::string, PropertyData>& ps) {
1388+ enumerateFromDescriptors (comp, ps, kRotationActionProperties );
1389+ }
1390+
1391+ void enumerateScaleActionProperties (void * comp, std::map<std::string, PropertyData>& ps) {
1392+ enumerateFromDescriptors (comp, ps, kScaleActionProperties );
1393+ }
1394+
1395+ void enumerateColorActionProperties (void * comp, std::map<std::string, PropertyData>& ps) {
1396+ enumerateFromDescriptors (comp, ps, kColorActionProperties );
1397+ }
1398+
1399+ void enumerateAlphaActionProperties (void * comp, std::map<std::string, PropertyData>& ps) {
1400+ enumerateFromDescriptors (comp, ps, kAlphaActionProperties );
1401+ }
1402+
13231403 void enumerateModelProperties (void * compRef, std::map<std::string, PropertyData>& ps) {
13241404 ModelComponent* comp = static_cast <ModelComponent*>(compRef);
13251405 ModelComponent& def = getDefaultComponent<ModelComponent>();
@@ -1771,6 +1851,12 @@ namespace {
17711851 {ComponentType::Body2DComponent, &findComponentPtr<Body2DComponent>, &resolveBody2DPropertyFast, &enumerateBody2DProperties},
17721852 {ComponentType::Body3DComponent, &findComponentPtr<Body3DComponent>, &resolveBody3DPropertyFast, &enumerateBody3DProperties},
17731853 {ComponentType::ActionComponent, &findComponentPtr<ActionComponent>, &resolveActionPropertyFast, &enumerateActionProperties},
1854+ {ComponentType::TimedActionComponent, &findComponentPtr<TimedActionComponent>, &resolveTimedActionPropertyFast, &enumerateTimedActionProperties},
1855+ {ComponentType::PositionActionComponent, &findComponentPtr<PositionActionComponent>, &resolvePositionActionPropertyFast, &enumeratePositionActionProperties},
1856+ {ComponentType::RotationActionComponent, &findComponentPtr<RotationActionComponent>, &resolveRotationActionPropertyFast, &enumerateRotationActionProperties},
1857+ {ComponentType::ScaleActionComponent, &findComponentPtr<ScaleActionComponent>, &resolveScaleActionPropertyFast, &enumerateScaleActionProperties},
1858+ {ComponentType::ColorActionComponent, &findComponentPtr<ColorActionComponent>, &resolveColorActionPropertyFast, &enumerateColorActionProperties},
1859+ {ComponentType::AlphaActionComponent, &findComponentPtr<AlphaActionComponent>, &resolveAlphaActionPropertyFast, &enumerateAlphaActionProperties},
17741860 {ComponentType::SpriteAnimationComponent, &findComponentPtr<SpriteAnimationComponent>, &resolveSpriteAnimationPropertyFast, &enumerateSpriteAnimationProperties},
17751861 {ComponentType::AnimationComponent, &findComponentPtr<AnimationComponent>, &resolveAnimationPropertyFast, &enumerateAnimationProperties},
17761862 {ComponentType::ModelComponent, &findComponentPtr<ModelComponent>, &resolveModelPropertyFast, &enumerateModelProperties},
@@ -2691,6 +2777,42 @@ void editor::Catalog::copyComponent(EntityRegistry* sourceRegistry, Entity sourc
26912777 break ;
26922778 }
26932779
2780+ case ComponentType::TimedActionComponent: {
2781+ YAML ::Node encoded = Stream::encodeTimedActionComponent (sourceRegistry->getComponent <TimedActionComponent>(sourceEntity));
2782+ targetRegistry->getComponent <TimedActionComponent>(targetEntity) = Stream::decodeTimedActionComponent (encoded);
2783+ break ;
2784+ }
2785+
2786+ case ComponentType::PositionActionComponent: {
2787+ YAML ::Node encoded = Stream::encodePositionActionComponent (sourceRegistry->getComponent <PositionActionComponent>(sourceEntity));
2788+ targetRegistry->getComponent <PositionActionComponent>(targetEntity) = Stream::decodePositionActionComponent (encoded);
2789+ break ;
2790+ }
2791+
2792+ case ComponentType::RotationActionComponent: {
2793+ YAML ::Node encoded = Stream::encodeRotationActionComponent (sourceRegistry->getComponent <RotationActionComponent>(sourceEntity));
2794+ targetRegistry->getComponent <RotationActionComponent>(targetEntity) = Stream::decodeRotationActionComponent (encoded);
2795+ break ;
2796+ }
2797+
2798+ case ComponentType::ScaleActionComponent: {
2799+ YAML ::Node encoded = Stream::encodeScaleActionComponent (sourceRegistry->getComponent <ScaleActionComponent>(sourceEntity));
2800+ targetRegistry->getComponent <ScaleActionComponent>(targetEntity) = Stream::decodeScaleActionComponent (encoded);
2801+ break ;
2802+ }
2803+
2804+ case ComponentType::ColorActionComponent: {
2805+ YAML ::Node encoded = Stream::encodeColorActionComponent (sourceRegistry->getComponent <ColorActionComponent>(sourceEntity));
2806+ targetRegistry->getComponent <ColorActionComponent>(targetEntity) = Stream::decodeColorActionComponent (encoded);
2807+ break ;
2808+ }
2809+
2810+ case ComponentType::AlphaActionComponent: {
2811+ YAML ::Node encoded = Stream::encodeAlphaActionComponent (sourceRegistry->getComponent <AlphaActionComponent>(sourceEntity));
2812+ targetRegistry->getComponent <AlphaActionComponent>(targetEntity) = Stream::decodeAlphaActionComponent (encoded);
2813+ break ;
2814+ }
2815+
26942816 default :
26952817 printf (" WARNING: Unsupported component type for copying: %s\n " , getComponentName (compType).c_str ());
26962818 break ;
0 commit comments