public override ActionResponse GetActionResponse(int environmentSymbol, float[] state, float reward, bool done) { ActionResponse response = new ActionResponse(); // Send message with (symbol, *state, reward, done) network.SetFloatInBuffer(environmentSymbol, 0); network.SetArrayFloatsInBuffer(state, 1); network.SetFloatInBuffer(reward, observationDimension + 1); network.SetFloatInBuffer(done ? 1f : 0f, observationDimension + 2); network.Send(); // Receive status symbol & action network.ReceiveFloatsAndString(1 + actionDimension, receiveBuffer, ref receivedMessage); AgentActionSymbol agentSymbol = (AgentActionSymbol)Mathf.RoundToInt(receiveBuffer[0]); for (int i = 1; i < receiveBuffer.Length; i++) { actions[i - 1] = receiveBuffer[i]; } // Return response.symbol = agentSymbol; response.actions = actions; response.msg = receivedMessage; return(response); }