Exemple #1
0
        /// <summary>
        /// Deserializes the object and populates it from the input.
        /// </summary>
        /// <param name="input">Savable input</param>
        public virtual void Read(ISavableReader input)
        {
            _name                      = input.ReadString();
            _localTransform            = input.ReadSavable <Transform>();
            _sceneHints                = input.ReadSavable <SceneHints>();
            _sceneHints.HintableSource = this;
            _localLights               = input.ReadSavable <LightCollection>();
            _localLights._spatial      = this;

            bool hasControllers = input.ReadBoolean();

            _controllers = new TeslaList <ISpatialController>(1);

            if (hasControllers)
            {
                ISavable[] savableControllers = input.ReadSavableArray <ISavable>();
                for (int i = 0; i < savableControllers.Length; i++)
                {
                    ISpatialController controller = savableControllers[i] as ISpatialController;
                    if (controller != null)
                    {
                        _controllers.Add(controller);
                    }
                }
            }

            _worldTransform   = new Transform(_localTransform);
            _frustumIntersect = ContainmentType.Intersects;
            _parent           = null;
            _dirtyMark        = DirtyMark.Bounding | DirtyMark.Transform | DirtyMark.Lighting;
        }
Exemple #2
0
 /// <summary>
 /// Marks this spatial with the dirty flag and then propagates
 /// it up the scene graph.
 /// </summary>
 /// <param name="flag">DirtyMark bit flag</param>
 public void PropagateDirtyUp(DirtyMark flag)
 {
     _dirtyMark |= flag;
     if (_parent != null)
     {
         _parent.PropagateDirtyUp(flag);
     }
 }
Exemple #3
0
 /// <summary>
 /// Propagates a dirty mark down the tree, calling PropagateDirtyDown()
 /// on each child.
 /// </summary>
 /// <param name="flag">Dirty mark</param>
 public override void PropagateDirtyDown(DirtyMark flag)
 {
     MarkDirty(flag);
     for (int i = 0; i < _children.Count; i++)
     {
         _children[i].PropagateDirtyDown(flag);
     }
 }
Exemple #4
0
        /// <summary>
        /// Creates a new spatial with the specified name.
        /// </summary>
        /// <param name="name"></param>
        public Spatial(String name)
        {
            _name = name;

            _parent         = null;
            _localTransform = new Transform();
            _worldTransform = new Transform();
            _controllers    = new TeslaList <ISpatialController>(1);
            _dirtyMark      = DirtyMark.Bounding | DirtyMark.Transform | DirtyMark.Lighting;
            _sceneHints     = new SceneHints(this);
            _localLights    = new LightCollection(this);
        }
Exemple #5
0
 /// <summary>
 /// Clears the specified dirty mark from this Spatial.
 /// </summary>
 /// <param name="flag">DirtyMark bit flag</param>
 public void ClearDirty(DirtyMark flag)
 {
     _dirtyMark &= ~flag;
 }
Exemple #6
0
 /// <summary>
 /// Marks the spatial dirty, but does not propagate the mark up/down the tree.
 /// </summary>
 /// <param name="flag">DirtyMark bit flag</param>
 public void MarkDirty(DirtyMark flag)
 {
     _dirtyMark |= flag;
 }
Exemple #7
0
 /// <summary>
 /// Checks if this Spatial is marked with the
 /// specified dirty mark.
 /// </summary>
 /// <param name="flag">DirtyMark bit flag</param>
 /// <returns>True if the spatial is marked with the flag</returns>
 public bool IsDirty(DirtyMark flag)
 {
     return((_dirtyMark & flag) == flag);
 }
Exemple #8
0
 /// <summary>
 /// Marks this spatial with the dirty flag and then propagates it down the
 /// scene graph. This is meant to be overridden by subclasses that have children.
 /// </summary>
 /// <param name="flag">DirtyMark bit flag</param>
 public virtual void PropagateDirtyDown(DirtyMark flag)
 {
     _dirtyMark |= flag;
 }