Added gem template for custom tool in C++.

Signed-off-by: Chris Galvan <chgalvan@amazon.com>
monroegm-disable-blank-issue-2
Chris Galvan 4 years ago
parent f7e2d07a4b
commit f83c8bcb5a

@ -0,0 +1,22 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
set(o3de_gem_path ${CMAKE_CURRENT_LIST_DIR})
set(o3de_gem_json ${o3de_gem_path}/gem.json)
o3de_read_json_key(o3de_gem_name ${o3de_gem_json} "gem_name")
o3de_restricted_path(${o3de_gem_json} o3de_gem_restricted_path)
ly_get_list_relative_pal_filename(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME} "${o3de_gem_restricted_path}" ${o3de_gem_path} ${o3de_gem_name})
# Now that we have the platform abstraction layer (PAL) folder for this folder, thats where we will find the
# project cmake for this platform.
include(${pal_dir}/${PAL_PLATFORM_NAME_LOWERCASE}_gem.cmake)
ly_add_external_target_path(${CMAKE_CURRENT_LIST_DIR}/3rdParty)
add_subdirectory(Code)

@ -0,0 +1,15 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
set(FILES
Source/${Name}EditorSystemComponent.cpp
Source/${Name}EditorSystemComponent.h
Source/${Name}Widget.cpp
Source/${Name}Widget.h
Source/${Name}.qrc
)

@ -0,0 +1,11 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
set(FILES
Source/${Name}EditorModule.cpp
)

@ -0,0 +1,11 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
set(FILES
Tests/${Name}EditorTest.cpp
)

@ -0,0 +1,14 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
set(FILES
Include/${Name}/${Name}Bus.h
Source/${Name}ModuleInterface.h
Source/${Name}SystemComponent.cpp
Source/${Name}SystemComponent.h
)

@ -0,0 +1,11 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
set(FILES
Source/${Name}Module.cpp
)

@ -0,0 +1,11 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
set(FILES
Tests/${Name}Test.cpp
)

@ -0,0 +1,168 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
# Currently we are in the Code folder: ${CMAKE_CURRENT_LIST_DIR}
# Get the platform specific folder ${pal_dir} for the current folder: ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME}
# Note: ly_get_list_relative_pal_filename will take care of the details for us, as this may be a restricted platform
# in which case it will see if that platform is present here or in the restricted folder.
# i.e. It could here in our gem : Gems/${Name}/Code/Platform/<platorm_name> or
# <restricted_folder>/<platform_name>/Gems/${Name}/Code
ly_get_list_relative_pal_filename(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME} ${o3de_gem_restricted_path} ${o3de_gem_path} ${o3de_gem_name})
# Now that we have the platform abstraction layer (PAL) folder for this folder, thats where we will find the
# traits for this platform. Traits for a platform are defines for things like whether or not something in this gem
# is supported by this platform.
include(${pal_dir}/PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)
# Add the ${Name}.Static target
# Note: We include the common files and the platform specific files which are set in ${NameLower}_common_files.cmake
# and in ${pal_dir}/${NameLower}_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
ly_add_target(
NAME ${Name}.Static STATIC
NAMESPACE Gem
FILES_CMAKE
${NameLower}_files.cmake
${pal_dir}/${NameLower}_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
INCLUDE_DIRECTORIES
PUBLIC
Include
PRIVATE
Source
BUILD_DEPENDENCIES
PUBLIC
AZ::AzCore
AZ::AzFramework
)
# Here add ${Name} target, it depends on the ${Name}.Static
ly_add_target(
NAME ${Name} ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
NAMESPACE Gem
FILES_CMAKE
${NameLower}_shared_files.cmake
${pal_dir}/${NameLower}_shared_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
INCLUDE_DIRECTORIES
PUBLIC
Include
PRIVATE
Source
BUILD_DEPENDENCIES
PRIVATE
Gem::${Name}.Static
)
# By default, we will specify that the above target ${Name} would be used by
# Client and Server type targets when this gem is enabled. If you don't want it
# active in Clients or Servers by default, delete one of both of the following lines:
ly_create_alias(NAME ${Name}.Clients NAMESPACE Gem TARGETS Gem::${Name})
ly_create_alias(NAME ${Name}.Servers NAMESPACE Gem TARGETS Gem::${Name})
# If we are on a host platform, we want to add the host tools targets like the ${Name}.Editor target which
# will also depend on ${Name}.Static
if(PAL_TRAIT_BUILD_HOST_TOOLS)
ly_add_target(
NAME ${Name}.Editor.Static STATIC
NAMESPACE Gem
AUTOMOC
AUTORCC
FILES_CMAKE
${NameLower}_editor_files.cmake
INCLUDE_DIRECTORIES
PRIVATE
Source
PUBLIC
Include
BUILD_DEPENDENCIES
PUBLIC
AZ::AzToolsFramework
Gem::${Name}.Static
)
ly_add_target(
NAME ${Name}.Editor GEM_MODULE
NAMESPACE Gem
AUTOMOC
FILES_CMAKE
${NameLower}_editor_shared_files.cmake
INCLUDE_DIRECTORIES
PRIVATE
Source
PUBLIC
Include
BUILD_DEPENDENCIES
PUBLIC
Gem::${Name}.Editor.Static
)
# By default, we will specify that the above target ${Name} would be used by
# Tool and Builder type targets when this gem is enabled. If you don't want it
# active in Tools or Builders by default, delete one of both of the following lines:
ly_create_alias(NAME ${Name}.Tools NAMESPACE Gem TARGETS Gem::${Name}.Editor)
ly_create_alias(NAME ${Name}.Builders NAMESPACE Gem TARGETS Gem::${Name}.Editor)
endif()
################################################################################
# Tests
################################################################################
# See if globally, tests are supported
if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
# We globally support tests, see if we support tests on this platform for ${Name}.Static
if(PAL_TRAIT_${NameUpper}_TEST_SUPPORTED)
# We support ${Name}.Tests on this platform, add ${Name}.Tests target which depends on ${Name}.Static
ly_add_target(
NAME ${Name}.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
NAMESPACE Gem
FILES_CMAKE
${NameLower}_files.cmake
${NameLower}_tests_files.cmake
INCLUDE_DIRECTORIES
PRIVATE
Tests
Source
BUILD_DEPENDENCIES
PRIVATE
AZ::AzTest
AZ::AzFramework
Gem::${Name}.Static
)
# Add ${Name}.Tests to googletest
ly_add_googletest(
NAME Gem::${Name}.Tests
)
endif()
# If we are a host platform we want to add tools test like editor tests here
if(PAL_TRAIT_BUILD_HOST_TOOLS)
# We are a host platform, see if Editor tests are supported on this platform
if(PAL_TRAIT_${NameUpper}_EDITOR_TEST_SUPPORTED)
# We support ${Name}.Editor.Tests on this platform, add ${Name}.Editor.Tests target which depends on ${Name}.Editor
ly_add_target(
NAME ${Name}.Editor.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
NAMESPACE Gem
FILES_CMAKE
${NameLower}_editor_tests_files.cmake
INCLUDE_DIRECTORIES
PRIVATE
Tests
Source
BUILD_DEPENDENCIES
PRIVATE
AZ::AzTest
Gem::${Name}.Editor
)
# Add ${Name}.Editor.Tests to googletest
ly_add_googletest(
NAME Gem::${Name}.Editor.Tests
)
endif()
endif()
endif()

