Exemplo n.º 1
0
        /// <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);
                }
            }
        }
Exemplo n.º 2
0
        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;
            }
        }
Exemplo n.º 3
0
        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;
            }
        }
Exemplo n.º 4
0
        /// <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);
                }
            }
        }
Exemplo n.º 5
0
        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;
            }
        }
Exemplo n.º 6
0
        /// <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 );
            }
        }
Exemplo n.º 7
0
 public void IsCustomType()
 {
     using (var str = new DirtyType())
         str.MarkDirty();
 }
Exemplo n.º 8
0
		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 );
			}
		}