// --------------------------------------------------------------------------------------------------------------------
//
// Copyright (c) VRMADA, All rights reserved.
//
// --------------------------------------------------------------------------------------------------------------------
namespace UltimateXR.Networking
{
///
/// Describes the different elements that can be synchronized by a network transform component.
///
public enum UxrNetworkTransformFlags
{
None = 0,
// Flags for separate transform components:
PositionX = 1 << 0,
PositionY = 1 << 1,
PositionZ = 1 << 2,
RotationX = 1 << 3,
RotationY = 1 << 4,
RotationZ = 1 << 5,
ScaleX = 1 << 6,
ScaleY = 1 << 7,
ScaleZ = 1 << 8,
///
/// When set, it tells that the transform is a child of another transform that is also tracked. This usually means that
/// it doesn't require a NetworkObject, just a NetworkTransform.
///
ChildTransform = 1 << 31,
// Composite flags for root transforms:
Position = PositionX | PositionY | PositionZ,
Rotation = RotationX | RotationY | RotationZ,
Scale = ScaleX | ScaleY | ScaleZ,
PositionAndRotation = Position | Rotation,
All = Position | Rotation | Scale,
// Composite flags for transforms that have another network transform above:
ChildRotation = ChildTransform | RotationX | RotationY | RotationZ,
ChildScale = ChildTransform | ScaleX | ScaleY | ScaleZ,
ChildPositionAndRotation = ChildTransform | Position | Rotation,
ChildAll = ChildTransform | Position | Rotation | Scale
}
}