Merge branch 'master' into Visject-DescriptionPanel
This commit is contained in:
@@ -41,6 +41,13 @@ namespace FlaxEditor.CustomEditors.Editors
|
|||||||
public override void Initialize(LayoutElementsContainer layout)
|
public override void Initialize(LayoutElementsContainer layout)
|
||||||
{
|
{
|
||||||
base.Initialize(layout);
|
base.Initialize(layout);
|
||||||
|
|
||||||
|
if (XElement.ValueBox.Parent is UniformGridPanel ug)
|
||||||
|
{
|
||||||
|
ug.Height += 2;
|
||||||
|
ug.SlotSpacing = new Float2(4);
|
||||||
|
ug.SlotPadding = new Margin(0, 0, 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
// Override colors
|
// Override colors
|
||||||
var back = FlaxEngine.GUI.Style.Current.TextBoxBackground;
|
var back = FlaxEngine.GUI.Style.Current.TextBoxBackground;
|
||||||
@@ -66,6 +73,13 @@ namespace FlaxEditor.CustomEditors.Editors
|
|||||||
public override void Initialize(LayoutElementsContainer layout)
|
public override void Initialize(LayoutElementsContainer layout)
|
||||||
{
|
{
|
||||||
base.Initialize(layout);
|
base.Initialize(layout);
|
||||||
|
|
||||||
|
if (XElement.ValueBox.Parent is UniformGridPanel ug)
|
||||||
|
{
|
||||||
|
ug.Height += 2;
|
||||||
|
ug.SlotSpacing = new Float2(4);
|
||||||
|
ug.SlotPadding = new Margin(0, 0, 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
// Override colors
|
// Override colors
|
||||||
var back = FlaxEngine.GUI.Style.Current.TextBoxBackground;
|
var back = FlaxEngine.GUI.Style.Current.TextBoxBackground;
|
||||||
@@ -122,6 +136,13 @@ namespace FlaxEditor.CustomEditors.Editors
|
|||||||
menu.AddButton("Link", ToggleLink).LinkTooltip("Links scale components for uniform scaling");
|
menu.AddButton("Link", ToggleLink).LinkTooltip("Links scale components for uniform scaling");
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (XElement.ValueBox.Parent is UniformGridPanel ug)
|
||||||
|
{
|
||||||
|
ug.Height += 2;
|
||||||
|
ug.SlotSpacing = new Float2(4);
|
||||||
|
ug.SlotPadding = new Margin(0, 0, 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
// Override colors
|
// Override colors
|
||||||
var back = FlaxEngine.GUI.Style.Current.TextBoxBackground;
|
var back = FlaxEngine.GUI.Style.Current.TextBoxBackground;
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ namespace FlaxEditor.GUI.Input
|
|||||||
base.Draw();
|
base.Draw();
|
||||||
|
|
||||||
var style = Style.Current;
|
var style = Style.Current;
|
||||||
var r = new Rectangle(2, 2, Width - 4, Height - 4);
|
var r = new Rectangle(0, 0, Width, Height);
|
||||||
|
|
||||||
Render2D.FillRectangle(r, _value);
|
Render2D.FillRectangle(r, _value);
|
||||||
Render2D.DrawRectangle(r, IsMouseOver || IsNavFocused ? style.BackgroundSelected : Color.Black);
|
Render2D.DrawRectangle(r, IsMouseOver || IsNavFocused ? style.BackgroundSelected : Color.Black);
|
||||||
|
|||||||
@@ -363,6 +363,8 @@ namespace FlaxEditor.GUI.Timeline.Tracks
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public override void OnDestroy()
|
public override void OnDestroy()
|
||||||
{
|
{
|
||||||
|
if (_previewValue != null)
|
||||||
|
Timeline.ShowPreviewValuesChanged -= OnTimelineShowPreviewValuesChanged;
|
||||||
_previewValue = null;
|
_previewValue = null;
|
||||||
_rightKey = null;
|
_rightKey = null;
|
||||||
_addKey = null;
|
_addKey = null;
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ Collider::Collider(const SpawnParams& params)
|
|||||||
, _cachedScale(1.0f)
|
, _cachedScale(1.0f)
|
||||||
, _contactOffset(2.0f)
|
, _contactOffset(2.0f)
|
||||||
{
|
{
|
||||||
|
Material.Loaded.Bind<Collider, &Collider::OnMaterialChanged>(this);
|
||||||
|
Material.Unload.Bind<Collider, &Collider::OnMaterialChanged>(this);
|
||||||
Material.Changed.Bind<Collider, &Collider::OnMaterialChanged>(this);
|
Material.Changed.Bind<Collider, &Collider::OnMaterialChanged>(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4474,6 +4474,16 @@ void PhysicsBackend::DestroyController(void* controller)
|
|||||||
controllerPhysX->release();
|
controllerPhysX->release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PhysicsBackend::DestroyMaterial(void* material)
|
||||||
|
{
|
||||||
|
ASSERT_LOW_LAYER(material);
|
||||||
|
auto materialPhysX = (PxMaterial*)material;
|
||||||
|
materialPhysX->userData = nullptr;
|
||||||
|
FlushLocker.Lock();
|
||||||
|
DeleteObjects.Add(materialPhysX);
|
||||||
|
FlushLocker.Unlock();
|
||||||
|
}
|
||||||
|
|
||||||
void PhysicsBackend::DestroyObject(void* object)
|
void PhysicsBackend::DestroyObject(void* object)
|
||||||
{
|
{
|
||||||
ASSERT_LOW_LAYER(object);
|
ASSERT_LOW_LAYER(object);
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ void PhysicsSettings::Deserialize(DeserializeStream& stream, ISerializeModifier*
|
|||||||
PhysicalMaterial::~PhysicalMaterial()
|
PhysicalMaterial::~PhysicalMaterial()
|
||||||
{
|
{
|
||||||
if (_material)
|
if (_material)
|
||||||
PhysicsBackend::DestroyObject(_material);
|
PhysicsBackend::DestroyMaterial(_material);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PhysicsService::Init()
|
bool PhysicsService::Init()
|
||||||
|
|||||||
@@ -314,6 +314,7 @@ public:
|
|||||||
static void DestroyShape(void* shape);
|
static void DestroyShape(void* shape);
|
||||||
static void DestroyJoint(void* joint);
|
static void DestroyJoint(void* joint);
|
||||||
static void DestroyController(void* controller);
|
static void DestroyController(void* controller);
|
||||||
|
static void DestroyMaterial(void* material);
|
||||||
static void DestroyObject(void* object);
|
static void DestroyObject(void* object);
|
||||||
static void RemoveCollider(PhysicsColliderActor* collider);
|
static void RemoveCollider(PhysicsColliderActor* collider);
|
||||||
static void RemoveJoint(Joint* joint);
|
static void RemoveJoint(Joint* joint);
|
||||||
|
|||||||
@@ -865,6 +865,10 @@ void PhysicsBackend::DestroyController(void* controller)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PhysicsBackend::DestroyMaterial(void* material)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void PhysicsBackend::DestroyObject(void* object)
|
void PhysicsBackend::DestroyObject(void* object)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ namespace FlaxEngine.GUI
|
|||||||
{
|
{
|
||||||
private Margin _slotPadding;
|
private Margin _slotPadding;
|
||||||
private int _slotsV, _slotsH;
|
private int _slotsV, _slotsH;
|
||||||
|
private Float2 _slotSpacing;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the padding given to each slot.
|
/// Gets or sets the padding given to each slot.
|
||||||
@@ -62,11 +63,25 @@ namespace FlaxEngine.GUI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets grid slot spacing.
|
||||||
|
/// </summary>
|
||||||
|
[EditorOrder(30), Limit(0), Tooltip("The Grid slot spacing.")]
|
||||||
|
public Float2 SlotSpacing
|
||||||
|
{
|
||||||
|
get => _slotSpacing;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_slotSpacing = value;
|
||||||
|
PerformLayout();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="UniformGridPanel"/> class.
|
/// Initializes a new instance of the <see cref="UniformGridPanel"/> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public UniformGridPanel()
|
public UniformGridPanel()
|
||||||
: this(2)
|
: this(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,10 +89,11 @@ namespace FlaxEngine.GUI
|
|||||||
/// Initializes a new instance of the <see cref="UniformGridPanel"/> class.
|
/// Initializes a new instance of the <see cref="UniformGridPanel"/> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="slotPadding">The slot padding.</param>
|
/// <param name="slotPadding">The slot padding.</param>
|
||||||
public UniformGridPanel(float slotPadding = 2)
|
public UniformGridPanel(float slotPadding = 0)
|
||||||
{
|
{
|
||||||
AutoFocus = false;
|
AutoFocus = false;
|
||||||
SlotPadding = new Margin(slotPadding);
|
SlotPadding = new Margin(slotPadding);
|
||||||
|
SlotSpacing = new Float2(2);
|
||||||
_slotsH = _slotsV = 5;
|
_slotsH = _slotsV = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -122,6 +138,42 @@ namespace FlaxEngine.GUI
|
|||||||
var slotBounds = new Rectangle(slotSize.X * x, slotSize.Y * y, slotSize.X, slotSize.Y);
|
var slotBounds = new Rectangle(slotSize.X * x, slotSize.Y * y, slotSize.X, slotSize.Y);
|
||||||
_slotPadding.ShrinkRectangle(ref slotBounds);
|
_slotPadding.ShrinkRectangle(ref slotBounds);
|
||||||
|
|
||||||
|
if (slotsV > 1)
|
||||||
|
{
|
||||||
|
if (y == 0)
|
||||||
|
{
|
||||||
|
slotBounds.Height -= _slotSpacing.Y * 0.5f;
|
||||||
|
}
|
||||||
|
else if (y == slotsV - 1)
|
||||||
|
{
|
||||||
|
slotBounds.Height -= _slotSpacing.Y * 0.5f;
|
||||||
|
slotBounds.Y += _slotSpacing.Y * 0.5f;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
slotBounds.Height -= _slotSpacing.Y;
|
||||||
|
slotBounds.Y += _slotSpacing.Y * 0.5f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (slotsH > 1)
|
||||||
|
{
|
||||||
|
if (x == 0)
|
||||||
|
{
|
||||||
|
slotBounds.Width -= _slotSpacing.X * 0.5f;
|
||||||
|
}
|
||||||
|
else if (x == slotsH - 1)
|
||||||
|
{
|
||||||
|
slotBounds.Width -= _slotSpacing.X * 0.5f;
|
||||||
|
slotBounds.X += _slotSpacing.X * 0.5f;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
slotBounds.Width -= _slotSpacing.X;
|
||||||
|
slotBounds.X += _slotSpacing.X * 0.5f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var c = _children[i++];
|
var c = _children[i++];
|
||||||
c.Bounds = slotBounds;
|
c.Bounds = slotBounds;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1669,7 +1669,7 @@ namespace Flax.Build.Bindings
|
|||||||
toManagedContent.AppendLine($"unmanaged.{fieldInfo.Name} != IntPtr.Zero ? NativeInterop.ConvertArray((Unsafe.As<ManagedArray>(ManagedHandle.FromIntPtr(unmanaged.{fieldInfo.Name}).Target)).ToSpan<{internalElementType}>(), {originalElementTypeMarshaller}.ToManaged) : null;");
|
toManagedContent.AppendLine($"unmanaged.{fieldInfo.Name} != IntPtr.Zero ? NativeInterop.ConvertArray((Unsafe.As<ManagedArray>(ManagedHandle.FromIntPtr(unmanaged.{fieldInfo.Name}).Target)).ToSpan<{internalElementType}>(), {originalElementTypeMarshaller}.ToManaged) : null;");
|
||||||
toNativeContent.AppendLine($"managed.{fieldInfo.Name}?.Length > 0 ? ManagedHandle.ToIntPtr(ManagedArray.WrapNewArray(NativeInterop.ConvertArray(managed.{fieldInfo.Name}, {originalElementTypeMarshaller}.ToNative)), GCHandleType.Weak) : IntPtr.Zero;");
|
toNativeContent.AppendLine($"managed.{fieldInfo.Name}?.Length > 0 ? ManagedHandle.ToIntPtr(ManagedArray.WrapNewArray(NativeInterop.ConvertArray(managed.{fieldInfo.Name}, {originalElementTypeMarshaller}.ToNative)), GCHandleType.Weak) : IntPtr.Zero;");
|
||||||
freeContents.AppendLine($"if (unmanaged.{fieldInfo.Name} != IntPtr.Zero) {{ ManagedHandle handle = ManagedHandle.FromIntPtr(unmanaged.{fieldInfo.Name}); Span<{internalElementType}> values = (Unsafe.As<ManagedArray>(handle.Target)).ToSpan<{internalElementType}>(); foreach (var value in values) {{ {originalElementTypeMarshaller}.Free(value); }} (Unsafe.As<ManagedArray>(handle.Target)).Free(); handle.Free(); }}");
|
freeContents.AppendLine($"if (unmanaged.{fieldInfo.Name} != IntPtr.Zero) {{ ManagedHandle handle = ManagedHandle.FromIntPtr(unmanaged.{fieldInfo.Name}); Span<{internalElementType}> values = (Unsafe.As<ManagedArray>(handle.Target)).ToSpan<{internalElementType}>(); foreach (var value in values) {{ {originalElementTypeMarshaller}.Free(value); }} (Unsafe.As<ManagedArray>(handle.Target)).Free(); handle.Free(); }}");
|
||||||
freeContents2.AppendLine($"if (unmanaged.{fieldInfo.Name} != IntPtr.Zero) {{ ManagedHandle handle = ManagedHandle.FromIntPtr(unmanaged.{fieldInfo.Name}); Span<{internalElementType}> values = (Unsafe.As<ManagedArray>(handle.Target)).ToSpan<{internalElementType}>(); foreach (var value in values) {{ {originalElementTypeMarshaller}.Free(value); }} (Unsafe.As<ManagedArray>(handle.Target)).Free(); handle.Free(); }}");
|
freeContents2.AppendLine($"if (unmanaged.{fieldInfo.Name} != IntPtr.Zero) {{ ManagedHandle handle = ManagedHandle.FromIntPtr(unmanaged.{fieldInfo.Name}); Span<{internalElementType}> values = (Unsafe.As<ManagedArray>(handle.Target)).ToSpan<{internalElementType}>(); foreach (var value in values) {{ {originalElementTypeMarshaller}.NativeToManaged.Free(value); }} (Unsafe.As<ManagedArray>(handle.Target)).Free(); handle.Free(); }}");
|
||||||
}
|
}
|
||||||
else if (fieldInfo.Type.GenericArgs[0].IsObjectRef)
|
else if (fieldInfo.Type.GenericArgs[0].IsObjectRef)
|
||||||
{
|
{
|
||||||
@@ -1720,7 +1720,7 @@ namespace Flax.Build.Bindings
|
|||||||
toManagedContent.AppendLine($"{internalTypeMarshaller}.ToManaged(unmanaged.{fieldInfo.Name});");
|
toManagedContent.AppendLine($"{internalTypeMarshaller}.ToManaged(unmanaged.{fieldInfo.Name});");
|
||||||
toNativeContent.AppendLine($"{internalTypeMarshaller}.ToNative(managed.{fieldInfo.Name});");
|
toNativeContent.AppendLine($"{internalTypeMarshaller}.ToNative(managed.{fieldInfo.Name});");
|
||||||
freeContents.AppendLine($"{internalTypeMarshaller}.Free(unmanaged.{fieldInfo.Name});");
|
freeContents.AppendLine($"{internalTypeMarshaller}.Free(unmanaged.{fieldInfo.Name});");
|
||||||
freeContents2.AppendLine($"{internalTypeMarshaller}.Free(unmanaged.{fieldInfo.Name});");
|
freeContents2.AppendLine($"{internalTypeMarshaller}.NativeToManaged.Free(unmanaged.{fieldInfo.Name});");
|
||||||
}
|
}
|
||||||
/*else if (originalType == "Guid")
|
/*else if (originalType == "Guid")
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user