Skip to content

Commit

Permalink
Coroutines, Splash Screen
Browse files Browse the repository at this point in the history
  • Loading branch information
SirePi committed Mar 10, 2018
1 parent 5214753 commit 3607820
Show file tree
Hide file tree
Showing 12 changed files with 716 additions and 7 deletions.
2 changes: 1 addition & 1 deletion AppData.dat
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<startScene dataType="Struct" type="Duality.ContentRef`1[[Duality.Resources.Scene]]">
<contentPath dataType="String">Data\ScrollingTest.Scene.res</contentPath>
</startScene>
<version dataType="UInt">281</version>
<version dataType="UInt">360</version>
<websiteUrl dataType="String">http://www.adamslair.net</websiteUrl>
</root>
<!-- XmlFormatterBase Document Separator -->
215 changes: 215 additions & 0 deletions Data/CoroutineTest.Scene.res
Original file line number Diff line number Diff line change
@@ -0,0 +1,215 @@
<root dataType="Struct" type="Duality.Resources.Scene" id="129723834">
<assetInfo />
<globalGravity dataType="Struct" type="Duality.Vector2">
<X dataType="Float">0</X>
<Y dataType="Float">33</Y>
</globalGravity>
<serializeObj dataType="Array" type="Duality.GameObject[]" id="427169525">
<item dataType="Struct" type="Duality.GameObject" id="1915756926">
<active dataType="Bool">true</active>
<children />
<compList dataType="Struct" type="System.Collections.Generic.List`1[[Duality.Component]]" id="431150120">
<_items dataType="Array" type="Duality.Component[]" id="577623468" length="4">
<item dataType="Struct" type="Duality.Components.Transform" id="4276071858">
<active dataType="Bool">true</active>
<angle dataType="Float">0</angle>
<angleAbs dataType="Float">0</angleAbs>
<angleVel dataType="Float">0</angleVel>
<angleVelAbs dataType="Float">0</angleVelAbs>
<deriveAngle dataType="Bool">true</deriveAngle>
<gameobj dataType="ObjectRef">1915756926</gameobj>
<ignoreParent dataType="Bool">false</ignoreParent>
<parentTransform />
<pos dataType="Struct" type="Duality.Vector3">
<X dataType="Float">0</X>
<Y dataType="Float">0</Y>
<Z dataType="Float">-500</Z>
</pos>
<posAbs dataType="Struct" type="Duality.Vector3">
<X dataType="Float">0</X>
<Y dataType="Float">0</Y>
<Z dataType="Float">-500</Z>
</posAbs>
<scale dataType="Float">1</scale>
<scaleAbs dataType="Float">1</scaleAbs>
<vel dataType="Struct" type="Duality.Vector3" />
<velAbs dataType="Struct" type="Duality.Vector3" />
</item>
<item dataType="Struct" type="Duality.Components.Camera" id="2453032733">
<active dataType="Bool">true</active>
<farZ dataType="Float">10000</farZ>
<focusDist dataType="Float">500</focusDist>
<gameobj dataType="ObjectRef">1915756926</gameobj>
<nearZ dataType="Float">0</nearZ>
<passes dataType="Struct" type="System.Collections.Generic.List`1[[Duality.Components.Camera+Pass]]" id="2398899921">
<_items dataType="Array" type="Duality.Components.Camera+Pass[]" id="2760370414" length="4">
<item dataType="Struct" type="Duality.Components.Camera+Pass" id="2485308496">
<clearColor dataType="Struct" type="Duality.Drawing.ColorRgba" />
<clearDepth dataType="Float">1</clearDepth>
<clearFlags dataType="Enum" type="Duality.Drawing.ClearFlag" name="All" value="3" />
<input />
<matrixMode dataType="Enum" type="Duality.Drawing.RenderMatrix" name="PerspectiveWorld" value="0" />
<output dataType="Struct" type="Duality.ContentRef`1[[Duality.Resources.RenderTarget]]" />
<visibilityMask dataType="Enum" type="Duality.Drawing.VisibilityFlag" name="AllGroups" value="2147483647" />
</item>
<item dataType="Struct" type="Duality.Components.Camera+Pass" id="3835937134">
<clearColor dataType="Struct" type="Duality.Drawing.ColorRgba" />
<clearDepth dataType="Float">1</clearDepth>
<clearFlags dataType="Enum" type="Duality.Drawing.ClearFlag" name="None" value="0" />
<input />
<matrixMode dataType="Enum" type="Duality.Drawing.RenderMatrix" name="OrthoScreen" value="1" />
<output dataType="Struct" type="Duality.ContentRef`1[[Duality.Resources.RenderTarget]]" />
<visibilityMask dataType="Enum" type="Duality.Drawing.VisibilityFlag" name="All" value="4294967295" />
</item>
</_items>
<_size dataType="Int">2</_size>
<_version dataType="Int">2</_version>
</passes>
<perspective dataType="Enum" type="Duality.Drawing.PerspectiveMode" name="Parallax" value="1" />
<visibilityMask dataType="Enum" type="Duality.Drawing.VisibilityFlag" name="All" value="4294967295" />
</item>
</_items>
<_size dataType="Int">2</_size>
<_version dataType="Int">2</_version>
</compList>
<compMap dataType="Struct" type="System.Collections.Generic.Dictionary`2[[System.Type],[Duality.Component]]" id="3517538974" surrogate="true">
<header />
<body>
<keys dataType="Array" type="System.Object[]" id="3634844138">
<item dataType="Type" id="2999714080" value="Duality.Components.Transform" />
<item dataType="Type" id="3527110542" value="Duality.Components.Camera" />
</keys>
<values dataType="Array" type="System.Object[]" id="3337241562">
<item dataType="ObjectRef">4276071858</item>
<item dataType="ObjectRef">2453032733</item>
</values>
</body>
</compMap>
<compTransform dataType="ObjectRef">4276071858</compTransform>
<identifier dataType="Struct" type="System.Guid" surrogate="true">
<header>
<data dataType="Array" type="System.Byte[]" id="2775772746">WWeHELeTbkaBa/GonsxQSQ==</data>
</header>
<body />
</identifier>
<initState dataType="Enum" type="Duality.InitState" name="Initialized" value="1" />
<name dataType="String">Camera</name>
<parent />
<prefabLink />
</item>
<item dataType="Struct" type="Duality.GameObject" id="2014009620">
<active dataType="Bool">true</active>
<children />
<compList dataType="Struct" type="System.Collections.Generic.List`1[[Duality.Component]]" id="4066809514">
<_items dataType="Array" type="Duality.Component[]" id="553770528" length="4">
<item dataType="Struct" type="Duality.Components.Transform" id="79357256">
<active dataType="Bool">true</active>
<angle dataType="Float">0</angle>
<angleAbs dataType="Float">0</angleAbs>
<angleVel dataType="Float">0</angleVel>
<angleVelAbs dataType="Float">0</angleVelAbs>
<deriveAngle dataType="Bool">true</deriveAngle>
<gameobj dataType="ObjectRef">2014009620</gameobj>
<ignoreParent dataType="Bool">false</ignoreParent>
<parentTransform />
<pos dataType="Struct" type="Duality.Vector3" />
<posAbs dataType="Struct" type="Duality.Vector3" />
<scale dataType="Float">1</scale>
<scaleAbs dataType="Float">1</scaleAbs>
<vel dataType="Struct" type="Duality.Vector3" />
<velAbs dataType="Struct" type="Duality.Vector3" />
</item>
<item dataType="Struct" type="Duality.Components.Renderers.SpriteRenderer" id="3656176188">
<active dataType="Bool">true</active>
<colorTint dataType="Struct" type="Duality.Drawing.ColorRgba">
<A dataType="Byte">255</A>
<B dataType="Byte">255</B>
<G dataType="Byte">255</G>
<R dataType="Byte">255</R>
</colorTint>
<customMat />
<flipMode dataType="Enum" type="Duality.Components.Renderers.SpriteRenderer+FlipMode" name="None" value="0" />
<gameobj dataType="ObjectRef">2014009620</gameobj>
<offset dataType="Int">0</offset>
<pixelGrid dataType="Bool">false</pixelGrid>
<rect dataType="Struct" type="Duality.Rect">
<H dataType="Float">256</H>
<W dataType="Float">256</W>
<X dataType="Float">-128</X>
<Y dataType="Float">-128</Y>
</rect>
<rectMode dataType="Enum" type="Duality.Components.Renderers.SpriteRenderer+UVMode" name="Stretch" value="0" />
<sharedMat dataType="Struct" type="Duality.ContentRef`1[[Duality.Resources.Material]]">
<contentPath dataType="String">Default:Material:DualityIcon</contentPath>
</sharedMat>
<visibilityGroup dataType="Enum" type="Duality.Drawing.VisibilityFlag" name="Group0" value="1" />
</item>
</_items>
<_size dataType="Int">2</_size>
<_version dataType="Int">4</_version>
</compList>
<compMap dataType="Struct" type="System.Collections.Generic.Dictionary`2[[System.Type],[Duality.Component]]" id="1897566426" surrogate="true">
<header />
<body>
<keys dataType="Array" type="System.Object[]" id="2165226640">
<item dataType="ObjectRef">2999714080</item>
<item dataType="Type" id="3730474300" value="Duality.Components.Renderers.SpriteRenderer" />
</keys>
<values dataType="Array" type="System.Object[]" id="1333393134">
<item dataType="ObjectRef">79357256</item>
<item dataType="ObjectRef">3656176188</item>
</values>
</body>
</compMap>
<compTransform dataType="ObjectRef">79357256</compTransform>
<identifier dataType="Struct" type="System.Guid" surrogate="true">
<header>
<data dataType="Array" type="System.Byte[]" id="1551527276">phSZgZLyjE2Megvb9s7hPg==</data>
</header>
<body />
</identifier>
<initState dataType="Enum" type="Duality.InitState" name="Initialized" value="1" />
<name dataType="String">SpriteRenderer</name>
<parent />
<prefabLink />
</item>
<item dataType="Struct" type="Duality.GameObject" id="2967927043">
<active dataType="Bool">true</active>
<children />
<compList dataType="Struct" type="System.Collections.Generic.List`1[[Duality.Component]]" id="3327537329">
<_items dataType="Array" type="Duality.Component[]" id="2203297326" length="4">
<item dataType="Struct" type="Duality.Plugins.Companion.Samples.CoroutineSample" id="318534070">
<active dataType="Bool">true</active>
<gameobj dataType="ObjectRef">2967927043</gameobj>
</item>
</_items>
<_size dataType="Int">1</_size>
<_version dataType="Int">1</_version>
</compList>
<compMap dataType="Struct" type="System.Collections.Generic.Dictionary`2[[System.Type],[Duality.Component]]" id="2188032096" surrogate="true">
<header />
<body>
<keys dataType="Array" type="System.Object[]" id="3382112667">
<item dataType="Type" id="3056890774" value="Duality.Plugins.Companion.Samples.CoroutineSample" />
</keys>
<values dataType="Array" type="System.Object[]" id="3127295592">
<item dataType="ObjectRef">318534070</item>
</values>
</body>
</compMap>
<compTransform />
<identifier dataType="Struct" type="System.Guid" surrogate="true">
<header>
<data dataType="Array" type="System.Byte[]" id="2131686993">N7//YRkDGEa2Z9KaRAuaLA==</data>
</header>
<body />
</identifier>
<initState dataType="Enum" type="Duality.InitState" name="Initialized" value="1" />
<name dataType="String">CoroutineSample</name>
<parent />
<prefabLink />
</item>
</serializeObj>
<visibilityStrategy dataType="Struct" type="Duality.Components.DefaultRendererVisibilityStrategy" id="2035693768" />
</root>
<!-- XmlFormatterBase Document Separator -->
Binary file not shown.
4 changes: 4 additions & 0 deletions Source/Code/Companion/Companion.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@
<Compile Include="Components\OverlayRenderer.cs" />
<Compile Include="Components\ColorFader.cs" />
<Compile Include="Components\SceneSwitcher.cs" />
<Compile Include="Coroutines\Coroutine.cs" />
<Compile Include="Coroutines\CoroutineManager.cs" />
<Compile Include="Coroutines\CoroutineAction.cs" />
<Compile Include="Drawing\PlaneRenderer.cs" />
<Compile Include="Drawing\CheckeredBackground.cs" />
<Compile Include="Drawing\Colors.cs" />
Expand All @@ -64,6 +67,7 @@
<Compile Include="Math\Geometry\IShape.cs" />
<Compile Include="Math\Geometry\Line2D.cs" />
<Compile Include="ResNames.cs" />
<Compile Include="SplashScreen.cs" />
<Compile Include="Timer.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Tweens\ColorTween.cs" />
Expand Down
9 changes: 5 additions & 4 deletions Source/Code/Companion/CompanionPlugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
using System.Text;