@ -0,0 +1,40 @@
// {BEGIN_LICENSE}
/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
// {END_LICENSE}
#pragma once
#include <AzCore/EBus/EBus.h>
#include <AzCore/Interface/Interface.h>
namespace ${SanitizedCppName}
{
class ${SanitizedCppName}Requests
{
public:
AZ_RTTI(${SanitizedCppName}Requests, "{${Random_Uuid}}");
virtual ~${SanitizedCppName}Requests() = default;
// Put your public methods here
};
class ${SanitizedCppName}BusTraits
: public AZ::EBusTraits
{
public:
//////////////////////////////////////////////////////////////////////////
// EBusTraits overrides
static constexpr AZ::EBusHandlerPolicy HandlerPolicy = AZ::EBusHandlerPolicy::Single;
static constexpr AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::Single;
//////////////////////////////////////////////////////////////////////////
};
using ${SanitizedCppName}RequestBus = AZ::EBus<${SanitizedCppName}Requests, ${SanitizedCppName}BusTraits>;
using ${SanitizedCppName}Interface = AZ::Interface<${SanitizedCppName}Requests>;
} // namespace ${SanitizedCppName}

@ -0,0 +1,15 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
# Platform specific files for Android
# i.e. ../Source/Android/${Name}Android.cpp
# ../Source/Android/${Name}Android.h
# ../Include/Android/${Name}Android.h
set(FILES
)

@ -0,0 +1,15 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
# Platform specific files for Android
# i.e. ../Source/Android/${Name}Android.cpp
# ../Source/Android/${Name}Android.h
# ../Include/Android/${Name}Android.h
set(FILES
)

@ -0,0 +1,11 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
set(PAL_TRAIT_${NameUpper}_SUPPORTED TRUE)
set(PAL_TRAIT_${NameUpper}_TEST_SUPPORTED TRUE)
set(PAL_TRAIT_${NameUpper}_EDITOR_TEST_SUPPORTED TRUE)

