Added spatial audio #374

Merged
srishamharan merged 4 commits from SP3-129-AudioSystem into main 2023-02-28 13:17:19 +08:00
14 changed files with 258 additions and 79 deletions
Showing only changes of commit 3141902e3d - Show all commits

View File

@ -0,0 +1,4 @@
Start Maximized: true
Working Scene ID: 97158628
Window Size: {x: 1920, y: 1013}
Style: 0

Binary file not shown.

View File

@ -0,0 +1,3 @@
Name: Dangrek-Regular
ID: 174412429
Type: 10

Binary file not shown.

View File

@ -4,5 +4,5 @@
Properties: Properties:
data.color: {x: 1, y: 1, z: 1, w: 1} data.color: {x: 1, y: 1, z: 1, w: 1}
data.textureIndex: 57302694 data.textureIndex: 57302694
data.alpha: 0 data.alpha: 1
data.beta: {x: 1, y: 1, z: 1} data.beta: {x: 1, y: 1, z: 1}

View File

@ -9591,27 +9591,14 @@
gamePauseText: 11 gamePauseText: 11
canvas: 10 canvas: 10
- EID: 199 - EID: 199
Name: =====Text==== Name: Gameplay UI Canvas
IsActive: true IsActive: true
NumberOfChildren: 4 NumberOfChildren: 4
Components: ~
Scripts: ~
- EID: 237
Name: Score
IsActive: true
NumberOfChildren: 0
Components: Components:
Transform Component: Canvas Component:
Translate: {x: -800, y: 400, z: 0} Canvas Width: 1920
Rotate: {x: 0, y: 0, z: 0} Canvas Height: 1080
Scale: {x: 60, y: 60, z: 60} Scale by canvas width: false
IsActive: true
Text Renderer Component:
Text: My name is Brandon.
Font: 176667660
IsActive: true
UI Component:
Canvas ID: 199
IsActive: true IsActive: true
Scripts: ~ Scripts: ~
- EID: 206 - EID: 206
@ -9630,24 +9617,8 @@
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 199 Canvas ID: 199
IsActive: true Hovered: false
Scripts: ~ Clicked: false
- EID: 139
Name: Multiplier
IsActive: true
NumberOfChildren: 0
Components:
Transform Component:
Translate: {x: -800, y: 300, z: 0}
Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 60, y: 60, z: 60}
IsActive: true
Text Renderer Component:
Text: TEST
Font: 176667660
IsActive: true
UI Component:
Canvas ID: 199
IsActive: true IsActive: true
Scripts: ~ Scripts: ~
- EID: 11 - EID: 11
@ -9664,6 +9635,91 @@
Text: Game Pause Text: Game Pause
Font: 176667660 Font: 176667660
IsActive: false IsActive: false
UI Component:
Canvas ID: 199
Hovered: false
Clicked: false
IsActive: true
Scripts: ~
- EID: 139
Name: Multiplier Text
IsActive: true
NumberOfChildren: 1
Components:
Transform Component:
Translate: {x: -800, y: 300, z: 0}
Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 60, y: 60.0000038, z: 60}
IsActive: true
Text Renderer Component:
Text: TEST
Font: 176667660
IsActive: true
UI Component:
Canvas ID: 199
Hovered: false
Clicked: false
IsActive: true
Scripts: ~
- EID: 463
Name: Multiplier BG
IsActive: true
NumberOfChildren: 0
Components:
Transform Component:
Translate: {x: 0.833334029, y: 0.416666061, z: 0}
Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 5, y: 1.66666651, z: 0.0166666675}
IsActive: true
Renderable Component:
Mesh: 141771688
Material: 129340704
IsActive: true
UI Component:
Canvas ID: 199
Hovered: false
Clicked: false
IsActive: true
Scripts: ~
- EID: 237
Name: Score Text
IsActive: true
NumberOfChildren: 1
Components:
Transform Component:
Translate: {x: -770.099915, y: 419.999969, z: 0}
Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 60.0000038, y: 60.0000038, z: 60}
IsActive: true
Text Renderer Component:
Text: My name is Brandon.
Font: 176667660
IsActive: true
UI Component:
Canvas ID: 199
Hovered: false
Clicked: false
IsActive: true
Scripts: ~
- EID: 462
Name: Score BG
IsActive: true
NumberOfChildren: 0
Components:
Transform Component:
Translate: {x: 0.334998131, y: 0.500000477, z: 0}
Rotate: {x: 0, y: 0, z: 0}
Scale: {x: 6.66666603, y: 1.66666651, z: 0.0166666675}
IsActive: true
Renderable Component:
Mesh: 141771688
Material: 129340704
IsActive: true
UI Component:
Canvas ID: 199
Hovered: false
Clicked: false
IsActive: true
Scripts: ~ Scripts: ~
- EID: 198 - EID: 198
Name: ====Raccoon==== Name: ====Raccoon====
@ -9765,7 +9821,6 @@
Yaw: 360 Yaw: 360
Roll: 1.28065994e-06 Roll: 1.28065994e-06
Width: 1055 Width: 1055
Height: 604
Near: 0.00999999978 Near: 0.00999999978
Far: 10000 Far: 10000
Perspective: true Perspective: true
@ -10664,6 +10719,7 @@
Canvas Component: Canvas Component:
Canvas Width: 1920 Canvas Width: 1920
Canvas Height: 1080 Canvas Height: 1080
Scale by canvas width: false
IsActive: true IsActive: true
Scripts: ~ Scripts: ~
- EID: 8 - EID: 8
@ -10687,6 +10743,8 @@
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 10 Canvas ID: 10
Hovered: false
Clicked: false
IsActive: true IsActive: true
Scripts: ~ Scripts: ~
- EID: 0 - EID: 0
@ -10710,6 +10768,8 @@
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 10 Canvas ID: 10
Hovered: false
Clicked: false
IsActive: true IsActive: true
Scripts: ~ Scripts: ~
- EID: 461 - EID: 461
@ -10733,5 +10793,7 @@
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 10 Canvas ID: 10
Hovered: false
Clicked: false
IsActive: true IsActive: true
Scripts: ~ Scripts: ~

