[NUI] Public open MotionData
authorEunki, Hong <eunkiki.hong@samsung.com>
Fri, 4 Aug 2023 06:57:27 +0000 (15:57 +0900)
committerEunki Hong <h.pichulia@gmail.com>
Tue, 5 Sep 2023 13:41:07 +0000 (22:41 +0900)
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
src/Tizen.NUI.Scene3D/src/public/Controls/Model.cs
src/Tizen.NUI.Scene3D/src/public/ModelMotion/MotionData.cs
src/Tizen.NUI.Scene3D/src/public/ModelMotion/MotionIndex/BlendShapeIndex.cs
src/Tizen.NUI.Scene3D/src/public/ModelMotion/MotionIndex/MotionIndex.cs
src/Tizen.NUI.Scene3D/src/public/ModelMotion/MotionIndex/MotionPropertyIndex.cs
src/Tizen.NUI.Scene3D/src/public/ModelMotion/MotionIndex/MotionTransformIndex.cs
src/Tizen.NUI.Scene3D/src/public/ModelMotion/MotionValue.cs

index b3aff77..484a7dd 100755 (executable)
@@ -513,10 +513,9 @@ namespace Tizen.NUI.Scene3D
         /// Generate animation by MotionData.
         /// If there is no animatable item for MotionData, return null.
         /// </summary>
-        /// <param name="motionData">Inputed list of pair of MotionIndex and MotionValue, and duration.</param>
-        /// <returns>Generated animation by input motion data, or null if there is no animatable item exist about inputed motionData</returns>
-        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <param name="motionData">Source motion data.</param>
+        /// <returns>Generated animation from then given motion data, or null if there is no animatable item in <paramref name="motionData"/></returns>
+        /// <since_tizen> 11 </since_tizen>
         public Animation GenerateMotionDataAnimation(MotionData motionData)
         {
             global::System.IntPtr cPtr = Interop.Model.GenerateMotionDataAnimation(SwigCPtr, MotionData.getCPtr(motionData));
@@ -546,13 +545,12 @@ namespace Tizen.NUI.Scene3D
         }
 
         /// <summary>
-        /// Prototype of MotionData setter.
-        /// Note that this API didn't apply KeyFrames animation.
+        /// Set values from MotionData.
+        /// Note that this method doesn not apply KeyFrames animation.
         /// If you want to apply the animation, please use <see cref="GenerateMotionDataAnimation(MotionData)"/> and play the result.
         /// </summary>