@ -0,0 +1,15 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
# Platform specific files for Linux
# i.e. ../Source/Linux/${Name}Linux.cpp
# ../Source/Linux/${Name}Linux.h
# ../Include/Linux/${Name}Linux.h
set(FILES
)

@ -0,0 +1,15 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
# Platform specific files for Linux
# i.e. ../Source/Linux/${Name}Linux.cpp
# ../Source/Linux/${Name}Linux.h
# ../Include/Linux/${Name}Linux.h
set(FILES
)

@ -0,0 +1,11 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
set(PAL_TRAIT_${NameUpper}_SUPPORTED TRUE)
set(PAL_TRAIT_${NameUpper}_TEST_SUPPORTED TRUE)
set(PAL_TRAIT_${NameUpper}_EDITOR_TEST_SUPPORTED TRUE)

@ -0,0 +1,15 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
# Platform specific files for Mac
# i.e. ../Source/Mac/${Name}Mac.cpp
# ../Source/Mac/${Name}Mac.h
# ../Include/Mac/${Name}Mac.h
set(FILES
)

@ -0,0 +1,15 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
# Platform specific files for Mac
# i.e. ../Source/Mac/${Name}Mac.cpp
# ../Source/Mac/${Name}Mac.h
# ../Include/Mac/${Name}Mac.h
set(FILES
)

@ -0,0 +1,11 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
set(PAL_TRAIT_${NameUpper}_SUPPORTED TRUE)
set(PAL_TRAIT_${NameUpper}_TEST_SUPPORTED TRUE)
set(PAL_TRAIT_${NameUpper}_EDITOR_TEST_SUPPORTED TRUE)

@ -0,0 +1,15 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
# Platform specific files for Windows
# i.e. ../Source/Windows/${Name}Windows.cpp
# ../Source/Windows/${Name}Windows.h
# ../Include/Windows/${Name}Windows.h
set(FILES
)

@ -0,0 +1,15 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
# Platform specific files for Windows
# i.e. ../Source/Windows/${Name}Windows.cpp
# ../Source/Windows/${Name}Windows.h
# ../Include/Windows/${Name}Windows.h
set(FILES
)

@ -0,0 +1,11 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
set(PAL_TRAIT_${NameUpper}_SUPPORTED TRUE)
set(PAL_TRAIT_${NameUpper}_TEST_SUPPORTED TRUE)
set(PAL_TRAIT_${NameUpper}_EDITOR_TEST_SUPPORTED TRUE)

@ -0,0 +1,15 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
# Platform specific files for iOS
# i.e. ../Source/iOS/${Name}iOS.cpp
# ../Source/iOS/${Name}iOS.h
# ../Include/iOS/${Name}iOS.h
set(FILES
)

@ -0,0 +1,15 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
# Platform specific files for iOS
# i.e. ../Source/iOS/${Name}iOS.cpp
# ../Source/iOS/${Name}iOS.h
# ../Include/iOS/${Name}iOS.h
set(FILES
)

@ -0,0 +1,11 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}
set(PAL_TRAIT_${NameUpper}_SUPPORTED TRUE)
set(PAL_TRAIT_${NameUpper}_TEST_SUPPORTED TRUE)
set(PAL_TRAIT_${NameUpper}_EDITOR_TEST_SUPPORTED TRUE)

@ -0,0 +1,5 @@
<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="/${Name}">
<file alias="toolbar_icon.svg">toolbar_icon.svg</file>
</qresource>
</RCC>

@ -0,0 +1,55 @@
// {BEGIN_LICENSE}
/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
// {END_LICENSE}
#include <${Name}ModuleInterface.h>
#include <${Name}EditorSystemComponent.h>
void Init${SanitizedCppName}Resources()
{
// We must register our Qt resources (.qrc file) since this is being loaded from a separate module (gem)
Q_INIT_RESOURCE(${SanitizedCppName});
}
namespace ${SanitizedCppName}
{
class ${SanitizedCppName}EditorModule
: public ${SanitizedCppName}ModuleInterface
{
public:
AZ_RTTI(${SanitizedCppName}EditorModule, "${ModuleClassId}", ${SanitizedCppName}ModuleInterface);
AZ_CLASS_ALLOCATOR(${SanitizedCppName}EditorModule, AZ::SystemAllocator, 0);
${SanitizedCppName}EditorModule()
{
Init${SanitizedCppName}Resources();
// Push results of [MyComponent]::CreateDescriptor() into m_descriptors here.
// Add ALL components descriptors associated with this gem to m_descriptors.
// This will associate the AzTypeInfo information for the components with the the SerializeContext, BehaviorContext and EditContext.
// This happens through the [MyComponent]::Reflect() function.
m_descriptors.insert(m_descriptors.end(), {
${SanitizedCppName}EditorSystemComponent::CreateDescriptor(),
});
}
/**
* Add required SystemComponents to the SystemEntity.
* Non-SystemComponents should not be added here
*/
AZ::ComponentTypeList GetRequiredSystemComponents() const override
{
return AZ::ComponentTypeList {
azrtti_typeid<${SanitizedCppName}EditorSystemComponent>(),
};
}
};
}// namespace ${SanitizedCppName}
AZ_DECLARE_MODULE_CLASS(Gem_${SanitizedCppName}, ${SanitizedCppName}::${SanitizedCppName}EditorModule)