View File

@ -21,7 +21,7 @@
IsActive: true IsActive: true
Renderable Component: Renderable Component:
Mesh: 141771688 Mesh: 141771688
Material: 121834459 Material: 129138332
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 0 Canvas ID: 0
@ -538,7 +538,7 @@
IsActive: true IsActive: true
Text Renderer Component: Text Renderer Component:
Text: Options Text: Options
Font: 176667660 Font: 174412429
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 19 Canvas ID: 19
@ -558,7 +558,7 @@
IsActive: true IsActive: true
Text Renderer Component: Text Renderer Component:
Text: Audio Text: Audio
Font: 176667660 Font: 174412429
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 19 Canvas ID: 19
@ -594,7 +594,7 @@
IsActive: true IsActive: true
Text Renderer Component: Text Renderer Component:
Text: Master Text: Master
Font: 176667660 Font: 174412429
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 19 Canvas ID: 19
@ -614,7 +614,7 @@
IsActive: true IsActive: true
Text Renderer Component: Text Renderer Component:
Text: SFX Text: SFX
Font: 176667660 Font: 174412429
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 19 Canvas ID: 19
@ -634,7 +634,7 @@
IsActive: true IsActive: true
Text Renderer Component: Text Renderer Component:
Text: BGM Text: BGM
Font: 176667660 Font: 174412429
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 19 Canvas ID: 19
@ -673,7 +673,7 @@
Material: 128676209 Material: 128676209
IsActive: true IsActive: true
Slider Component: Slider Component:
Slider Value: 0 Slider Value: 1
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 19 Canvas ID: 19
@ -696,7 +696,7 @@
Material: 128676209 Material: 128676209
IsActive: true IsActive: true
Slider Component: Slider Component:
Slider Value: 0 Slider Value: 1
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 19 Canvas ID: 19
@ -719,7 +719,7 @@
Material: 128676209 Material: 128676209
IsActive: true IsActive: true
Slider Component: Slider Component:
Slider Value: 0 Slider Value: 1
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 19 Canvas ID: 19
@ -739,7 +739,7 @@
IsActive: true IsActive: true
Text Renderer Component: Text Renderer Component:
Text: Camera Text: Camera
Font: 176667660 Font: 174412429
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 19 Canvas ID: 19
@ -775,7 +775,7 @@
IsActive: true IsActive: true
Text Renderer Component: Text Renderer Component:
Text: FOV Text: FOV
Font: 176667660 Font: 174412429
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 19 Canvas ID: 19
@ -795,7 +795,7 @@
IsActive: true IsActive: true
Text Renderer Component: Text Renderer Component:
Text: Sensitivity Text: Sensitivity
Font: 176667660 Font: 174412429
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 19 Canvas ID: 19
@ -834,7 +834,7 @@
Material: 128676209 Material: 128676209
IsActive: true IsActive: true
Slider Component: Slider Component:
Slider Value: 0 Slider Value: 1
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 19 Canvas ID: 19
@ -857,7 +857,7 @@
Material: 128676209 Material: 128676209
IsActive: true IsActive: true
Slider Component: Slider Component:
Slider Value: 0 Slider Value: 1
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 19 Canvas ID: 19
@ -893,7 +893,7 @@
IsActive: true IsActive: true
Text Renderer Component: Text Renderer Component:
Text: 100 Text: 100
Font: 176667660 Font: 174412429
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 19 Canvas ID: 19
@ -918,7 +918,7 @@
IsActive: true IsActive: true
Text Renderer Component: Text Renderer Component:
Text: 100 Text: 100
Font: 176667660 Font: 174412429
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 19 Canvas ID: 19
@ -943,7 +943,7 @@
IsActive: true IsActive: true
Text Renderer Component: Text Renderer Component:
Text: 100 Text: 100
Font: 176667660 Font: 174412429
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 19 Canvas ID: 19
@ -984,7 +984,7 @@
IsActive: true IsActive: true
Text Renderer Component: Text Renderer Component:
Text: 100 Text: 100
Font: 176667660 Font: 174412429
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 19 Canvas ID: 19
@ -1009,7 +1009,7 @@
IsActive: true IsActive: true
Text Renderer Component: Text Renderer Component:
Text: 100 Text: 100
Font: 176667660 Font: 174412429
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 19 Canvas ID: 19
@ -1024,14 +1024,14 @@
maxValue: 100 maxValue: 100
- EID: 46 - EID: 46
Name: Credits Canvas Name: Credits Canvas
IsActive: true IsActive: false
NumberOfChildren: 3 NumberOfChildren: 3
Components: Components:
Canvas Component: Canvas Component:
Canvas Width: 1920 Canvas Width: 1920
Canvas Height: 1080 Canvas Height: 1080
Scale by canvas width: false Scale by canvas width: false
IsActive: true IsActive: false
Scripts: ~ Scripts: ~
- EID: 47 - EID: 47
Name: BackGround Name: BackGround
@ -1093,7 +1093,7 @@
IsActive: true IsActive: true
Text Renderer Component: Text Renderer Component:
Text: Credits Text: Credits
Font: 176667660 Font: 174412429
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 46 Canvas ID: 46
@ -1103,14 +1103,14 @@
Scripts: ~ Scripts: ~
- EID: 50 - EID: 50
Name: Level Select Canvas Name: Level Select Canvas
IsActive: true IsActive: false
NumberOfChildren: 3 NumberOfChildren: 3
Components: Components:
Canvas Component: Canvas Component:
Canvas Width: 1920 Canvas Width: 1920
Canvas Height: 1080 Canvas Height: 1080
Scale by canvas width: false Scale by canvas width: false
IsActive: true IsActive: false
Scripts: ~ Scripts: ~
- EID: 51 - EID: 51
Name: BackGround Name: BackGround
@ -1172,7 +1172,7 @@
IsActive: true IsActive: true
Text Renderer Component: Text Renderer Component:
Text: Level Select Text: Level Select
Font: 176667660 Font: 174412429
IsActive: true IsActive: true
UI Component: UI Component:
Canvas ID: 50 Canvas ID: 50

