The ZBuffer - Managed DirectX resources
Search ZBuffer
Links


 

Tom has specifically asked for feedback on the design changes. Please let him know your ideas, feelings and bugs. Either use directx@microsoft.com or contact him via his blog.

Tom has also informed me that about 40% of D3DX is unintentionally missing from the beta. So don't assume any classes that are gone are gone for good.

The following are the changes I have determined in the Microsoft.DirectX.DirectInput namespace. My analysis is as good as my tools and my eyesight. Please check the facts yourself before berating anyone in public forums or making business decisions. Please let me know if you find any errors.

DirectInput appears to have suffered a lot from the 'missing APIs' which is odd becuase they are not part of D3DX. The missing parts however appear to be consistent i.e. Classes are removed along with properties that used those classes. So my assumption is that these changes were all intentional.

Deleted Classes/Structs (or maybe moved/renamed and I've not found them - see note above):

  • Action
  • ActionFormat
  • BufferedData
  • CalibrationPoint
  • Condition
  • ConfigureDevicesParameters
  • ConstantForce
  • CustomForce
  • DataFormat - seems in places this used to be used you now pass in multiple parameters. e.g. See device.SetDataFormat(DataFormat)
  • DeviceArrival
  • DeviceImageInformation
  • DeviceImageInformationHeader
  • DInputHelper
  • EffectStatus
  • FileEffect
  • ForceFeedbackGuid
  • ObjectTypeGuid
  • Periodic
  • RampForce
  • SystemGuid
  • enum ActionAttributeFlags
  • enum ActionMapControl
  • enum ActinMechanism
  • enum Any
  • enum ApplyActionMap
  • enum ArcadePlatform
  • enum ArcadeSideToSide
  • enum AxesDataFormat
  • enum BrowserControl
  • enum Button
  • enum Cad2DControl
  • enum Cad3DControl
  • enum CadFlyBy
  • enum CadModel
  • enum ConfigureDevicesFlags
  • enum DataFormatFlags
  • enum DeviceData
  • enum DeviceTypeControl
  • enum DeviceTypeDriving
  • enum DeviceTypeFirstPerson
  • enum DeviceTypeFlight
  • enum DeviceTypeGamePad
  • enum DeviceTypeJoystick
  • enum DeviceTypeKeyboard
  • enum DeviceTypeMouse
  • enum DeviceTypeRemote
  • enum DeviceTypeSupplemantal
  • enum DI
  • enum DrivingCombat
  • enum DrivingMecha
  • enum DrivingRace
  • enum DrivingTank
  • enum EnumBySemanticsReason
  • enum EnumDevicesBySematicsFlags
  • enum FightingFps
  • enum FightingHandToHand
  • enum FightingThirdPerson
  • enum FlyingCivilian
  • enum FlyingHelicopter
  • enum FlyingMilitary
  • enum ImageFileType
  • enum JoystickOffset
  • enum Keyboard
  • enum MaxPoints
  • enum Mouse
  • enum MouseOffset
  • enum PropertyType
  • enum PropRangeFlags
  • enum RemoteControl
  • enum ReturnCode
  • enum SetActionMapReturnCodes
  • enum SpaceSim
  • enum SportsBaseballBatting
  • enum SportsBaseballPitch
  • enum SportsBasketballDefense
  • enum SportsBasketballOffense
  • enum SportsBikingMountain
  • enum SportsFishing
  • enum SportsFootballDefence
  • enum SportsFootballField
  • enum SportsFootballOffense
  • enum SportsFootballQuarterback
  • enum SportsGolkf
  • enum SportsHockeyDefense
  • enum SportsHockeyGoalie
  • enum SportsHockeyOffense
  • enum SportsHunting
  • enum SportsRaquet
  • enum SportsSkiing
  • enum SportsSoccerDefense
  • enum SportsSoccerOffense
  • enum StandardEffect
  • enum StrategyRolePLaying
  • enum StrategyTurn
  • enum TextAlign
  • enum TimeStamp
  • enum Voice
  • ActionCollection
  • BufferedDataCollection

Changed Classes/Structs:

  • Common Change
    • Default Constructors gone for structs - is this a .net 2.0 thing?
    • UnmanagedComPointer, UpdateUnmanagedPointer - added to several classes
  • ColorSet
    • AreaFill, Border, CalloutHighlight, CalloutLine, ControlFill, HighlightFill, TextHighlight - all have *Color appended
    • TextFore - becomes TextForegroundColor
  • Device
    • Device(IDirectInputDevice8W*), BuildActionMap, GetBufferedData, GetEffects(string, ....), ImageInformation, SetActionMapReturnCodes, WriteEffect - removed
    • Caps - becomes Capabilities and returns DeviceCapabilities
    • CreatedEffects - now returns InputList<Effect> rather than EffectList
    • GetCurrentKeyboardState - becomes CurrentKeyboardState
    • Objects - now returns InputList<ObjectInstance> rather than DeviceObjectList
    • GetDeviceState - becomes generic GetCurrentDeviceState<T> (rather than taking a customFormatType parameter) and returns T rather than object
    • GetEffects - returns InputList<EffectInformation> rather than EffectList
    • GetObjectInformation - now returns ObjectInstance rather than DeviceObjectInstance
    • GetObjects - now returns InputList<ObjectInstance> instead of DeviceObjectList
    • GetPressedKeys - returns List<Key;> insterad of Key[]
    • RunControlPanel(Control), SetCooperativeLevel(Control) - now only have IntPtr overloads
    • SendHardwareCommand - now takes GraphicsBuffer for in and out parameters. Also returns an int.
    • SetDataFormat(DataFormat) - now takes separate parameters rather than DataFormat class
  • DeviceCaps - becomes Capabilities
    • FFDriverVersion, FFMinTimeResolution, FFSamplePeriod - FF spelled out in full to ForceFeedback
  • DeviceInstance
    • FFDriveGuid - becomes ForceFeedbackDriver
    • InstanceGuid - becomes Instance
    • ProductGuid - becomes Product
  • DeviceObjectInstance - becomes ObjectInstance
    • Flags - returns ObjectInstanceFlags ratehr tan int
    • ObjectType - becomes GuidType
    • ObjectID - becomes Type
  • DeviceProperties
    • AutoCenter - becomes IsAutoCenter
    • AxisModeAbsolute - becomes IsAxisModeAbsolute
    • GetApplicationData, SetApplicationData, GetCalibrationPoints, SetCalibrationPoints - removed
  • Effect - becomes EffectParameters
    • Condition, ConstantForce, CustomForce, Envelope, Periodic, RampForce, EffectType, UsesEnvelope, GetAxes, GetDirection, SetAxes, SetDirection - removed
  • EffectInformation
    • DynamicParams - becomes DynamicParameters and returns EffectParameterFlags ratehr than int
    • EffectType - returns EffectType rather than int
    • EffectGuid - becomes GuidTYpe
    • StaticParams - becomes StaticParameters and returns EffectParameterFlags rather than int
  • EffctObject - becomes Effect
    • Effect(IDirectInputEffect*) - replaces Effect(Guid, ...) constructors
    • EffectStatus, GetParameters, SetParameters - removed
    • IsEffectEmulated, IsEffectPlaying - added
  • JoystickState
    • All properties spelled out. A becomes Acceleration, AR becomes AngularAcceleration, F becomes Force, R becomes Rotation, V becomes Velocity, VR becomes AngularVelocity, FR becomes Torque
    • GetASlider - becomes GetAccelerationSiders
    • GetButtons - returns bool[] rather than byte[]
    • GetFSLider - becomes GetForceSliders
    • GetPointOfView - becomes GetHats
    • GetSlider - becomes GetSliders
    • GetVSlider - becomes GetVelocitySliders
  • Manager
    • Devices - now returns InputList<DeviceInstance> instead of DeviceList
    • GetDeviceAttached - becomes IsDeviceAttached
    • GetDevices(..., ActionFormat, ...) - removed
    • GetDevices(DeviceClass/DeviceType, ...) - returns InputList<DeviceInstance> instead of DeviceList
    • RunControlPanel(Control) - becomes RunControlPanel(IntPtr)
  • MouseState
    • X/Y/Z - now can 'set'
    • GetButtons - returns bool[] rather than byte[]
  • ObjectDataFormat
    • DeviceType - becomes Type
    • SourceGuid - becomes Guid
  • SematicsInstance
    • Remaining - becomes NumberRemaining
    • Flags, Device, DeviceInstance, NumberRemaining - become 'get' only.
  • enum DeviceObjectFlags
    • Pov - becomes POintOfView
  • enum EffectFlags
    • None - added
  • enum EffectParameterFlags
    • None - added
  • enum EffectStartFlags
    • None - added
  • enum ForceFeedbackStates
    • None - added
  • ObjectInstanceFlags
    • Acceleration, Force, Mask, Position, Veolcity - preprended with Aspect*
    • ForceFeedbackActuator, ForceFeedbackEffectTrigger - added
    • GuidUsage - becomes GuidIsUsage
  • DeviceList - use InputList<DeviceInstance> instead
  • DeviceObjectList - use InputList<ObjectInstance> instead
  • EffectList - use InputList<Effect> instead
  • *Exception - now inherit from DirectXException rather than InputException

New Classes/Structs:
  No additions to DirectInput

Issues/Inconsistencies/Things that SHOULD have been changed/While we are making major changes lets do this too?

  • device - UnmanagedComPointer/UpdateUnmanagedPointer: names are not consistent. Is it a COM pointer or not?
  • Device/Manager::RunControlPanel(Control), SetCooperativeLevel(Control) - see other comments, the divorce from WinForms needs good justification or put it back please.
  • device::SendHardwareCommand - other changes seem to have GraphicsBuffer as a valid return argument. Why does this function have an out param and return an int?
  • Capabilities::ForceFeedbackMinTimeResolution - min needs to be spelled out
  • ObjectInstance - this is really not a very descriptive name. I'm not an expert in DirectInput so maybe it does make sense but objects with object in their name are generally not too useful.
  • ObjectInstance/ObjectDataFormat::Type - not useful to call properties Type since Type is so prevalant in the BCL
  • DeviceObjectFlags::Pov/POintOfView - elsewhere Pov became 'hats'
  • enum ForceFeedbackStates - should be ForceFeedbackFlags since its a flags enum
Updated 10/18/2005 1:00:00 AM by Zman