private float[] GetFloats(CSN_FLOAT_METHOD method) { float[] tor; switch (method) { case CSN_FLOAT_METHOD.GET_ABSOLUTE_POSITION: case CSN_FLOAT_METHOD.GET_POSITION: case CSN_FLOAT_METHOD.GET_ROTATION: case CSN_FLOAT_METHOD.GET_SCALE: tor = new float[3]; break; case CSN_FLOAT_METHOD.GET_TRANSFORMED_BOUNDING_BOX: tor = new float[6]; break; default: tor = new float[16]; break; } CSN_PFLOAT_METHODS(_raw, method, tor); return tor; }
private void OnCallbackFloat(CSN_FLOAT_METHOD method) { switch (method) { case CSN_FLOAT_METHOD.GET_ABSOLUTE_POSITION: CSN_SET_TEMP_FLOATS(_raw, AbsolutePosition.ToUnmanaged()); break; case CSN_FLOAT_METHOD.GET_ABSOLUTE_TRANSFORMATION: CSN_SET_TEMP_FLOATS(_raw, AbsoluteTransformation.ToUnmanaged()); break; case CSN_FLOAT_METHOD.GET_BOUNDING_BOX: CSN_SET_TEMP_FLOATS(_raw, BoundingBox.ToUnmanaged()); CSN_PVOID_METHODS(_raw, CSN_VOID_METHOD.MANUAL_UPDATE_BOUNDINGBOX, IntPtr.Zero, 0, 0, null); break; case CSN_FLOAT_METHOD.GET_POSITION: CSN_SET_TEMP_FLOATS(_raw, Position.ToUnmanaged()); break; case CSN_FLOAT_METHOD.GET_R_TRANSFORMATION: CSN_SET_TEMP_FLOATS(_raw, RelativeTransformation.ToUnmanaged()); break; case CSN_FLOAT_METHOD.GET_ROTATION: CSN_SET_TEMP_FLOATS(_raw, Rotation.ToUnmanaged()); break; case CSN_FLOAT_METHOD.GET_SCALE: CSN_SET_TEMP_FLOATS(_raw, Scale.ToUnmanaged()); break; case CSN_FLOAT_METHOD.GET_TRANSFORMED_BOUNDING_BOX: CSN_SET_TEMP_FLOATS(_raw, TransformedBoundingBox.ToUnmanaged()); break; } }
static extern void CSN_PFLOAT_METHODS(IntPtr csn, CSN_FLOAT_METHOD method, [MarshalAs(UnmanagedType.LPArray)] float[] arg1);