View File

@ -100,7 +100,7 @@ public class GameManager : Script
if (itemScored) if (itemScored)
{ {
multiplierText.GetComponent<TextRenderable>().Text = $"X {currMultiplierCombo}"; multiplierText.GetComponent<TextRenderable>().Text = $"X {currMultiplierCombo}";
multiplierText.GetComponent<Transform>().LocalScale -= fontScalar * Time.DeltaTimeF; //multiplierText.GetComponent<Transform>().LocalScale -= fontScalar * Time.DeltaTimeF;
currMultiplierDuration += Time.DeltaTimeF; currMultiplierDuration += Time.DeltaTimeF;
if (currMultiplierDuration >= maxMultiplierDuration) if (currMultiplierDuration >= maxMultiplierDuration)
@ -113,7 +113,7 @@ public class GameManager : Script
} }
else else
{ {
multiplierText.GetComponent<Transform>().LocalScale = Vector3.Zero; //multiplierText.GetComponent<Transform>().LocalScale = Vector3.Zero;
} }
if ((timer > 0 && totalItemCount <= 0) || Input.GetKeyDown(Input.KeyCode.F1)) if ((timer > 0 && totalItemCount <= 0) || Input.GetKeyDown(Input.KeyCode.F1))

View File

@ -11,6 +11,9 @@ namespace SHADE_Scripting.UI
{ {
EASE_IN_SINE, EASE_IN_SINE,
EASE_OUT_SINE, EASE_OUT_SINE,
EASE_OUT_BOUNCE,
EASE_IN_BOUNCE,
EASE_INOUT_BOUNCE
} }
public static class EasingHelper public static class EasingHelper
@ -28,7 +31,20 @@ namespace SHADE_Scripting.UI
{ {
return EaseOutSine(value); return EaseOutSine(value);
}break; }break;
case EASING_METHOD.EASE_OUT_BOUNCE:
{
return EaseOutBounce(value);
}break;
case EASING_METHOD.EASE_IN_BOUNCE:
{
return EaseInBounce(value);
}
break;
case EASING_METHOD.EASE_INOUT_BOUNCE:
{
return EaseInOutBounce(value);
}
break;
default: default:
return 0.0f; return 0.0f;
} }
@ -44,5 +60,37 @@ namespace SHADE_Scripting.UI
return (float)(1.0f - Math.Sin(value * Math.PI) / 2.0f); return (float)(1.0f - Math.Sin(value * Math.PI) / 2.0f);
} }
private static float EaseOutBounce(float value)
{
const float n1 = 7.5625f;
const float d1 = 2.75f;
if (value < 1.0f / d1)
{
return n1 * value * value;
} else if (value < 2.0f / d1)
{
return n1 * (value -= 2.25f / d1) * value + 0.9375f;
}
else
{
return n1 * (value -= 2.625f / d1) * value + 0.984375f;
}
}
private static float EaseInBounce(float value)
{
return 1 - EaseOutBounce(1 - value);
}
private static float EaseInOutBounce(float value)
{
return (value < 0.5f)
?(1.0f - EaseOutBounce(1.0f - 2.0f * value)) / 2.0f
: (1.0f + EaseOutBounce(2.0f * value - 1.0f)) / 2.0f;
}
} }
} }

