コード例 #1
0
        public void RemovedFromPart(IBodyPart old)
        {
            DebugTools.AssertNull(Part);
            DebugTools.AssertNotNull(old);

            OnRemovedFromPart(old);
        }
コード例 #2
0
        private void _cacheInstance()
        {
            DebugTools.AssertNull(_cachedInstance);

            ShaderInstance instance;

            switch (Kind)
            {
            case ShaderKind.Source:
                instance = IoCManager.Resolve <IClydeInternal>().InstanceShader(Source !.ClydeHandle);
                _applyDefaultParameters(instance);
                break;

            case ShaderKind.Canvas:
                instance = IoCManager.Resolve <IClydeInternal>().InstanceShader(CompiledCanvasShader);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            if (_stencilEnabled)
            {
                instance.StencilTestEnabled = true;
                instance.StencilRef         = _stencilRef;
                instance.StencilFunc        = _stencilFunc;
                instance.StencilOp          = _stencilOp;
                instance.StencilReadMask    = _stencilReadMask;
                instance.StencilWriteMask   = _stencilWriteMask;
            }

            instance.MakeImmutable();
            _cachedInstance = instance;
        }
コード例 #3
0
        public void Initialize()
        {
            if (!GameController.OnGodot)
            {
                return;
            }

            DebugTools.AssertNull(RootNodeScreenBelowWorld);

            RootNodeScreenBelowWorld = new Godot.Node2D {
                Name = "OverlayRoot"
            };
            sceneTreeHolder.BelowWorldScreenSpace.AddChild(RootNodeScreenBelowWorld);

            RootNodeWorld = new Godot.Node2D {
                Name = "OverlayRoot"
            };
            sceneTreeHolder.WorldRoot.AddChild(RootNodeWorld);
            RootNodeWorld.ZIndex = (int)DrawDepth.Overlays;

            RootNodeScreen = new Godot.Node2D {
                Name = "OverlayRoot"
            };
            sceneTreeHolder.SceneTree.Root.GetNode("UILayer").AddChild(RootNodeScreen);
        }
コード例 #4
0
        public void RemovedFromBody(IBody old)
        {
            DebugTools.AssertNull(Body);
            DebugTools.AssertNotNull(old);

            OnRemovedFromBody(old);
        }
コード例 #5
0
        public override void RemovedFromPart(SharedBodyPartComponent old)
        {
            DebugTools.AssertNull(Part);
            DebugTools.AssertNotNull(old);

            OnRemovedFromPart(old);
        }
コード例 #6
0
        public override void RemovedFromBody(SharedBodyComponent old)
        {
            DebugTools.AssertNull(Body);
            DebugTools.AssertNotNull(old);

            OnRemovedFromBody(old);
        }
コード例 #7
0
        /// <summary>
        ///     Suspends the current task immediately, yielding to other running jobs.
        /// </summary>
        /// <remarks>
        ///     This does not stop the job queue from un-suspending the current task immediately again,
        ///     if there is still time left over.
        /// </remarks>
        protected Task SuspendNow()
        {
            DebugTools.AssertNull(_resume);

            _resume    = new TaskCompletionSource <object>();
            Status     = JobStatus.Paused;
            DebugTime += StopWatch.Elapsed.TotalSeconds;
            return(_resume.Task);
        }
コード例 #8
0
        public void RemovedFromPartInBody(IBody oldBody, IBodyPart oldPart)
        {
            DebugTools.AssertNull(Body);
            DebugTools.AssertNull(Part);
            DebugTools.AssertNotNull(oldBody);
            DebugTools.AssertNotNull(oldPart);

            OnRemovedFromPartInBody(oldBody, oldPart);
        }
コード例 #9
0
        public override void RemovedFromPartInBody(SharedBodyComponent oldBody, SharedBodyPartComponent oldPart)
        {
            DebugTools.AssertNull(Body);
            DebugTools.AssertNull(Part);
            DebugTools.AssertNotNull(oldBody);
            DebugTools.AssertNotNull(oldPart);

            OnRemovedFromPartInBody(oldBody, oldPart);
        }
コード例 #10
0
        protected ValueTask SuspendIfOutOfTime()
        {
            DebugTools.AssertNull(_resume);

            // ReSharper disable once CompareOfFloatsByEqualityOperator
            if (StopWatch.Elapsed.TotalSeconds <= _maxTime || _maxTime == 0.0)
            {
                return(new ValueTask());
            }

            return(new ValueTask(SuspendNow()));
        }
コード例 #11
0
        /// <summary>
        ///     Wrapper to safely await on an external task.
        /// </summary>
        protected async Task WaitAsyncTask(Task task)
        {
            DebugTools.AssertNull(_resume);

            Status     = JobStatus.Waiting;
            DebugTime += StopWatch.Elapsed.TotalSeconds;

            await task;

            // Immediately block on resume so that everything stays correct.
            _resume = new TaskCompletionSource <object>();
            Status  = JobStatus.Paused;

            await _resume.Task;
        }
コード例 #12
0
        /// <summary>
        ///     Wrapper to await on an external task.
        /// </summary>
        protected async Task <TTask> WaitAsyncTask <TTask>(Task <TTask> task)
        {
            DebugTools.AssertNull(_resume);

            Status     = JobStatus.Waiting;
            DebugTime += StopWatch.Elapsed.TotalSeconds;

            var result = await task;

            // Immediately block on resume so that everything stays correct.
            Status  = JobStatus.Paused;
            _resume = new TaskCompletionSource <object?>();

            await _resume.Task;

            return(result);
        }
コード例 #13
0
        private void _cacheInstance()
        {
            DebugTools.AssertNull(_cachedInstance);

            ShaderInstance instance;

            switch (Kind)
            {
            case ShaderKind.Source:
                instance = _clyde.InstanceShader(Source.ClydeHandle);
                _applyDefaultParameters(instance);
                break;

            case ShaderKind.Canvas:
                instance = _clyde.InstanceShader(CompiledCanvasShader);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            instance.MakeImmutable();
            _cachedInstance = instance;
        }