-        /// <param name="motionData">Inputed list of pair of MotionIndex and MotionValue.</param>
-        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <param name="motionData">Source motion data.</param>
+        /// <since_tizen> 11 </since_tizen>
         public void SetMotionData(MotionData motionData)
         {
             Interop.Model.SetMotionData(SwigCPtr, MotionData.getCPtr(motionData));
index 6769d07..26f8a4c 100644 (file)
@@ -26,8 +26,13 @@ namespace Tizen.NUI.Scene3D
     /// List of model motion definitions.
     /// Each motion has pair of <see cref="MotionIndex"/> and <see cref="MotionValue"/>.
     /// MotionIndex is abstract class that specify the target of motion.
-    /// MotionValue is target value of motion. It can be KeyFrames.
-    ///
+    /// MotionValue is destination value of target for the motion. It can be expressed with <see cref="Tizen.NUI.PropertyValue"/> or <see cref="Tizen.NUI.KeyFrames"/>.
+    /// </summary>
+    /// <remarks>
+    /// We don't check duplicated MotionIndex internally.
+    /// We don't check MotionValue type is matched with MotionIndex.
+    /// </remarks>
+    /// <example>
     /// We can generate list of motions by MotionIndex and MotionValue classes.
     ///
     /// <code>
@@ -47,7 +52,8 @@ namespace Tizen.NUI.Scene3D
     /// // Make MotionIndex with BlendShapeIndex
     /// motionData.Add(new BlendShapeIndex(new PropertyKey("nodeName"), new PropertyKey("blendShapeName")), motionData.GetValue(1u));
     /// </code>
-    ///
+    /// </example>
+    /// <example>
     /// We can request to load MotionData from file or buffer asynchronously.
     /// If load completed, <see cref="LoadCompleted"/> event will be invoked.
     /// If we try to load before LoadCompleted event invoked, previous load request cancel and only latest request loaded.
@@ -65,7 +71,8 @@ namespace Tizen.NUI.Scene3D
     ///     /// Do something.
     /// }
     /// </code>
-    ///
+    /// </example>
+    /// <example>
     /// We can generate animation of Scene3D.Model from MotionData class.
     /// Or, just set values.
     ///
@@ -77,12 +84,8 @@ namespace Tizen.NUI.Scene3D
     /// // Set values from loaded Model.
     /// model2.SetMotionData(motionData);
     /// </code>
-    /// </summary>
-    /// <remark>
-    /// We don't check duplicated MotionIndex internally.
-    /// We don't check MotionValue type is matched with MotionIndex.
-    /// </remark>
-    [EditorBrowsable(EditorBrowsableState.Never)]
+    /// </example>
+    /// <since_tizen> 11 </since_tizen>
     public class MotionData : BaseHandle
     {
         private EventHandler loadCompletedEventHandler;
@@ -91,9 +94,9 @@ namespace Tizen.NUI.Scene3D
         private delegate void LoadCompletedCallbackType(IntPtr motionData);
 
         /// <summary>
-        /// Create an initialized motion data.
+        /// Create an initialized, empty motion data.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public MotionData() : this(Interop.MotionData.MotionDataNew(), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
@@ -102,9 +105,9 @@ namespace Tizen.NUI.Scene3D
         /// <summary>
         /// Create an initialized motion data with duration.
         /// </summary>
-        /// <param name="durationMilliSeconds">Duration of this motion data when it be generated as Animation in milliseconds.</param>
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public MotionData(int durationMilliSeconds) : this(Interop.MotionData.MotionDataNew(MilliSecondsToSeconds(durationMilliSeconds)), true)
+        /// <param name="durationMilliseconds">Duration of an Animation generated from this motion data, in milliseconds.</param>
+        /// <since_tizen> 11 </since_tizen>
+        public MotionData(int durationMilliseconds) : this(Interop.MotionData.MotionDataNew(MillisecondsToSeconds(durationMilliseconds)), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
@@ -113,7 +116,7 @@ namespace Tizen.NUI.Scene3D
         /// Copy constructor.
         /// </summary>
         /// <param name="motionData">Source object to copy.</param>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public MotionData(MotionData motionData) : this(Interop.MotionData.NewMotionData(MotionData.getCPtr(motionData)), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
@@ -136,26 +139,26 @@ namespace Tizen.NUI.Scene3D
         }
 
         /// <summary>
-        /// Get or set the duration of this motion data  in milliseconds.
+        /// Get or set the duration of this motion data in milliseconds.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public int Duration
         {
             get
             {
-                return SecondsToMilliSeconds(GetDuration());
+                return SecondsToMilliseconds(GetDuration());
             }
             set
             {
-                SetDuration(MilliSecondsToSeconds(value));
+                SetDuration(MillisecondsToSeconds(value));
             }
         }
 
         /// <summary>
-        /// Get the number of MotionIndex / MotionValue pair list what this hold.
+        /// Get the number of contained MotionIndex / MotionValue pair what this hold.
         /// </summary>
-        /// <returns>The number of motions what this hold.</returns>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <returns>The number of contained motions.</returns>
+        /// <since_tizen> 11 </since_tizen>
         public uint GetMotionCount()
         {
             uint ret = Interop.MotionData.GetMotionCount(SwigCPtr);
@@ -164,11 +167,11 @@ namespace Tizen.NUI.Scene3D
         }
 
         /// <summary>
-        /// Append pair of MotionIndex and MotionValue end of list.
+        /// Append pair of MotionIndex and MotionValue to the list.
         /// </summary>
         /// <param name="index">MotionIndex to be added</param>
         /// <param name="value">MotionValue to be added</param>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public void Add(MotionIndex index, MotionValue value)
         {
             Interop.MotionData.Add(SwigCPtr, MotionIndex.getCPtr(index), MotionValue.getCPtr(value));
@@ -176,11 +179,11 @@ namespace Tizen.NUI.Scene3D
         }
 
         /// <summary>
-        /// Get MotionIndex at index'th. null if invalid index inputed
+        /// Get MotionIndex at position, or null if invalid index was given.
         /// </summary>
         /// <param name="index">The index of motion data list</param>
-        /// <returns>The index'th MotionIndex. Or empty handle that doesn't have body</returns>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <returns>The MotionIndex at position. Or null.</returns>
+        /// <since_tizen> 11 </since_tizen>
         public MotionIndex GetIndex(uint index)
         {
             IntPtr cPtr = Interop.MotionData.GetIndex(SwigCPtr, index);
@@ -198,15 +201,21 @@ namespace Tizen.NUI.Scene3D
                 handle = new HandleRef(null, IntPtr.Zero);
             }
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+
+            if (!ret.HasBody())
+            {
+                ret.Dispose();
+                ret = null;
+            }
             return ret;
         }
 
         /// <summary>
-        /// Get MotionValue at index'th. null if invalid index inputed
+        /// Get MotionValue at position, or null if invalid index was given.
         /// </summary>
         /// <param name="index">The index of motion data list</param>
-        /// <returns>The index'th MotionValue. Or empty handle that doesn't have body</returns>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <returns>The MotionValue at position. Or null.</returns>
+        /// <since_tizen> 11 </since_tizen>
         public MotionValue GetValue(uint index)
         {
             IntPtr cPtr = Interop.MotionData.GetValue(SwigCPtr, index);
@@ -224,22 +233,29 @@ namespace Tizen.NUI.Scene3D
                 handle = new HandleRef(null, IntPtr.Zero);
             }
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+
+            if (!ret.HasBody())
+            {
+                ret.Dispose();
+                ret = null;
+            }
             return ret;
         }
 
         /// <summary>
         /// Load motion capture animation.