View File

@ -30,16 +30,30 @@ namespace SHADE_Scripting.UI
public float clickScale = 0.9f; public float clickScale = 0.9f;
[NonSerialized]
private TweenThread thread;
[NonSerialized]
private bool tweening = false;
[NonSerialized]
private float currentScale = 1.0f;
protected override void awake() protected override void awake()
{ {
onHoverEnterACHandler = SHADE.Audio.CreateAudioClip(onHoverEnterSound); onHoverEnterACHandler = SHADE.Audio.CreateAudioClip(onHoverEnterSound);
onHoverExitACHandler = SHADE.Audio.CreateAudioClip(onHoverExitSound); onHoverExitACHandler = SHADE.Audio.CreateAudioClip(onHoverExitSound);
onClickACHandler = SHADE.Audio.CreateAudioClip(onClickSound); onClickACHandler = SHADE.Audio.CreateAudioClip(onClickSound);
onReleaseACHandler = SHADE.Audio.CreateAudioClip(onReleaseSound); onReleaseACHandler = SHADE.Audio.CreateAudioClip(onReleaseSound);
} }
protected override void start() protected override void start()
{ {
thread = TweenManager.CreateTweenThread(0.1f, 0.9f, 1.0f, EASING_METHOD.EASE_IN_SINE);
Transform transform = GetComponent<Transform>(); Transform transform = GetComponent<Transform>();
if (transform == null) if (transform == null)
return; return;
@ -55,35 +69,53 @@ namespace SHADE_Scripting.UI
{ {
if (onClickSound != "") if (onClickSound != "")
onClickACHandler.Play(); onClickACHandler.Play();
transform.LocalScale = defaultScale * clickScale; tweening = true;
if(thread != null)
thread.Reset(currentScale,clickScale);
}); });
ui.OnRelease.RegisterAction(() => ui.OnRelease.RegisterAction(() =>
{ {
if (onReleaseSound != "") if (onReleaseSound != "")
onReleaseACHandler.Play(); onReleaseACHandler.Play();
transform.LocalScale = defaultScale; tweening = true;
if (thread != null)
thread.Reset(currentScale, 1.0f);
}); });
ui.OnHoverEnter.RegisterAction(() => ui.OnHoverEnter.RegisterAction(() =>
{ {
if(onHoverEnterSound != "") if (onHoverEnterSound != "")
onHoverEnterACHandler.Play(); onHoverEnterACHandler.Play();
transform.LocalScale = defaultScale * hoverScale; tweening = true;
if (thread != null)
thread.Reset(currentScale, hoverScale);
}); });
ui.OnHoverExit.RegisterAction(() => ui.OnHoverExit.RegisterAction(() =>
{ {
if (onHoverExitSound != "") if (onHoverExitSound != "")
onHoverExitACHandler.Play(); onHoverExitACHandler.Play();
transform.LocalScale = defaultScale; tweening = true;
if (thread != null)
thread.Reset(currentScale, 1.0f);
}); });
} }
protected override void update() protected override void update()
{ {
Transform transform = GetComponent<Transform>();
if (transform == null)
return;
if (tweening == true && thread != null)
{
Debug.Log("Tweening value " + thread.GetValue());
transform.LocalScale = defaultScale * thread.GetValue();
currentScale = thread.GetValue();
if (thread.IsCompleted())
tweening = false;
}
} }

