@vived/core 1.4.2 → 1.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +118 -20
- package/dist/cjs/AppObject/AppObject.js +53 -0
- package/dist/cjs/AppObject/AppObject.js.map +1 -1
- package/dist/cjs/AppObject/AppObjectComponent.js +78 -0
- package/dist/cjs/AppObject/AppObjectComponent.js.map +1 -1
- package/dist/cjs/AppObject/AppObjectController.js +22 -0
- package/dist/cjs/AppObject/AppObjectController.js.map +1 -1
- package/dist/cjs/AppObject/AppObjectEntity.js +52 -0
- package/dist/cjs/AppObject/AppObjectEntity.js.map +1 -1
- package/dist/cjs/AppObject/AppObjectEntityRepo.js +75 -1
- package/dist/cjs/AppObject/AppObjectEntityRepo.js.map +1 -1
- package/dist/cjs/AppObject/AppObjectPM.js +46 -0
- package/dist/cjs/AppObject/AppObjectPM.js.map +1 -1
- package/dist/cjs/AppObject/AppObjectRepo.js +20 -0
- package/dist/cjs/AppObject/AppObjectRepo.js.map +1 -1
- package/dist/cjs/AppObject/AppObjectUC.js +23 -0
- package/dist/cjs/AppObject/AppObjectUC.js.map +1 -1
- package/dist/cjs/AppObject/AppObjectView.js +22 -0
- package/dist/cjs/AppObject/AppObjectView.js.map +1 -1
- package/dist/cjs/AppObject/getSingletonComponent.js +19 -0
- package/dist/cjs/AppObject/getSingletonComponent.js.map +1 -1
- package/dist/cjs/Entities/MemoizedAngle.js +21 -0
- package/dist/cjs/Entities/MemoizedAngle.js.map +1 -1
- package/dist/cjs/Entities/MemoizedBoolean.js +21 -0
- package/dist/cjs/Entities/MemoizedBoolean.js.map +1 -1
- package/dist/cjs/Entities/MemoizedColor.js +21 -0
- package/dist/cjs/Entities/MemoizedColor.js.map +1 -1
- package/dist/cjs/Entities/MemoizedNumber.js +21 -0
- package/dist/cjs/Entities/MemoizedNumber.js.map +1 -1
- package/dist/cjs/Entities/MemoizedQuaternion.js +21 -0
- package/dist/cjs/Entities/MemoizedQuaternion.js.map +1 -1
- package/dist/cjs/Entities/MemoizedString.js +21 -0
- package/dist/cjs/Entities/MemoizedString.js.map +1 -1
- package/dist/cjs/Entities/MemoizedVector2.js +21 -0
- package/dist/cjs/Entities/MemoizedVector2.js.map +1 -1
- package/dist/cjs/Entities/MemoizedVector3.js +21 -0
- package/dist/cjs/Entities/MemoizedVector3.js.map +1 -1
- package/dist/cjs/Entities/ObservableEntity.js +17 -0
- package/dist/cjs/Entities/ObservableEntity.js.map +1 -1
- package/dist/cjs/Entities/ObserverList.js +21 -0
- package/dist/cjs/Entities/ObserverList.js.map +1 -1
- package/dist/cjs/Entities/RangedNumber.js +29 -0
- package/dist/cjs/Entities/RangedNumber.js.map +1 -1
- package/dist/cjs/Types/PmAdapter.js.map +1 -1
- package/dist/cjs/Types/SingletonPmAdapter.js.map +1 -1
- package/dist/cjs/ValueObjects/Angle.js +1 -1
- package/dist/cjs/ValueObjects/Angle.js.map +1 -1
- package/dist/cjs/ValueObjects/LineSegment2D.js +6 -6
- package/dist/cjs/ValueObjects/LineSegment2D.js.map +1 -1
- package/dist/cjs/ValueObjects/Matrix.js +6 -6
- package/dist/cjs/ValueObjects/Matrix.js.map +1 -1
- package/dist/cjs/ValueObjects/Quaternion.js +17 -17
- package/dist/cjs/ValueObjects/Quaternion.js.map +1 -1
- package/dist/cjs/ValueObjects/Vector2.js +15 -8
- package/dist/cjs/ValueObjects/Vector2.js.map +1 -1
- package/dist/esm/AppObject/AppObject.js +53 -0
- package/dist/esm/AppObject/AppObject.js.map +1 -1
- package/dist/esm/AppObject/AppObjectComponent.js +78 -0
- package/dist/esm/AppObject/AppObjectComponent.js.map +1 -1
- package/dist/esm/AppObject/AppObjectController.js +22 -0
- package/dist/esm/AppObject/AppObjectController.js.map +1 -1
- package/dist/esm/AppObject/AppObjectEntity.js +52 -0
- package/dist/esm/AppObject/AppObjectEntity.js.map +1 -1
- package/dist/esm/AppObject/AppObjectEntityRepo.js +75 -1
- package/dist/esm/AppObject/AppObjectEntityRepo.js.map +1 -1
- package/dist/esm/AppObject/AppObjectPM.js +46 -0
- package/dist/esm/AppObject/AppObjectPM.js.map +1 -1
- package/dist/esm/AppObject/AppObjectRepo.js +20 -0
- package/dist/esm/AppObject/AppObjectRepo.js.map +1 -1
- package/dist/esm/AppObject/AppObjectUC.js +24 -1
- package/dist/esm/AppObject/AppObjectUC.js.map +1 -1
- package/dist/esm/AppObject/AppObjectView.js +23 -1
- package/dist/esm/AppObject/AppObjectView.js.map +1 -1
- package/dist/esm/AppObject/getSingletonComponent.js +19 -0
- package/dist/esm/AppObject/getSingletonComponent.js.map +1 -1
- package/dist/esm/Entities/MemoizedAngle.js +21 -0
- package/dist/esm/Entities/MemoizedAngle.js.map +1 -1
- package/dist/esm/Entities/MemoizedBoolean.js +21 -0
- package/dist/esm/Entities/MemoizedBoolean.js.map +1 -1
- package/dist/esm/Entities/MemoizedColor.js +21 -0
- package/dist/esm/Entities/MemoizedColor.js.map +1 -1
- package/dist/esm/Entities/MemoizedNumber.js +21 -0
- package/dist/esm/Entities/MemoizedNumber.js.map +1 -1
- package/dist/esm/Entities/MemoizedQuaternion.js +21 -0
- package/dist/esm/Entities/MemoizedQuaternion.js.map +1 -1
- package/dist/esm/Entities/MemoizedString.js +21 -0
- package/dist/esm/Entities/MemoizedString.js.map +1 -1
- package/dist/esm/Entities/MemoizedVector2.js +21 -0
- package/dist/esm/Entities/MemoizedVector2.js.map +1 -1
- package/dist/esm/Entities/MemoizedVector3.js +21 -0
- package/dist/esm/Entities/MemoizedVector3.js.map +1 -1
- package/dist/esm/Entities/ObservableEntity.js +17 -0
- package/dist/esm/Entities/ObservableEntity.js.map +1 -1
- package/dist/esm/Entities/ObserverList.js +21 -0
- package/dist/esm/Entities/ObserverList.js.map +1 -1
- package/dist/esm/Entities/RangedNumber.js +29 -0
- package/dist/esm/Entities/RangedNumber.js.map +1 -1
- package/dist/esm/Types/PmAdapter.js.map +1 -1
- package/dist/esm/Types/SingletonPmAdapter.js.map +1 -1
- package/dist/esm/ValueObjects/Angle.js +1 -1
- package/dist/esm/ValueObjects/Angle.js.map +1 -1
- package/dist/esm/ValueObjects/LineSegment2D.js +6 -6
- package/dist/esm/ValueObjects/LineSegment2D.js.map +1 -1
- package/dist/esm/ValueObjects/Matrix.js +6 -6
- package/dist/esm/ValueObjects/Matrix.js.map +1 -1
- package/dist/esm/ValueObjects/Quaternion.js +17 -17
- package/dist/esm/ValueObjects/Quaternion.js.map +1 -1
- package/dist/esm/ValueObjects/Vector2.js +15 -8
- package/dist/esm/ValueObjects/Vector2.js.map +1 -1
- package/dist/types/AppObject/AppObject.d.ts +42 -0
- package/dist/types/AppObject/AppObject.d.ts.map +1 -1
- package/dist/types/AppObject/AppObjectComponent.d.ts +80 -0
- package/dist/types/AppObject/AppObjectComponent.d.ts.map +1 -1
- package/dist/types/AppObject/AppObjectController.d.ts +22 -0
- package/dist/types/AppObject/AppObjectController.d.ts.map +1 -1
- package/dist/types/AppObject/AppObjectEntity.d.ts +55 -0
- package/dist/types/AppObject/AppObjectEntity.d.ts.map +1 -1
- package/dist/types/AppObject/AppObjectEntityRepo.d.ts +75 -0
- package/dist/types/AppObject/AppObjectEntityRepo.d.ts.map +1 -1
- package/dist/types/AppObject/AppObjectPM.d.ts +53 -0
- package/dist/types/AppObject/AppObjectPM.d.ts.map +1 -1
- package/dist/types/AppObject/AppObjectRepo.d.ts +124 -0
- package/dist/types/AppObject/AppObjectRepo.d.ts.map +1 -1
- package/dist/types/AppObject/AppObjectUC.d.ts +23 -0
- package/dist/types/AppObject/AppObjectUC.d.ts.map +1 -1
- package/dist/types/AppObject/AppObjectView.d.ts +22 -0
- package/dist/types/AppObject/AppObjectView.d.ts.map +1 -1
- package/dist/types/AppObject/getSingletonComponent.d.ts +19 -0
- package/dist/types/AppObject/getSingletonComponent.d.ts.map +1 -1
- package/dist/types/Entities/MemoizedAngle.d.ts +21 -0
- package/dist/types/Entities/MemoizedAngle.d.ts.map +1 -1
- package/dist/types/Entities/MemoizedBoolean.d.ts +21 -0
- package/dist/types/Entities/MemoizedBoolean.d.ts.map +1 -1
- package/dist/types/Entities/MemoizedColor.d.ts +21 -0
- package/dist/types/Entities/MemoizedColor.d.ts.map +1 -1
- package/dist/types/Entities/MemoizedNumber.d.ts +21 -0
- package/dist/types/Entities/MemoizedNumber.d.ts.map +1 -1
- package/dist/types/Entities/MemoizedQuaternion.d.ts +21 -0
- package/dist/types/Entities/MemoizedQuaternion.d.ts.map +1 -1
- package/dist/types/Entities/MemoizedString.d.ts +21 -0
- package/dist/types/Entities/MemoizedString.d.ts.map +1 -1
- package/dist/types/Entities/MemoizedVector2.d.ts +21 -0
- package/dist/types/Entities/MemoizedVector2.d.ts.map +1 -1
- package/dist/types/Entities/MemoizedVector3.d.ts +21 -0
- package/dist/types/Entities/MemoizedVector3.d.ts.map +1 -1
- package/dist/types/Entities/ObservableEntity.d.ts +20 -0
- package/dist/types/Entities/ObservableEntity.d.ts.map +1 -1
- package/dist/types/Entities/ObserverList.d.ts +21 -0
- package/dist/types/Entities/ObserverList.d.ts.map +1 -1
- package/dist/types/Entities/RangedNumber.d.ts +37 -0
- package/dist/types/Entities/RangedNumber.d.ts.map +1 -1
- package/dist/types/Types/PmAdapter.d.ts +60 -0
- package/dist/types/Types/PmAdapter.d.ts.map +1 -1
- package/dist/types/Types/SingletonPmAdapter.d.ts +55 -0
- package/dist/types/Types/SingletonPmAdapter.d.ts.map +1 -1
- package/dist/types/ValueObjects/Angle.d.ts +1 -1
- package/dist/types/ValueObjects/Matrix.d.ts +5 -5
- package/dist/types/ValueObjects/Matrix.d.ts.map +1 -1
- package/dist/types/ValueObjects/Quaternion.d.ts +17 -17
- package/dist/types/ValueObjects/Vector2.d.ts +8 -3
- package/dist/types/ValueObjects/Vector2.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/AppObject/AppObject.test.js +0 -113
- package/dist/cjs/AppObject/AppObject.test.js.map +0 -1
- package/dist/cjs/AppObject/AppObjectComponent.test.js +0 -132
- package/dist/cjs/AppObject/AppObjectComponent.test.js.map +0 -1
- package/dist/cjs/AppObject/AppObjectEntity.test.js +0 -108
- package/dist/cjs/AppObject/AppObjectEntity.test.js.map +0 -1
- package/dist/cjs/AppObject/AppObjectEntityRepo.test.js +0 -149
- package/dist/cjs/AppObject/AppObjectEntityRepo.test.js.map +0 -1
- package/dist/cjs/AppObject/AppObjectPM.test.js +0 -103
- package/dist/cjs/AppObject/AppObjectPM.test.js.map +0 -1
- package/dist/cjs/AppObject/AppObjectRepo.test.js +0 -213
- package/dist/cjs/AppObject/AppObjectRepo.test.js.map +0 -1
- package/dist/cjs/AppObject/getSingletonComponent.test.js +0 -13
- package/dist/cjs/AppObject/getSingletonComponent.test.js.map +0 -1
- package/dist/cjs/Entities/MemoizedAngle.test.js +0 -30
- package/dist/cjs/Entities/MemoizedAngle.test.js.map +0 -1
- package/dist/cjs/Entities/MemoizedBoolean.test.js +0 -34
- package/dist/cjs/Entities/MemoizedBoolean.test.js.map +0 -1
- package/dist/cjs/Entities/MemoizedColor.test.js +0 -32
- package/dist/cjs/Entities/MemoizedColor.test.js.map +0 -1
- package/dist/cjs/Entities/MemoizedNumber.test.js +0 -29
- package/dist/cjs/Entities/MemoizedNumber.test.js.map +0 -1
- package/dist/cjs/Entities/MemoizedQuaternion.test.js +0 -32
- package/dist/cjs/Entities/MemoizedQuaternion.test.js.map +0 -1
- package/dist/cjs/Entities/MemoizedString.test.js +0 -29
- package/dist/cjs/Entities/MemoizedString.test.js.map +0 -1
- package/dist/cjs/Entities/MemoizedVector2.test.js +0 -32
- package/dist/cjs/Entities/MemoizedVector2.test.js.map +0 -1
- package/dist/cjs/Entities/MemoizedVector3.test.js +0 -32
- package/dist/cjs/Entities/MemoizedVector3.test.js.map +0 -1
- package/dist/cjs/Entities/ObservableEntity.test.js +0 -25
- package/dist/cjs/Entities/ObservableEntity.test.js.map +0 -1
- package/dist/cjs/Entities/ObserverList.test.js +0 -44
- package/dist/cjs/Entities/ObserverList.test.js.map +0 -1
- package/dist/cjs/Entities/RangedNumber.test.js +0 -96
- package/dist/cjs/Entities/RangedNumber.test.js.map +0 -1
- package/dist/cjs/Utilities/LengthConverters.test.js +0 -24
- package/dist/cjs/Utilities/LengthConverters.test.js.map +0 -1
- package/dist/cjs/Utilities/LerpNumber.test.js +0 -90
- package/dist/cjs/Utilities/LerpNumber.test.js.map +0 -1
- package/dist/cjs/Utilities/addAlphaToHex.test.js +0 -34
- package/dist/cjs/Utilities/addAlphaToHex.test.js.map +0 -1
- package/dist/cjs/Utilities/alphaToHex.test.js +0 -75
- package/dist/cjs/Utilities/alphaToHex.test.js.map +0 -1
- package/dist/cjs/Utilities/degreesToRadians.test.js +0 -9
- package/dist/cjs/Utilities/degreesToRadians.test.js.map +0 -1
- package/dist/cjs/Utilities/easeFunctions.test.js +0 -209
- package/dist/cjs/Utilities/easeFunctions.test.js.map +0 -1
- package/dist/cjs/Utilities/interpolateNumber.test.js +0 -26
- package/dist/cjs/Utilities/interpolateNumber.test.js.map +0 -1
- package/dist/cjs/ValueObjects/Angle.test.js +0 -28
- package/dist/cjs/ValueObjects/Angle.test.js.map +0 -1
- package/dist/cjs/ValueObjects/Color.test.js +0 -147
- package/dist/cjs/ValueObjects/Color.test.js.map +0 -1
- package/dist/cjs/ValueObjects/LineSegment2D.test.js +0 -102
- package/dist/cjs/ValueObjects/LineSegment2D.test.js.map +0 -1
- package/dist/cjs/ValueObjects/Matrix.test.js +0 -385
- package/dist/cjs/ValueObjects/Matrix.test.js.map +0 -1
- package/dist/cjs/ValueObjects/ParametricLine.test.js +0 -126
- package/dist/cjs/ValueObjects/ParametricLine.test.js.map +0 -1
- package/dist/cjs/ValueObjects/ParametricPlane.test.js +0 -101
- package/dist/cjs/ValueObjects/ParametricPlane.test.js.map +0 -1
- package/dist/cjs/ValueObjects/Quaternion.test.js +0 -240
- package/dist/cjs/ValueObjects/Quaternion.test.js.map +0 -1
- package/dist/cjs/ValueObjects/Rectangle.test.js +0 -32
- package/dist/cjs/ValueObjects/Rectangle.test.js.map +0 -1
- package/dist/cjs/ValueObjects/Vector2.test.js +0 -136
- package/dist/cjs/ValueObjects/Vector2.test.js.map +0 -1
- package/dist/cjs/ValueObjects/Vector3.test.js +0 -188
- package/dist/cjs/ValueObjects/Vector3.test.js.map +0 -1
- package/dist/cjs/ValueObjects/Version.test.js +0 -310
- package/dist/cjs/ValueObjects/Version.test.js.map +0 -1
- package/dist/esm/AppObject/AppObject.test.js +0 -110
- package/dist/esm/AppObject/AppObject.test.js.map +0 -1
- package/dist/esm/AppObject/AppObjectComponent.test.js +0 -130
- package/dist/esm/AppObject/AppObjectComponent.test.js.map +0 -1
- package/dist/esm/AppObject/AppObjectEntity.test.js +0 -106
- package/dist/esm/AppObject/AppObjectEntity.test.js.map +0 -1
- package/dist/esm/AppObject/AppObjectEntityRepo.test.js +0 -147
- package/dist/esm/AppObject/AppObjectEntityRepo.test.js.map +0 -1
- package/dist/esm/AppObject/AppObjectPM.test.js +0 -101
- package/dist/esm/AppObject/AppObjectPM.test.js.map +0 -1
- package/dist/esm/AppObject/AppObjectRepo.test.js +0 -211
- package/dist/esm/AppObject/AppObjectRepo.test.js.map +0 -1
- package/dist/esm/AppObject/getSingletonComponent.test.js +0 -11
- package/dist/esm/AppObject/getSingletonComponent.test.js.map +0 -1
- package/dist/esm/Entities/MemoizedAngle.test.js +0 -28
- package/dist/esm/Entities/MemoizedAngle.test.js.map +0 -1
- package/dist/esm/Entities/MemoizedBoolean.test.js +0 -32
- package/dist/esm/Entities/MemoizedBoolean.test.js.map +0 -1
- package/dist/esm/Entities/MemoizedColor.test.js +0 -30
- package/dist/esm/Entities/MemoizedColor.test.js.map +0 -1
- package/dist/esm/Entities/MemoizedNumber.test.js +0 -27
- package/dist/esm/Entities/MemoizedNumber.test.js.map +0 -1
- package/dist/esm/Entities/MemoizedQuaternion.test.js +0 -30
- package/dist/esm/Entities/MemoizedQuaternion.test.js.map +0 -1
- package/dist/esm/Entities/MemoizedString.test.js +0 -27
- package/dist/esm/Entities/MemoizedString.test.js.map +0 -1
- package/dist/esm/Entities/MemoizedVector2.test.js +0 -30
- package/dist/esm/Entities/MemoizedVector2.test.js.map +0 -1
- package/dist/esm/Entities/MemoizedVector3.test.js +0 -30
- package/dist/esm/Entities/MemoizedVector3.test.js.map +0 -1
- package/dist/esm/Entities/ObservableEntity.test.js +0 -23
- package/dist/esm/Entities/ObservableEntity.test.js.map +0 -1
- package/dist/esm/Entities/ObserverList.test.js +0 -42
- package/dist/esm/Entities/ObserverList.test.js.map +0 -1
- package/dist/esm/Entities/RangedNumber.test.js +0 -94
- package/dist/esm/Entities/RangedNumber.test.js.map +0 -1
- package/dist/esm/Utilities/LengthConverters.test.js +0 -22
- package/dist/esm/Utilities/LengthConverters.test.js.map +0 -1
- package/dist/esm/Utilities/LerpNumber.test.js +0 -88
- package/dist/esm/Utilities/LerpNumber.test.js.map +0 -1
- package/dist/esm/Utilities/addAlphaToHex.test.js +0 -32
- package/dist/esm/Utilities/addAlphaToHex.test.js.map +0 -1
- package/dist/esm/Utilities/alphaToHex.test.js +0 -73
- package/dist/esm/Utilities/alphaToHex.test.js.map +0 -1
- package/dist/esm/Utilities/degreesToRadians.test.js +0 -7
- package/dist/esm/Utilities/degreesToRadians.test.js.map +0 -1
- package/dist/esm/Utilities/easeFunctions.test.js +0 -207
- package/dist/esm/Utilities/easeFunctions.test.js.map +0 -1
- package/dist/esm/Utilities/interpolateNumber.test.js +0 -24
- package/dist/esm/Utilities/interpolateNumber.test.js.map +0 -1
- package/dist/esm/ValueObjects/Angle.test.js +0 -26
- package/dist/esm/ValueObjects/Angle.test.js.map +0 -1
- package/dist/esm/ValueObjects/Color.test.js +0 -145
- package/dist/esm/ValueObjects/Color.test.js.map +0 -1
- package/dist/esm/ValueObjects/LineSegment2D.test.js +0 -100
- package/dist/esm/ValueObjects/LineSegment2D.test.js.map +0 -1
- package/dist/esm/ValueObjects/Matrix.test.js +0 -383
- package/dist/esm/ValueObjects/Matrix.test.js.map +0 -1
- package/dist/esm/ValueObjects/ParametricLine.test.js +0 -124
- package/dist/esm/ValueObjects/ParametricLine.test.js.map +0 -1
- package/dist/esm/ValueObjects/ParametricPlane.test.js +0 -99
- package/dist/esm/ValueObjects/ParametricPlane.test.js.map +0 -1
- package/dist/esm/ValueObjects/Quaternion.test.js +0 -238
- package/dist/esm/ValueObjects/Quaternion.test.js.map +0 -1
- package/dist/esm/ValueObjects/Rectangle.test.js +0 -30
- package/dist/esm/ValueObjects/Rectangle.test.js.map +0 -1
- package/dist/esm/ValueObjects/Vector2.test.js +0 -134
- package/dist/esm/ValueObjects/Vector2.test.js.map +0 -1
- package/dist/esm/ValueObjects/Vector3.test.js +0 -186
- package/dist/esm/ValueObjects/Vector3.test.js.map +0 -1
- package/dist/esm/ValueObjects/Version.test.js +0 -308
- package/dist/esm/ValueObjects/Version.test.js.map +0 -1
- package/dist/types/AppObject/AppObject.test.d.ts +0 -7
- package/dist/types/AppObject/AppObject.test.d.ts.map +0 -1
- package/dist/types/AppObject/AppObjectComponent.test.d.ts +0 -2
- package/dist/types/AppObject/AppObjectComponent.test.d.ts.map +0 -1
- package/dist/types/AppObject/AppObjectEntity.test.d.ts +0 -2
- package/dist/types/AppObject/AppObjectEntity.test.d.ts.map +0 -1
- package/dist/types/AppObject/AppObjectEntityRepo.test.d.ts +0 -2
- package/dist/types/AppObject/AppObjectEntityRepo.test.d.ts.map +0 -1
- package/dist/types/AppObject/AppObjectPM.test.d.ts +0 -2
- package/dist/types/AppObject/AppObjectPM.test.d.ts.map +0 -1
- package/dist/types/AppObject/AppObjectRepo.test.d.ts +0 -2
- package/dist/types/AppObject/AppObjectRepo.test.d.ts.map +0 -1
- package/dist/types/AppObject/getSingletonComponent.test.d.ts +0 -2
- package/dist/types/AppObject/getSingletonComponent.test.d.ts.map +0 -1
- package/dist/types/Entities/MemoizedAngle.test.d.ts +0 -2
- package/dist/types/Entities/MemoizedAngle.test.d.ts.map +0 -1
- package/dist/types/Entities/MemoizedBoolean.test.d.ts +0 -2
- package/dist/types/Entities/MemoizedBoolean.test.d.ts.map +0 -1
- package/dist/types/Entities/MemoizedColor.test.d.ts +0 -2
- package/dist/types/Entities/MemoizedColor.test.d.ts.map +0 -1
- package/dist/types/Entities/MemoizedNumber.test.d.ts +0 -2
- package/dist/types/Entities/MemoizedNumber.test.d.ts.map +0 -1
- package/dist/types/Entities/MemoizedQuaternion.test.d.ts +0 -2
- package/dist/types/Entities/MemoizedQuaternion.test.d.ts.map +0 -1
- package/dist/types/Entities/MemoizedString.test.d.ts +0 -2
- package/dist/types/Entities/MemoizedString.test.d.ts.map +0 -1
- package/dist/types/Entities/MemoizedVector2.test.d.ts +0 -2
- package/dist/types/Entities/MemoizedVector2.test.d.ts.map +0 -1
- package/dist/types/Entities/MemoizedVector3.test.d.ts +0 -2
- package/dist/types/Entities/MemoizedVector3.test.d.ts.map +0 -1
- package/dist/types/Entities/ObservableEntity.test.d.ts +0 -2
- package/dist/types/Entities/ObservableEntity.test.d.ts.map +0 -1
- package/dist/types/Entities/ObserverList.test.d.ts +0 -2
- package/dist/types/Entities/ObserverList.test.d.ts.map +0 -1
- package/dist/types/Entities/RangedNumber.test.d.ts +0 -2
- package/dist/types/Entities/RangedNumber.test.d.ts.map +0 -1
- package/dist/types/Utilities/LengthConverters.test.d.ts +0 -2
- package/dist/types/Utilities/LengthConverters.test.d.ts.map +0 -1
- package/dist/types/Utilities/LerpNumber.test.d.ts +0 -2
- package/dist/types/Utilities/LerpNumber.test.d.ts.map +0 -1
- package/dist/types/Utilities/addAlphaToHex.test.d.ts +0 -2
- package/dist/types/Utilities/addAlphaToHex.test.d.ts.map +0 -1
- package/dist/types/Utilities/alphaToHex.test.d.ts +0 -2
- package/dist/types/Utilities/alphaToHex.test.d.ts.map +0 -1
- package/dist/types/Utilities/degreesToRadians.test.d.ts +0 -2
- package/dist/types/Utilities/degreesToRadians.test.d.ts.map +0 -1
- package/dist/types/Utilities/easeFunctions.test.d.ts +0 -2
- package/dist/types/Utilities/easeFunctions.test.d.ts.map +0 -1
- package/dist/types/Utilities/interpolateNumber.test.d.ts +0 -2
- package/dist/types/Utilities/interpolateNumber.test.d.ts.map +0 -1
- package/dist/types/ValueObjects/Angle.test.d.ts +0 -2
- package/dist/types/ValueObjects/Angle.test.d.ts.map +0 -1
- package/dist/types/ValueObjects/Color.test.d.ts +0 -2
- package/dist/types/ValueObjects/Color.test.d.ts.map +0 -1
- package/dist/types/ValueObjects/LineSegment2D.test.d.ts +0 -2
- package/dist/types/ValueObjects/LineSegment2D.test.d.ts.map +0 -1
- package/dist/types/ValueObjects/Matrix.test.d.ts +0 -2
- package/dist/types/ValueObjects/Matrix.test.d.ts.map +0 -1
- package/dist/types/ValueObjects/ParametricLine.test.d.ts +0 -2
- package/dist/types/ValueObjects/ParametricLine.test.d.ts.map +0 -1
- package/dist/types/ValueObjects/ParametricPlane.test.d.ts +0 -2
- package/dist/types/ValueObjects/ParametricPlane.test.d.ts.map +0 -1
- package/dist/types/ValueObjects/Quaternion.test.d.ts +0 -2
- package/dist/types/ValueObjects/Quaternion.test.d.ts.map +0 -1
- package/dist/types/ValueObjects/Rectangle.test.d.ts +0 -2
- package/dist/types/ValueObjects/Rectangle.test.d.ts.map +0 -1
- package/dist/types/ValueObjects/Vector2.test.d.ts +0 -2
- package/dist/types/ValueObjects/Vector2.test.d.ts.map +0 -1
- package/dist/types/ValueObjects/Vector3.test.d.ts +0 -2
- package/dist/types/ValueObjects/Vector3.test.d.ts.map +0 -1
- package/dist/types/ValueObjects/Version.test.d.ts +0 -2
- package/dist/types/ValueObjects/Version.test.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppObjectRepo.js","sourceRoot":"","sources":["../../../src/AppObject/AppObjectRepo.ts"],"names":[],"mappings":"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","sourcesContent":["import { ObservableEntity, ObserverList } from \"../Entities\";\r\nimport { AppObject, makeAppObject } from \"./AppObject\";\r\nimport { AppObjectComponent } from \"./AppObjectComponent\";\r\n\r\nexport abstract class AppObjectRepo extends ObservableEntity {\r\n abstract has(appObjectID: string): boolean;\r\n abstract add(appObject: AppObject): void;\r\n abstract remove(appObjectID: string): void;\r\n abstract get(appObjectID: string): AppObject | undefined;\r\n abstract getOrCreate(appObjectID: string): AppObject;\r\n abstract getAll(): AppObject[];\r\n\r\n abstract submitLog(sender: string, message: string): void;\r\n abstract submitWarning(sender: string, message: string): void;\r\n abstract submitError(sender: string, message: string): void;\r\n abstract submitFatal(sender: string, message: string): void;\r\n\r\n abstract registerSingleton(component: AppObjectComponent): void;\r\n abstract getSingleton<T extends AppObjectComponent>(\r\n type: string\r\n ): T | undefined;\r\n\r\n abstract getAppObjectComponent<T extends AppObjectComponent>(\r\n appObjectID: string,\r\n type: string\r\n ): T | undefined;\r\n abstract getAllAppObjectsWithComponent(componentType: string): AppObject[];\r\n abstract getAllComponents<T extends AppObjectComponent>(type: string): T[];\r\n\r\n abstract addAppObjectAddedObserver: (\r\n observer: (addedEntity: AppObject) => void\r\n ) => void;\r\n abstract removeAppObjectAddedObserver: (\r\n observer: (addedEntity: AppObject) => void\r\n ) => void;\r\n\r\n abstract addAppObjectRemovedObserver: (\r\n observer: (addedEntity: AppObject) => void\r\n ) => void;\r\n abstract removedAppObjectRemovedObserver: (\r\n observer: (addedEntity: AppObject) => void\r\n ) => void;\r\n}\r\n\r\nexport function makeAppObjectRepo(): AppObjectRepo {\r\n return new AppObjectRepoImp();\r\n}\r\n\r\nclass AppObjectRepoImp extends AppObjectRepo {\r\n private appObjectLookup = new Map<string, AppObject>();\r\n private singletons = new Map<string, AppObjectComponent>();\r\n\r\n private onAppObjectAddedObserver = new ObserverList<AppObject>();\r\n addAppObjectAddedObserver = (observer: (addedEntity: AppObject) => void) => {\r\n this.onAppObjectAddedObserver.add(observer);\r\n };\r\n removeAppObjectAddedObserver = (\r\n observer: (addedEntity: AppObject) => void\r\n ): void => {\r\n this.onAppObjectAddedObserver.remove(observer);\r\n };\r\n\r\n private onAppObjectRemovedObservers = new ObserverList<AppObject>();\r\n addAppObjectRemovedObserver = (\r\n observer: (removedEntity: AppObject) => void\r\n ) => {\r\n this.onAppObjectRemovedObservers.add(observer);\r\n };\r\n removedAppObjectRemovedObserver = (\r\n observer: (removedEntity: AppObject) => void\r\n ): void => {\r\n this.onAppObjectRemovedObservers.remove(observer);\r\n };\r\n\r\n has = (id: string): boolean => {\r\n return this.appObjectLookup.has(id);\r\n };\r\n\r\n add = (appObject: AppObject) => {\r\n const existing = this.appObjectLookup.get(appObject.id);\r\n if (existing) {\r\n existing.removeObserver(this.notify);\r\n }\r\n\r\n this.appObjectLookup.set(appObject.id, appObject);\r\n appObject.addObserver(this.notify);\r\n this.notify();\r\n this.onAppObjectAddedObserver.notify(appObject);\r\n };\r\n\r\n remove = (id: string) => {\r\n const existing = this.appObjectLookup.get(id);\r\n if (!existing) return;\r\n\r\n this.appObjectLookup.delete(id);\r\n existing.removeObserver(this.notify);\r\n this.notify();\r\n this.onAppObjectRemovedObservers.notify(existing);\r\n };\r\n\r\n get = (id: string): AppObject | undefined => {\r\n return this.appObjectLookup.get(id);\r\n };\r\n\r\n getOrCreate = (id: string): AppObject => {\r\n const existing = this.appObjectLookup.get(id);\r\n\r\n if (!existing) {\r\n return makeAppObject(id, this);\r\n } else {\r\n return existing;\r\n }\r\n };\r\n\r\n getAll = (): AppObject[] => {\r\n return Array.from(this.appObjectLookup.values());\r\n };\r\n\r\n getAllAppObjectsWithComponent(componentType: string): AppObject[] {\r\n const rArray: AppObject[] = [];\r\n\r\n this.appObjectLookup.forEach((appObj) => {\r\n if (appObj.hasComponent(componentType)) {\r\n rArray.push(appObj);\r\n }\r\n });\r\n\r\n return rArray;\r\n }\r\n\r\n getAllComponents<T extends AppObjectComponent>(type: string): T[] {\r\n const rArray: T[] = [];\r\n\r\n this.appObjectLookup.forEach((appObj) => {\r\n const aoEntity = appObj.getComponent(type);\r\n if (aoEntity) {\r\n rArray.push(aoEntity as T);\r\n }\r\n });\r\n\r\n return rArray;\r\n }\r\n\r\n getAppObjectComponent<T extends AppObjectComponent>(\r\n id: string,\r\n entityType: string\r\n ): T | undefined {\r\n const ao = this.appObjectLookup.get(id);\r\n if (!ao) {\r\n return undefined;\r\n }\r\n\r\n return ao.getComponent(entityType) as T;\r\n }\r\n\r\n submitLog(sender: string, message: string): void {\r\n console.log(`[${sender}]: ${message}`);\r\n }\r\n submitWarning(sender: string, message: string): void {\r\n console.warn(`[${sender}]: ${message}`);\r\n }\r\n submitError(sender: string, message: string): void {\r\n console.error(`[${sender}]: ${message}`);\r\n }\r\n submitFatal(sender: string, message: string): void {\r\n console.error(`FATAL ERROR - [${sender}]: ${message}`);\r\n }\r\n\r\n registerSingleton(component: AppObjectComponent): void {\r\n if (this.singletons.has(component.type)) {\r\n this.submitWarning(\r\n \"AppObjectRepo\",\r\n `Singleton for type ${component.type} already exists. Relpacing`\r\n );\r\n }\r\n\r\n this.singletons.set(component.type, component);\r\n }\r\n\r\n getSingleton<T extends AppObjectComponent>(type: string): T | undefined {\r\n if (this.singletons.has(type)) {\r\n return this.singletons.get(type) as T;\r\n }\r\n\r\n const components = this.getAllComponents<AppObjectComponent>(type);\r\n if (components.length === 1) {\r\n this.singletons.set(components[0].type, components[0]);\r\n return components[0] as T;\r\n } else if (components.length === 0) {\r\n this.submitWarning(\r\n \"AppObjectRepo\",\r\n `Unable to find a singleton for ${type}`\r\n );\r\n return undefined;\r\n } else if (components.length > 1) {\r\n this.submitWarning(\r\n \"AppObjectRepo\",\r\n `Multiple ${type} found. There should only be one if it truly a singleton. Using the first one`\r\n );\r\n return components[0] as T;\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"AppObjectRepo.js","sourceRoot":"","sources":["../../../src/AppObject/AppObjectRepo.ts"],"names":[],"mappings":"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","sourcesContent":["import { ObservableEntity, ObserverList } from \"../Entities\";\r\nimport { AppObject, makeAppObject } from \"./AppObject\";\r\nimport { AppObjectComponent } from \"./AppObjectComponent\";\r\n\r\n/**\r\n * Abstract repository class for managing AppObjects and their components.\r\n *\r\n * This class provides the interface for storing, retrieving, and managing application\r\n * objects, their components, and singletons. It also includes logging functionality\r\n * and observer pattern implementation for tracking changes to the repository.\r\n *\r\n * @extends ObservableEntity\r\n */\r\nexport abstract class AppObjectRepo extends ObservableEntity {\r\n /**\r\n * Checks if an AppObject with the specified ID exists in the repository.\r\n *\r\n * @param {string} appObjectID - The ID of the AppObject to check\r\n * @returns {boolean} True if the AppObject exists, false otherwise\r\n */\r\n abstract has(appObjectID: string): boolean;\r\n\r\n /**\r\n * Adds an AppObject to the repository.\r\n *\r\n * @param {AppObject} appObject - The AppObject to add\r\n */\r\n abstract add(appObject: AppObject): void;\r\n\r\n /**\r\n * Removes an AppObject with the specified ID from the repository.\r\n *\r\n * @param {string} appObjectID - The ID of the AppObject to remove\r\n */\r\n abstract remove(appObjectID: string): void;\r\n\r\n /**\r\n * Gets an AppObject by its ID.\r\n *\r\n * @param {string} appObjectID - The ID of the AppObject to retrieve\r\n * @returns {AppObject | undefined} The AppObject if found, undefined otherwise\r\n */\r\n abstract get(appObjectID: string): AppObject | undefined;\r\n\r\n /**\r\n * Gets an AppObject by its ID, or creates a new one if it doesn't exist.\r\n *\r\n * @param {string} appObjectID - The ID of the AppObject to retrieve or create\r\n * @returns {AppObject} The existing or newly created AppObject\r\n */\r\n abstract getOrCreate(appObjectID: string): AppObject;\r\n\r\n /**\r\n * Gets all AppObjects in the repository.\r\n *\r\n * @returns {AppObject[]} An array of all AppObjects\r\n */\r\n abstract getAll(): AppObject[];\r\n\r\n /**\r\n * Logs an informational message.\r\n *\r\n * @param {string} sender - The identifier of the message sender\r\n * @param {string} message - The message to log\r\n */\r\n abstract submitLog(sender: string, message: string): void;\r\n\r\n /**\r\n * Logs a warning message.\r\n *\r\n * @param {string} sender - The identifier of the message sender\r\n * @param {string} message - The warning message to log\r\n */\r\n abstract submitWarning(sender: string, message: string): void;\r\n\r\n /**\r\n * Logs an error message.\r\n *\r\n * @param {string} sender - The identifier of the message sender\r\n * @param {string} message - The error message to log\r\n */\r\n abstract submitError(sender: string, message: string): void;\r\n\r\n /**\r\n * Logs a fatal error message.\r\n *\r\n * @param {string} sender - The identifier of the message sender\r\n * @param {string} message - The fatal error message to log\r\n */\r\n abstract submitFatal(sender: string, message: string): void;\r\n\r\n /**\r\n * Registers a component as a singleton in the repository.\r\n *\r\n * @param {AppObjectComponent} component - The component to register as a singleton\r\n */\r\n abstract registerSingleton(component: AppObjectComponent): void;\r\n\r\n /**\r\n * Gets a singleton component of the specified type.\r\n *\r\n * @template T - Type of the component to retrieve, must extend AppObjectComponent\r\n * @param {string} type - The type of the singleton to retrieve\r\n * @returns {T | undefined} The singleton component if found, undefined otherwise\r\n */\r\n abstract getSingleton<T extends AppObjectComponent>(\r\n type: string\r\n ): T | undefined;\r\n\r\n /**\r\n * Gets a component of the specified type from an AppObject.\r\n *\r\n * @template T - Type of the component to retrieve, must extend AppObjectComponent\r\n * @param {string} appObjectID - The ID of the AppObject containing the component\r\n * @param {string} type - The type of the component to retrieve\r\n * @returns {T | undefined} The component if found, undefined otherwise\r\n */\r\n abstract getAppObjectComponent<T extends AppObjectComponent>(\r\n appObjectID: string,\r\n type: string\r\n ): T | undefined;\r\n\r\n /**\r\n * Gets all AppObjects that have a component of the specified type.\r\n *\r\n * @param {string} componentType - The component type to filter by\r\n * @returns {AppObject[]} An array of AppObjects having the specified component type\r\n */\r\n abstract getAllAppObjectsWithComponent(componentType: string): AppObject[];\r\n\r\n /**\r\n * Gets all components of the specified type across all AppObjects.\r\n *\r\n * @template T - Type of the components to retrieve, must extend AppObjectComponent\r\n * @param {string} type - The type of components to retrieve\r\n * @returns {T[]} An array of all components of the specified type\r\n */\r\n abstract getAllComponents<T extends AppObjectComponent>(type: string): T[];\r\n\r\n /**\r\n * Adds an observer to be notified when an AppObject is added to the repository.\r\n *\r\n * @param {(addedEntity: AppObject) => void} observer - The observer function\r\n */\r\n abstract addAppObjectAddedObserver: (\r\n observer: (addedEntity: AppObject) => void\r\n ) => void;\r\n\r\n /**\r\n * Removes an observer previously registered for AppObject addition notifications.\r\n *\r\n * @param {(addedEntity: AppObject) => void} observer - The observer function to remove\r\n */\r\n abstract removeAppObjectAddedObserver: (\r\n observer: (addedEntity: AppObject) => void\r\n ) => void;\r\n\r\n /**\r\n * Adds an observer to be notified when an AppObject is removed from the repository.\r\n *\r\n * @param {(addedEntity: AppObject) => void} observer - The observer function\r\n */\r\n abstract addAppObjectRemovedObserver: (\r\n observer: (addedEntity: AppObject) => void\r\n ) => void;\r\n\r\n /**\r\n * Removes an observer previously registered for AppObject removal notifications.\r\n *\r\n * @param {(addedEntity: AppObject) => void} observer - The observer function to remove\r\n */\r\n abstract removedAppObjectRemovedObserver: (\r\n observer: (addedEntity: AppObject) => void\r\n ) => void;\r\n}\r\n\r\n/**\r\n * Creates and returns a new AppObjectRepo instance.\r\n *\r\n * @returns {AppObjectRepo} A new AppObjectRepo instance\r\n */\r\nexport function makeAppObjectRepo(): AppObjectRepo {\r\n return new AppObjectRepoImp();\r\n}\r\n\r\n/**\r\n * Implementation of the AppObjectRepo abstract class.\r\n *\r\n * @private\r\n * @extends AppObjectRepo\r\n */\r\nclass AppObjectRepoImp extends AppObjectRepo {\r\n private appObjectLookup = new Map<string, AppObject>();\r\n private singletons = new Map<string, AppObjectComponent>();\r\n\r\n private onAppObjectAddedObserver = new ObserverList<AppObject>();\r\n addAppObjectAddedObserver = (observer: (addedEntity: AppObject) => void) => {\r\n this.onAppObjectAddedObserver.add(observer);\r\n };\r\n removeAppObjectAddedObserver = (\r\n observer: (addedEntity: AppObject) => void\r\n ): void => {\r\n this.onAppObjectAddedObserver.remove(observer);\r\n };\r\n\r\n private onAppObjectRemovedObservers = new ObserverList<AppObject>();\r\n addAppObjectRemovedObserver = (\r\n observer: (removedEntity: AppObject) => void\r\n ) => {\r\n this.onAppObjectRemovedObservers.add(observer);\r\n };\r\n removedAppObjectRemovedObserver = (\r\n observer: (removedEntity: AppObject) => void\r\n ): void => {\r\n this.onAppObjectRemovedObservers.remove(observer);\r\n };\r\n\r\n has = (id: string): boolean => {\r\n return this.appObjectLookup.has(id);\r\n };\r\n\r\n add = (appObject: AppObject) => {\r\n const existing = this.appObjectLookup.get(appObject.id);\r\n if (existing) {\r\n existing.removeObserver(this.notify);\r\n }\r\n\r\n this.appObjectLookup.set(appObject.id, appObject);\r\n appObject.addObserver(this.notify);\r\n this.notify();\r\n this.onAppObjectAddedObserver.notify(appObject);\r\n };\r\n\r\n remove = (id: string) => {\r\n const existing = this.appObjectLookup.get(id);\r\n if (!existing) return;\r\n\r\n this.appObjectLookup.delete(id);\r\n existing.removeObserver(this.notify);\r\n this.notify();\r\n this.onAppObjectRemovedObservers.notify(existing);\r\n };\r\n\r\n get = (id: string): AppObject | undefined => {\r\n return this.appObjectLookup.get(id);\r\n };\r\n\r\n getOrCreate = (id: string): AppObject => {\r\n const existing = this.appObjectLookup.get(id);\r\n\r\n if (!existing) {\r\n return makeAppObject(id, this);\r\n } else {\r\n return existing;\r\n }\r\n };\r\n\r\n getAll = (): AppObject[] => {\r\n return Array.from(this.appObjectLookup.values());\r\n };\r\n\r\n getAllAppObjectsWithComponent(componentType: string): AppObject[] {\r\n const rArray: AppObject[] = [];\r\n\r\n this.appObjectLookup.forEach((appObj) => {\r\n if (appObj.hasComponent(componentType)) {\r\n rArray.push(appObj);\r\n }\r\n });\r\n\r\n return rArray;\r\n }\r\n\r\n getAllComponents<T extends AppObjectComponent>(type: string): T[] {\r\n const rArray: T[] = [];\r\n\r\n this.appObjectLookup.forEach((appObj) => {\r\n const aoEntity = appObj.getComponent(type);\r\n if (aoEntity) {\r\n rArray.push(aoEntity as T);\r\n }\r\n });\r\n\r\n return rArray;\r\n }\r\n\r\n getAppObjectComponent<T extends AppObjectComponent>(\r\n id: string,\r\n entityType: string\r\n ): T | undefined {\r\n const ao = this.appObjectLookup.get(id);\r\n if (!ao) {\r\n return undefined;\r\n }\r\n\r\n return ao.getComponent(entityType) as T;\r\n }\r\n\r\n submitLog(sender: string, message: string): void {\r\n console.log(`[${sender}]: ${message}`);\r\n }\r\n submitWarning(sender: string, message: string): void {\r\n console.warn(`[${sender}]: ${message}`);\r\n }\r\n submitError(sender: string, message: string): void {\r\n console.error(`[${sender}]: ${message}`);\r\n }\r\n submitFatal(sender: string, message: string): void {\r\n console.error(`FATAL ERROR - [${sender}]: ${message}`);\r\n }\r\n\r\n registerSingleton(component: AppObjectComponent): void {\r\n if (this.singletons.has(component.type)) {\r\n this.submitWarning(\r\n \"AppObjectRepo\",\r\n `Singleton for type ${component.type} already exists. Relpacing`\r\n );\r\n }\r\n\r\n this.singletons.set(component.type, component);\r\n }\r\n\r\n getSingleton<T extends AppObjectComponent>(type: string): T | undefined {\r\n if (this.singletons.has(type)) {\r\n return this.singletons.get(type) as T;\r\n }\r\n\r\n const components = this.getAllComponents<AppObjectComponent>(type);\r\n if (components.length === 1) {\r\n this.singletons.set(components[0].type, components[0]);\r\n return components[0] as T;\r\n } else if (components.length === 0) {\r\n this.submitWarning(\r\n \"AppObjectRepo\",\r\n `Unable to find a singleton for ${type}`\r\n );\r\n return undefined;\r\n } else if (components.length > 1) {\r\n this.submitWarning(\r\n \"AppObjectRepo\",\r\n `Multiple ${type} found. There should only be one if it truly a singleton. Using the first one`\r\n );\r\n return components[0] as T;\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1,7 +1,30 @@
|
|
|
1
|
-
import { AppObjectComponent, AppObjectComponentType } from "./AppObjectComponent";
|
|
1
|
+
import { AppObjectComponent, AppObjectComponentType, } from "./AppObjectComponent";
|
|
2
|
+
/**
|
|
3
|
+
* AppObjectUC (Use Case) serves as a base use case class within the application framework.
|
|
4
|
+
*
|
|
5
|
+
* Use Cases are components that represent specific application operations or workflows.
|
|
6
|
+
* They encapsulate business rules and coordinate interactions between different parts
|
|
7
|
+
* of the application. Extend this class to implement specific use case scenarios.
|
|
8
|
+
*
|
|
9
|
+
* @extends AppObjectComponent
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* class PurchaseItemUC extends AppObjectUC {
|
|
13
|
+
* execute(itemId: string, quantity: number): boolean {
|
|
14
|
+
* // Implement the purchase item use case
|
|
15
|
+
* return true; // if successful
|
|
16
|
+
* }
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
2
20
|
export class AppObjectUC extends AppObjectComponent {
|
|
3
21
|
constructor() {
|
|
4
22
|
super(...arguments);
|
|
23
|
+
/**
|
|
24
|
+
* The component type identifier used to categorize this component as a use case
|
|
25
|
+
* This property helps the component system identify and manage use case components.
|
|
26
|
+
* @readonly
|
|
27
|
+
*/
|
|
5
28
|
this.componentType = AppObjectComponentType.UC;
|
|
6
29
|
}
|
|
7
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppObjectUC.js","sourceRoot":"","sources":["../../../src/AppObject/AppObjectUC.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"AppObjectUC.js","sourceRoot":"","sources":["../../../src/AppObject/AppObjectUC.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,WAAY,SAAQ,kBAAkB;IAAnD;;QACE;;;;WAIG;QACM,kBAAa,GAAG,sBAAsB,CAAC,EAAE,CAAC;IACrD,CAAC;CAAA","sourcesContent":["import {\r\n AppObjectComponent,\r\n AppObjectComponentType,\r\n} from \"./AppObjectComponent\";\r\n\r\n/**\r\n * AppObjectUC (Use Case) serves as a base use case class within the application framework.\r\n *\r\n * Use Cases are components that represent specific application operations or workflows.\r\n * They encapsulate business rules and coordinate interactions between different parts\r\n * of the application. Extend this class to implement specific use case scenarios.\r\n *\r\n * @extends AppObjectComponent\r\n * @example\r\n * ```typescript\r\n * class PurchaseItemUC extends AppObjectUC {\r\n * execute(itemId: string, quantity: number): boolean {\r\n * // Implement the purchase item use case\r\n * return true; // if successful\r\n * }\r\n * }\r\n * ```\r\n */\r\nexport class AppObjectUC extends AppObjectComponent {\r\n /**\r\n * The component type identifier used to categorize this component as a use case\r\n * This property helps the component system identify and manage use case components.\r\n * @readonly\r\n */\r\n readonly componentType = AppObjectComponentType.UC;\r\n}\r\n"]}
|
|
@@ -1,7 +1,29 @@
|
|
|
1
|
-
import { AppObjectComponent, AppObjectComponentType } from "./AppObjectComponent";
|
|
1
|
+
import { AppObjectComponent, AppObjectComponentType, } from "./AppObjectComponent";
|
|
2
|
+
/**
|
|
3
|
+
* AppObjectView serves as a base view class within the application framework.
|
|
4
|
+
*
|
|
5
|
+
* Views are components that handle the visual representation of an AppObject,
|
|
6
|
+
* such as rendering, animations, or user interface elements. Extend this class
|
|
7
|
+
* to create custom visual representations for specific application objects.
|
|
8
|
+
*
|
|
9
|
+
* @extends AppObjectComponent
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* class PlayerView extends AppObjectView {
|
|
13
|
+
* render(renderContext: RenderContext) {
|
|
14
|
+
* // Render the player character on screen
|
|
15
|
+
* }
|
|
16
|
+
* }
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
2
19
|
export class AppObjectView extends AppObjectComponent {
|
|
3
20
|
constructor() {
|
|
4
21
|
super(...arguments);
|
|
22
|
+
/**
|
|
23
|
+
* The component type identifier used to categorize this component as a view
|
|
24
|
+
* This property helps the component system identify and manage view components.
|
|
25
|
+
* @readonly
|
|
26
|
+
*/
|
|
5
27
|
this.componentType = AppObjectComponentType.VIEW;
|
|
6
28
|
}
|
|
7
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppObjectView.js","sourceRoot":"","sources":["../../../src/AppObject/AppObjectView.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"AppObjectView.js","sourceRoot":"","sources":["../../../src/AppObject/AppObjectView.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,aAAc,SAAQ,kBAAkB;IAArD;;QACE;;;;WAIG;QACM,kBAAa,GAAG,sBAAsB,CAAC,IAAI,CAAC;IACvD,CAAC;CAAA","sourcesContent":["import {\r\n AppObjectComponent,\r\n AppObjectComponentType,\r\n} from \"./AppObjectComponent\";\r\n\r\n/**\r\n * AppObjectView serves as a base view class within the application framework.\r\n *\r\n * Views are components that handle the visual representation of an AppObject,\r\n * such as rendering, animations, or user interface elements. Extend this class\r\n * to create custom visual representations for specific application objects.\r\n *\r\n * @extends AppObjectComponent\r\n * @example\r\n * ```typescript\r\n * class PlayerView extends AppObjectView {\r\n * render(renderContext: RenderContext) {\r\n * // Render the player character on screen\r\n * }\r\n * }\r\n * ```\r\n */\r\nexport class AppObjectView extends AppObjectComponent {\r\n /**\r\n * The component type identifier used to categorize this component as a view\r\n * This property helps the component system identify and manage view components.\r\n * @readonly\r\n */\r\n readonly componentType = AppObjectComponentType.VIEW;\r\n}\r\n"]}
|
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retrieves a singleton component of the specified type from the application objects repository.
|
|
3
|
+
*
|
|
4
|
+
* This utility function provides a convenient way to access singleton components that should
|
|
5
|
+
* have only one instance across the entire application.
|
|
6
|
+
*
|
|
7
|
+
* @template T - Type of the component to retrieve, must extend AppObjectComponent
|
|
8
|
+
* @param {string} type - The type identifier of the component to retrieve
|
|
9
|
+
* @param {AppObjectRepo} appObjects - The repository containing all application objects
|
|
10
|
+
* @returns {T | undefined} The singleton component instance if found, otherwise undefined
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const cameraController = getSingletonComponent<CameraController>(CameraController.type, appObjectRepo);
|
|
15
|
+
* if (cameraController) {
|
|
16
|
+
* cameraController.focusOn(targetObject);
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
1
20
|
export function getSingletonComponent(type, appObjects) {
|
|
2
21
|
return appObjects.getSingleton(type);
|
|
3
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSingletonComponent.js","sourceRoot":"","sources":["../../../src/AppObject/getSingletonComponent.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,UAAyB;IAEzB,OAAO,UAAU,CAAC,YAAY,CAAI,IAAI,CAAC,CAAC;AAC1C,CAAC","sourcesContent":["import { AppObjectComponent } from \"./AppObjectComponent\";\r\nimport { AppObjectRepo } from \"./AppObjectRepo\";\r\n\r\nexport function getSingletonComponent<T extends AppObjectComponent>(\r\n type: string,\r\n appObjects: AppObjectRepo\r\n): T | undefined {\r\n return appObjects.getSingleton<T>(type);\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"getSingletonComponent.js","sourceRoot":"","sources":["../../../src/AppObject/getSingletonComponent.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,UAAyB;IAEzB,OAAO,UAAU,CAAC,YAAY,CAAI,IAAI,CAAC,CAAC;AAC1C,CAAC","sourcesContent":["import { AppObjectComponent } from \"./AppObjectComponent\";\r\nimport { AppObjectRepo } from \"./AppObjectRepo\";\r\n\r\n/**\r\n * Retrieves a singleton component of the specified type from the application objects repository.\r\n *\r\n * This utility function provides a convenient way to access singleton components that should\r\n * have only one instance across the entire application.\r\n *\r\n * @template T - Type of the component to retrieve, must extend AppObjectComponent\r\n * @param {string} type - The type identifier of the component to retrieve\r\n * @param {AppObjectRepo} appObjects - The repository containing all application objects\r\n * @returns {T | undefined} The singleton component instance if found, otherwise undefined\r\n *\r\n * @example\r\n * ```typescript\r\n * const cameraController = getSingletonComponent<CameraController>(CameraController.type, appObjectRepo);\r\n * if (cameraController) {\r\n * cameraController.focusOn(targetObject);\r\n * }\r\n * ```\r\n */\r\nexport function getSingletonComponent<T extends AppObjectComponent>(\r\n type: string,\r\n appObjects: AppObjectRepo\r\n): T | undefined {\r\n return appObjects.getSingleton<T>(type);\r\n}\r\n"]}
|
|
@@ -1,16 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A wrapper class for Angle objects that tracks changes and triggers callbacks.
|
|
3
|
+
* Only triggers the callback when the angle value actually changes.
|
|
4
|
+
*/
|
|
1
5
|
export class MemoizedAngle {
|
|
6
|
+
/**
|
|
7
|
+
* Gets the current angle value
|
|
8
|
+
*/
|
|
2
9
|
get val() {
|
|
3
10
|
return this._val;
|
|
4
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Sets the angle value and triggers the onChange callback if the value changed
|
|
14
|
+
* @param b - The new Angle value
|
|
15
|
+
*/
|
|
5
16
|
set val(b) {
|
|
6
17
|
if (this._val.degrees === b.degrees)
|
|
7
18
|
return;
|
|
8
19
|
this._val = b;
|
|
9
20
|
this.onChangeCallback();
|
|
10
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Sets the value without triggering the onChange callback
|
|
24
|
+
* @param val - The new Angle value
|
|
25
|
+
*/
|
|
11
26
|
setValQuietly(val) {
|
|
12
27
|
this._val = val;
|
|
13
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Creates a new MemoizedAngle instance
|
|
31
|
+
*
|
|
32
|
+
* @param initialValue - The initial Angle value
|
|
33
|
+
* @param onChangeCallback - Function to call when the value changes
|
|
34
|
+
*/
|
|
14
35
|
constructor(initialValue, onChangeCallback) {
|
|
15
36
|
this._val = initialValue;
|
|
16
37
|
this.onChangeCallback = onChangeCallback;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoizedAngle.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedAngle.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;
|
|
1
|
+
{"version":3,"file":"MemoizedAngle.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedAngle.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,aAAa;IAGxB;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,IAAI,GAAG,CAAC,CAAQ;QACd,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO;YAAE,OAAO;QAE5C,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,GAAU;QAC7B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAID;;;;;OAKG;IACH,YAAY,YAAmB,EAAE,gBAA4B;QAC3D,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF","sourcesContent":["import { Angle } from \"../ValueObjects\";\r\n\r\n/**\r\n * A wrapper class for Angle objects that tracks changes and triggers callbacks.\r\n * Only triggers the callback when the angle value actually changes.\r\n */\r\nexport class MemoizedAngle {\r\n private _val: Angle;\r\n\r\n /**\r\n * Gets the current angle value\r\n */\r\n get val(): Angle {\r\n return this._val;\r\n }\r\n\r\n /**\r\n * Sets the angle value and triggers the onChange callback if the value changed\r\n * @param b - The new Angle value\r\n */\r\n set val(b: Angle) {\r\n if (this._val.degrees === b.degrees) return;\r\n\r\n this._val = b;\r\n this.onChangeCallback();\r\n }\r\n\r\n /**\r\n * Sets the value without triggering the onChange callback\r\n * @param val - The new Angle value\r\n */\r\n public setValQuietly(val: Angle) {\r\n this._val = val;\r\n }\r\n\r\n private onChangeCallback: () => void;\r\n\r\n /**\r\n * Creates a new MemoizedAngle instance\r\n *\r\n * @param initialValue - The initial Angle value\r\n * @param onChangeCallback - Function to call when the value changes\r\n */\r\n constructor(initialValue: Angle, onChangeCallback: () => void) {\r\n this._val = initialValue;\r\n this.onChangeCallback = onChangeCallback;\r\n }\r\n}\r\n"]}
|
|
@@ -1,16 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A wrapper class for boolean values that tracks changes and triggers callbacks.
|
|
3
|
+
* Only triggers the callback when the value actually changes.
|
|
4
|
+
*/
|
|
1
5
|
export class MemoizedBoolean {
|
|
6
|
+
/**
|
|
7
|
+
* Gets the current boolean value
|
|
8
|
+
*/
|
|
2
9
|
get val() {
|
|
3
10
|
return this._val;
|
|
4
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Sets the boolean value and triggers the onChange callback if the value changed
|
|
14
|
+
* @param b - The new boolean value
|
|
15
|
+
*/
|
|
5
16
|
set val(b) {
|
|
6
17
|
if (this._val === b)
|
|
7
18
|
return;
|
|
8
19
|
this._val = b;
|
|
9
20
|
this.onChangeCallback();
|
|
10
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Sets the value without triggering the onChange callback
|
|
24
|
+
* @param val - The new boolean value
|
|
25
|
+
*/
|
|
11
26
|
setValQuietly(val) {
|
|
12
27
|
this._val = val;
|
|
13
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Creates a new MemoizedBoolean instance
|
|
31
|
+
*
|
|
32
|
+
* @param initialValue - The initial boolean value
|
|
33
|
+
* @param onChangeCallback - Function to call when the value changes
|
|
34
|
+
*/
|
|
14
35
|
constructor(initialValue, onChangeCallback) {
|
|
15
36
|
this._val = initialValue;
|
|
16
37
|
this.onChangeCallback = onChangeCallback;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoizedBoolean.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedBoolean.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,eAAe;
|
|
1
|
+
{"version":3,"file":"MemoizedBoolean.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedBoolean.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,eAAe;IAG1B;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,IAAI,GAAG,CAAC,CAAU;QAChB,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAE5B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,GAAY;QAC/B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAID;;;;;OAKG;IACH,YAAY,YAAqB,EAAE,gBAA4B;QAC7D,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF","sourcesContent":["/**\r\n * A wrapper class for boolean values that tracks changes and triggers callbacks.\r\n * Only triggers the callback when the value actually changes.\r\n */\r\nexport class MemoizedBoolean {\r\n private _val: boolean;\r\n\r\n /**\r\n * Gets the current boolean value\r\n */\r\n get val(): boolean {\r\n return this._val;\r\n }\r\n\r\n /**\r\n * Sets the boolean value and triggers the onChange callback if the value changed\r\n * @param b - The new boolean value\r\n */\r\n set val(b: boolean) {\r\n if (this._val === b) return;\r\n\r\n this._val = b;\r\n this.onChangeCallback();\r\n }\r\n\r\n /**\r\n * Sets the value without triggering the onChange callback\r\n * @param val - The new boolean value\r\n */\r\n public setValQuietly(val: boolean) {\r\n this._val = val;\r\n }\r\n\r\n private onChangeCallback: () => void;\r\n\r\n /**\r\n * Creates a new MemoizedBoolean instance\r\n *\r\n * @param initialValue - The initial boolean value\r\n * @param onChangeCallback - Function to call when the value changes\r\n */\r\n constructor(initialValue: boolean, onChangeCallback: () => void) {\r\n this._val = initialValue;\r\n this.onChangeCallback = onChangeCallback;\r\n }\r\n}\r\n"]}
|
|
@@ -1,17 +1,38 @@
|
|
|
1
1
|
import { Color } from "../ValueObjects";
|
|
2
|
+
/**
|
|
3
|
+
* A wrapper class for Color objects that tracks changes and triggers callbacks.
|
|
4
|
+
* Only triggers the callback when the color value actually changes.
|
|
5
|
+
*/
|
|
2
6
|
export class MemoizedColor {
|
|
7
|
+
/**
|
|
8
|
+
* Gets the current Color value
|
|
9
|
+
*/
|
|
3
10
|
get val() {
|
|
4
11
|
return this._val;
|
|
5
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Sets the Color value and triggers the onChange callback if the value changed
|
|
15
|
+
* @param v - The new Color value
|
|
16
|
+
*/
|
|
6
17
|
set val(v) {
|
|
7
18
|
if (Color.Equal(v, this._val))
|
|
8
19
|
return;
|
|
9
20
|
this._val = v;
|
|
10
21
|
this.onChangeCallback();
|
|
11
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Sets the value without triggering the onChange callback
|
|
25
|
+
* @param val - The new Color value
|
|
26
|
+
*/
|
|
12
27
|
setValQuietly(val) {
|
|
13
28
|
this._val = val;
|
|
14
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Creates a new MemoizedColor instance
|
|
32
|
+
*
|
|
33
|
+
* @param initialValue - The initial Color value
|
|
34
|
+
* @param onChangeCallback - Function to call when the value changes
|
|
35
|
+
*/
|
|
15
36
|
constructor(initialValue, onChangeCallback) {
|
|
16
37
|
this._val = initialValue;
|
|
17
38
|
this.onChangeCallback = onChangeCallback;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoizedColor.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedColor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,MAAM,OAAO,aAAa;IAGxB,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,GAAG,CAAC,CAAQ;QACd,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO;QAEtC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;
|
|
1
|
+
{"version":3,"file":"MemoizedColor.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedColor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC;;;GAGG;AACH,MAAM,OAAO,aAAa;IAGxB;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,IAAI,GAAG,CAAC,CAAQ;QACd,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO;QAEtC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,GAAU;QAC7B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAID;;;;;OAKG;IACH,YAAY,YAAmB,EAAE,gBAA4B;QAC3D,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF","sourcesContent":["import { Color } from \"../ValueObjects\";\r\n\r\n/**\r\n * A wrapper class for Color objects that tracks changes and triggers callbacks.\r\n * Only triggers the callback when the color value actually changes.\r\n */\r\nexport class MemoizedColor {\r\n private _val: Color;\r\n\r\n /**\r\n * Gets the current Color value\r\n */\r\n get val(): Color {\r\n return this._val;\r\n }\r\n\r\n /**\r\n * Sets the Color value and triggers the onChange callback if the value changed\r\n * @param v - The new Color value\r\n */\r\n set val(v: Color) {\r\n if (Color.Equal(v, this._val)) return;\r\n\r\n this._val = v;\r\n this.onChangeCallback();\r\n }\r\n\r\n /**\r\n * Sets the value without triggering the onChange callback\r\n * @param val - The new Color value\r\n */\r\n public setValQuietly(val: Color) {\r\n this._val = val;\r\n }\r\n\r\n private onChangeCallback: () => void;\r\n\r\n /**\r\n * Creates a new MemoizedColor instance\r\n *\r\n * @param initialValue - The initial Color value\r\n * @param onChangeCallback - Function to call when the value changes\r\n */\r\n constructor(initialValue: Color, onChangeCallback: () => void) {\r\n this._val = initialValue;\r\n this.onChangeCallback = onChangeCallback;\r\n }\r\n}\r\n"]}
|
|
@@ -1,16 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A wrapper class for numeric values that tracks changes and triggers callbacks.
|
|
3
|
+
* Only triggers the callback when the value actually changes.
|
|
4
|
+
*/
|
|
1
5
|
export class MemoizedNumber {
|
|
6
|
+
/**
|
|
7
|
+
* Gets the current numeric value
|
|
8
|
+
*/
|
|
2
9
|
get val() {
|
|
3
10
|
return this._val;
|
|
4
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Sets the numeric value and triggers the onChange callback if the value changed
|
|
14
|
+
* @param b - The new numeric value
|
|
15
|
+
*/
|
|
5
16
|
set val(b) {
|
|
6
17
|
if (this._val === b)
|
|
7
18
|
return;
|
|
8
19
|
this._val = b;
|
|
9
20
|
this.onChangeCallback();
|
|
10
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Sets the value without triggering the onChange callback
|
|
24
|
+
* @param val - The new numeric value
|
|
25
|
+
*/
|
|
11
26
|
setValQuietly(val) {
|
|
12
27
|
this._val = val;
|
|
13
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Creates a new MemoizedNumber instance
|
|
31
|
+
*
|
|
32
|
+
* @param initialValue - The initial numeric value
|
|
33
|
+
* @param onChangeCallback - Function to call when the value changes
|
|
34
|
+
*/
|
|
14
35
|
constructor(initialValue, onChangeCallback) {
|
|
15
36
|
this._val = initialValue;
|
|
16
37
|
this.onChangeCallback = onChangeCallback;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoizedNumber.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedNumber.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;
|
|
1
|
+
{"version":3,"file":"MemoizedNumber.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedNumber.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,cAAc;IAGzB;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,IAAI,GAAG,CAAC,CAAS;QACf,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAE5B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,GAAW;QAC9B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAID;;;;;OAKG;IACH,YAAY,YAAoB,EAAE,gBAA4B;QAC5D,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF","sourcesContent":["/**\r\n * A wrapper class for numeric values that tracks changes and triggers callbacks.\r\n * Only triggers the callback when the value actually changes.\r\n */\r\nexport class MemoizedNumber {\r\n private _val: number;\r\n\r\n /**\r\n * Gets the current numeric value\r\n */\r\n get val(): number {\r\n return this._val;\r\n }\r\n\r\n /**\r\n * Sets the numeric value and triggers the onChange callback if the value changed\r\n * @param b - The new numeric value\r\n */\r\n set val(b: number) {\r\n if (this._val === b) return;\r\n\r\n this._val = b;\r\n this.onChangeCallback();\r\n }\r\n\r\n /**\r\n * Sets the value without triggering the onChange callback\r\n * @param val - The new numeric value\r\n */\r\n public setValQuietly(val: number) {\r\n this._val = val;\r\n }\r\n\r\n private onChangeCallback: () => void;\r\n\r\n /**\r\n * Creates a new MemoizedNumber instance\r\n *\r\n * @param initialValue - The initial numeric value\r\n * @param onChangeCallback - Function to call when the value changes\r\n */\r\n constructor(initialValue: number, onChangeCallback: () => void) {\r\n this._val = initialValue;\r\n this.onChangeCallback = onChangeCallback;\r\n }\r\n}\r\n"]}
|
|
@@ -1,17 +1,38 @@
|
|
|
1
1
|
import { Quaternion } from "../ValueObjects";
|
|
2
|
+
/**
|
|
3
|
+
* A wrapper class for Quaternion objects that tracks changes and triggers callbacks.
|
|
4
|
+
* Only triggers the callback when the quaternion value actually changes.
|
|
5
|
+
*/
|
|
2
6
|
export class MemoizedQuaternion {
|
|
7
|
+
/**
|
|
8
|
+
* Gets the current Quaternion value
|
|
9
|
+
*/
|
|
3
10
|
get val() {
|
|
4
11
|
return this._val;
|
|
5
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Sets the Quaternion value and triggers the onChange callback if the value changed
|
|
15
|
+
* @param v - The new Quaternion value
|
|
16
|
+
*/
|
|
6
17
|
set val(v) {
|
|
7
18
|
if (Quaternion.Equal(v, this._val))
|
|
8
19
|
return;
|
|
9
20
|
this._val = v;
|
|
10
21
|
this.onChangeCallback();
|
|
11
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Sets the value without triggering the onChange callback
|
|
25
|
+
* @param val - The new Quaternion value
|
|
26
|
+
*/
|
|
12
27
|
setValQuietly(val) {
|
|
13
28
|
this._val = val;
|
|
14
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Creates a new MemoizedQuaternion instance
|
|
32
|
+
*
|
|
33
|
+
* @param initialValue - The initial Quaternion value
|
|
34
|
+
* @param onChangeCallback - Function to call when the value changes
|
|
35
|
+
*/
|
|
15
36
|
constructor(initialValue, onChangeCallback) {
|
|
16
37
|
this._val = initialValue;
|
|
17
38
|
this.onChangeCallback = onChangeCallback;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoizedQuaternion.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedQuaternion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,OAAO,kBAAkB;IAG7B,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,GAAG,CAAC,CAAa;QACnB,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO;QAE3C,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;
|
|
1
|
+
{"version":3,"file":"MemoizedQuaternion.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedQuaternion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAG7B;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,IAAI,GAAG,CAAC,CAAa;QACnB,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO;QAE3C,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,GAAe;QAClC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAID;;;;;OAKG;IACH,YAAY,YAAwB,EAAE,gBAA4B;QAChE,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF","sourcesContent":["import { Quaternion } from \"../ValueObjects\";\r\n\r\n/**\r\n * A wrapper class for Quaternion objects that tracks changes and triggers callbacks.\r\n * Only triggers the callback when the quaternion value actually changes.\r\n */\r\nexport class MemoizedQuaternion {\r\n private _val: Quaternion;\r\n\r\n /**\r\n * Gets the current Quaternion value\r\n */\r\n get val(): Quaternion {\r\n return this._val;\r\n }\r\n\r\n /**\r\n * Sets the Quaternion value and triggers the onChange callback if the value changed\r\n * @param v - The new Quaternion value\r\n */\r\n set val(v: Quaternion) {\r\n if (Quaternion.Equal(v, this._val)) return;\r\n\r\n this._val = v;\r\n this.onChangeCallback();\r\n }\r\n\r\n /**\r\n * Sets the value without triggering the onChange callback\r\n * @param val - The new Quaternion value\r\n */\r\n public setValQuietly(val: Quaternion) {\r\n this._val = val;\r\n }\r\n\r\n private onChangeCallback: () => void;\r\n\r\n /**\r\n * Creates a new MemoizedQuaternion instance\r\n *\r\n * @param initialValue - The initial Quaternion value\r\n * @param onChangeCallback - Function to call when the value changes\r\n */\r\n constructor(initialValue: Quaternion, onChangeCallback: () => void) {\r\n this._val = initialValue;\r\n this.onChangeCallback = onChangeCallback;\r\n }\r\n}\r\n"]}
|
|
@@ -1,16 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A wrapper class for string values that tracks changes and triggers callbacks.
|
|
3
|
+
* Only triggers the callback when the value actually changes.
|
|
4
|
+
*/
|
|
1
5
|
export class MemoizedString {
|
|
6
|
+
/**
|
|
7
|
+
* Gets the current string value
|
|
8
|
+
*/
|
|
2
9
|
get val() {
|
|
3
10
|
return this._val;
|
|
4
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Sets the string value and triggers the onChange callback if the value changed
|
|
14
|
+
* @param b - The new string value
|
|
15
|
+
*/
|
|
5
16
|
set val(b) {
|
|
6
17
|
if (this._val === b)
|
|
7
18
|
return;
|
|
8
19
|
this._val = b;
|
|
9
20
|
this.onChangeCallback();
|
|
10
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Sets the value without triggering the onChange callback
|
|
24
|
+
* @param val - The new string value
|
|
25
|
+
*/
|
|
11
26
|
setValQuietly(val) {
|
|
12
27
|
this._val = val;
|
|
13
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Creates a new MemoizedString instance
|
|
31
|
+
*
|
|
32
|
+
* @param initialValue - The initial string value
|
|
33
|
+
* @param onChangeCallback - Function to call when the value changes
|
|
34
|
+
*/
|
|
14
35
|
constructor(initialValue, onChangeCallback) {
|
|
15
36
|
this._val = initialValue;
|
|
16
37
|
this.onChangeCallback = onChangeCallback;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoizedString.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedString.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;
|
|
1
|
+
{"version":3,"file":"MemoizedString.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedString.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,cAAc;IAGzB;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,IAAI,GAAG,CAAC,CAAS;QACf,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAE5B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,GAAW;QAC9B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAID;;;;;OAKG;IACH,YAAY,YAAoB,EAAE,gBAA4B;QAC5D,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF","sourcesContent":["/**\r\n * A wrapper class for string values that tracks changes and triggers callbacks.\r\n * Only triggers the callback when the value actually changes.\r\n */\r\nexport class MemoizedString {\r\n private _val: string;\r\n\r\n /**\r\n * Gets the current string value\r\n */\r\n get val(): string {\r\n return this._val;\r\n }\r\n\r\n /**\r\n * Sets the string value and triggers the onChange callback if the value changed\r\n * @param b - The new string value\r\n */\r\n set val(b: string) {\r\n if (this._val === b) return;\r\n\r\n this._val = b;\r\n this.onChangeCallback();\r\n }\r\n\r\n /**\r\n * Sets the value without triggering the onChange callback\r\n * @param val - The new string value\r\n */\r\n public setValQuietly(val: string) {\r\n this._val = val;\r\n }\r\n\r\n private onChangeCallback: () => void;\r\n\r\n /**\r\n * Creates a new MemoizedString instance\r\n *\r\n * @param initialValue - The initial string value\r\n * @param onChangeCallback - Function to call when the value changes\r\n */\r\n constructor(initialValue: string, onChangeCallback: () => void) {\r\n this._val = initialValue;\r\n this.onChangeCallback = onChangeCallback;\r\n }\r\n}\r\n"]}
|
|
@@ -1,17 +1,38 @@
|
|
|
1
1
|
import { Vector2 } from "../ValueObjects";
|
|
2
|
+
/**
|
|
3
|
+
* A wrapper class for Vector2 objects that tracks changes and triggers callbacks.
|
|
4
|
+
* Only triggers the callback when the vector value actually changes.
|
|
5
|
+
*/
|
|
2
6
|
export class MemoizedVector2 {
|
|
7
|
+
/**
|
|
8
|
+
* Gets the current Vector2 value
|
|
9
|
+
*/
|
|
3
10
|
get val() {
|
|
4
11
|
return this._val;
|
|
5
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Sets the Vector2 value and triggers the onChange callback if the value changed
|
|
15
|
+
* @param v - The new Vector2 value
|
|
16
|
+
*/
|
|
6
17
|
set val(v) {
|
|
7
18
|
if (Vector2.Equal(v, this._val))
|
|
8
19
|
return;
|
|
9
20
|
this._val = v;
|
|
10
21
|
this.onChangeCallback();
|
|
11
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Sets the value without triggering the onChange callback
|
|
25
|
+
* @param val - The new Vector2 value
|
|
26
|
+
*/
|
|
12
27
|
setValQuietly(val) {
|
|
13
28
|
this._val = val;
|
|
14
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Creates a new MemoizedVector2 instance
|
|
32
|
+
*
|
|
33
|
+
* @param initialValue - The initial Vector2 value
|
|
34
|
+
* @param onChangeCallback - Function to call when the value changes
|
|
35
|
+
*/
|
|
15
36
|
constructor(initialValue, onChangeCallback) {
|
|
16
37
|
this._val = initialValue;
|
|
17
38
|
this.onChangeCallback = onChangeCallback;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoizedVector2.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedVector2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,OAAO,eAAe;IAG1B,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,GAAG,CAAC,CAAU;QAChB,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO;QAExC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;
|
|
1
|
+
{"version":3,"file":"MemoizedVector2.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedVector2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C;;;GAGG;AACH,MAAM,OAAO,eAAe;IAG1B;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,IAAI,GAAG,CAAC,CAAU;QAChB,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO;QAExC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,GAAY;QAC/B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAID;;;;;OAKG;IACH,YAAY,YAAqB,EAAE,gBAA4B;QAC7D,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF","sourcesContent":["import { Vector2 } from \"../ValueObjects\";\r\n\r\n/**\r\n * A wrapper class for Vector2 objects that tracks changes and triggers callbacks.\r\n * Only triggers the callback when the vector value actually changes.\r\n */\r\nexport class MemoizedVector2 {\r\n private _val: Vector2;\r\n\r\n /**\r\n * Gets the current Vector2 value\r\n */\r\n get val(): Vector2 {\r\n return this._val;\r\n }\r\n\r\n /**\r\n * Sets the Vector2 value and triggers the onChange callback if the value changed\r\n * @param v - The new Vector2 value\r\n */\r\n set val(v: Vector2) {\r\n if (Vector2.Equal(v, this._val)) return;\r\n\r\n this._val = v;\r\n this.onChangeCallback();\r\n }\r\n\r\n /**\r\n * Sets the value without triggering the onChange callback\r\n * @param val - The new Vector2 value\r\n */\r\n public setValQuietly(val: Vector2) {\r\n this._val = val;\r\n }\r\n\r\n private onChangeCallback: () => void;\r\n\r\n /**\r\n * Creates a new MemoizedVector2 instance\r\n *\r\n * @param initialValue - The initial Vector2 value\r\n * @param onChangeCallback - Function to call when the value changes\r\n */\r\n constructor(initialValue: Vector2, onChangeCallback: () => void) {\r\n this._val = initialValue;\r\n this.onChangeCallback = onChangeCallback;\r\n }\r\n}\r\n"]}
|
|
@@ -1,17 +1,38 @@
|
|
|
1
1
|
import { Vector3 } from "../ValueObjects";
|
|
2
|
+
/**
|
|
3
|
+
* A wrapper class for Vector3 objects that tracks changes and triggers callbacks.
|
|
4
|
+
* Only triggers the callback when the vector value actually changes.
|
|
5
|
+
*/
|
|
2
6
|
export class MemoizedVector3 {
|
|
7
|
+
/**
|
|
8
|
+
* Gets the current Vector3 value
|
|
9
|
+
*/
|
|
3
10
|
get val() {
|
|
4
11
|
return this._val;
|
|
5
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Sets the Vector3 value and triggers the onChange callback if the value changed
|
|
15
|
+
* @param v - The new Vector3 value
|
|
16
|
+
*/
|
|
6
17
|
set val(v) {
|
|
7
18
|
if (Vector3.Equal(v, this._val))
|
|
8
19
|
return;
|
|
9
20
|
this._val = v;
|
|
10
21
|
this.onChangeCallback();
|
|
11
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Sets the value without triggering the onChange callback
|
|
25
|
+
* @param val - The new Vector3 value
|
|
26
|
+
*/
|
|
12
27
|
setValQuietly(val) {
|
|
13
28
|
this._val = val;
|
|
14
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Creates a new MemoizedVector3 instance
|
|
32
|
+
*
|
|
33
|
+
* @param initialValue - The initial Vector3 value
|
|
34
|
+
* @param onChangeCallback - Function to call when the value changes
|
|
35
|
+
*/
|
|
15
36
|
constructor(initialValue, onChangeCallback) {
|
|
16
37
|
this._val = initialValue;
|
|
17
38
|
this.onChangeCallback = onChangeCallback;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoizedVector3.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedVector3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,OAAO,eAAe;IAG1B,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,GAAG,CAAC,CAAU;QAChB,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO;QAExC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;
|
|
1
|
+
{"version":3,"file":"MemoizedVector3.js","sourceRoot":"","sources":["../../../src/Entities/MemoizedVector3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C;;;GAGG;AACH,MAAM,OAAO,eAAe;IAG1B;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,IAAI,GAAG,CAAC,CAAU;QAChB,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO;QAExC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,GAAY;QAC/B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAID;;;;;OAKG;IACH,YAAY,YAAqB,EAAE,gBAA4B;QAC7D,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF","sourcesContent":["import { Vector3 } from \"../ValueObjects\";\r\n\r\n/**\r\n * A wrapper class for Vector3 objects that tracks changes and triggers callbacks.\r\n * Only triggers the callback when the vector value actually changes.\r\n */\r\nexport class MemoizedVector3 {\r\n private _val: Vector3;\r\n\r\n /**\r\n * Gets the current Vector3 value\r\n */\r\n get val(): Vector3 {\r\n return this._val;\r\n }\r\n\r\n /**\r\n * Sets the Vector3 value and triggers the onChange callback if the value changed\r\n * @param v - The new Vector3 value\r\n */\r\n set val(v: Vector3) {\r\n if (Vector3.Equal(v, this._val)) return;\r\n\r\n this._val = v;\r\n this.onChangeCallback();\r\n }\r\n\r\n /**\r\n * Sets the value without triggering the onChange callback\r\n * @param val - The new Vector3 value\r\n */\r\n public setValQuietly(val: Vector3) {\r\n this._val = val;\r\n }\r\n\r\n private onChangeCallback: () => void;\r\n\r\n /**\r\n * Creates a new MemoizedVector3 instance\r\n *\r\n * @param initialValue - The initial Vector3 value\r\n * @param onChangeCallback - Function to call when the value changes\r\n */\r\n constructor(initialValue: Vector3, onChangeCallback: () => void) {\r\n this._val = initialValue;\r\n this.onChangeCallback = onChangeCallback;\r\n }\r\n}\r\n"]}
|
|
@@ -1,13 +1,30 @@
|
|
|
1
1
|
import { ObserverList } from "./ObserverList";
|
|
2
|
+
/**
|
|
3
|
+
* Base class that implements the Observable pattern.
|
|
4
|
+
* Allows other objects to register as observers and be notified of changes.
|
|
5
|
+
*
|
|
6
|
+
* Extend this class to make your entity observable.
|
|
7
|
+
*/
|
|
2
8
|
export class ObservableEntity {
|
|
3
9
|
constructor() {
|
|
4
10
|
this.observerList = new ObserverList();
|
|
11
|
+
/**
|
|
12
|
+
* Registers a new observer to be notified of changes
|
|
13
|
+
* @param observer Function to be called when the entity changes
|
|
14
|
+
*/
|
|
5
15
|
this.addObserver = (observer) => {
|
|
6
16
|
this.observerList.add(observer);
|
|
7
17
|
};
|
|
18
|
+
/**
|
|
19
|
+
* Unregisters an existing observer
|
|
20
|
+
* @param observer The observer function to remove
|
|
21
|
+
*/
|
|
8
22
|
this.removeObserver = (observer) => {
|
|
9
23
|
this.observerList.remove(observer);
|
|
10
24
|
};
|
|
25
|
+
/**
|
|
26
|
+
* Notifies all registered observers about a change
|
|
27
|
+
*/
|
|
11
28
|
this.notify = () => {
|
|
12
29
|
this.observerList.notify();
|
|
13
30
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObservableEntity.js","sourceRoot":"","sources":["../../../src/Entities/ObservableEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"ObservableEntity.js","sourceRoot":"","sources":["../../../src/Entities/ObservableEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAO9C;;;;;GAKG;AACH,MAAM,OAAgB,gBAAgB;IAAtC;QACU,iBAAY,GAAG,IAAI,YAAY,EAAQ,CAAC;QAEhD;;;WAGG;QACH,gBAAW,GAAG,CAAC,QAAwB,EAAQ,EAAE;YAC/C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;QAEF;;;WAGG;QACH,mBAAc,GAAG,CAAC,QAAwB,EAAQ,EAAE;YAClD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC,CAAC;QAEF;;WAEG;QACH,WAAM,GAAG,GAAG,EAAE;YACZ,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC;CAAA","sourcesContent":["import { ObserverList } from \"./ObserverList\";\r\n\r\n/**\r\n * Function type for entity observers\r\n */\r\nexport type EntityObserver = () => void;\r\n\r\n/**\r\n * Base class that implements the Observable pattern.\r\n * Allows other objects to register as observers and be notified of changes.\r\n *\r\n * Extend this class to make your entity observable.\r\n */\r\nexport abstract class ObservableEntity {\r\n private observerList = new ObserverList<void>();\r\n\r\n /**\r\n * Registers a new observer to be notified of changes\r\n * @param observer Function to be called when the entity changes\r\n */\r\n addObserver = (observer: EntityObserver): void => {\r\n this.observerList.add(observer);\r\n };\r\n\r\n /**\r\n * Unregisters an existing observer\r\n * @param observer The observer function to remove\r\n */\r\n removeObserver = (observer: EntityObserver): void => {\r\n this.observerList.remove(observer);\r\n };\r\n\r\n /**\r\n * Notifies all registered observers about a change\r\n */\r\n notify = () => {\r\n this.observerList.notify();\r\n };\r\n}\r\n"]}
|