-        /// Scale is additional scale factor of motion capture animation. It is possible that
-        /// Model's scale may not matched with motion capture animation scale.
-        /// If scale is null, default use as Vector3.ONE
         /// We support bvh format.
-        /// After load completed, <see cref="LoadCompleted"/> event will be invoked.
+        /// After load completes, <see cref="LoadCompleted"/> event will be invoked.
         /// </summary>
+        /// <remarks>
+        /// Scale is additional scale factor of motion capture animation. It is possible that
+        /// Model's scale may not match with motion capture animation scale.
+        /// If scale is null, default value will be used: <cref name="Vector3.ONE"/>
+        /// </remarks>
         /// <param name="motionCaptureFilename">Name of motion capture format file.</param>
         /// <param name="scale">Scale value of motion capture animation match with model.</param>
         /// <param name="synchronousLoad">Load synchronously or not. Default is async load.</param>
-        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public void LoadMotionCaptureAnimation(string motionCaptureFilename, Vector3 scale = null, bool synchronousLoad = false)
         {
             Interop.MotionData.LoadMotionCaptureAnimation(SwigCPtr, motionCaptureFilename, Vector3.getCPtr(scale), synchronousLoad);
@@ -247,18 +263,19 @@ namespace Tizen.NUI.Scene3D
         }
 
         /// <summary>
-        /// Load motion capture animation.
-        /// Scale is additional scale factor of motion capture animation. It is possible that
-        /// Model's scale may not matched with motion capture animation scale.
-        /// If scale is null, default use as Vector3.ONE
+        /// Load motion capture animation from string.
         /// We support bvh format.
-        /// After load completed, <see cref="LoadCompleted"/> event will be invoked.
+        /// After load completes, <see cref="LoadCompleted"/> event will be invoked.
         /// </summary>
-        /// <param name="motionCaptureBuffer">Contents of motion capture format file.</param>
+        /// <remarks>
+        /// Scale is additional scale factor of motion capture animation. It is possible that
+        /// Model's scale may not match with motion capture animation scale.
+        /// If scale is null, default value will be used: <cref name="Vector3.ONE"/>
+        /// </remarks>
+        /// <param name="motionCaptureBuffer">Contents of motion capture format string.</param>
         /// <param name="scale">Scale value of motion capture animation match with model.</param>
         /// <param name="synchronousLoad">Load synchronously or not. Default is async load.</param>
