# Add members who own directories and files for automatic Pull Request Reviewers.
# NUI Code Owners List
-/src/Tizen.NUI/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst
-/src/Tizen.NUI.Components/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst
-/src/Tizen.NUI/src/public/BaseComponents/Text*.cs @wonrst @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst
-/src/Tizen.NUI/src/public/Xaml/ @AdunFang @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst
-/src/Tizen.NUI/src/public/XamlBinding/ @AdunFang @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst
-/src/Tizen.NUI/src/internal/Xaml/ @AdunFang @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst
-/src/Tizen.NUI/src/internal/XamlBinding/ @AdunFang @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst
-/src/Tizen.NUI/src/internal/EXaml/ @AdunFang @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst
-/test/NUITestSample/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst
-/test/NUITizenGallery/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst
-/test/Tizen.NUI.ComponentApplication/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst
-/test/Tizen.NUI.Samples/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst
-/test/Tizen.NUI.SeamlessSamples/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst
-/test/Tizen.NUI.StyleGuide/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst
-/test/Tizen.NUI.Tests/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst
-/test/Tizen.NUI.WebViewTest/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst
-/test/Tizen.NUI.WindowSystem.Samples/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst
+/src/Tizen.NUI/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst @rabbitfor @hinohie
+/src/Tizen.NUI.Components/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst @rabbitfor @hinohie
+/src/Tizen.NUI/src/public/BaseComponents/Text*.cs @wonrst @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst @rabbitfor @hinohie
+/src/Tizen.NUI/src/public/Xaml/ @AdunFang @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst @rabbitfor @hinohie
+/src/Tizen.NUI/src/public/XamlBinding/ @AdunFang @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst @rabbitfor @hinohie
+/src/Tizen.NUI/src/internal/Xaml/ @AdunFang @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst @rabbitfor @hinohie
+/src/Tizen.NUI/src/internal/XamlBinding/ @AdunFang @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst @rabbitfor @hinohie
+/src/Tizen.NUI/src/internal/EXaml/ @AdunFang @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst @rabbitfor @hinohie
+/test/NUITestSample/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst @rabbitfor @hinohie
+/test/NUITizenGallery/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst @rabbitfor @hinohie
+/test/Tizen.NUI.ComponentApplication/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst @rabbitfor @hinohie
+/test/Tizen.NUI.Samples/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst @rabbitfor @hinohie
+/test/Tizen.NUI.SeamlessSamples/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst @rabbitfor @hinohie
+/test/Tizen.NUI.StyleGuide/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst @rabbitfor @hinohie
+/test/Tizen.NUI.Tests/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst @rabbitfor @hinohie
+/test/Tizen.NUI.WebViewTest/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst @rabbitfor @hinohie
+/test/Tizen.NUI.WindowSystem.Samples/ @hyunjushin @dongsug-song @Seoyeon2Kim @taehyub @jaehyun0cho @everLEEst @rabbitfor @hinohie
# Please Add more Code Owners below.
# Auto-generated from csapi-tizenfx.spec.in by makespec.sh
%define TIZEN_NET_API_VERSION 11
-%define TIZEN_NET_RPM_VERSION 11.0.0.17660+nui22209
-%define TIZEN_NET_NUGET_VERSION 11.0.0.17660
+%define TIZEN_NET_RPM_VERSION 11.0.0.999+nui22210
+%define TIZEN_NET_NUGET_VERSION 11.0.0.99999
%define DOTNET_ASSEMBLY_PATH /usr/share/dotnet.tizen/framework
%define DOTNET_ASSEMBLY_DUMMY_PATH %{DOTNET_ASSEMBLY_PATH}/ref
NUGET_VERSION=11.0.0.99999
# RPM Version Suffix
-RPM_VERSION_SUFFIX=nui22209
+RPM_VERSION_SUFFIX=nui22210
/// The backend instance.
/// </summary>
/// <since_tizen> 3 </since_tizen>
- protected ICoreBackend Backend { get { return _backend; } }
+ protected ICoreBackend Backend { get { return _backend; } }
/// <summary>
/// Runs the application's main loop.
if (_task != null)
{
TizenUISynchronizationContext.Initialize();
- }
+ }
if (!GlobalizationMode.Invariant)
{
if (cultureInfo != null)
{
CultureInfo.CurrentCulture = cultureInfo;
- Thread thread = new Thread(() =>
- {
- Log.Info(LogTag, "Locale: " + locale.ToLower(cultureInfo) + ", " + locale.ToUpper(cultureInfo));
- });
- thread.Start();
}
else
{
if (cultureInfo != null)
{
CultureInfo.CurrentUICulture = cultureInfo;
- Thread thread = new Thread(() =>
- {
- Log.Info(LogTag, "Locale: " + locale.ToLower(cultureInfo) + ", " + locale.ToUpper(cultureInfo));
- });
- thread.Start();
}
else
{
[global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Application_New__SWIG_6")]
public static extern global::System.IntPtr New(int jarg1, string jarg3, int jarg4, global::System.Runtime.InteropServices.HandleRef jarg5, bool jarg7);
+
+ [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_GetScreenSize")]
+ public static extern global::System.IntPtr GetScreenSize();
}
}
}
}
/// <summary>
+ /// Gets the screen size
+ /// </summary>
+ /// <returns>Screen size</returns>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static public Size GetScreenSize()
+ {
+ var ret = new Size(Interop.Application.GetScreenSize(), true);
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ return ret;
+ }
+
+ /// <summary>
/// Overrides this method if you want to handle behavior.
/// </summary>
/// <since_tizen> 3 </since_tizen>
{
if (disposed)
{
- DisposeQueue.Instance.Add(this);
return;
}
-
internalPlaceholderTextColor?.Dispose();
internalPrimaryCursorColor?.Dispose();
internalSecondaryCursorColor?.Dispose();
// for config
private Size2D minSize = null;
private Size2D maxSize = null;
- private uint borderLineThickness;
+ private uint borderLineThickness = 0;
private BorderResizePolicyType borderResizePolicy = BorderResizePolicyType.Free;
#endregion //Fields
{
if (borderInterface != null)
{
+ bool isNeedResizeByLine = false;
+ bool isNeedResizeByBorder = false;
+ using var val = new Uint16Pair(Interop.Window.GetSize(SwigCPtr), true);
if (borderLineThickness != borderInterface.BorderLineThickness)
{
+ isNeedResizeByLine = true;
int diffBorderLine = (int)borderInterface.BorderLineThickness - (int)borderLineThickness;
borderLineThickness = borderInterface.BorderLineThickness;
}
}
- using var val = new Uint16Pair(Interop.Window.GetSize(SwigCPtr), true);
val.SetWidth((ushort)(val.GetWidth() + diffBorderLine * 2));
val.SetHeight((ushort)(val.GetHeight() + diffBorderLine * 2));
- Interop.Window.SetSize(SwigCPtr, Uint16Pair.getCPtr(val));
}
float height = 0;
if (hasBottomView) height += bottomView.SizeHeight;
if (height != borderHeight)
{
+ isNeedResizeByBorder = true;
float diff = height - borderHeight;
borderHeight = height;
- WindowSize = new Size2D(WindowSize.Width, WindowSize.Height + (int)(diff));
+ val.SetHeight((ushort)(val.GetHeight() + diff));
}
- if (minSize != borderInterface.MinSize)
+ if (isNeedResizeByLine == true || isNeedResizeByBorder == true)
{
- using Size2D mimimumSize = new Size2D((borderInterface.MinSize?.Width + (int)borderInterface.BorderLineThickness * 2 ?? 0), (borderInterface.MinSize?.Height ?? 0) + (int)(borderHeight + borderInterface.BorderLineThickness * 2));
+ Interop.Window.SetSize(SwigCPtr, Uint16Pair.getCPtr(val));
+ }
+
+ if (minSize != borderInterface.MinSize || (borderInterface.MinSize != null && isNeedResizeByLine == true))
+ {
+ using Size2D mimimumSize = new Size2D((borderInterface.MinSize?.Width + (int)borderLineThickness * 2 ?? 0), (borderInterface.MinSize?.Height ?? 0) + (int)(borderHeight + borderLineThickness * 2));
SetMimimumSize(mimimumSize);
minSize = borderInterface.MinSize;
}
- if (maxSize != borderInterface.MaxSize)
+ if (maxSize != borderInterface.MaxSize || (borderInterface.MaxSize != null && isNeedResizeByLine == true))
{
- using Size2D maximumSize = new Size2D((borderInterface.MaxSize?.Width + (int)borderInterface.BorderLineThickness * 2 ?? 0), (borderInterface.MaxSize?.Height ?? 0) + (int)(borderHeight + borderInterface.BorderLineThickness * 2));
+ using Size2D maximumSize = new Size2D((borderInterface.MaxSize?.Width + (int)borderLineThickness * 2 ?? 0), (borderInterface.MaxSize?.Height ?? 0) + (int)(borderHeight + borderLineThickness * 2));
SetMaximumSize(maximumSize);
maxSize = borderInterface.MaxSize;
}
}
this.borderInterface = borderInterface;
this.borderCloseDelegate = borderCloseDelegate;
- borderLineThickness = borderInterface.BorderLineThickness;
GetDefaultLayer().Name = "OriginalRootLayer";
else
{
borderInterface.OnMaximize(IsMaximized());
- WindowSize += new Size2D((int)borderInterface.BorderLineThickness * 2, (int)(borderHeight + borderInterface.BorderLineThickness * 2));
+ if (borderHeight > 0)
+ {
+ borderLineThickness = borderInterface.BorderLineThickness;
+ WindowSize += new Size2D((int)borderLineThickness * 2, (int)(borderHeight + borderLineThickness * 2));
+ }
}
// If it is BorderResizePolicyType.KeepRatio type, it will be resized according to the ratio.
BackgroundColor = Color.Transparent,
};
- ushort padding = (ushort) borderInterface.BorderLineThickness;
+ ushort padding = (ushort) borderLineThickness;
borderView = new BorderView()
{
GrabTouchAfterLeave = true,
direction = BorderDirection.BottomLeft;
}
// check bottom right corner
- else if (xPosition > WindowSize.Width + (float)(borderInterface.BorderLineThickness * 2) - borderInterface.TouchThickness && yPosition > WindowSize.Height + borderHeight - borderInterface.TouchThickness)
+ else if (xPosition > WindowSize.Width + (float)(borderLineThickness * 2) - borderInterface.TouchThickness && yPosition > WindowSize.Height + borderHeight - borderInterface.TouchThickness)
{
direction = BorderDirection.BottomRight;
}
direction = BorderDirection.TopLeft;
}
// check top right corner
- else if (xPosition > WindowSize.Width + (float)(borderInterface.BorderLineThickness * 2) - borderInterface.TouchThickness && yPosition < borderInterface.TouchThickness)
+ else if (xPosition > WindowSize.Width + (float)(borderLineThickness * 2) - borderInterface.TouchThickness && yPosition < borderInterface.TouchThickness)
{
direction = BorderDirection.TopRight;
}
direction = BorderDirection.Left;
}
// check right side
- else if (xPosition > WindowSize.Width + (float)(borderInterface.BorderLineThickness * 2) - borderInterface.TouchThickness)
+ else if (xPosition > WindowSize.Width + (float)(borderLineThickness * 2) - borderInterface.TouchThickness)
{
direction = BorderDirection.Right;
}
// check bottom side
- else if (yPosition > WindowSize.Height + borderHeight + borderInterface.BorderLineThickness - borderInterface.TouchThickness)
+ else if (yPosition > WindowSize.Height + borderHeight + borderLineThickness - borderInterface.TouchThickness)
{
direction = BorderDirection.Bottom;
}
if (isMaximized == false)
{
- width = (float)(borderInterface.BorderLineThickness * 2);
- height += (float)(borderInterface.BorderLineThickness * 2);
- y += borderInterface.BorderLineThickness;
+ width = (float)(borderLineThickness * 2);
+ height += (float)(borderLineThickness * 2);
+ y += borderLineThickness;
}
Interop.ActorInternal.SetSize(GetBorderWindowRootLayer().SwigCPtr, resizeWidth, resizeHeight);
Interop.ActorInternal.SetParentOrigin(borderWindowBottomLayer.SwigCPtr, topCentor.SwigCPtr);
Interop.Actor.SetAnchorPoint(borderWindowBottomLayer.SwigCPtr, topCentor.SwigCPtr);
Interop.Actor.Add(rootLayer.SwigCPtr, borderWindowBottomLayer.SwigCPtr);
- Interop.ActorInternal.SetSize(borderWindowBottomLayer.SwigCPtr, WindowSize.Width + (float)(borderInterface.BorderLineThickness * 2), WindowSize.Height + (float)(borderInterface.BorderLineThickness * 2));
+ Interop.ActorInternal.SetSize(borderWindowBottomLayer.SwigCPtr, WindowSize.Width + (float)(borderLineThickness * 2), WindowSize.Height + (float)(borderLineThickness * 2));
borderWindowBottomLayer.SetWindow(this);
borderWindowBottomLayer.LowerToBottom();
Interop.ActorInternal.SetParentOrigin(borderWindowRootLayer.SwigCPtr, topCentor.SwigCPtr);
Interop.Actor.SetAnchorPoint(borderWindowRootLayer.SwigCPtr, topCentor.SwigCPtr);
Interop.Actor.Add(rootLayer.SwigCPtr, borderWindowRootLayer.SwigCPtr);
- Interop.ActorInternal.SetSize(borderWindowRootLayer.SwigCPtr, WindowSize.Width, WindowSize.Height - borderHeight - borderInterface.BorderLineThickness * 2);
+ Interop.ActorInternal.SetSize(borderWindowRootLayer.SwigCPtr, WindowSize.Width, WindowSize.Height - borderHeight - borderLineThickness * 2);
float height = (hasTopView == true) ? topView.SizeHeight : 0;
- Interop.ActorInternal.SetPosition(borderWindowRootLayer.SwigCPtr, 0, height + borderInterface.BorderLineThickness);
+ Interop.ActorInternal.SetPosition(borderWindowRootLayer.SwigCPtr, 0, height + borderLineThickness);
using PropertyValue propertyValue = new Tizen.NUI.PropertyValue((int)Tizen.NUI.ClippingModeType.ClipToBoundingBox);
Tizen.NUI.Object.SetProperty(borderWindowRootLayer.SwigCPtr, Tizen.NUI.BaseComponents.View.Property.ClippingMode, propertyValue);
{
if (isBorderWindow == true)
{
- var height = (ushort)(size.GetHeight() + borderHeight + borderInterface.BorderLineThickness * 2);
- var width = (ushort)(size.GetWidth() + borderInterface.BorderLineThickness * 2);
+ var height = (ushort)(size.GetHeight() + borderHeight + borderLineThickness * 2);
+ var width = (ushort)(size.GetWidth() + borderLineThickness * 2);
size.SetHeight(height);
size.SetWidth(width);
}
{
if (isBorderWindow == true && !(borderInterface.OverlayMode == true && IsMaximized() == true))
{
- var borderLine = IsMaximized() == true ? 0 : borderInterface.BorderLineThickness * 2;
+ var borderLine = IsMaximized() == true ? 0 : borderLineThickness * 2;
var height = (ushort)(size.GetHeight() - borderHeight - borderLine);
var width = (ushort)(size.GetWidth() - borderLine);
size.SetHeight(height);
/*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
class PerformanceTestExample : NUIApplication
{
- const uint ROWS_COUNT = 32;
- const uint COLUMNS_COUNT = 32;
+ const uint ROWS_COUNT = 40;
+ const uint COLUMNS_COUNT = 40;
const uint TOTAL_COLUMNS_COUNT = 80;
const uint DURATION_PER_COLUMNS = 50; // miliseconds
- const float VIEW_MARGIN_RATE = 0.1f;
+ // Increase animation time cause OnTick time can be delayed.
+ const uint DURATION_OF_ANIMATION = (DURATION_PER_COLUMNS*(COLUMNS_COUNT * 4 / 3)); // miliseconds.
+
+
+ const float VIEW_MARGIN_RATE = 0.2f;
enum ViewTestType{
TEST_TYPE_COLOR = 0, ///< Test with simple color
TEST_TYPE_IMAGE, ///< Test with simple image
static string IMAGE_DIR = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "image/";
readonly static string[] IMAGE_PATH = {
- IMAGE_DIR + "gallery-medium-1.jpg",
- IMAGE_DIR + "gallery-medium-2.jpg",
- IMAGE_DIR + "gallery-medium-3.jpg",
- IMAGE_DIR + "gallery-medium-4.jpg",
- IMAGE_DIR + "gallery-medium-5.jpg",
- IMAGE_DIR + "gallery-medium-6.jpg",
- IMAGE_DIR + "gallery-medium-7.jpg",
- IMAGE_DIR + "gallery-medium-8.jpg",
- IMAGE_DIR + "gallery-medium-9.jpg",
- IMAGE_DIR + "gallery-medium-10.jpg",
- IMAGE_DIR + "gallery-medium-11.jpg",
- IMAGE_DIR + "gallery-medium-12.jpg",
- IMAGE_DIR + "gallery-medium-13.jpg",
- IMAGE_DIR + "gallery-medium-14.jpg",
- IMAGE_DIR + "gallery-medium-15.jpg",
- IMAGE_DIR + "gallery-medium-16.jpg",
- IMAGE_DIR + "gallery-medium-17.jpg",
- IMAGE_DIR + "gallery-medium-18.jpg",
- IMAGE_DIR + "gallery-medium-19.jpg",
- IMAGE_DIR + "gallery-medium-20.jpg",
- IMAGE_DIR + "gallery-medium-21.jpg",
- IMAGE_DIR + "gallery-medium-22.jpg",
- IMAGE_DIR + "gallery-medium-23.jpg",
- IMAGE_DIR + "gallery-medium-24.jpg",
- IMAGE_DIR + "gallery-medium-25.jpg",
- IMAGE_DIR + "gallery-medium-26.jpg",
- IMAGE_DIR + "gallery-medium-27.jpg",
- IMAGE_DIR + "gallery-medium-28.jpg",
- IMAGE_DIR + "gallery-medium-29.jpg",
- IMAGE_DIR + "gallery-medium-30.jpg",
- IMAGE_DIR + "gallery-medium-31.jpg",
- IMAGE_DIR + "gallery-medium-32.jpg",
- IMAGE_DIR + "gallery-medium-33.jpg",
- IMAGE_DIR + "gallery-medium-34.jpg",
- IMAGE_DIR + "gallery-medium-35.jpg",
- IMAGE_DIR + "gallery-medium-36.jpg",
- IMAGE_DIR + "gallery-medium-37.jpg",
- IMAGE_DIR + "gallery-medium-38.jpg",
- IMAGE_DIR + "gallery-medium-39.jpg",
- IMAGE_DIR + "gallery-medium-40.jpg",
- IMAGE_DIR + "gallery-medium-41.jpg",
- IMAGE_DIR + "gallery-medium-42.jpg",
- IMAGE_DIR + "gallery-medium-43.jpg",
- IMAGE_DIR + "gallery-medium-44.jpg",
- IMAGE_DIR + "gallery-medium-45.jpg",
- IMAGE_DIR + "gallery-medium-46.jpg",
- IMAGE_DIR + "gallery-medium-47.jpg",
- IMAGE_DIR + "gallery-medium-48.jpg",
- IMAGE_DIR + "gallery-medium-49.jpg",
- IMAGE_DIR + "gallery-medium-50.jpg",
- IMAGE_DIR + "gallery-medium-51.jpg",
- IMAGE_DIR + "gallery-medium-52.jpg",
- IMAGE_DIR + "gallery-medium-53.jpg",
+ IMAGE_DIR + "gallery-small-1.jpg",
};
class Statistic
if(vcnt == 0)return 0.0;
v.Sort();
double trimVsum = 0;
- int removedCnt = (int)(vcnt * trimRate * 0.5);
+ int removedCnt = (int)(vcnt * trimRate * 0.5); // floor
int trimVcnt = vcnt - removedCnt * 2;
if(trimVcnt == 0)
{
ViewTestType mTestType = ViewTestType.TEST_TYPE_COLOR;
// To keep reference count.
- global::System.Collections.Generic.LinkedList<View> mViewList;
+ global::System.Collections.Generic.LinkedList<View> mCreatingControlList;
+ global::System.Collections.Generic.LinkedList<View> mRemovingControlList;
global::System.Collections.Generic.LinkedList<Timer> mTimerList;
- global::System.Collections.Generic.LinkedList<Animation> mAnimationList;
+ global::System.Collections.Generic.LinkedList<Animation> mCreatingAnimationList;
+ global::System.Collections.Generic.LinkedList<Animation> mRemovingAnimationList;
uint mColumnsCount = ROWS_COUNT;
uint mRowsCount = COLUMNS_COUNT;
uint mDurationPerColumns = DURATION_PER_COLUMNS; // miliseconds
uint tickCount;
- uint deleteCount;
+
+ uint mCreateCount = 0u;
+ uint mDeleteCount = 0u;
+ uint mImageCount = 0u;
DateTime appStartTime;
DateTime appEndTime;
{
appStartTime = DateTime.Now;
- mViewList = new global::System.Collections.Generic.LinkedList<View>();
+ mCreatingControlList = new global::System.Collections.Generic.LinkedList<View>();
+ mRemovingControlList = new global::System.Collections.Generic.LinkedList<View>();
mTimerList = new global::System.Collections.Generic.LinkedList<Timer>();
- mAnimationList = new global::System.Collections.Generic.LinkedList<Animation>();
+ mCreatingAnimationList = new global::System.Collections.Generic.LinkedList<Animation>();
+ mRemovingAnimationList = new global::System.Collections.Generic.LinkedList<Animation>();
mWindow = Window.Instance;
mWindow.BackgroundColor = Color.White;
mTimerList.AddLast(timer);
tickCount = 0;
- deleteCount = 0;
+ mDeleteCount = 0;
mCreationStatistic = new Statistic();
}
bool OnTick(object o, EventArgs e)
{
- tickCount++;
- if(tickCount < mTotalColumnsCount * (int)ViewTestType.TEST_TYPE_MAX)
+ CreateColumnView();
+ if(mCreateCount < mColumnsCount)
{
// Start next phase.
Timer timer = new Timer(mDurationPerColumns);
timer.Start();
}
+ return false;
+ }
+ void CreateColumnView()
+ {
DateTime startTime;
DateTime endTime;
{
BackgroundColor = Color.Blue,
Size = new Size(mSize.X, mWindowSize.Y),
- Position = new Position(mWindowSize.X, 0.0f),
+ Position = new Position(mSize.X * (mCreateCount % mColumnsCount), -mWindowSize.Y),
+
+ ParentOrigin = Position.ParentOriginTopLeft,
+ PivotPoint = Position.PivotPointTopLeft,
+ PositionUsesPivotPoint = true,
};
for(int i = 0; i < mRowsCount; ++i)
}
mWindow.Add(columnView);
- mViewList.AddLast(columnView);
+ mCreatingControlList.AddLast(columnView);
- // Add move animation
- Animation animation = new Animation((int)(mDurationPerColumns * (mColumnsCount + 1)));
- animation.AnimateTo(columnView, "PositionX", -mSize.X);
- animation.Finished += OnAnimationFinished;
- animation.Play();
+ // Add appearing animation
+ Animation appearingAnimation = new Animation((int)(DURATION_OF_ANIMATION));
+ appearingAnimation.AnimateTo(columnView, "PositionY", 0.0f);
+ appearingAnimation.Finished += OnAppearAnimationFinished;
+ appearingAnimation.Play();
- mAnimationList.AddLast(animation);
+ mCreatingAnimationList.AddLast(appearingAnimation);
endTime = DateTime.Now;
mCreationStatistic.add((endTime - startTime).TotalMilliseconds);
- if(tickCount % mTotalColumnsCount == 0)
+ mCreateCount++;
+
+ if(mCreateCount % mTotalColumnsCount == 0)
{
Tizen.Log.Error("NUI.PerfNew", $"Average of creation {mRowsCount} NUI({TestTypeString(mTestType)}) : {mCreationStatistic.getTrimedAverage()} ms\n");
mCreationStatistic.clear();
mTestType = (ViewTestType)(((int)(mTestType) + 1) % (int)(ViewTestType.TEST_TYPE_MAX));
}
-
- return false;
}
void OnKeyEvent(object source, Window.KeyEventArgs e)
}
}
- void OnAnimationFinished(object o, EventArgs e)
+ void OnAppearAnimationFinished(object o, EventArgs e)
{
- // We can assume that front of mViewLIst must be deleted.
- mViewList.First.Value.Unparent();
- mViewList.First.Value.Dispose();
- mViewList.RemoveFirst();
+ // We can assume that front of mControlList must be disappearing.
+ var currentControl = mCreatingControlList.First.Value;
+ mCreatingControlList.RemoveFirst();
// Dereference timer safety
- mTimerList.First.Value.Dispose();
- mTimerList.RemoveFirst();
+ if(mTimerList.Count > 0)
+ {
+ mTimerList.First.Value.Dispose();
+ mTimerList.RemoveFirst();
+ }
// Dereference animation safety
- mAnimationList.RemoveFirst();
+ mCreatingAnimationList.RemoveFirst();
+
+ mRemovingControlList.AddLast(currentControl);
- deleteCount++;
+ if(mCreateCount < mTotalColumnsCount * (int)(ViewTestType.TEST_TYPE_MAX))
+ {
+ CreateColumnView();
+ }
- Animation me = o as Animation;
- me.Dispose();
+ // Add disappearing animation
+ Animation disappearingAnimation = new Animation((int)(DURATION_OF_ANIMATION));
+ disappearingAnimation.AnimateTo(currentControl, "PositionY", (float)mWindowSize.Y);
+ disappearingAnimation.Finished += OnDisappearAnimationFinished;
+ disappearingAnimation.Play();
+
+ mRemovingAnimationList.AddLast(disappearingAnimation);
+ }
+ void OnDisappearAnimationFinished(object o, EventArgs e)
+ {
+ // We can assume that front of mControlList must be disappearing.
+ var currentControl = mRemovingControlList.First.Value;
+ mRemovingControlList.RemoveFirst();
+
+ // We can assume that front of mViewLIst must be deleted.
+ currentControl.Unparent();
+ currentControl.DisposeRecursively();
+
+ // Dereference animation safety
+ mRemovingAnimationList.RemoveFirst();
+
+ mDeleteCount++;
// If all views are deleted, quit this application. byebye~
- if(deleteCount == mTotalColumnsCount * (int)ViewTestType.TEST_TYPE_MAX)
+ if(mDeleteCount == mTotalColumnsCount * (int)ViewTestType.TEST_TYPE_MAX)
{
appEndTime = DateTime.Now;
Tizen.Log.Error("NUI.PerfNew", $"Duration of all app running time : {((appEndTime - appStartTime)).TotalMilliseconds} ms\n");
{
View bgView = new View(){
BackgroundColor = Color.Yellow,
+
+ ParentOrigin = Position.ParentOriginTopLeft,
+ PivotPoint = Position.PivotPointTopLeft,
+ PositionUsesPivotPoint = true,
};
return bgView;
}
- private int gImageCount = 0;
private View CreateImage()
{
ImageView bgView = new ImageView(){
BackgroundColor = Color.Yellow,
- ResourceUrl = IMAGE_PATH[(gImageCount++) % (IMAGE_PATH.Length)],
+ ResourceUrl = IMAGE_PATH[(mImageCount++) % (IMAGE_PATH.Length)],
+
+ ParentOrigin = Position.ParentOriginTopLeft,
+ PivotPoint = Position.PivotPointTopLeft,
+ PositionUsesPivotPoint = true,
};
return bgView;
}
{
TextLabel bgView = new TextLabel(){
Text = "Hello, World!",
+
+ ParentOrigin = Position.ParentOriginTopLeft,
+ PivotPoint = Position.PivotPointTopLeft,
+ PositionUsesPivotPoint = true,
};
return bgView;
}
BackgroundColor = Color.Yellow,
CornerRadius = 0.5f,
CornerRadiusPolicy = VisualTransformPolicyType.Relative,
+
+ ParentOrigin = Position.ParentOriginTopLeft,
+ PivotPoint = Position.PivotPointTopLeft,
+ PositionUsesPivotPoint = true,
};
return bgView;
}
BackgroundColor = Color.Yellow,
BorderlineColor = Color.Red,
BorderlineWidth = requiredBorderlineWidth,
+
+ ParentOrigin = Position.ParentOriginTopLeft,
+ PivotPoint = Position.PivotPointTopLeft,
+ PositionUsesPivotPoint = true,
};
return bgView;
}
CornerRadiusPolicy = VisualTransformPolicyType.Relative,
BorderlineColor = Color.Red,
BorderlineWidth = requiredBorderlineWidth,
+
+ ParentOrigin = Position.ParentOriginTopLeft,
+ PivotPoint = Position.PivotPointTopLeft,
+ PositionUsesPivotPoint = true,
};
return bgView;
}
private View CreateBlurColor(float requiredBlurRadius)
{
- View bgView = new View();
+ View bgView = new View()
+ {
+ ParentOrigin = Position.ParentOriginTopLeft,
+ PivotPoint = Position.PivotPointTopLeft,
+ PositionUsesPivotPoint = true,
+ };
using(PropertyMap map = new PropertyMap())
{
}
private View CreateRoundedBlurColor(float requiredBlurRadius)
{
- View bgView = new View();
+ View bgView = new View()
+ {
+ ParentOrigin = Position.ParentOriginTopLeft,
+ PivotPoint = Position.PivotPointTopLeft,
+ PositionUsesPivotPoint = true,
+ };;
using(PropertyMap map = new PropertyMap())
{
--- /dev/null
+/*
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Constants;
+using Tizen.NUI.Scene3D;
+using System.Collections.Generic;
+
+class Scene3DSample : NUIApplication
+{
+ static string IMAGE_DIR = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "image/";
+ static string MODEL_DIR = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "model/";
+
+ Window mWindow;
+ Vector2 mWindowSize;
+
+ SceneView mSceneView;
+ Model mModel;
+
+ uint currentCameraIndex = 0u;
+ const int cameraAnimationDurationMilliSeconds = 2000; // milliSeconds
+
+ Animation mModelRotateAnimation;
+ const int modelRotateAnimationDurationMilliSeconds = 10000; // milliSeconds
+
+ protected void CreateSceneView()
+ {
+ mSceneView = new SceneView()
+ {
+ SizeWidth = mWindowSize.Width,
+ SizeHeight = mWindowSize.Height,
+ PositionX = 0.0f,
+ PositionY = 0.0f,
+ PivotPoint = PivotPoint.TopLeft,
+ ParentOrigin = ParentOrigin.TopLeft,
+ PositionUsesPivotPoint = true,
+ };
+
+ SetupSceneViewCamera(mSceneView);
+
+ mWindow.Add(mSceneView);
+ }
+ private void SetupSceneViewCamera(SceneView sceneView)
+ {
+ // Default camera setting
+ // Note : SceneView always have 1 default camera.
+ Tizen.NUI.Scene3D.Camera defaultCamera = sceneView.GetCamera(0u);
+
+ defaultCamera.PositionX = 0.0f;
+ defaultCamera.PositionY = 0.0f;
+ defaultCamera.PositionZ = 5.55f;
+ defaultCamera.NearPlaneDistance = 0.5f;
+ defaultCamera.FarPlaneDistance = 50.0f;
+ //defaultCamera.Orientation = new Rotation(new Radian(new Degree(180.0f)), Vector3.YAxis);
+ defaultCamera.FieldOfView = new Radian(new Degree(45.0f));
+ defaultCamera.OrthographicSize = 2.7f;
+
+ // Additional camera setting (top view camera).
+ Tizen.NUI.Scene3D.Camera camera = new Tizen.NUI.Scene3D.Camera()
+ {
+ PositionX = 0.0f,
+ PositionY = -3.95f,
+ PositionZ = 0.0f,
+ NearPlaneDistance = 0.5f,
+ FarPlaneDistance = 50.0f,
+ // Rotate by XAxis first, and then rotate by YAxis
+ Orientation = new Rotation(new Radian(new Degree(90.0f)), Vector3.YAxis) *
+ new Rotation(new Radian(new Degree(-90.0f)), Vector3.XAxis),
+ FieldOfView = new Radian(new Degree(70.0f)),
+ OrthographicSize = 2.7f,
+ };
+ sceneView.AddCamera(camera);
+ }
+
+ protected void CreateModel(string modelUrl)
+ {
+ // Release old one.
+ if(mModel != null)
+ {
+ mModel.Unparent();
+ mModel.Dispose();
+ }
+
+ mModel = new Model(MODEL_DIR + modelUrl)
+ {
+ Name = modelUrl,
+ };
+ mModel.ResourcesLoaded += (s, e) =>
+ {
+ Model model = s as Model;
+
+ // You can play animation if it has.
+ if(model.GetAnimationCount() > 0u)
+ {
+ model.GetAnimation(0u).Looping = true;
+ model.GetAnimation(0u).Play();
+ }
+ Tizen.Log.Error("NUI", $"{model.Name} size : {model.Size.Width}, {model.Size.Height}, {model.Size.Depth}\n");
+ };
+ mModelRotateAnimation = new Animation(modelRotateAnimationDurationMilliSeconds);
+ mModelRotateAnimation.AnimateBy(mModel, "Orientation", new Rotation(new Radian(new Degree(360.0f)), Vector3.YAxis));
+
+ mModelRotateAnimation.Looping = true;
+ mModelRotateAnimation.Play();
+
+ mSceneView.Add(mModel);
+ }
+
+ void SetupIBLimage(string specularUrl, string diffuseUrl, float iblFactor)
+ {
+ mSceneView.SetImageBasedLightSource(IMAGE_DIR + specularUrl, IMAGE_DIR + diffuseUrl,iblFactor);
+ }
+
+ void OnKeyEvent(object source, Window.KeyEventArgs e)
+ {
+ if (e.Key.State == Key.StateType.Down)
+ {
+ FullGC();
+ //Streamline.AnnotateChannelEnd(0);
+
+ switch( e.Key.KeyPressedName )
+ {
+ case "Escape":
+ case "Back":
+ {
+ Deactivate();
+ Exit();
+ break;
+ }
+
+ case "Return":
+ case "Select":
+ {
+ currentCameraIndex++;
+ if(currentCameraIndex >= mSceneView.GetCameraCount())
+ {
+ currentCameraIndex = 0;
+ }
+
+ mSceneView.CameraTransition(currentCameraIndex, cameraAnimationDurationMilliSeconds);
+ break;
+ }
+
+ case "1":
+ {
+ currentModelIndex++;
+ if(currentModelIndex >= ModelUrlList.Count)
+ {
+ currentModelIndex = 0;
+ }
+
+ CreateModel(ModelUrlList[currentModelIndex]);
+ break;
+ }
+ case "2":
+ {
+ currentIBLIndex++;
+ if(currentIBLIndex >= IBLUrlList.Count)
+ {
+ currentIBLIndex = 0;
+ }
+
+ SetupIBLimage(IBLUrlList[currentIBLIndex].Item1, IBLUrlList[currentIBLIndex].Item2, 0.7f);
+ break;
+ }
+ }
+ }
+ }
+
+ private static readonly List<string> ModelUrlList = new List<string>()
+ {
+ // Model reference : https://sketchfab.com/models/b81008d513954189a063ff901f7abfe4
+ // Get from KhronosGroup https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0/DamagedHelmet
+ "DamagedHelmet/DamagedHelmet.gltf",
+ "BoxAnimated/BoxAnimated.gltf",
+ };
+ private int currentModelIndex = 0;
+
+ private static readonly List<(string, string)> IBLUrlList = new List<(string, string)>
+ {
+ ("forest_diffuse_cubemap.png", "forest_specular_cubemap.png"),
+ ("papermill_E_diffuse-64.ktx", "papermill_pmrem.ktx"),
+ ("Irradiance.ktx", "Radiance.ktx"),
+ };
+ private int currentIBLIndex = 0;
+
+ public void Activate()
+ {
+ mWindow = Window.Instance;
+ mWindow.BackgroundColor = Color.DarkOrchid;
+ mWindowSize = mWindow.WindowSize;
+
+ mWindow.KeyEvent += OnKeyEvent;
+
+ CreateSceneView();
+ SetupIBLimage(IBLUrlList[currentIBLIndex].Item1, IBLUrlList[currentIBLIndex].Item2, 0.7f);
+ CreateModel(ModelUrlList[currentModelIndex]);
+ }
+ public void FullGC(){
+ global::System.GC.Collect();
+ global::System.GC.WaitForPendingFinalizers();
+ global::System.GC.Collect();
+ }
+
+ public void Deactivate()
+ {
+ DestroyScene();
+ }
+ private void DestroyScene()
+ {
+ }
+
+ protected override void OnCreate()
+ {
+ // Up call to the Base class first
+ base.OnCreate();
+ Activate();
+ }
+
+ /// <summary>
+ /// The main entry point for the application.
+ /// </summary>
+ [STAThread] // Forces app to use one thread to access NUI
+ static void Main(string[] args)
+ {
+ Scene3DSample example = new Scene3DSample();
+ example.Run(args);
+ }
+}
--- /dev/null
+{
+ "folders": [
+ {
+ "path": "."
+ },
+ {
+ "path": "../../src/Tizen.NUI"
+ },
+ {
+ "path": "../../src/Tizen.NUI.Components"
+ },
+ {
+ "path": "../../src/Tizen.NUI.Scene3D"
+ }
+ ],
+ "settings": {}
+}
--- /dev/null
+<Project Sdk="Microsoft.NET.Sdk">
+ <PropertyGroup>
+ <OutputType>Exe</OutputType>
+ <TargetFramework>netcoreapp3.1</TargetFramework>
+ <AssemblyName>Scene3DSample</AssemblyName>
+ </PropertyGroup>
+
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugType>portable</DebugType>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>None</DebugType>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Tizen.NET.Sdk" Version="1.0.9" />
+ <ProjectReference Include="../../src/Tizen/Tizen.csproj" />
+ <ProjectReference Include="../../src/Tizen.NUI.Components/Tizen.NUI.Components.csproj" />
+ <ProjectReference Include="../../src/Tizen.NUI.Scene3D/Tizen.NUI.Scene3D.csproj" />
+ <ProjectReference Include="../../src/Tizen.NUI/Tizen.NUI.csproj" />
+ </ItemGroup>
+
+ <PropertyGroup>
+ <NeedInjection>True</NeedInjection>
+ </PropertyGroup>
+</Project>
--- /dev/null
+{
+ "asset": {
+ "generator": "COLLADA2GLTF",
+ "version": "2.0"
+ },
+ "scene": 0,
+ "scenes": [
+ {
+ "nodes": [
+ 3,
+ 0
+ ]
+ }
+ ],
+ "nodes": [
+ {
+ "children": [
+ 1
+ ],
+ "rotation": [
+ -0.0,
+ -0.0,
+ -0.0,
+ -1.0
+ ]
+ },
+ {
+ "children": [
+ 2
+ ]
+ },
+ {
+ "mesh": 0,
+ "rotation": [
+ -0.0,
+ -0.0,
+ -0.0,
+ -1.0
+ ]
+ },
+ {
+ "mesh": 1
+ }
+ ],
+ "meshes": [
+ {
+ "primitives": [
+ {
+ "attributes": {
+ "NORMAL": 1,
+ "POSITION": 2
+ },
+ "indices": 0,
+ "mode": 4,
+ "material": 0
+ }
+ ],
+ "name": "inner_box"
+ },
+ {
+ "primitives": [
+ {
+ "attributes": {
+ "NORMAL": 4,
+ "POSITION": 5
+ },
+ "indices": 3,
+ "mode": 4,
+ "material": 1
+ }
+ ],
+ "name": "outer_box"
+ }
+ ],
+ "animations": [
+ {
+ "channels": [
+ {
+ "sampler": 0,
+ "target": {
+ "node": 2,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 1,
+ "target": {
+ "node": 0,
+ "path": "translation"
+ }
+ }
+ ],
+ "samplers": [
+ {
+ "input": 6,
+ "interpolation": "LINEAR",
+ "output": 7
+ },
+ {
+ "input": 8,
+ "interpolation": "LINEAR",
+ "output": 9
+ }
+ ]
+ }
+ ],
+ "accessors": [
+ {
+ "bufferView": 0,
+ "byteOffset": 0,
+ "componentType": 5123,
+ "count": 186,
+ "max": [
+ 95
+ ],
+ "min": [
+ 0
+ ],
+ "type": "SCALAR"
+ },
+ {
+ "bufferView": 1,
+ "byteOffset": 0,
+ "componentType": 5126,
+ "count": 96,
+ "max": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "min": [
+ -1.0,
+ -1.0,
+ -1.0
+ ],
+ "type": "VEC3"
+ },
+ {
+ "bufferView": 1,
+ "byteOffset": 1152,
+ "componentType": 5126,
+ "count": 96,
+ "max": [
+ 0.33504000306129458,
+ 0.5,
+ 0.33504000306129458
+ ],
+ "min": [
+ -0.33504000306129458,
+ -0.5,
+ -0.33504000306129458
+ ],
+ "type": "VEC3"
+ },
+ {
+ "bufferView": 0,
+ "byteOffset": 372,
+ "componentType": 5123,
+ "count": 576,
+ "max": [
+ 223
+ ],
+ "min": [
+ 0
+ ],
+ "type": "SCALAR"
+ },
+ {
+ "bufferView": 1,
+ "byteOffset": 2304,
+ "componentType": 5126,
+ "count": 224,
+ "max": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "min": [
+ -1.0,
+ -1.0,
+ -1.0
+ ],
+ "type": "VEC3"
+ },
+ {
+ "bufferView": 1,
+ "byteOffset": 4992,
+ "componentType": 5126,
+ "count": 224,
+ "max": [
+ 0.5,
+ 0.5,
+ 0.5
+ ],
+ "min": [
+ -0.5,
+ -0.5,
+ -0.5
+ ],
+ "type": "VEC3"
+ },
+ {
+ "bufferView": 2,
+ "byteOffset": 0,
+ "componentType": 5126,
+ "count": 2,
+ "max": [
+ 2.5
+ ],
+ "min": [
+ 1.25
+ ],
+ "type": "SCALAR"
+ },
+ {
+ "bufferView": 3,
+ "byteOffset": 0,
+ "componentType": 5126,
+ "count": 2,
+ "max": [
+ 1.0,
+ 0.0,
+ 0.0,
+ 4.4896593387466768e-11
+ ],
+ "min": [
+ -0.0,
+ 0.0,
+ 0.0,
+ -1.0
+ ],
+ "type": "VEC4"
+ },
+ {
+ "bufferView": 2,
+ "byteOffset": 8,
+ "componentType": 5126,
+ "count": 4,
+ "max": [
+ 3.708329916000366
+ ],
+ "min": [
+ 0.0
+ ],
+ "type": "SCALAR"
+ },
+ {
+ "bufferView": 4,
+ "byteOffset": 0,
+ "componentType": 5126,
+ "count": 4,
+ "max": [
+ 0.0,
+ 2.5199999809265138,
+ 0.0
+ ],
+ "min": [
+ 0.0,
+ 0.0,
+ 0.0
+ ],
+ "type": "VEC3"
+ }
+ ],
+ "materials": [
+ {
+ "pbrMetallicRoughness": {
+ "baseColorFactor": [
+ 0.800000011920929,
+ 0.4159420132637024,
+ 0.7952920198440552,
+ 1.0
+ ],
+ "metallicFactor": 0.0
+ },
+ "name": "inner"
+ },
+ {
+ "pbrMetallicRoughness": {
+ "baseColorFactor": [
+ 0.3016040027141571,
+ 0.5335419774055481,
+ 0.800000011920929,
+ 1.0
+ ],
+ "metallicFactor": 0.0
+ },
+ "name": "outer"
+ }
+ ],
+ "bufferViews": [
+ {
+ "buffer": 0,
+ "byteOffset": 7784,
+ "byteLength": 1524,
+ "target": 34963
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 80,
+ "byteLength": 7680,
+ "byteStride": 12,
+ "target": 34962
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 7760,
+ "byteLength": 24
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 0,
+ "byteLength": 32
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 32,
+ "byteLength": 48
+ }
+ ],
+ "buffers": [
+ {
+ "byteLength": 9308,
+ "uri": "BoxAnimated0.bin"
+ }
+ ]
+}
+
--- /dev/null
+{
+ "asset": {
+ "generator": "Unity 2017.1.0f3",
+ "extras": {
+ "exporterVersion" : "2.2.0"
+ },
+ "version": "2.0"
+ },
+ "accessors": [
+ {
+ "bufferView": 2,
+ "byteOffset": 0,
+ "componentType": 5126,
+ "count": 13600,
+ "max": [ 0.944977, 0.900995, 1 ],
+ "min": [ -0.944977, -0.900974, -1 ],
+ "type": "VEC3"
+ },
+ {
+ "bufferView": 2,
+ "byteOffset": 163200,
+ "componentType": 5126,
+ "count": 13600,
+ "max": [ 1, 1, 1 ],
+ "min": [ -1, -1, -1 ],
+ "type": "VEC3"
+ },
+ {
+ "bufferView": 1,
+ "byteOffset": 0,
+ "componentType": 5126,
+ "count": 13600,
+ "max": [ 0.999976, 0.998666 ],
+ "min": [ 0.00244864, 0.00055312 ],
+ "type": "VEC2"
+ },
+ {
+ "bufferView": 3,
+ "byteOffset": 0,
+ "componentType": 5126,
+ "count": 13600,
+ "max": [ 1, 1, 1, 1 ],
+ "min": [ -1, -1, -1, -1 ],
+ "type": "VEC4"
+ },
+ {
+ "bufferView": 0,
+ "byteOffset": 0,
+ "componentType": 5123,
+ "count": 46356,
+ "max": [ 13599 ],
+ "min": [ 0 ],
+ "type": "SCALAR"
+ }
+ ],
+ "buffers": [
+ {
+ "byteLength": 745512,
+ "uri": "DamagedHelmet.bin"
+ }
+ ],
+ "bufferViews": [
+ {
+ "buffer": 0,
+ "byteLength": 92712,
+ "target": 34963,
+ "byteOffset": 652800
+ },
+ {
+ "buffer": 0,
+ "byteLength": 108800,
+ "target": 34962,
+ "byteStride": 8,
+ "byteOffset": 0
+ },
+ {
+ "buffer": 0,
+ "byteLength": 326400,
+ "target": 34962,
+ "byteStride": 12,
+ "byteOffset": 108800
+ },
+ {
+ "buffer": 0,
+ "byteLength": 217600,
+ "target": 34962,
+ "byteStride": 16,
+ "byteOffset": 435200
+ }
+ ],
+ "images": [
+ {
+ "uri": "../../image/DamagedHelmet/Default_albedo.jpg"
+ },
+ {
+ "uri": "../../image/DamagedHelmet/Default_metalRoughness.jpg"
+ },
+ {
+ "uri": "../../image/DamagedHelmet/Default_normal.jpg"
+ },
+ {
+ "uri": "../../image/DamagedHelmet/Default_emissive.jpg"
+ },
+ {
+ "uri": "../../image/DamagedHelmet/Default_AO.jpg"
+ }
+ ],
+ "materials": [
+ {
+ "pbrMetallicRoughness": {
+ "baseColorTexture" : {
+ "index" : 0,
+ "texCoord" : 0
+ },
+ "baseColorFactor": [1, 1, 1, 1],
+ "metallicRoughnessTexture" : {
+ "index" : 1,
+ "texCoord" : 0
+ },
+ "metallicFactor": 1,
+ "roughnessFactor": 1
+ },
+ "normalTexture" : {
+ "index" : 2,
+ "texCoord" : 0,
+ "scale" : 0.8
+ },
+ "emissiveTexture" : {
+ "index" : 3,
+ "texCoord" : 0
+ },
+ "emissiveFactor": [1, 1, 1],
+ "occlusionTexture" : {
+ "index" : 4,
+ "texCoord" : 0,
+ "strength" : 0.632
+ },
+ "doubleSided": false,
+ "name": "Helmet_mat"
+ }
+ ],
+ "meshes": [
+ {
+ "name": "mesh_helmet_LP_14908damagedHelmet",
+ "primitives": [
+ {
+ "attributes": {
+ "POSITION": 0,
+ "NORMAL": 1,
+ "TEXCOORD_0": 2,
+ "TANGENT": 3
+ },
+ "indices": 4,
+ "material": 0,
+ "mode": 4
+ }
+ ]
+ }
+ ],
+ "nodes": [
+ {
+ "name": "UnityGlTF_root",
+ "children": [
+ 1
+ ]
+ },
+ {
+ "name": "node_damagedHelmet_-6498",
+ "mesh": 0,
+ "rotation" : [
+ 0.0,
+ 1.0,
+ 0.0,
+ 0.0
+ ]
+ }
+ ],
+ "samplers": [
+ {
+ "magFilter": 9729,
+ "minFilter": 9985,
+ "wrapS": 10497,
+ "wrapT": 10497
+ }
+ ],
+ "scenes": [
+ {
+ "name":"defaultScene",
+ "nodes": [
+ 0
+ ]
+ }
+ ],
+ "scene": 0,
+ "textures": [
+ {
+ "sampler": 0,
+ "source": 0
+ },
+ {
+ "sampler": 0,
+ "source": 1
+ },
+ {
+ "sampler": 0,
+ "source": 2
+ },
+ {
+ "sampler": 0,
+ "source": 3
+ },
+ {
+ "sampler": 0,
+ "source": 4
+ }
+ ]
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="6" package="org.tizen.example.Tizen.NUI.Scene3D.Sample" version="1.0.0">
+ <profile name="common" />
+ <ui-application appid="org.tizen.example.Tizen.NUI.Scene3D.Sample"
+ exec="Scene3DSample.dll"
+ type="dotnet-nui"
+ multiple="false"
+ taskmanage="true"
+ nodisplay="false"
+ launch_mode="single"
+ >
+ <label>Tizen.NUI.Scene3D.Sample</label>
+ <icon>Tizen.NUI.Scene3D.Sample.png</icon>
+ <metadata key="http://tizen.org/metadata/prefer_dotnet_aot" value="true" />
+ </ui-application>
+</manifest>