using Duality;
using Duality.Plugins.Companion.Coroutines;
using Duality.Resources;

namespace Duality.Plugins.Companion
{
Expand All @@ -12,19 +14,18 @@ namespace Duality.Plugins.Companion
/// </summary>
public class CompanionPlugin : CorePlugin
{
// Override methods here for global logic

protected override void OnBeforeUpdate()
protected override void OnBeforeUpdate()
{
base.OnBeforeUpdate();

if (DualityApp.ExecContext == DualityApp.ExecutionContext.Game)
{
Timer.Update();
CoroutineManager.Update();
}
}

protected override void OnExecContextChanged(DualityApp.ExecutionContext previousContext)
protected override void OnExecContextChanged(DualityApp.ExecutionContext previousContext)
{
base.OnExecContextChanged(previousContext);

Expand Down
49 changes: 49 additions & 0 deletions Source/Code/Companion/Coroutines/Coroutine.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Duality.Plugins.Companion.Coroutines
{
public sealed class Coroutine : ICoroutineAction, IDisposable
{
public static Coroutine Start(IEnumerable<ICoroutineAction> coroutine)
{
Coroutine c = new Coroutine(coroutine);
CoroutineManager.Register(c);
return c;
}

internal IEnumerator<ICoroutineAction> Enumerator { get; private set; }

internal ICoroutineAction Current => Enumerator.Current;

public bool IsComplete => Current == StopAction.Value;

private Coroutine(IEnumerable<ICoroutineAction> values)
{
Enumerator = values.Concat(StopAction.Finalizer).GetEnumerator();
}

internal void Restart()
{
Enumerator.Reset();
Enumerator.MoveNext();
}

public void Abort()
{
(Enumerator.Current as Coroutine)?.Abort();

Enumerator.Dispose();
Enumerator = StopAction.Finalizer.GetEnumerator();
Enumerator.MoveNext();
}

public void Dispose()
{
Enumerator.Dispose();
}
}
}
Loading

0 comments on commit 3607820

Please sign in to comment.