@ -0,0 +1,78 @@
// {BEGIN_LICENSE}
/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
// {END_LICENSE}
#include <AzCore/Serialization/SerializeContext.h>
#include <AzToolsFramework/API/ViewPaneOptions.h>
#include <${Name}Widget.h>
#include <${Name}EditorSystemComponent.h>
namespace ${SanitizedCppName}
{
void ${SanitizedCppName}EditorSystemComponent::Reflect(AZ::ReflectContext* context)
{
if (auto serializeContext = azrtti_cast<AZ::SerializeContext*>(context))
{
serializeContext->Class<${SanitizedCppName}EditorSystemComponent, ${SanitizedCppName}SystemComponent>()
->Version(0);
}
}
${SanitizedCppName}EditorSystemComponent::${SanitizedCppName}EditorSystemComponent() = default;
${SanitizedCppName}EditorSystemComponent::~${SanitizedCppName}EditorSystemComponent() = default;
void ${SanitizedCppName}EditorSystemComponent::GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided)
{
BaseSystemComponent::GetProvidedServices(provided);
provided.push_back(AZ_CRC_CE("${SanitizedCppName}EditorService"));
}
void ${SanitizedCppName}EditorSystemComponent::GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible)
{
BaseSystemComponent::GetIncompatibleServices(incompatible);
incompatible.push_back(AZ_CRC_CE("${SanitizedCppName}EditorService"));
}
void ${SanitizedCppName}EditorSystemComponent::GetRequiredServices([[maybe_unused]] AZ::ComponentDescriptor::DependencyArrayType& required)
{
BaseSystemComponent::GetRequiredServices(required);
}
void ${SanitizedCppName}EditorSystemComponent::GetDependentServices([[maybe_unused]] AZ::ComponentDescriptor::DependencyArrayType& dependent)
{
BaseSystemComponent::GetDependentServices(dependent);
}
void ${SanitizedCppName}EditorSystemComponent::Activate()
{
${SanitizedCppName}SystemComponent::Activate();
AzToolsFramework::EditorEvents::Bus::Handler::BusConnect();
}
void ${SanitizedCppName}EditorSystemComponent::Deactivate()
{
AzToolsFramework::EditorEvents::Bus::Handler::BusDisconnect();
${SanitizedCppName}SystemComponent::Deactivate();
}
void ${SanitizedCppName}EditorSystemComponent::NotifyRegisterViews()
{
AzToolsFramework::ViewPaneOptions options;
options.paneRect = QRect(100, 100, 500, 400);
options.showOnToolsToolbar = true;
options.toolbarIcon = ":/${Name}/toolbar_icon.svg";
// Register our custom widget as a dockable tool with the Editor
AzToolsFramework::RegisterViewPane<${SanitizedCppName}Widget>("${Name}", "Tools", options);
}
} // namespace ${SanitizedCppName}

@ -0,0 +1,45 @@
// {BEGIN_LICENSE}
/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
// {END_LICENSE}
#pragma once
#include <${Name}SystemComponent.h>
#include <AzToolsFramework/Entity/EditorEntityContextBus.h>
namespace ${SanitizedCppName}
{
/// System component for ${SanitizedCppName} editor
class ${SanitizedCppName}EditorSystemComponent
: public ${SanitizedCppName}SystemComponent
, private AzToolsFramework::EditorEvents::Bus::Handler
{
using BaseSystemComponent = ${SanitizedCppName}SystemComponent;
public:
AZ_COMPONENT(${SanitizedCppName}EditorSystemComponent, "${EditorSysCompClassId}", BaseSystemComponent);
static void Reflect(AZ::ReflectContext* context);
${SanitizedCppName}EditorSystemComponent();
~${SanitizedCppName}EditorSystemComponent();
private:
static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided);
static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible);
static void GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required);
static void GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent);
// AZ::Component
void Activate() override;
void Deactivate() override;
// AzToolsFramework::EditorEventsBus overrides ...
void NotifyRegisterViews() override;
};
} // namespace ${SanitizedCppName}

