Skip to content

Commit 49d4e18

Browse files
committed
SliderControl, AnimateHueEffect, ModelColor, RendererTool, Improvements
1 parent f4b17cf commit 49d4e18

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+1092
-112
lines changed

Kaiju/Xcode/Kaiju/Kaiju/SDLTest.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ class TestWorld : public SDLWorld {
7272
continue;
7373
}
7474

75-
auto pointerDownEvent = dynamic_pointer_cast<PointerDownUIEvent<ScreenPosition>>(event);
75+
auto pointerDownEvent = DCAST<PointerDownUIEvent<ScreenPosition>>(event);
7676
if (pointerDownEvent) {
7777
cout << "Pointer down at: " << pointerDownEvent->pressPosition.position.x << ", " << pointerDownEvent->pressPosition.position.y << "\n";
7878
}
@@ -157,7 +157,7 @@ void SDLFoo() {
157157

158158
auto sliceTexture = DCAST<GLTexture>(window->World()->loadedResources->map["texture"]["example-button-normal"].resource);
159159
TestSlicedSpriteScene testSlicedSpriteScene(sliceTexture);
160-
testSlicedSpriteScene.LoadInto(*window->World());
160+
// testSlicedSpriteScene.LoadInto(*window->World());
161161

162162
window->World()->Go();
163163
window->World()->Run();

Kaiju/Xcode/Kaiju/Kaiju/Scenes/Test/TestTextureScene.h

Lines changed: 90 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -37,59 +37,101 @@ class TestTextureScene : public Scene {
3737
void LoadInto(World& world) {
3838
if (nullptr == texture) { return; }
3939

40-
auto meshNode = MAKE<WorldNode>();
41-
// auto renderer = MAKE<MeshRenderer>();
42-
// meshNode->AddComponent(renderer);
43-
44-
auto renderer = MAKE<SpriteRenderer>(texture);
45-
meshNode->AddComponent(renderer);
46-
47-
// auto material = MAKE<RenderMaterial>();
48-
auto material = renderer->material;
49-
50-
auto program = GLShaderProgram::registry["texture.uniform"];//texture.interp.uniform"]; //"texture.uniform"
51-
if (program) {
52-
material->shaderProgram = program;
53-
// material->textures.Add(RenderTexture(texture->glId));
54-
55-
// material->colors.Add(Color::white);
56-
// material->colors.Add(Color::red);
57-
// material->colors.Add(Color::white);
58-
// material->colors.Add(Color::red);
59-
60-
// material->uniformColors.Add(Color::blue);
61-
// material->uniformFloats.Add(0);//0.5f);
62-
63-
material->features[RenderFeatures::Blend] = RenderFeatureStatus::Enable;
64-
65-
// QuadRenderMeshBuilder builder(Vector2(400, 400));
66-
// auto renderMesh = builder.BuildRenderMesh();
67-
// meshRenderer->material = material;
68-
// meshRenderer->mesh = renderMesh;
69-
}
70-
meshNode->transform->SetWorldPosition(Vector3(200, 0, -0.2f));
71-
// meshNode->transform->scale.x = 10.0f;
72-
// meshNode->transform->scale.y = 10.0f;
73-
// renderer->flipX = true;
74-
// renderer->flipY = true;
40+
{
41+
auto sliceTexture = DCAST<GLTexture>(world.loadedResources->map["texture"]["slider-track"].resource);
42+
43+
auto trackNode = MAKE<WorldNode>();
44+
std::array<Vector2Int, 2> slicePoints{Vector2Int(12, 12), Vector2Int(12, 12)};
45+
auto trackRenderer = MAKE<SlicedTextureRenderer>(sliceTexture, Vector2(300, 33), slicePoints);
46+
trackNode->AddComponent(trackRenderer);
47+
48+
auto trackMaterial = trackRenderer->material;
49+
trackMaterial->shaderProgram = GLShaderProgram::registry["texture.uniform"];
50+
trackMaterial->features[RenderFeatures::Blend] = RenderFeatureStatus::Enable;
51+
52+
auto animateHueEffect = MAKE<AnimateHueEffect>();
53+
animateHueEffect->SetIsOn(true);
7554

76-
// meshNode->SetActive(false);
55+
auto thumbTexture = DCAST<GLTexture>(world.loadedResources->map["texture"]["slider-thumb"].resource);
56+
auto thumbNode = MAKE<WorldNode>();
57+
auto thumbRenderer = MAKE<SpriteRenderer>(thumbTexture);
58+
thumbNode->AddComponent(thumbRenderer);
7759

78-
// auto uiSystem = MAKE<UISystem>();
79-
// world.AddComponent(uiSystem);
60+
auto thumbMaterial = thumbRenderer->material;
61+
thumbMaterial->shaderProgram = GLShaderProgram::registry["texture.uniform"];
62+
thumbMaterial->features[RenderFeatures::Blend] = RenderFeatureStatus::Enable;
8063

81-
auto button = MAKE<ButtonControl>();
82-
auto ts = MAKE<TestStateHandler>();
83-
auto dragHandler = MAKE<DragHandler2D>();
64+
auto sliderControl = MAKE<SliderControl>();
65+
sliderControl->endCapSize = 10;
66+
trackNode->AddComponent(sliderControl);
67+
trackNode->AddChild(thumbNode);
8468

85-
ComponentTool ct;
86-
auto collider = std::make_shared<SimplePolygonCollider2D>();
87-
ct.AddComponent(*meshNode, collider);
88-
// ct.AddComponent(*meshNode, button);
89-
ct.AddComponent(*meshNode, dragHandler);
90-
ct.AddComponent(*meshNode, ts);
69+
ComponentTool ct;
70+
auto collider = MAKE<SimplePolygonCollider2D>();
71+
ct.AddComponent(*thumbNode, collider);
72+
ct.AddComponent(*thumbNode, animateHueEffect);
9173

92-
world.Add(meshNode);
74+
world.Add(trackNode);
75+
}
76+
77+
{
78+
auto meshNode = MAKE<WorldNode>();
79+
// auto renderer = MAKE<MeshRenderer>();
80+
// meshNode->AddComponent(renderer);
81+
82+
auto renderer = MAKE<SpriteRenderer>(texture);
83+
meshNode->AddComponent(renderer);
84+
85+
// auto material = MAKE<RenderMaterial>();
86+
auto material = renderer->material;
87+
88+
auto program = GLShaderProgram::registry["texture.uniform"];//texture.interp.uniform"]; //"texture.uniform"
89+
if (program) {
90+
material->shaderProgram = program;
91+
// material->textures.Add(RenderTexture(texture->glId));
92+
93+
// material->colors.Add(Color::white);
94+
// material->colors.Add(Color::red);
95+
// material->colors.Add(Color::white);
96+
// material->colors.Add(Color::red);
97+
98+
// material->uniformColors.Add(Color::blue);
99+
// material->uniformFloats.Add(0);//0.5f);
100+
101+
material->features[RenderFeatures::Blend] = RenderFeatureStatus::Enable;
102+
103+
// QuadRenderMeshBuilder builder(Vector2(400, 400));
104+
// auto renderMesh = builder.BuildRenderMesh();
105+
// meshRenderer->material = material;
106+
// meshRenderer->mesh = renderMesh;
107+
}
108+
meshNode->transform->SetWorldPosition(Vector3(200, 0, -0.2f));
109+
// meshNode->transform->scale.x = 10.0f;
110+
// meshNode->transform->scale.y = 10.0f;
111+
// renderer->flipX = true;
112+
// renderer->flipY = true;
113+
114+
// meshNode->SetActive(false);
115+
116+
// auto uiSystem = MAKE<UISystem>();
117+
// world.AddComponent(uiSystem);
118+
119+
auto button = MAKE<ButtonControl>();
120+
auto ts = MAKE<TestStateHandler>();
121+
auto dragHandler = MAKE<DragHandler2D>();
122+
auto animateHueEffect = MAKE<AnimateHueEffect>();
123+
animateHueEffect->SetIsOn(true);
124+
125+
ComponentTool ct;
126+
auto collider = MAKE<SimplePolygonCollider2D>();
127+
ct.AddComponent(*meshNode, collider);
128+
// ct.AddComponent(*meshNode, button);
129+
ct.AddComponent(*meshNode, dragHandler);
130+
ct.AddComponent(*meshNode, ts);
131+
// ct.AddComponent(*meshNode, animateHueEffect);
132+
133+
world.Add(meshNode);
134+
}
93135
}
94136
};
95137

455 Bytes
Loading
671 Bytes
Loading

PhaseJump/PhaseJump/Classes/Components/ComponentTool.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ using namespace std;
44
using namespace PJ;
55

66
void ComponentTool::AddComponentInternal(WorldNode& node, SP<SomeWorldComponent> component) {
7-
auto simplePolygonCollider2D = dynamic_pointer_cast<SimplePolygonCollider2D>(component);
7+
auto simplePolygonCollider2D = DCAST<SimplePolygonCollider2D>(component);
88
if (simplePolygonCollider2D && simplePolygonCollider2D->polygon.IsEmpty()) {
99
auto spriteRenderer = node.GetComponent<SpriteRenderer>();
1010
if (spriteRenderer && spriteRenderer->material && !spriteRenderer->material->textures.IsEmpty()) {

PhaseJump/PhaseJump/Classes/Core/Enum.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ namespace PJ {
2424

2525
virtual ~Enum() {}
2626

27-
SP<EnumClass<EnumType>> EnumClass() const { return static_pointer_cast<PJ::EnumClass<EnumType>>(_class); }
27+
SP<EnumClass<EnumType>> EnumClass() const { return SCAST<PJ::EnumClass<EnumType>>(_class); }
2828

2929
virtual String Id() const { return EnumClass()->IdOf(value); }
3030
virtual String Name() const { return EnumClass()->NameOf(value); }

PhaseJump/PhaseJump/Classes/Core/GoCore.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ namespace PJ
3535
using GoStateMachinePtr = GoStateMachineSharedPtr const&;
3636

3737
GoStateMachineSharedPtr sm = MAKE<GoStateMachine<StateType>>();
38-
std::weak_ptr<SomeGoStateListener<StateType>> owner;
38+
WP<SomeGoStateListener<StateType>> owner;
3939

4040
protected:
4141
virtual void OnStateChange(GoStateMachine<StateType>& inStateMachine) {
@@ -94,20 +94,20 @@ namespace PJ
9494
this->owner = owner;
9595
}
9696

97-
void OnEvent(EventPtr event) override
97+
void OnEvent(SPC<Event> event) override
9898
{
9999
if (event->sentFrom.expired()) { return; }
100100

101-
auto asStateMachine = std::dynamic_pointer_cast<GoStateMachine<StateType>>(event->sentFrom.lock());
101+
auto asStateMachine = DCAST<GoStateMachine<StateType>>(event->sentFrom.lock());
102102
if (!asStateMachine) { return; }
103103

104-
if (auto stateChangeEvent = std::dynamic_pointer_cast<EventStateChange<StateType>>(event))
104+
if (auto stateChangeEvent = DCAST<EventStateChange<StateType>>(event))
105105
{
106106
OnStateChange(*asStateMachine);
107107
return;
108108
}
109109

110-
if (auto stateFinishEvent = std::dynamic_pointer_cast<EventStateFinish<StateType>>(event))
110+
if (auto stateFinishEvent = DCAST<EventStateFinish<StateType>>(event))
111111
{
112112
OnStateFinish(*asStateMachine);
113113
return;

PhaseJump/PhaseJump/Classes/Core/Macros.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@ using SPC = std::shared_ptr<T> const&;
1313
template <class T>
1414
using WP = std::weak_ptr<T>;
1515

16+
template <class T>
17+
SP<T> LOCK(WP<T> const& value) {
18+
return value.lock();
19+
}
20+
1621
template<class _Tp, class ..._Args, class = std::__enable_if_t<!std::is_array<_Tp>::value>>
1722
std::shared_ptr<_Tp> MAKE(_Args&& ...__args)
1823
{

0 commit comments

Comments
 (0)