private NuiSensor MakeSensor(MessageReader reader) { int id = reader.ReadInt(); string name = reader.ReadString(); string company = reader.ReadString(); SensorState state = (SensorState)reader.ReadInt(); int colorFrameWidth = reader.ReadInt(); int colorFrameHeight = reader.ReadInt(); int colorFramebpp = reader.ReadInt(); int depthFrameWidth = reader.ReadInt(); int depthfreamHeight = reader.ReadInt(); int depthFramebpp = reader.ReadInt(); int maxTrackingBody = reader.ReadInt(); NuiSensor sensor = new NuiSensor(this, name, company, id, state, colorFrameWidth, colorFrameHeight, colorFramebpp, depthFrameWidth, depthfreamHeight, depthFramebpp, maxTrackingBody); connectedSensors.Add(sensor.id, sensor); if (OnSensorConnected != null) { Queue_Event(OnSensorConnected, sensor); } return(sensor); }
internal BodyData(Dictionary <JointType, NuiJoint> joints, Dictionary <JointType, NuiJointOrientation> orientations, bool valid, int id, NuiSensor sensor, HandStatus leftHand, HandStatus rightHand) { this.Joints = joints; this.Orientations = orientations; this.Id = id; this.Valid = valid; this.Sensor = sensor; this.LeftHand = leftHand; this.RightHand = rightHand; }
public NuiSensor[] GetSensors() { if (!isConnected) { throw new NotConnectedException(); } NuiSensor[] array = new NuiSensor[connectedSensors.Count]; connectedSensors.Values.CopyTo(array, 0); return(array); }
public ColorChannel(string mappedName, NuiSensor sensor) { _sensor = sensor; _mappedFile = MemoryMappedFile.OpenExisting(mappedName); mappedFileAccessor = _mappedFile.CreateViewAccessor(); mappedFileAccessor.SafeMemoryMappedViewHandle_AcquirePointer(ref MappedPointer); lockDatas = new int *[BlockCount]; for (int i = 0; i < BlockCount; i++) { lockDatas[i] = (int *)(sizeof(int) * i + MappedPointer); } }
public bool OpenBodyFrame(NuiSensor sensor) { if (connectedSensors.ContainsValue(sensor) == false) { return(false); } //스켈레톤 쉐어드메모리를 생성해달라고 요청합니다. MessageWriter sm_message = new MessageWriter(CTSHeader.REQUEST_BODY_SM_NAME); sm_message.WriteInt(sensor.id); pipeStream_Send.Send(sm_message); return(true); }
//IPC void pipeStream_Get_OnMessageReceived(MessageReader reader) { int sensorID; bool isCreated; string mappedName; NuiSensor sensor = null; STCHeader header = (STCHeader)reader.ReadShort(); switch (header) { #region Channel Making case STCHeader.SEND_COLORFRAME_SM_NAME: sensorID = reader.ReadInt(); isCreated = reader.ReadBool(); if (connectedSensors.ContainsKey(sensorID) == false) { return; } sensor = connectedSensors[sensorID]; if (!isCreated) //생성실패 { sensor.OpenColorFrameCallback(false, null); return; } mappedName = reader.ReadString(); //[수정요망] 맨 뒤쪽 channel 지금은 4로 강제해놓음. sensor.OpenColorFrameCallback(true, new ColorChannel(mappedName, sensor)); break; case STCHeader.SEND_DEPTHFRAME_SM_NAME: sensorID = reader.ReadInt(); isCreated = reader.ReadBool(); if (connectedSensors.ContainsKey(sensorID) == false) { return; } sensor = connectedSensors[sensorID]; if (!isCreated) //생성실패 { sensor.OpenDepthFrameCallback(false, null); return; } mappedName = reader.ReadString(); sensor.OpenDepthFrameCallback(true, new DepthChannel(mappedName, sensor)); break; case STCHeader.SEND_BODY_SM_NAME: sensorID = reader.ReadInt(); isCreated = reader.ReadBool(); if (connectedSensors.ContainsKey(sensorID) == false) { return; } sensor = connectedSensors[sensorID]; if (!isCreated) //생성실패 { sensor.OpenColorFrameCallback(false, null); return; } mappedName = reader.ReadString(); sensor.OpenBodyFrameCallback(true, new BodyChannel(mappedName, sensor)); break; #endregion #region Sensor Datas //모든 센서 정보 보냄(처음에) case STCHeader.SEND_ALL_SENSOR_INFO: int sensorCount = reader.ReadInt(); for (int i = 0; i < sensorCount; i++) { sensor = MakeSensor(reader); } break; //새로 연결된 센서 정보 보냄 case STCHeader.SEND_NEW_SENSOR_INFO: sensor = MakeSensor(reader); break; //state가 바뀐 센서 정보 보냄(여기서 삭제도 함. case STCHeader.SEND_SENSOR_STATE: int id = reader.ReadInt(); SensorState state = (SensorState)reader.ReadInt(); if (connectedSensors.ContainsKey(id)) { sensor = connectedSensors[id]; sensor.state = state; if (state == SensorState.UNKNOWN) { sensor.DisconnectedCallback(); connectedSensors.Remove(id); if (OnSensorDisconnected != null) { Queue_Event(OnSensorDisconnected, sensor); } } } break; case STCHeader.SEND_TRIGGER_EVENT_DATA: ReceiveTriggerEvent(reader); break; #endregion } }
internal AuthorityException(AuthorityTypes noAuthority, NuiSensor sensor) { this.noAuthority = noAuthority; this.Sensor = sensor; }