Release Notes for Build 108 and Release Notes for Build 130: Difference between pages

From C4 Engine Wiki
(Difference between pages)
Jump to navigation Jump to search
(Created page with "__NOTOC__ '''Release date:''' May 27, 2005 * Added the <code>kLightExternalZone</code> flag to the <code>LightObject</code> class. This tells the lighting system that the light may not be physically located in the zone that contains the light node in the scene graph. This flag is useful for lights that are attached to other objects (like a character). It's possible for a character to be in one zone, but the light that he's holding to be in a different zone because his a...")
 
(Created page with "__NOTOC__ '''Release date:''' November 10, 2006 * Finished the animation blending system based on a new design. There are three built-in animator subclasses that provide general functionality, and applications can define custom animators for more specific purposes (see next note). Each animator in the tree assigned to an entity targets a range of nodes rooted at a given target node (which is often the entity itself). * The <code>FrameAnimator</code> class is used to pl...")
 
Line 1: Line 1:
__NOTOC__
__NOTOC__
'''Release date:''' May 27, 2005
'''Release date:''' November 10, 2006


* Added the <code>kLightExternalZone</code> flag to the <code>LightObject</code> class. This tells the lighting system that the light may not be physically located in the zone that contains the light node in the scene graph. This flag is useful for lights that are attached to other objects (like a character). It's possible for a character to be in one zone, but the light that he's holding to be in a different zone because his arm extends through a portal. Setting the flag allows the lighting system to build the light's illumination tree correctly at the slight expense of having to find the zone that contains the light.  
* Finished the animation blending system based on a new design. There are three built-in animator subclasses that provide general functionality, and applications can define custom animators for more specific purposes (see next note). Each animator in the tree assigned to an entity targets a range of nodes rooted at a given target node (which is often the entity itself).


* Added a tool tip mechanism to the Interface Manager. Any renderable interface element can now have tip text assigned to it, and this text will appear in a little pop-up box whenever the cursor hovers over the element for half a second. Tool tips were added to all of the World Editor palettes.  
* The <code>FrameAnimator</code> class is used to play an animation stored in an animation resource. This replaces the functionality that was previously part of the <code>Entity</code> class. The frame animator is based on time instead of frame number, and its rate can be changed arbitrarily. Control over the playback is accessed through the <code>Interpolator</code> object returned by the <code>FrameAnimator::GetFrameInterpolator()</code> function.


* Added mouse wheel zooming to the World Editor. Mouse wheel support was also added to the <code>ListBoxElement</code> class.
* The <code>MergeAnimator</code> class can be used to combine the outputs of multiple animators. It takes the outputs of all of its subnodes and combines them into a single output. Later subnodes can override the outputs of earlier nodes.
* Changed the way that portals are rendered in the World Editor. It's much easier to see a portal now when you're looking directly at its face (perpendicular to its plane) and its edges coincide with scene geometry.  


* Fixed a model export bug in the World Editor.  
* The <code>BlendAnimator</code> class blends the outputs of at most two sub-animators. The weight of each animator is controlled through another <code>Interpolator</code> object that can be retrieved with the <code>Animator::GetWeightInterpolator()</code> function. Weights are always renormalized by the blend animator, so they don't need to sum to one.


* Added a simple progress bar interface element.  
* Removed the bone modifier mechanism that was being used to twist the spine of the player as he looked around. This is now handled by a custom animator called <code>SpineTwistAnimator</code> in the game code.


* Added more picking capabilities to the <code>GeometryManipulator</code> class. Previously, only geometries that had collision data could be directly selected because the collision detection system is used to pick geometries in the World Editor. Now, a fallback routine takes over for geometries without collision data that just tests a ray against the triangle soup.
* Fixed a bug that could cause a crash on exit when using microfacet shading together with fog.
 
* Finished updating the Movie Player tool.
* Fixed a crash that would occur if you combined dual textures, refraction, and environment mapping in a single material.

Latest revision as of 09:40, 15 July 2023

Release date: November 10, 2006

  • Finished the animation blending system based on a new design. There are three built-in animator subclasses that provide general functionality, and applications can define custom animators for more specific purposes (see next note). Each animator in the tree assigned to an entity targets a range of nodes rooted at a given target node (which is often the entity itself).
  • The FrameAnimator class is used to play an animation stored in an animation resource. This replaces the functionality that was previously part of the Entity class. The frame animator is based on time instead of frame number, and its rate can be changed arbitrarily. Control over the playback is accessed through the Interpolator object returned by the FrameAnimator::GetFrameInterpolator() function.
  • The MergeAnimator class can be used to combine the outputs of multiple animators. It takes the outputs of all of its subnodes and combines them into a single output. Later subnodes can override the outputs of earlier nodes.
  • The BlendAnimator class blends the outputs of at most two sub-animators. The weight of each animator is controlled through another Interpolator object that can be retrieved with the Animator::GetWeightInterpolator() function. Weights are always renormalized by the blend animator, so they don't need to sum to one.
  • Removed the bone modifier mechanism that was being used to twist the spine of the player as he looked around. This is now handled by a custom animator called SpineTwistAnimator in the game code.
  • Fixed a bug that could cause a crash on exit when using microfacet shading together with fog.
  • Fixed a crash that would occur if you combined dual textures, refraction, and environment mapping in a single material.