/// <summary> /// sets the dirty flag on the enum and passes it down to our children /// </summary> /// <param name="dirtyFlagType">Dirty flag type.</param> void setDirty(DirtyType dirtyFlagType) { if ((hierarchyDirty & dirtyFlagType) == 0) { hierarchyDirty |= dirtyFlagType; switch (dirtyFlagType) { case DirtyType.PositionDirty: entity.onTransformChanged(Component.Position); break; case DirtyType.RotationDirty: entity.onTransformChanged(Component.Rotation); break; case DirtyType.ScaleDirty: entity.onTransformChanged(Component.Scale); break; } // dirty our children as well so they know of the changes for (var i = 0; i < _children.Count; i++) { _children[i].setDirty(dirtyFlagType); } } }
void updateTransform() { if (hierarchyDirty != DirtyType.Clean) { if (parent != null && hierarchyDirty != DirtyType.Clean) { parent.updateTransform(); } if (_localDirty) { if (_localPositionDirty) { //Matrix.CreateTranslation( ref localPosition, out TranslationMatrix ); Matrix.CreateTranslation(_localPosition.X, _localPosition.Y, 0, out _translationMatrix); _localPositionDirty = false; } if (_localRotationDirty) { //Matrix.CreateFromQuaternion( ref localOrientation, out QuaternionMatrix ); Matrix.CreateRotationZ(_localRotation, out _rotationMatrix); _localRotationDirty = false; } if (_localScaleDirty) { //Matrix.CreateScale( ref localScale, out ScaleMatrix ); Matrix.CreateScale(_localScale.X, _localScale.Y, 1f, out _scaleMatrix); _localScaleDirty = false; } Matrix.Multiply(ref _scaleMatrix, ref _rotationMatrix, out _localTransform); Matrix.Multiply(ref _localTransform, ref _translationMatrix, out _localTransform); if (parent == null) { _worldTransform = _localTransform; _rotation = _localRotation; _scale = _localScale; _worldInverseDirty = true; } _localDirty = true; } if (parent != null) { Matrix.Multiply(ref _localTransform, ref parent._worldTransform, out _worldTransform); //Quaternion.Concatenate( ref localOrientation, ref ParentTransform.orientation, out orientation ); _rotation = _localRotation + parent._rotation; _scale = parent._scale * _localScale; _worldInverseDirty = true; } _worldToLocalDirty = true; _positionDirty = true; hierarchyDirty = DirtyType.Clean; } }
void updateTransform() { if (hierarchyDirty != DirtyType.Clean) { if (parent != null) { parent.updateTransform(); } if (_localDirty) { if (_localPositionDirty) { Matrix2D.createTranslation(_localPosition.X, _localPosition.Y, out _translationMatrix); _localPositionDirty = false; } if (_localRotationDirty) { Matrix2D.createRotation(_localRotation, out _rotationMatrix); _localRotationDirty = false; } if (_localScaleDirty) { Matrix2D.createScale(_localScale.X, _localScale.Y, out _scaleMatrix); _localScaleDirty = false; } Matrix2D.multiply(ref _scaleMatrix, ref _rotationMatrix, out _localTransform); Matrix2D.multiply(ref _localTransform, ref _translationMatrix, out _localTransform); if (parent == null) { _worldTransform = _localTransform; _rotation = _localRotation; _scale = _localScale; _worldInverseDirty = true; } _localDirty = false; } if (parent != null) { Matrix2D.multiply(ref _localTransform, ref parent._worldTransform, out _worldTransform); _rotation = _localRotation + parent._rotation; _scale = parent._scale * _localScale; _worldInverseDirty = true; } _worldToLocalDirty = true; _positionDirty = true; hierarchyDirty = DirtyType.Clean; } }
/// <summary> /// sets the dirty flag on the enum and passes it down to our children /// </summary> /// <param name="dirtyFlagType">Dirty flag type.</param> void setDirty(DirtyType dirtyFlagType) { if ((hierarchyDirty & dirtyFlagType) == 0) { hierarchyDirty |= dirtyFlagType; entity.onTransformChanged(); // dirty our children as well so they know of the changes for (var i = 0; i < _children.Count; i++) { _children[i].setDirty(dirtyFlagType); } } }
void updateTransform() { if( hierarchyDirty != DirtyType.Clean ) { if( parent != null && hierarchyDirty != DirtyType.Clean ) parent.updateTransform(); if( _localDirty ) { if( _localPositionDirty ) { Matrix.CreateTranslation( _localPosition.X, _localPosition.Y, 0, out _translationMatrix ); _localPositionDirty = false; } if( _localRotationDirty ) { Matrix.CreateRotationZ( _localRotation, out _rotationMatrix ); _localRotationDirty = false; } if( _localScaleDirty ) { Matrix.CreateScale( _localScale.X, _localScale.Y, 1f, out _scaleMatrix ); _localScaleDirty = false; } Matrix.Multiply( ref _scaleMatrix, ref _rotationMatrix, out _localTransform ); Matrix.Multiply( ref _localTransform, ref _translationMatrix, out _localTransform ); if( parent == null ) { _worldTransform = _localTransform; _rotation = _localRotation; _scale = _localScale; _worldInverseDirty = true; } _localDirty = false; } if( parent != null ) { Matrix.Multiply( ref _localTransform, ref parent._worldTransform, out _worldTransform ); _rotation = _localRotation + parent._rotation; _scale = parent._scale * _localScale; _worldInverseDirty = true; } _worldToLocalDirty = true; _positionDirty = true; hierarchyDirty = DirtyType.Clean; } }
/// <summary> /// sets the dirty flag on the enum and passes it down to our children /// </summary> /// <param name="dirtyFlagType">Dirty flag type.</param> void setDirty( DirtyType dirtyFlagType ) { if( ( hierarchyDirty & dirtyFlagType ) == 0 ) { hierarchyDirty |= dirtyFlagType; entity.onTransformChanged(); // dirty our children as well so they know of the changes for( var i = 0; i < _children.Count; i++ ) _children[i].setDirty( dirtyFlagType ); } }
public void IsCustomType() { using (var str = new DirtyType()) str.MarkDirty(); }
void setDirty( DirtyType dirtyFlagType ) { if( ( hierarchyDirty & dirtyFlagType ) == 0 ) { hierarchyDirty |= dirtyFlagType; switch( dirtyFlagType ) { case DirtyType.PositionDirty: entity.onTransformChanged( Component.Position ); break; case DirtyType.RotationDirty: entity.onTransformChanged( Component.Rotation ); break; case DirtyType.ScaleDirty: entity.onTransformChanged( Component.Scale ); break; } // dirty our children as well so they know of the changes for( var i = 0; i < _children.Count; i++ ) _children[i].setDirty( dirtyFlagType ); } }