View File

@ -14,7 +14,17 @@ namespace SHADE_Scripting.UI
public int minValue = 0; public int minValue = 0;
public int maxValue = 0; public int maxValue = 0;
protected override void start()
{
Slider slider = sliderObj.GetComponent<Slider>();
TextRenderable text = GetComponent<TextRenderable>();
if (slider != null && text != null)
{
text.Text = ((int)(slider.GetValue() * (maxValue - minValue) + minValue)).ToString();
}
}
protected override void update() protected override void update()
{ {
Slider slider = sliderObj.GetComponent<Slider>(); Slider slider = sliderObj.GetComponent<Slider>();

View File

@ -70,7 +70,8 @@ namespace SHADE
beginCursorPos = ImGui::GetCursorScreenPos(); beginCursorPos = ImGui::GetCursorScreenPos();
viewportMousePos = { mousePos.x - beginCursorPos.x, mousePos.y - beginCursorPos.y }; viewportMousePos = { mousePos.x - beginCursorPos.x, mousePos.y - beginCursorPos.y };
gfxSystem->GetMousePickSystem()->SetViewportMousePos(viewportMousePos); gfxSystem->GetMousePickSystem()->SetViewportMousePos(viewportMousePos);
ImGui::Image((ImTextureID)descriptorSet, { beginContentRegionAvailable.x, beginContentRegionAvailable.y }); SHVec2 viewportSize = CalculateWindowSize(beginContentRegionAvailable);
ImGui::Image((ImTextureID)descriptorSet, { viewportSize.x, viewportSize.y });
if (ImGui::IsWindowHovered() && ImGui::IsMouseDown(ImGuiMouseButton_Right)) if (ImGui::IsWindowHovered() && ImGui::IsMouseDown(ImGuiMouseButton_Right))
{ {

View File

@ -432,16 +432,25 @@ namespace SHADE
if (comp.GetValue() < 0.0f) if (comp.GetValue() < 0.0f)
comp.value = 0.0f; comp.value = 0.0f;
} }
try
if (comp.GetValue() != tempValue)
{ {
//Set shader value.
auto renderable = SHComponentManager::GetComponent_s<SHRenderable>(comp.GetEID()); auto renderable = SHComponentManager::GetComponent_s<SHRenderable>(comp.GetEID());
//auto texture = SHResourceManager::Get<SHTexture>(comp.GetDefaultTexture()); //auto texture = SHResourceManager::Get<SHTexture>(comp.GetDefaultTexture());
auto material = renderable->GetModifiableMaterial(); auto material = renderable->GetModifiableMaterial();
if (renderable)
{
if (comp.GetValue() != material->GetProperty<float>("data.sliderThreshold"))
{
//Set shader value.
material->SetProperty("data.sliderThreshold", comp.GetValue()); material->SetProperty("data.sliderThreshold", comp.GetValue());
}
}
}
catch (...)
{
} }

View File

@ -903,6 +903,12 @@ namespace SHADE
{ {
return pair->type; return pair->type;
} }
/* Sort */
System::String^ sortKeyAccessor(System::Type^ type)
{
return type->Name;
}
} }
void ScriptStore::refreshScriptTypeList() void ScriptStore::refreshScriptTypeList()
@ -926,6 +932,10 @@ namespace SHADE
Func<Pair^, Type^>^ selector = gcnew Func<Pair^, Type^>(selectorFunc); Func<Pair^, Type^>^ selector = gcnew Func<Pair^, Type^>(selectorFunc);
scriptTypeList = Enumerable::Select(whereResult, selector); scriptTypeList = Enumerable::Select(whereResult, selector);
/* Sort: By Alphabetical Order */
Func<Type^, String^>^ sorter = gcnew Func<Type^, String^>(sortKeyAccessor);
scriptTypeList = Enumerable::OrderBy(scriptTypeList, sorter);
// Log // Log
std::ostringstream oss; std::ostringstream oss;
oss << "[ScriptStore] Successfully retrieved references to " << Enumerable::Count(scriptTypeList) oss << "[ScriptStore] Successfully retrieved references to " << Enumerable::Count(scriptTypeList)