@ -0,0 +1,25 @@
// {BEGIN_LICENSE}
/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
// {END_LICENSE}
#include <${Name}ModuleInterface.h>
#include <${Name}SystemComponent.h>
namespace ${SanitizedCppName}
{
class ${SanitizedCppName}Module
: public ${SanitizedCppName}ModuleInterface
{
public:
AZ_RTTI(${SanitizedCppName}Module, "${ModuleClassId}", ${SanitizedCppName}ModuleInterface);
AZ_CLASS_ALLOCATOR(${SanitizedCppName}Module, AZ::SystemAllocator, 0);
};
}// namespace ${SanitizedCppName}
AZ_DECLARE_MODULE_CLASS(Gem_${SanitizedCppName}, ${SanitizedCppName}::${SanitizedCppName}Module)

@ -0,0 +1,45 @@
// {BEGIN_LICENSE}
/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
// {END_LICENSE}
#include <AzCore/Memory/SystemAllocator.h>
#include <AzCore/Module/Module.h>
#include <${Name}SystemComponent.h>
namespace ${SanitizedCppName}
{
class ${SanitizedCppName}ModuleInterface
: public AZ::Module
{
public:
AZ_RTTI(${SanitizedCppName}ModuleInterface, "{${Random_Uuid}}", AZ::Module);
AZ_CLASS_ALLOCATOR(${SanitizedCppName}ModuleInterface, AZ::SystemAllocator, 0);
${SanitizedCppName}ModuleInterface()
{
// Push results of [MyComponent]::CreateDescriptor() into m_descriptors here.
// Add ALL components descriptors associated with this gem to m_descriptors.
// This will associate the AzTypeInfo information for the components with the the SerializeContext, BehaviorContext and EditContext.
// This happens through the [MyComponent]::Reflect() function.
m_descriptors.insert(m_descriptors.end(), {
${SanitizedCppName}SystemComponent::CreateDescriptor(),
});
}
/**
* Add required SystemComponents to the SystemEntity.
*/
AZ::ComponentTypeList GetRequiredSystemComponents() const override
{
return AZ::ComponentTypeList{
azrtti_typeid<${SanitizedCppName}SystemComponent>(),
};
}
};
}// namespace ${SanitizedCppName}

@ -0,0 +1,92 @@
// {BEGIN_LICENSE}
/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
// {END_LICENSE}
#include <${Name}SystemComponent.h>
#include <AzCore/Serialization/SerializeContext.h>
#include <AzCore/Serialization/EditContext.h>
#include <AzCore/Serialization/EditContextConstants.inl>
namespace ${SanitizedCppName}
{
void ${SanitizedCppName}SystemComponent::Reflect(AZ::ReflectContext* context)
{
if (AZ::SerializeContext* serialize = azrtti_cast<AZ::SerializeContext*>(context))
{
serialize->Class<${SanitizedCppName}SystemComponent, AZ::Component>()
->Version(0)
;
if (AZ::EditContext* ec = serialize->GetEditContext())
{
ec->Class<${SanitizedCppName}SystemComponent>("${SanitizedCppName}", "[Description of functionality provided by this System Component]")
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("System"))
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
;
}
}
}
void ${SanitizedCppName}SystemComponent::GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided)
{
provided.push_back(AZ_CRC_CE("${SanitizedCppName}Service"));
}
void ${SanitizedCppName}SystemComponent::GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible)
{
incompatible.push_back(AZ_CRC_CE("${SanitizedCppName}Service"));
}
void ${SanitizedCppName}SystemComponent::GetRequiredServices([[maybe_unused]] AZ::ComponentDescriptor::DependencyArrayType& required)
{
}
void ${SanitizedCppName}SystemComponent::GetDependentServices([[maybe_unused]] AZ::ComponentDescriptor::DependencyArrayType& dependent)
{
}
${SanitizedCppName}SystemComponent::${SanitizedCppName}SystemComponent()
{
if (${SanitizedCppName}Interface::Get() == nullptr)
{
${SanitizedCppName}Interface::Register(this);
}
}
${SanitizedCppName}SystemComponent::~${SanitizedCppName}SystemComponent()
{
if (${SanitizedCppName}Interface::Get() == this)
{
${SanitizedCppName}Interface::Unregister(this);
}
}
void ${SanitizedCppName}SystemComponent::Init()
{
}
void ${SanitizedCppName}SystemComponent::Activate()
{
${SanitizedCppName}RequestBus::Handler::BusConnect();
AZ::TickBus::Handler::BusConnect();
}
void ${SanitizedCppName}SystemComponent::Deactivate()
{
AZ::TickBus::Handler::BusDisconnect();
${SanitizedCppName}RequestBus::Handler::BusDisconnect();
}
void ${SanitizedCppName}SystemComponent::OnTick([[maybe_unused]] float deltaTime, [[maybe_unused]] AZ::ScriptTimePoint time)
{
}
} // namespace ${SanitizedCppName}

