/** GDevelop - Skeleton Object Extension Copyright (c) 2017-2018 Franco Maciel (francomaciel10@gmail.com) This project is released under the MIT License. */ #if defined(GD_IDE_ONLY) #include "GDCore/Extensions/PlatformExtension.h" #include "SkeletonObject.h" #include void DeclareSkeletonObjectExtension(gd::PlatformExtension& extension); /** * \brief This class declares information about the JS extension. */ class SkeletonObjectJsExtension : public gd::PlatformExtension { public: /** * Constructor of an extension declares everything the extension contains: * objects, actions, conditions and expressions. */ SkeletonObjectJsExtension() { DeclareSkeletonObjectExtension(*this); GetObjectMetadata("SkeletonObject::Skeleton") .SetIncludeFile("Extensions/SkeletonObject/Isk-tools.js") .AddIncludeFile("Extensions/SkeletonObject/Hskmanager.js") .AddIncludeFile("Extensions/SkeletonObject/Gskeletonruntimeobject.js") .AddIncludeFile("Extensions/SkeletonObject/Fskanimation.js") .AddIncludeFile("Extensions/SkeletonObject/Eskarmature.js") .AddIncludeFile("Extensions/SkeletonObject/Dskslot.js") .AddIncludeFile("Extensions/SkeletonObject/Cskbone.js") .AddIncludeFile( "Extensions/SkeletonObject/" "Bskeletonruntimeobject-cocos-renderer.js") .AddIncludeFile( "Extensions/SkeletonObject/Bskeletonruntimeobject-pixi-renderer.js") .AddIncludeFile("Extensions/SkeletonObject/Ask.js"); auto& actions = GetAllActionsForObject("SkeletonObject::Skeleton"); auto& conditions = GetAllConditionsForObject("SkeletonObject::Skeleton"); auto& expressions = GetAllExpressionsForObject("SkeletonObject::Skeleton"); auto& strExpressions = GetAllStrExpressionsForObject("SkeletonObject::Skeleton"); // Object instructions conditions["SkeletonObject::ScaleX"].SetFunctionName("getScaleX"); actions["SkeletonObject::SetScaleX"] .SetFunctionName("setScaleX") .SetGetter("getScaleX"); expressions["ScaleX"].SetFunctionName("getScaleX"); conditions["SkeletonObject::ScaleY"].SetFunctionName("getScaleY"); actions["SkeletonObject::SetScaleY"] .SetFunctionName("setScaleY") .SetGetter("getScaleY"); expressions["ScaleY"].SetFunctionName("getScaleY"); conditions["SkeletonObject::Width"].SetFunctionName("getWidth"); actions["SkeletonObject::SetWidth"] .SetFunctionName("setWidth") .SetGetter("getWidth"); expressions["Width"].SetFunctionName("getWidth"); conditions["SkeletonObject::Height"].SetFunctionName("getHeight"); actions["SkeletonObject::SetHeight"] .SetFunctionName("setHeight") .SetGetter("getHeight"); expressions["Height"].SetFunctionName("getHeight"); actions["SkeletonObject::SetDefaultHitbox"].SetFunctionName( "setDefaultHitbox"); // Animation instructions conditions["SkeletonObject::AnimationPaused"].SetFunctionName( "isAnimationPaused"); actions["SkeletonObject::PauseAnimation"].SetFunctionName( "setAnimationPaused"); actions["SkeletonObject::UnpauseAnimation"].SetFunctionName( "setAnimationPaused"); conditions["SkeletonObject::AnimationFinished"].SetFunctionName( "isAnimationFinished"); conditions["SkeletonObject::AnimationTime"].SetFunctionName( "getAnimationTime"); actions["SkeletonObject::SetAnimationTime"] .SetFunctionName("setAnimationTime") .SetGetter("getAnimationTime"); expressions["AnimationTime"].SetFunctionName("getAnimationTime"); expressions["AnimationTimeLength"].SetFunctionName( "getAnimationTimeLength"); conditions["SkeletonObject::AnimationFrame"].SetFunctionName( "getAnimationFrame"); actions["SkeletonObject::SetAnimationFrame"] .SetFunctionName("setAnimationFrame") .SetGetter("getAnimationFrame"); expressions["AnimationFrame"].SetFunctionName("getAnimationFrame"); expressions["AnimationFrameLength"].SetFunctionName( "getAnimationFrameLength"); conditions["SkeletonObject::AnimationIndex"].SetFunctionName( "getAnimationIndex"); actions["SkeletonObject::SetAnimationIndex"] .SetFunctionName("setAnimationIndex") .SetGetter("getAnimationIndex"); expressions["AnimationIndex"].SetFunctionName("getAnimationIndex"); conditions["SkeletonObject::AnimationName"].SetFunctionName( "getAnimationName"); actions["SkeletonObject::SetAnimationName"] .SetFunctionName("setAnimationName") .SetGetter("getAnimationName"); strExpressions["AnimationName"].SetFunctionName("getAnimationName"); conditions["SkeletonObject::AnimationSmooth"].SetFunctionName( "isAnimationSmooth"); actions["SkeletonObject::SetAnimationSmooth"].SetFunctionName( "setAnimationSmooth"); conditions["SkeletonObject::AnimationTimeScale"].SetFunctionName( "getAnimationTimeScale"); actions["SkeletonObject::SetAnimationTimeScale"] .SetFunctionName("setAnimationTimeScale") .SetGetter("getAnimationTimeScale"); expressions["AnimationTimeScale"].SetFunctionName("getAnimationTimeScale"); actions["SkeletonObject::ResetAnimation"].SetFunctionName("resetAnimation"); // Bone instructions conditions["SkeletonObject::BonePositionX"].SetFunctionName("getBoneX"); actions["SkeletonObject::SetBonePositionX"] .SetFunctionName("setBoneX") .SetGetter("getBoneX"); expressions["BonePositionX"].SetFunctionName("getBoneX"); conditions["SkeletonObject::BonePositionY"].SetFunctionName("getBoneY"); actions["SkeletonObject::SetBonePositionY"] .SetFunctionName("setBoneY") .SetGetter("getBoneY"); expressions["BonePositionY"].SetFunctionName("getBoneY"); conditions["SkeletonObject::BoneAngle"].SetFunctionName("getBoneAngle"); actions["SkeletonObject::SetBoneAngle"] .SetFunctionName("setBoneAngle") .SetGetter("getBoneAngle"); expressions["BoneAngle"].SetFunctionName("getBoneAngle"); conditions["SkeletonObject::BoneScaleX"].SetFunctionName("getBoneScaleX"); actions["SkeletonObject::SetBoneScaleX"] .SetFunctionName("setBoneScaleX") .SetGetter("getBoneScaleX"); expressions["BoneScaleX"].SetFunctionName("getBoneScaleX"); conditions["SkeletonObject::BoneScaleY"].SetFunctionName("getBoneScaleY"); actions["SkeletonObject::SetBoneScaleY"] .SetFunctionName("setBoneScaleY") .SetGetter("getBoneScaleY"); expressions["BoneScaleY"].SetFunctionName("getBoneScaleY"); actions["SkeletonObject::ResetBone"].SetFunctionName("resetBone"); // Slot instructions actions["SkeletonObject::SetSlotColor"].SetFunctionName("setSlotColor"); conditions["SkeletonObject::SlotVisible"].SetFunctionName("isSlotVisible"); actions["SkeletonObject::ShowSlot"].SetFunctionName("setSlotVisible"); actions["SkeletonObject::HideSlot"].SetFunctionName("setSlotVisible"); conditions["SkeletonObject::SlotZOrder"].SetFunctionName("getSlotZOrder"); actions["SkeletonObject::SetSlotZOrder"] .SetFunctionName("setSlotZOrder") .SetGetter("getSlotZOrder"); expressions["SlotZOrder"].SetFunctionName("getSlotZOrder"); conditions["SkeletonObject::PointInsideSlot"].SetFunctionName( "isPointInsideSlot"); // Extension instructions GetAllConditions()["SkeletonObject::SlotCollidesWithObject"] .SetFunctionName("gdjs.sk.slotObjectCollision"); GetAllConditions()["SkeletonObject::SlotCollidesWithSlot"].SetFunctionName( "gdjs.sk.slotSlotCollision"); GetAllConditions()["SkeletonObject::RaycastSlot"].SetFunctionName( "gdjs.sk.raycastSlot"); GD_COMPLETE_EXTENSION_COMPILATION_INFORMATION(); }; }; #if defined(EMSCRIPTEN) extern "C" gd::PlatformExtension* CreateGDJSSkeletonObjectExtension() { return new SkeletonObjectJsExtension; } #else /** * Used by GDevelop to create the extension class * -- Do not need to be modified. -- */ extern "C" gd::PlatformExtension* GD_EXTENSION_API CreateGDJSExtension() { return new SkeletonObjectJsExtension; } #endif #endif