public void Execute(ArchetypeChunk chunk, int chunkIndex, int firstEntityIndex) { var inputAChanged = chunk.DidChange(CInputA_TypeHandle, LastSystemVersion); var inputBChanged = chunk.DidChange(CInputB_TypeHandle, LastSystemVersion); // If neither component changed, skip the current chunk if (!(inputAChanged || inputBChanged)) { return; } // 为了方便,去掉brust编译 UnityEngine.Debug.Log("------------Change-------------"); var InputA_Array = chunk.GetNativeArray(CInputA_TypeHandle); var InputB_Array = chunk.GetNativeArray(CInputB_TypeHandle); var OutPut_Array = chunk.GetNativeArray(COutput_TypeHandle); for (int i = 0; i < chunk.Count; i++) { OutPut_Array[i] = new COutput { Value = InputA_Array[i].Value + InputB_Array[i].Value }; } }
// Fire COutput event (but don't actually print with Console.WriteLine) public static void coutFire(string text, params object[] values) { if (values.Length == 0) { G.COutput?.Invoke(new MessageArgs(text)); } else { COutput?.Invoke(new MessageArgs(string.Format(text, values))); } }
// Output to Console public static void cout(string text, params object[] values) { if (values.Length == 0) { Console.WriteLine(text); COutput?.Invoke(new MessageArgs(text)); } else { Console.WriteLine(string.Format(text, values)); COutput?.Invoke(new MessageArgs(string.Format(text, values))); } }
public void BusInput(object sender, T input) { InputState = input; switch (SelectState) { case Trit.Neg: AOutput?.Invoke(this, AOutputState = input); break; case Trit.Neu: BOutput?.Invoke(this, BOutputState = input); break; case Trit.Pos: COutput?.Invoke(this, COutputState = input); break; } }
public void Execute(ArchetypeChunk chunk, int chunkIndex, int firstEntityIndex) { var InputA_Array = chunk.GetNativeArray(CInputA_TypeHandle); var InputB_Array = chunk.GetNativeArray(CInputB_TypeHandle); var OutPut_Array = chunk.GetNativeArray(COutput_TypeHandle); for (int i = 0; i < chunk.Count; i++) { OutPut_Array[i] = new COutput { Value = InputA_Array[i].Value + InputB_Array[i].Value }; } }