@ -0,0 +1,56 @@
// {BEGIN_LICENSE}
/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
// {END_LICENSE}
#pragma once
#include <AzCore/Component/Component.h>
#include <AzCore/Component/TickBus.h>
#include <${Name}/${Name}Bus.h>
namespace ${SanitizedCppName}
{
class ${SanitizedCppName}SystemComponent
: public AZ::Component
, protected ${SanitizedCppName}RequestBus::Handler
, public AZ::TickBus::Handler
{
public:
AZ_COMPONENT(${SanitizedCppName}SystemComponent, "${SysCompClassId}");
static void Reflect(AZ::ReflectContext* context);
static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided);
static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible);
static void GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required);
static void GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent);
${SanitizedCppName}SystemComponent();
~${SanitizedCppName}SystemComponent();
protected:
////////////////////////////////////////////////////////////////////////
// ${SanitizedCppName}RequestBus interface implementation
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
// AZ::Component interface implementation
void Init() override;
void Activate() override;
void Deactivate() override;
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
// AZTickBus interface implementation
void OnTick(float deltaTime, AZ::ScriptTimePoint time) override;
////////////////////////////////////////////////////////////////////////
};
} // namespace ${SanitizedCppName}

@ -0,0 +1,44 @@
// {BEGIN_LICENSE}
/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
// {END_LICENSE}
#include <AzCore/Utils/Utils.h>
#include <QLabel>
#include <QVBoxLayout>
#include <${Name}Widget.h>
namespace ${SanitizedCppName}
{
${SanitizedCppName}Widget::${SanitizedCppName}Widget(QWidget* parent)
: QWidget(parent)
{
setWindowTitle(QObject::tr("${Name}"));
QVBoxLayout* mainLayout = new QVBoxLayout(this);
QLabel* introLabel = new QLabel(QObject::tr("Put your cool stuff here!"), this);
mainLayout->addWidget(introLabel, 0, Qt::AlignCenter);
QString helpText = QString(
"For help getting started, visit the <a href=\"https://o3de.org/docs/tools-ui/ui-dev-intro/\">UI Development</a> documentation<br/>or come ask a question in the <a href=\"https://discord.gg/R77Wss3kHe\">sig-ui-ux channel</a> on Discord");
QLabel* helpLabel = new QLabel(this);
helpLabel->setTextFormat(Qt::RichText);
helpLabel->setText(helpText);
helpLabel->setOpenExternalLinks(true);
mainLayout->addWidget(helpLabel, 0, Qt::AlignCenter);
setLayout(mainLayout);
}
}
#include <moc_${Name}Widget.cpp>

@ -0,0 +1,28 @@
// {BEGIN_LICENSE}
/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
// {END_LICENSE}
#pragma once
#if !defined(Q_MOC_RUN)
#include <AzToolsFramework/API/ToolsApplicationAPI.h>
#include <QWidget>
#endif
namespace ${SanitizedCppName}
{
class ${SanitizedCppName}Widget
: public QWidget
{
Q_OBJECT
public:
explicit ${SanitizedCppName}Widget(QWidget* parent = nullptr);
};
}

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="#FFFFFF"><g><rect fill="none" height="24" width="24"/><path d="M19,3H5C3.89,3,3,3.9,3,5v14c0,1.1,0.89,2,2,2h14c1.1,0,2-0.9,2-2V5C21,3.9,20.11,3,19,3z M19,19H5V7h14V19z M13.5,13 c0,0.83-0.67,1.5-1.5,1.5s-1.5-0.67-1.5-1.5c0-0.83,0.67-1.5,1.5-1.5S13.5,12.17,13.5,13z M12,9c-2.73,0-5.06,1.66-6,4 c0.94,2.34,3.27,4,6,4s5.06-1.66,6-4C17.06,10.66,14.73,9,12,9z M12,15.5c-1.38,0-2.5-1.12-2.5-2.5c0-1.38,1.12-2.5,2.5-2.5 c1.38,0,2.5,1.12,2.5,2.5C14.5,14.38,13.38,15.5,12,15.5z"/></g></svg>

After

Width:  |  Height:  |  Size: 607 B

@ -0,0 +1,13 @@
// {BEGIN_LICENSE}
/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
// {END_LICENSE}
#include <AzTest/AzTest.h>
AZ_UNIT_TEST_HOOK(DEFAULT_UNIT_TEST_ENV);

@ -0,0 +1,13 @@
// {BEGIN_LICENSE}
/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
// {END_LICENSE}
#include <AzTest/AzTest.h>
AZ_UNIT_TEST_HOOK(DEFAULT_UNIT_TEST_ENV);

@ -0,0 +1,8 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}

@ -0,0 +1,8 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}

@ -0,0 +1,8 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}

@ -0,0 +1,8 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}

@ -0,0 +1,8 @@
# {BEGIN_LICENSE}
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# {END_LICENSE}