-        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public void LoadMotionCaptureAnimationFromBuffer(string motionCaptureBuffer, Vector3 scale = null, bool synchronousLoad = false)
         {
             Interop.MotionData.LoadMotionCaptureAnimationFromBuffer(SwigCPtr, motionCaptureBuffer, motionCaptureBuffer.Length, Vector3.getCPtr(scale), synchronousLoad);
@@ -271,8 +288,7 @@ namespace Tizen.NUI.Scene3D
         /// </summary>
         /// <param name="blendShapeFilename">Name of json format file what we predefined.</param>
         /// <param name="synchronousLoad">Load synchronously or not. Default is async load.</param>
-        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public void LoadBlendShapeAnimation(string blendShapeFilename, bool synchronousLoad = false)
         {
             Interop.MotionData.LoadBlendShapeAnimation(SwigCPtr, blendShapeFilename, synchronousLoad);
@@ -285,8 +301,7 @@ namespace Tizen.NUI.Scene3D
         /// </summary>
         /// <param name="blendShapeBuffer">Contents of json format file what we predefined.</param>
         /// <param name="synchronousLoad">Load synchronously or not. Default is async load.</param>
-        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public void LoadBlendShapeAnimationFromBuffer(string blendShapeBuffer, bool synchronousLoad = false)
         {
             Interop.MotionData.LoadBlendShapeAnimationFromBuffer(SwigCPtr, blendShapeBuffer, blendShapeBuffer.Length, synchronousLoad);
@@ -297,7 +312,7 @@ namespace Tizen.NUI.Scene3D
         /// LoadCompleted event.
         /// It will be invoked only for latest load request.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public event EventHandler LoadCompleted
         {
             add
@@ -331,9 +346,9 @@ namespace Tizen.NUI.Scene3D
         }
 
         /// <summary>
-        /// Clear all inputed values.
+        /// Removes all stored motions.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public void Clear()
         {
             Interop.MotionData.Clear(SwigCPtr);
@@ -353,12 +368,12 @@ namespace Tizen.NUI.Scene3D
             return ret;
         }
 
-        private static float MilliSecondsToSeconds(int millisec)
+        private static float MillisecondsToSeconds(int millisec)
         {
             return (float)millisec / 1000.0f;
         }
 
-        private static int SecondsToMilliSeconds(float sec)
+        private static int SecondsToMilliseconds(float sec)
         {
             return (int)(sec * 1000);
         }
index de59586..3455953 100644 (file)
@@ -26,9 +26,11 @@ namespace Tizen.NUI.Scene3D
     /// Specialized <see cref="MotionIndex"/> to control blend shape.
     /// We can control the blend shape by index (when we set BlendShapeId as IndexKey),
     /// or by name (when we set BlendShapeId as StringKey).
-    ///
+    /// </summary>
+    /// <remarks>
     /// <see cref="MotionValue"/> should be float type.
-    ///
+    /// </remarks>
+    /// <example>
     /// <code>
     /// BlendShapeIndex blendShapeIndex0 = new BlendShapeIndex(new PropertyKey("nodeName"), new PropertyKey(0u));
     /// BlendShapeIndex blendShapeIndex1 = new BlendShapeIndex(new PropertyKey("nodeName"), new PropertyKey("Target_1"));
@@ -38,7 +40,8 @@ namespace Tizen.NUI.Scene3D
     /// blendShapeIndex2.ModelNodeId = new PropertyKey("nodeName");
     /// blendShapeIndex2.BlendShapeId = new PropertyKey("Target_2");
     /// </code>
-    ///
+    /// </example>
+    /// <example>
     /// Specially, if ModelNodeId is invalid and BlendShapeId is StringKey,
     /// It will control all ModelNode that has the inputed blend shape name.
     ///
@@ -50,42 +53,66 @@ namespace Tizen.NUI.Scene3D
     /// BlendShapeIndex blendShapeIndex0 = new BlendShapeIndex(new PropertyKey("node0"), new PropertyKey("Smile"));
     /// BlendShapeIndex blendShapeIndex1 = new BlendShapeIndex(new PropertyKey("node1"), new PropertyKey("Smile"));
     /// </code>
-    /// </summary>
-    [EditorBrowsable(EditorBrowsableState.Never)]
+    /// </example>
+    /// <since_tizen> 11 </since_tizen>
     public class BlendShapeIndex : MotionIndex
     {
         /// <summary>
         /// Create an initialized blend shape index.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public BlendShapeIndex() : this(Interop.MotionIndex.BlendShapeIndexNew(), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
         /// <summary>
-        /// Create an initialized blend shape index with invalid node id, and input blend shape id.
+        /// Create an initialized blend shape index with invalid node ID, and given blend shape ID.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <param name="blendShapeId">Blend shape ID for this motion index</param>
+        /// <since_tizen> 11 </since_tizen>
         public BlendShapeIndex(PropertyKey blendShapeId) : this(Interop.MotionIndex.BlendShapeIndexNew(PropertyKey.getCPtr(blendShapeId)), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
         /// <summary>
-        /// Create an initialized blend shape index with input node id, and input blend shape id.
+        /// Create an initialized blend shape index with given node ID and blend shape ID.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <param name="modelNodeId">Node ID for this motion index</param>
+        /// <param name="blendShapeId">Blend shape ID for this motion index</param>
+        /// <since_tizen> 11 </since_tizen>
         public BlendShapeIndex(PropertyKey modelNodeId, PropertyKey blendShapeId) : this(Interop.MotionIndex.BlendShapeIndexNew(PropertyKey.getCPtr(modelNodeId), PropertyKey.getCPtr(blendShapeId)), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
         /// <summary>
+        /// Create an initialized blend shape index with invalid node ID, and given blend shape string ID.
+        /// </summary>
+        /// <param name="blendShapeName">Blend shape string ID for this motion index</param>
+        /// <since_tizen> 11 </since_tizen>
+        public BlendShapeIndex(string blendShapeName) : this(Interop.MotionIndex.BlendShapeIndexNew(PropertyKey.getCPtr(new PropertyKey(blendShapeName))), true)
+        {
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
+        /// Create an initialized blend shape index with given node string ID and blend shape string ID.
+        /// </summary>
+        /// <param name="modelNodeName">Node string ID for this motion index</param>
+        /// <param name="blendShapeName">Blend shape string ID for this motion index</param>
+        /// <since_tizen> 11 </since_tizen>
+        public BlendShapeIndex(string modelNodeName, string blendShapeName) : this(Interop.MotionIndex.BlendShapeIndexNew(PropertyKey.getCPtr(new PropertyKey(modelNodeName)), PropertyKey.getCPtr(new PropertyKey(blendShapeName))), true)
+        {
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
         /// Copy constructor.
         /// </summary>
         /// <param name="blendShapeIndex">Source object to copy.</param>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public BlendShapeIndex(BlendShapeIndex blendShapeIndex) : this(Interop.MotionIndex.NewBlendShapeIndex(BlendShapeIndex.getCPtr(blendShapeIndex)), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
@@ -110,7 +137,7 @@ namespace Tizen.NUI.Scene3D
         /// <summary>
         /// The key of blend shape.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public PropertyKey BlendShapeId
         {
             get
index 8d02401..641a72c 100644 (file)
@@ -24,32 +24,31 @@ namespace Tizen.NUI.Scene3D
 {
     /// <summary>
     /// Index of motion value. It will be used to specify the target of motion applied.
-    ///
     /// There are three kinds of MotionIndex : <see cref="MotionPropertyIndex"/>, <see cref="MotionTransformIndex"/> and <see cref="BlendShapeIndex"/>.
-    /// MotionPropertyIndex will be used for control whole kind of properties.
+    /// MotionPropertyIndex will be used for control all kind of properties.
     /// The <see cref="MotionData"/> loaded from files / buffer will have this kind of MotionIndex.
-    ///
     /// MotionTransformIndex will be used for control the <see cref="ModelNode"/>'s Position / Orientation / Scale, or each components.
     /// BlendShapeIndex will be used for control some blend shape animation.
-    ///
-    /// We can use this class below cases
-    /// - ModelNodeId (string key) , MotionTransformIndex         : Target is ModelNode's transform property
-    /// - ModelNodeId (int key)    , MotionTransformIndex         : Target is ModelNode's transform property [not implemented yet]
-    /// - ModelNodeId (string key) , BlendShapeIndex (int key)    : Target is ModelNode's BlendShape
-    /// - ModelNodeId (string key) , BlendShapeIndex (string key) : Target is ModelNode's BlendShape
-    /// - ModelNodeId (int key)    , BlendShapeIndex (int key)    : Target is ModelNode's BlendShape [not implemented yet]
-    /// - ModelNodeId (int key)    , BlendShapeIndex (string key) : Target is ModelNode's BlendShape [not implemented yet]
-    /// - ModelNodeId (null)       , BlendShapeIndex (string key) : Target is all ModelNode's BlendShape
-    /// All other cases are invalid.
     /// </summary>
-    [EditorBrowsable(EditorBrowsableState.Never)]
+    /// <remarks>
+    /// We can use below cases.
+    /// <table>
+    ///  <tr><td>ModelNodeId KeyType</td><td>MotionIndex class                                 </td><td>Description                             </td></tr>
+    ///  <tr><td>KeyType.String     </td><td>MotionTransformIndex                              </td><td>Target is ModelNode's transform property</td></tr>
+    ///  <tr><td>KeyType.String     </td><td>BlendShapeIndex (with BlendShapeId KeyType.Index) </td><td>Target is ModelNode's BlendShape        </td></tr>
+    ///  <tr><td>KeyType.String     </td><td>BlendShapeIndex (with BlendShapeId KeyType.String)</td><td>Target is ModelNode's BlendShape        </td></tr>
+    ///  <tr><td>(null)             </td><td>BlendShapeIndex (with BlendShapeId KeyType.String)</td><td>Target is all ModelNode's BlendShape    </td></tr>
+    /// </table>
+    /// All other cases are invalid.
+    /// </remarks>
+    /// <since_tizen> 11 </since_tizen>
     public class MotionIndex : BaseHandle
     {
         /// <summary>
         /// Copy constructor.
         /// </summary>
         /// <param name="motionIndex">Source object to copy.</param>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public MotionIndex(MotionIndex motionIndex) : this(Interop.MotionIndex.NewMotionIndex(MotionIndex.getCPtr(motionIndex)), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
@@ -72,9 +71,9 @@ namespace Tizen.NUI.Scene3D
         }
 
         /// <summary>
-        /// The id of ModelNode. If you want to apply to all ModelNodes who has BlendShape string, let this value as null.
+        /// The ID of ModelNode. If you want to apply to all ModelNodes who has BlendShape string, assign null.
         /// </summary>
-         [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public PropertyKey ModelNodeId
         {
             get
index f892c35..4d30b4a 100644 (file)
@@ -23,7 +23,7 @@ using Tizen.NUI;
 namespace Tizen.NUI.Scene3D
 {
     /// <summary>
-    /// Basic <see cref="MotionIndex"/> to control Dali's Property.
+    /// Basic <see cref="MotionIndex"/> to control Property.
     /// It can control more general case.
     /// </summary>
     /// <example>
@@ -42,32 +42,45 @@ namespace Tizen.NUI.Scene3D
     ///
     /// </code>
     /// </example>
-    [EditorBrowsable(EditorBrowsableState.Never)]
+    /// <since_tizen> 11 </since_tizen>
     public class MotionPropertyIndex : MotionIndex
     {
         /// <summary>
-        /// Create an initialized blend shape index.
+        /// Create an initialized motion property index.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public MotionPropertyIndex() : this(Interop.MotionIndex.MotionPropertyIndexNew(), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
         /// <summary>
-        /// Create an initialized blend shape index with input node id, and property id.
+        /// Create an initialized motion property index with given node ID and property ID.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <param name="modelNodeId">Node ID for this motion index</param>
+        /// <param name="propertyId">Property ID for this motion index</param>
+        /// <since_tizen> 11 </since_tizen>
         public MotionPropertyIndex(PropertyKey modelNodeId, PropertyKey propertyId) : this(Interop.MotionIndex.MotionPropertyIndexNew(PropertyKey.getCPtr(modelNodeId), PropertyKey.getCPtr(propertyId)), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
         /// <summary>
+        /// Create an initialized motion property index with given node string ID and property string ID.
+        /// </summary>
+        /// <param name="modelNodeName">Node string ID for this motion index</param>
+        /// <param name="propertyName">Property string ID for this motion index</param>
+        /// <since_tizen> 11 </since_tizen>
+        public MotionPropertyIndex(string modelNodeName, string propertyName) : this(Interop.MotionIndex.MotionPropertyIndexNew(PropertyKey.getCPtr(new PropertyKey(modelNodeName)), PropertyKey.getCPtr(new PropertyKey(propertyName))), true)
+        {
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
         /// Copy constructor.
         /// </summary>
         /// <param name="motionPropertyIndex">Source object to copy.</param>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public MotionPropertyIndex(MotionPropertyIndex motionPropertyIndex) : this(Interop.MotionIndex.NewMotionPropertyIndex(MotionPropertyIndex.getCPtr(motionPropertyIndex)), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
@@ -92,7 +105,7 @@ namespace Tizen.NUI.Scene3D
         /// <summary>
         /// The key of property
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public PropertyKey PropertyId
         {
             get
index 930df04..b9c5a0d 100644 (file)
@@ -24,11 +24,12 @@ namespace Tizen.NUI.Scene3D
 {
     /// <summary>
     /// Specialized <see cref="MotionIndex"/> to control transform.
-    /// It will be used when app developer don't care about Property index list,
+    /// It will be used when app developer doesn't care about Property index list,
     /// but want to change the transform properties anyway fast enough.
-    ///
-    /// Each TransformTypes has their own matched <see cref="MotionValue"/> type.
     /// </summary>
+    /// <remarks>
+    /// Each TransformTypes has their own matched <see cref="MotionValue"/> type.
+    /// </remarks>
     /// <example>
     /// <code>
     /// MotionTransformIndex position = new MotionTransformIndex(new PropertyKey("nodeName"), MotionTransformIndex.TransformTypes.Position);
@@ -39,101 +40,113 @@ namespace Tizen.NUI.Scene3D
     /// orientation.TransformType = MotionTransformIndex.TransformTypes.Orientation;
     /// </code>
     /// </example>
-    [EditorBrowsable(EditorBrowsableState.Never)]
+    /// <since_tizen> 11 </since_tizen>
     public class MotionTransformIndex : MotionIndex
     {
         /// <summary>
-        /// The list of component types what this MotionIndex can control.
+        /// The list of transform property types what this MotionTransformIndex can control.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessage("Naming", "CA1717:Only FlagsAttribute enums should have plural names")]
+        /// <since_tizen> 11 </since_tizen>
         public enum TransformTypes
         {
             /// <summary>
             /// Invalid type.
             /// </summary>
-            [EditorBrowsable(EditorBrowsableState.Never)]
+            /// <since_tizen> 11 </since_tizen>
             Invalid = -1,
 
             /// <summary>
             /// The position of ModelNode. MotionValue should be Vector3.
             /// </summary>
-            [EditorBrowsable(EditorBrowsableState.Never)]
+            /// <since_tizen> 11 </since_tizen>
             Position = 0,
 
             /// <summary>
             /// The x position of ModelNode. MotionValue should be float.
             /// </summary>
-            [EditorBrowsable(EditorBrowsableState.Never)]
+            /// <since_tizen> 11 </since_tizen>
             PositionX,
 
             /// <summary>
             /// The y position of ModelNode. MotionValue should be float.
             /// </summary>
-            [EditorBrowsable(EditorBrowsableState.Never)]
+            /// <since_tizen> 11 </since_tizen>
             PositionY,
 
             /// <summary>
             /// The z position of ModelNode. MotionValue should be float.
             /// </summary>
-            [EditorBrowsable(EditorBrowsableState.Never)]
+            /// <since_tizen> 11 </since_tizen>
             PositionZ,
 
             /// <summary>
             /// The orientation of ModelNode. MotionValue should be Rotation.
             /// </summary>
-            [EditorBrowsable(EditorBrowsableState.Never)]
+            /// <since_tizen> 11 </since_tizen>
             Orientation,
 
             /// <summary>
             /// The scale of ModelNode. MotionValue should be Vector3.
             /// </summary>
-            [EditorBrowsable(EditorBrowsableState.Never)]
+            /// <since_tizen> 11 </since_tizen>
             Scale,
 
             /// <summary>
             /// The x scale of ModelNode. MotionValue should be float.
             /// </summary>
-            [EditorBrowsable(EditorBrowsableState.Never)]
+            /// <since_tizen> 11 </since_tizen>
             ScaleX,
 
             /// <summary>
             /// The y scale of ModelNode. MotionValue should be float.
             /// </summary>
-            [EditorBrowsable(EditorBrowsableState.Never)]
+            /// <since_tizen> 11 </since_tizen>
             ScaleY,
 
             /// <summary>
             /// The z scale of ModelNode. MotionValue should be float.
             /// </summary>
-            [EditorBrowsable(EditorBrowsableState.Never)]
+            /// <since_tizen> 11 </since_tizen>
             ScaleZ,
         }
 
         /// <summary>
-        /// Create an initialized blend shape index.
+        /// Create an initialized motion transform index.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public MotionTransformIndex() : this(Interop.MotionIndex.MotionTransformIndexNew(), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
         /// <summary>
-        /// Create an initialized blend shape index with input node id, and transform type.
+        /// Create an initialized motion transform index with given node ID and transform type.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <param name="modelNodeId">Node ID for this motion index</param>
+        /// <param name="transformType">Transform property type for this motion index</param>
+        /// <since_tizen> 11 </since_tizen>
         public MotionTransformIndex(PropertyKey modelNodeId, TransformTypes transformType) : this(Interop.MotionIndex.MotionTransformIndexNew(PropertyKey.getCPtr(modelNodeId), (int)transformType), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
         /// <summary>
+        /// Create an initialized motion transform index with given node string ID, and transform type.
+        /// </summary>
+        /// <param name="modelNodeName">Node string ID for this motion index</param>
+        /// <param name="transformType">Transform property type for this motion index</param>
+        /// <since_tizen> 11 </since_tizen>
+        public MotionTransformIndex(string modelNodeName, TransformTypes transformType) : this(Interop.MotionIndex.MotionTransformIndexNew(PropertyKey.getCPtr(new PropertyKey(modelNodeName)), (int)transformType), true)
+        {
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
         /// Copy constructor.
         /// </summary>
         /// <param name="motionTransformIndex">Source object to copy.</param>
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public MotionTransformIndex(BlendShapeIndex motionTransformIndex) : this(Interop.MotionIndex.NewMotionTransformIndex(MotionTransformIndex.getCPtr(motionTransformIndex)), true)
+        /// <since_tizen> 11 </since_tizen>
+        public MotionTransformIndex(MotionTransformIndex motionTransformIndex) : this(Interop.MotionIndex.NewMotionTransformIndex(MotionTransformIndex.getCPtr(motionTransformIndex)), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
@@ -155,9 +168,9 @@ namespace Tizen.NUI.Scene3D
         }
 
         /// <summary>
-        /// The component type what this MotionIndex want to control.
+        /// The transform property type what this MotionIndex want to control.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public TransformTypes TransformType
         {
             get
index f9a1627..45cb8da 100644 (file)
@@ -24,47 +24,46 @@ using Tizen.NUI;
 namespace Tizen.NUI.Scene3D
 {
     /// <summary>
-    /// This MotionValue be used for target value of each <see cref="MotionIndex"/>.
+    /// This MotionValue will be used for target value of each <see cref="MotionIndex"/>.
     /// We can get and set MotionValue as 2 types : PropertyValue and KeyFrames.
-    ///
-    /// Each types will be cross-converted internally.
-    /// For example, when we set PropertyValue, we can get KeyFrames with 2 frames, and target value is set.
     /// </summary>
     /// <remarks>
+    /// Each type will be cross-converted internally.
+    /// For example, when we set PropertyValue, we can get KeyFrames with 2 frames, and target value is set.
     /// The type of property should be matched with MotionIndex required.
     /// </remarks>
-    [EditorBrowsable(EditorBrowsableState.Never)]
+    /// <since_tizen> 11 </since_tizen>
     public class MotionValue : BaseHandle
     {
         /// <summary>
         /// Determine whether current stored value is PropertyValue, or KeyFrames.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public enum ValueType
         {
             /// <summary>
             /// Value is null, or invalid class.
             /// </summary>
-            [EditorBrowsable(EditorBrowsableState.Never)]
+            /// <since_tizen> 11 </since_tizen>
             Invalid = -1,
 
             /// <summary>
             /// Value is PropertyValue.
             /// </summary>
-            [EditorBrowsable(EditorBrowsableState.Never)]
+            /// <since_tizen> 11 </since_tizen>
             Property = 0,
 
             /// <summary>
             /// Value is KeyFrames.
             /// </summary>
-            [EditorBrowsable(EditorBrowsableState.Never)]
+            /// <since_tizen> 11 </since_tizen>
             KeyFrames,
         }
 
         /// <summary>
-        /// Create an initialized motion value with invalid.
+        /// Create an initialized invalid motion value.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public MotionValue() : this(Interop.MotionValue.MotionValueNew(), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
@@ -73,7 +72,8 @@ namespace Tizen.NUI.Scene3D
         /// <summary>
         /// Create an initialized motion value with PropertyValue.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <param name="propertyValue">PropertyValue for this motion value</param>
+        /// <since_tizen> 11 </since_tizen>
         public MotionValue(PropertyValue propertyValue) : this(Interop.MotionValue.MotionValueNewPropertyValue(PropertyValue.getCPtr(propertyValue)), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
@@ -82,7 +82,8 @@ namespace Tizen.NUI.Scene3D
         /// <summary>
         /// Create an initialized motion value with KeyFrames.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <param name="keyFrames">KeyFrameValue for this motion value</param>
+        /// <since_tizen> 11 </since_tizen>
         public MotionValue(KeyFrames keyFrames) : this(Interop.MotionValue.MotionValueNewKeyFrames(KeyFrames.getCPtr(keyFrames)), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
@@ -92,7 +93,7 @@ namespace Tizen.NUI.Scene3D
         /// Copy constructor.
         /// </summary>
         /// <param name="motionValue">Source object to copy.</param>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public MotionValue(MotionValue motionValue) : this(Interop.MotionValue.NewMotionValue(MotionValue.getCPtr(motionValue)), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
@@ -116,10 +117,10 @@ namespace Tizen.NUI.Scene3D
 
 
         /// <summary>
-        /// Get or set the value as PropertyValue type.
-        /// If ValueType is ValueType.KeyFrames, it will return last value of stored KeyFrames.
+        /// Get or set the PropertyValue.
+        /// If Type is ValueType.KeyFrames, getter will return last PropertyValue instance of stored KeyFrames.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public PropertyValue PropertyValue
         {
             get
@@ -133,10 +134,10 @@ namespace Tizen.NUI.Scene3D
         }
 
         /// <summary>
-        /// Get or set the value as KeyFrames type.
-        /// If ValueType is ValueType.PropertyValue, it will create new KeyFrames by stored PropertyValue.
+        /// Get or set the KeyFrames.
+        /// If Type is ValueType.PropertyValue, getter will create new KeyFrames from stored PropertyValue.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public KeyFrames KeyFramesValue
         {
             get
@@ -150,9 +151,9 @@ namespace Tizen.NUI.Scene3D
         }
 
         /// <summary>
-        /// Get the type of value what we set.
+        /// Get the type of value which we set.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public ValueType Type
         {
             get
@@ -162,9 +163,9 @@ namespace Tizen.NUI.Scene3D
         }
 
         /// <summary>
-        /// Invalidate the value what we set.
+        /// Invalidate the value which we set.
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 11 </since_tizen>
         public void Invalidate()
         {
             Interop.MotionValue.Clear(SwigCPtr);