public OperationControl CreateOperation(ComponentOperation operation)
        {
            var defaultOperationStateMachine = StateMachineFor(operation, _backgroundTasks);

            _operationMachinesByControlObject.Register(defaultOperationStateMachine);
            return(defaultOperationStateMachine);
        }
 //bug move to factory
 private static DefaultOperationStateMachine StateMachineFor(ComponentOperation componentOperation, BackgroundTasks backgroundTasks)
 {
     return(new DefaultOperationStateMachine(
                componentOperation,
                new UnavailableOperationState(),
                new OperationStatesFactory(backgroundTasks)));
 }
Beispiel #3
0
 public DefaultOperationStateMachine(
     ComponentOperation operation,
     OperationState operationState,
     OperationStatesFactory operationStatesFactory)
 {
     _operation              = operation;
     _operationState         = operationState;
     _observers              = new List <OperationDependencyObserver>();
     _operationStatesFactory = operationStatesFactory;
 }
Beispiel #4
0
 public void remove(Entity entity)
 {
     if (delayed.value())
     {
         ComponentOperation operation = operationPool.obtain();
         operation.makeRemove(entity);
         operations.Add(operation);
     }
     else
     {
         entity.notifyComponentRemoved();
     }
 }
Beispiel #5
0
        public void processOperations()
        {
            for (int i = 0; i < operations.Count; ++i)
            {
                ComponentOperation operation = operations[i];

                switch (operation.type)
                {
                case ComponentOperation.Type.Add:
                    operation.entity.notifyComponentAdded();
                    break;

                case ComponentOperation.Type.Remove:
                    operation.entity.notifyComponentRemoved();
                    break;

                default: break;
                }

                operationPool.free(operation);
            }

            operations.Clear();
        }
Beispiel #6
0
 /// <summary>
 /// Performs an operation on each component of a vector.
 /// </summary>
 /// <param name="v">The vector to operate on</param>
 /// <param name="c">The operation to perform (ComponentOperation - single float parameter, returns float).</param>
 /// <returns></returns>
 public static Vector2 ComponentWise(this Vector2 v, ComponentOperation c)
 {
     return(new Vector2(c(v.x), c(v.y)));
 }
Beispiel #7
0
 /// <summary>
 /// Performs an operation on each component of a vector.
 /// </summary>
 /// <param name="v">The vector to operate on</param>
 /// <param name="c">The operation to perform (ComponentOperation - single float parameter, returns float).</param>
 /// <returns></returns>
 public static Vector3 Componentwise(this Vector3 v, ComponentOperation c)
 {
     return(new Vector3(c(v.x), c(v.y), c(v.z)));
 }
Beispiel #8
0
 public ServerSyncService()
 {
     SyncWorker            = new ComponentOperation <EmptyOperationRequest, BasicOperationResponse>(this, nameof(SyncWorker), SyncWorkerAsync);
     ScheduleImmediateSync = new ComponentOperation <EmptyOperationRequest, BasicOperationResponse>(this, nameof(ScheduleImmediateSync), ScheduleImmediateSyncAsync);
 }