@ -0,0 +1,17 @@
{
"gem_name": "${Name}",
"display_name": "${Name}",
"license": "What license ${Name} uses goes here: i.e. https://opensource.org/licenses/MIT",
"origin": "The primary repo for ${Name} goes here: i.e. http://www.mydomain.com",
"type": "Code",
"summary": "A short description of ${Name}.",
"canonical_tags": [
"Gem"
],
"user_tags": [
"${Name}"
],
"icon_path": "preview.png",
"requirements": "",
"restricted_name": "gems"
}

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7ac9dd09bde78f389e3725ac49d61eff109857e004840bc0bc3881739df9618d
size 2217

@ -0,0 +1,382 @@
{
"template_name": "CustomTool",
"origin": "The primary repo for CustomTool goes here: i.e. http://www.mydomain.com",
"license": "What license CustomTool uses goes here: i.e. https://opensource.org/licenses/MIT",
"display_name": "CustomTool",
"summary": "A gem template for a custom tool in C++ that gets registered with the Editor.",
"canonical_tags": [],
"user_tags": [
"CustomTool"
],
"icon_path": "preview.png",
"copyFiles": [
{
"file": "CMakeLists.txt",
"origin": "CMakeLists.txt",
"isTemplated": false,
"isOptional": false
},
{
"file": "Code/${NameLower}_editor_files.cmake",
"origin": "Code/${NameLower}_editor_files.cmake",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/${NameLower}_editor_shared_files.cmake",
"origin": "Code/${NameLower}_editor_shared_files.cmake",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/${NameLower}_editor_tests_files.cmake",
"origin": "Code/${NameLower}_editor_tests_files.cmake",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/${NameLower}_files.cmake",
"origin": "Code/${NameLower}_files.cmake",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/${NameLower}_shared_files.cmake",
"origin": "Code/${NameLower}_shared_files.cmake",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/${NameLower}_tests_files.cmake",
"origin": "Code/${NameLower}_tests_files.cmake",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/CMakeLists.txt",
"origin": "Code/CMakeLists.txt",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Include/${Name}/${Name}Bus.h",
"origin": "Code/Include/${Name}/${Name}Bus.h",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Platform/Android/${NameLower}_android_files.cmake",
"origin": "Code/Platform/Android/${NameLower}_android_files.cmake",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Platform/Android/${NameLower}_shared_android_files.cmake",
"origin": "Code/Platform/Android/${NameLower}_shared_android_files.cmake",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Platform/Android/PAL_android.cmake",
"origin": "Code/Platform/Android/PAL_android.cmake",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Platform/Linux/${NameLower}_linux_files.cmake",
"origin": "Code/Platform/Linux/${NameLower}_linux_files.cmake",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Platform/Linux/${NameLower}_shared_linux_files.cmake",
"origin": "Code/Platform/Linux/${NameLower}_shared_linux_files.cmake",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Platform/Linux/PAL_linux.cmake",
"origin": "Code/Platform/Linux/PAL_linux.cmake",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Platform/Mac/${NameLower}_mac_files.cmake",
"origin": "Code/Platform/Mac/${NameLower}_mac_files.cmake",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Platform/Mac/${NameLower}_shared_mac_files.cmake",
"origin": "Code/Platform/Mac/${NameLower}_shared_mac_files.cmake",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Platform/Mac/PAL_mac.cmake",
"origin": "Code/Platform/Mac/PAL_mac.cmake",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Platform/Windows/${NameLower}_shared_windows_files.cmake",
"origin": "Code/Platform/Windows/${NameLower}_shared_windows_files.cmake",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Platform/Windows/${NameLower}_windows_files.cmake",
"origin": "Code/Platform/Windows/${NameLower}_windows_files.cmake",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Platform/Windows/PAL_windows.cmake",
"origin": "Code/Platform/Windows/PAL_windows.cmake",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Platform/iOS/${NameLower}_ios_files.cmake",
"origin": "Code/Platform/iOS/${NameLower}_ios_files.cmake",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Platform/iOS/${NameLower}_shared_ios_files.cmake",
"origin": "Code/Platform/iOS/${NameLower}_shared_ios_files.cmake",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Platform/iOS/PAL_ios.cmake",
"origin": "Code/Platform/iOS/PAL_ios.cmake",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Source/${Name}.qrc",
"origin": "Code/Source/${Name}.qrc",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Source/${Name}EditorModule.cpp",
"origin": "Code/Source/${Name}EditorModule.cpp",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Source/${Name}EditorSystemComponent.cpp",
"origin": "Code/Source/${Name}EditorSystemComponent.cpp",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Source/${Name}EditorSystemComponent.h",
"origin": "Code/Source/${Name}EditorSystemComponent.h",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Source/${Name}Module.cpp",
"origin": "Code/Source/${Name}Module.cpp",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Source/${Name}ModuleInterface.h",
"origin": "Code/Source/${Name}ModuleInterface.h",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Source/${Name}SystemComponent.cpp",
"origin": "Code/Source/${Name}SystemComponent.cpp",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Source/${Name}SystemComponent.h",
"origin": "Code/Source/${Name}SystemComponent.h",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Source/${Name}Widget.cpp",
"origin": "Code/Source/${Name}Widget.cpp",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Source/${Name}Widget.h",
"origin": "Code/Source/${Name}Widget.h",
"isTemplated": true,
"isOptional": false
},
{
"file": "Code/Source/toolbar_icon.svg",
"origin": "Code/Source/toolbar_icon.svg",
"isTemplated": false,
"isOptional": false
},
{
"file": "Code/Tests/${Name}EditorTest.cpp",
"origin": "Code/Tests/${Name}EditorTest.cpp",
"isTemplated": false,
"isOptional": false
},
{
"file": "Code/Tests/${Name}Test.cpp",
"origin": "Code/Tests/${Name}Test.cpp",
"isTemplated": false,
"isOptional": false
},
{
"file": "Platform/Android/android_gem.cmake",
"origin": "Platform/Android/android_gem.cmake",
"isTemplated": false,
"isOptional": false
},
{
"file": "Platform/Android/android_gem.json",
"origin": "Platform/Android/android_gem.json",
"isTemplated": false,
"isOptional": false
},
{
"file": "Platform/Linux/linux_gem.cmake",
"origin": "Platform/Linux/linux_gem.cmake",
"isTemplated": false,
"isOptional": false
},
{
"file": "Platform/Linux/linux_gem.json",
"origin": "Platform/Linux/linux_gem.json",
"isTemplated": false,
"isOptional": false
},
{
"file": "Platform/Mac/mac_gem.cmake",
"origin": "Platform/Mac/mac_gem.cmake",
"isTemplated": false,
"isOptional": false
},
{
"file": "Platform/Mac/mac_gem.json",
"origin": "Platform/Mac/mac_gem.json",
"isTemplated": false,
"isOptional": false
},
{
"file": "Platform/Windows/windows_gem.cmake",
"origin": "Platform/Windows/windows_gem.cmake",
"isTemplated": false,
"isOptional": false
},
{
"file": "Platform/Windows/windows_gem.json",
"origin": "Platform/Windows/windows_gem.json",
"isTemplated": false,
"isOptional": false
},
{
"file": "Platform/iOS/ios_gem.cmake",
"origin": "Platform/iOS/ios_gem.cmake",
"isTemplated": false,
"isOptional": false
},
{
"file": "Platform/iOS/ios_gem.json",
"origin": "Platform/iOS/ios_gem.json",
"isTemplated": false,
"isOptional": false
},
{
"file": "gem.json",
"origin": "gem.json",
"isTemplated": true,
"isOptional": false
},
{
"file": "preview.png",
"origin": "preview.png",
"isTemplated": false,
"isOptional": false
}
],
"createDirectories": [
{
"dir": "Assets",
"origin": "Assets"
},
{
"dir": "Code",
"origin": "Code"
},
{
"dir": "Code/Include",
"origin": "Code/Include"
},
{
"dir": "Code/Include/${Name}",
"origin": "Code/Include/${Name}"
},
{
"dir": "Code/Platform",
"origin": "Code/Platform"
},
{
"dir": "Code/Platform/Android",
"origin": "Code/Platform/Android"
},
{
"dir": "Code/Platform/Linux",
"origin": "Code/Platform/Linux"
},
{
"dir": "Code/Platform/Mac",
"origin": "Code/Platform/Mac"
},
{
"dir": "Code/Platform/Windows",
"origin": "Code/Platform/Windows"
},
{
"dir": "Code/Platform/iOS",
"origin": "Code/Platform/iOS"
},
{
"dir": "Code/Source",
"origin": "Code/Source"
},
{
"dir": "Code/Tests",
"origin": "Code/Tests"
},
{
"dir": "Platform",
"origin": "Platform"
},
{
"dir": "Platform/Android",
"origin": "Platform/Android"
},
{
"dir": "Platform/Linux",
"origin": "Platform/Linux"
},
{
"dir": "Platform/Mac",
"origin": "Platform/Mac"
},
{
"dir": "Platform/Windows",
"origin": "Platform/Windows"
},
{
"dir": "Platform/iOS",
"origin": "Platform/iOS"
}
]
}

@ -92,6 +92,7 @@
"templates": [
"Templates/AssetGem",
"Templates/DefaultGem",
"Templates/CustomTool",
"Templates/DefaultProject",
"Templates/MinimalProject"
]

Loading…
Cancel
Save