Browse Source

Refactor: Updated script binding generator to properly handle derived types
- Updated 'bsf' to newever version
- Compile fix

BearishSun 7 years ago
parent
commit
936f1334a2
20 changed files with 227 additions and 25 deletions
  1. 1 0
      Source/Scripting/MBansheeEditor/MBansheeEditor.csproj
  2. 32 11
      Source/Scripting/MBansheeEditor/Windows/Inspector/InspectableObject.cs
  3. 1 0
      Source/Scripting/MBansheeEngine/Generated/CParticleSystem.generated.cs
  4. 13 0
      Source/Scripting/MBansheeEngine/Generated/CRenderable.generated.cs
  5. 16 0
      Source/Scripting/MBansheeEngine/Generated/RenderSettings.generated.cs
  6. 1 0
      Source/Scripting/MBansheeEngine/MBansheeEngine.csproj
  7. 1 1
      Source/Scripting/MBansheeEngine/Serialization/LayerMask.cs
  8. 6 2
      Source/Scripting/SBansheeEngine/Generated/BsScriptAnimationUtility.generated.cpp
  9. 49 2
      Source/Scripting/SBansheeEngine/Generated/BsScriptCParticleSystem.generated.cpp
  10. 18 0
      Source/Scripting/SBansheeEngine/Generated/BsScriptCRenderable.generated.cpp
  11. 2 0
      Source/Scripting/SBansheeEngine/Generated/BsScriptCRenderable.generated.h
  12. 3 1
      Source/Scripting/SBansheeEngine/Generated/BsScriptMorphChannel.generated.cpp
  13. 3 1
      Source/Scripting/SBansheeEngine/Generated/BsScriptMorphShapes.generated.cpp
  14. 46 3
      Source/Scripting/SBansheeEngine/Generated/BsScriptParticleEmitter.generated.cpp
  15. 1 1
      Source/Scripting/SBansheeEngine/Generated/BsScriptParticleEmitter.generated.h
  16. 18 0
      Source/Scripting/SBansheeEngine/Generated/BsScriptRenderSettings.generated.cpp
  17. 2 0
      Source/Scripting/SBansheeEngine/Generated/BsScriptRenderSettings.generated.h
  18. 12 1
      Source/Scripting/SBansheeEngine/Generated/BsScriptViewport.generated.cpp
  19. 1 1
      Source/Scripting/SBansheeEngine/Generated/BsScriptViewport.generated.h
  20. 1 1
      Source/bsf

+ 1 - 0
Source/Scripting/MBansheeEditor/MBansheeEditor.csproj

@@ -101,6 +101,7 @@
     <Compile Include="Windows\Inspector\InspectableColorGradient.cs" />
     <Compile Include="Windows\Inspector\InspectableCurve.cs" />
     <Compile Include="Windows\Inspector\InspectableEnum.cs" />
+    <Compile Include="Windows\Inspector\InspectableEuler.cs" />
     <Compile Include="Windows\Inspector\InspectableFloatDistribution.cs" />
     <Compile Include="Windows\Inspector\InspectableLayerMask.cs" />
     <Compile Include="Windows\Inspector\InspectableQuaternion.cs" />

+ 32 - 11
Source/Scripting/MBansheeEditor/Windows/Inspector/InspectableObject.cs

@@ -32,6 +32,7 @@ namespace BansheeEditor
         private bool isExpanded;
         private bool forceUpdate = true;
         private State state;
+        private Type[] instantiableTypes;
 
         /// <summary>
         /// Creates a new inspectable array GUI for the specified property.
@@ -52,16 +53,31 @@ namespace BansheeEditor
             isExpanded = parent.Persistent.GetBool(path + "_Expanded");
 
             // Builds a context menu that lets the user create objects to assign to this field.
-            Type[] types = GetInstantiableTypes(property.InternalType);
-            if (types.Length > 0)
+            instantiableTypes = GetInstantiableTypes(property.InternalType);
+            if (instantiableTypes.Length > 1)
             {
                 createContextMenu = new ContextMenu();
 
-                Array.Sort(types, (x, y) => string.Compare(x.Name, y.Name, StringComparison.Ordinal));
-                foreach (var type in types)
+                Array.Sort(instantiableTypes, (x, y) => string.Compare(x.Name, y.Name, StringComparison.Ordinal));
+
+                bool showNamespace = false;
+                string ns = instantiableTypes[0].Namespace;
+                for (int i = 1; i < instantiableTypes.Length; i++)
                 {
-                    createContextMenu.AddItem(type.Namespace + "." + type.Name,
-                        () => property.SetValue(Activator.CreateInstance(type)));
+                    if (instantiableTypes[i].Namespace != ns)
+                    {
+                        showNamespace = true;
+                        break;
+                    }
+                }
+
+                foreach (var type in instantiableTypes)
+                {
+                    string prefix = "";
+                    if (showNamespace)
+                        prefix = type.Namespace + ".";
+
+                    createContextMenu.AddItem(prefix + type.Name, () => property.SetValue(Activator.CreateInstance(type)));
                 }
             }
         }
@@ -292,12 +308,17 @@ namespace BansheeEditor
         private void OnCreateButtonClicked()
         {
             if (createContextMenu == null)
-                return;
-
-            Rect2I bounds = GUIUtility.CalculateBounds(guiCreateBtn, guiInternalTitleLayout);
-            Vector2I position = new Vector2I(bounds.x + bounds.width / 2, bounds.y + bounds.height / 2);
+            {
+                if (instantiableTypes.Length > 0)
+                    property.SetValue(Activator.CreateInstance(instantiableTypes[0]));
+            }
+            else
+            {
+                Rect2I bounds = GUIUtility.CalculateBounds(guiCreateBtn, guiInternalTitleLayout);
+                Vector2I position = new Vector2I(bounds.x + bounds.width / 2, bounds.y + bounds.height / 2);
 
-            createContextMenu.Open(position, guiInternalTitleLayout);
+                createContextMenu.Open(position, guiInternalTitleLayout);
+            }
         }
 
         /// <summary>

+ 1 - 0
Source/Scripting/MBansheeEngine/Generated/CParticleSystem.generated.cs

@@ -73,6 +73,7 @@ namespace BansheeEngine
 		/// match camera layer in order for the camera to render the component.
 		/// </summary>
 		[ShowInInspector]
+		[LayerMask]
 		[NativeWrapper]
 		public ulong Layer
 		{

+ 13 - 0
Source/Scripting/MBansheeEngine/Generated/CRenderable.generated.cs

@@ -43,6 +43,15 @@ namespace BansheeEngine
 			set { Internal_setMaterials(mCachedPtr, value); }
 		}
 
+		/// <summary>Factor to be applied to the cull distance set in the camera's render settings.</summary>
+		[ShowInInspector]
+		[NativeWrapper]
+		public float CullDistance
+		{
+			get { return Internal_getCullDistanceFactor(mCachedPtr); }
+			set { Internal_setCullDistanceFactor(mCachedPtr, value); }
+		}
+
 		/// <summary>
 		/// Determines the layer bitfield that controls whether a renderable is considered visible in a specific camera.  
 		/// Renderable layer must match camera layer in order for the camera to render the component.
@@ -107,6 +116,10 @@ namespace BansheeEngine
 		[MethodImpl(MethodImplOptions.InternalCall)]
 		private static extern RRef<Material>[] Internal_getMaterials(IntPtr thisPtr);
 		[MethodImpl(MethodImplOptions.InternalCall)]
+		private static extern void Internal_setCullDistanceFactor(IntPtr thisPtr, float factor);
+		[MethodImpl(MethodImplOptions.InternalCall)]
+		private static extern float Internal_getCullDistanceFactor(IntPtr thisPtr);
+		[MethodImpl(MethodImplOptions.InternalCall)]
 		private static extern void Internal_setLayer(IntPtr thisPtr, ulong layer);
 		[MethodImpl(MethodImplOptions.InternalCall)]
 		private static extern ulong Internal_getLayer(IntPtr thisPtr);

+ 16 - 0
Source/Scripting/MBansheeEngine/Generated/RenderSettings.generated.cs

@@ -255,6 +255,18 @@ namespace BansheeEngine
 			set { Internal_setenableSkybox(mCachedPtr, value); }
 		}
 
+		/// <summary>
+		/// The absolute base cull-distance for objects rendered through this camera in world units. Objects will use this  
+		/// distance and apply their own factor to it to determine whether they should be visible.
+		/// </summary>
+		[ShowInInspector]
+		[NativeWrapper]
+		public float CullDistance
+		{
+			get { return Internal_getcullDistance(mCachedPtr); }
+			set { Internal_setcullDistance(mCachedPtr, value); }
+		}
+
 		[MethodImpl(MethodImplOptions.InternalCall)]
 		private static extern void Internal_RenderSettings(RenderSettings managedInstance);
 		[MethodImpl(MethodImplOptions.InternalCall)]
@@ -337,6 +349,10 @@ namespace BansheeEngine
 		private static extern bool Internal_getenableSkybox(IntPtr thisPtr);
 		[MethodImpl(MethodImplOptions.InternalCall)]
 		private static extern void Internal_setenableSkybox(IntPtr thisPtr, bool value);
+		[MethodImpl(MethodImplOptions.InternalCall)]
+		private static extern float Internal_getcullDistance(IntPtr thisPtr);
+		[MethodImpl(MethodImplOptions.InternalCall)]
+		private static extern void Internal_setcullDistance(IntPtr thisPtr, float value);
 	}
 
 	/** @} */

+ 1 - 0
Source/Scripting/MBansheeEngine/MBansheeEngine.csproj

@@ -46,6 +46,7 @@
     <Compile Include="Math\Plane.cs" />
     <Compile Include="Rendering\Material.cs" />
     <Compile Include="Serialization\ApplyOnDirty.cs" />
+    <Compile Include="Serialization\AsQuaternion.cs" />
     <Compile Include="Serialization\NativeWrapper.cs" />
     <Compile Include="Serialization\PassByCopy.cs" />
     <Compile Include="Serialization\LayerMask.cs" />

+ 1 - 1
Source/Scripting/MBansheeEngine/Serialization/LayerMask.cs

@@ -11,7 +11,7 @@ namespace BansheeEngine
     /// <summary>
     /// Changes the editor inspector GUI element of a 64-bit integer to a layer-mask selection drop down. 
     /// </summary>
-    [AttributeUsage(AttributeTargets.Field)]
+    [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
     public sealed class LayerMask : Attribute
     {
         /// <summary>

+ 6 - 2
Source/Scripting/SBansheeEngine/Generated/BsScriptAnimationUtility.generated.cpp

@@ -85,7 +85,9 @@ namespace bs
 		ScriptArray array__output = ScriptArray::create<ScriptTAnimationCurvefloat>(arraySize__output);
 		for(int i = 0; i < arraySize__output; i++)
 		{
-			array__output.set(i, ScriptTAnimationCurvefloat::create(vec__output[i]));
+			MonoObject* arrayElem__output;
+			arrayElem__output = ScriptTAnimationCurvefloat::create(vec__output[i]);
+			array__output.set(i, arrayElem__output);
 		}
 		__output = array__output.getInternal();
 
@@ -131,7 +133,9 @@ namespace bs
 		ScriptArray array__output = ScriptArray::create<ScriptTAnimationCurvefloat>(arraySize__output);
 		for(int i = 0; i < arraySize__output; i++)
 		{
-			array__output.set(i, ScriptTAnimationCurvefloat::create(vec__output[i]));
+			MonoObject* arrayElem__output;
+			arrayElem__output = ScriptTAnimationCurvefloat::create(vec__output[i]);
+			array__output.set(i, arrayElem__output);
 		}
 		__output = array__output.getInternal();
 

+ 49 - 2
Source/Scripting/SBansheeEngine/Generated/BsScriptCParticleSystem.generated.cpp

@@ -3,10 +3,29 @@
 #include "BsMonoClass.h"
 #include "BsMonoUtil.h"
 #include "../../../bsf/Source/Foundation/bsfCore/Components/BsCParticleSystem.h"
+#include "Reflection/BsRTTIType.h"
 #include "BsScriptParticleSystemSettings.generated.h"
+#include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleEvolver.h"
+#include "BsScriptParticleOrbit.generated.h"
 #include "BsScriptParticleGpuSimulationSettings.generated.h"
+#include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleEvolver.h"
+#include "BsScriptParticleGravity.generated.h"
 #include "BsScriptParticleEmitter.generated.h"
+#include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleEvolver.h"
+#include "BsScriptParticleTextureAnimation.generated.h"
 #include "BsScriptParticleEvolver.generated.h"
+#include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleEvolver.h"
+#include "BsScriptParticleVelocity.generated.h"
+#include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleEvolver.h"
+#include "BsScriptParticleForce.generated.h"
+#include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleEvolver.h"
+#include "BsScriptParticleColor.generated.h"
+#include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleEvolver.h"
+#include "BsScriptParticleSize.generated.h"
+#include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleEvolver.h"
+#include "BsScriptParticleRotation.generated.h"
+#include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleEvolver.h"
+#include "BsScriptParticleCollisions.generated.h"
 
 namespace bs
 {
@@ -100,7 +119,9 @@ namespace bs
 		ScriptArray array__output = ScriptArray::create<ScriptParticleEmitter>(arraySize__output);
 		for(int i = 0; i < arraySize__output; i++)
 		{
-			array__output.set(i, ScriptParticleEmitter::create(vec__output[i]));
+			MonoObject* arrayElem__output;
+			arrayElem__output = ScriptParticleEmitter::create(vec__output[i]);
+			array__output.set(i, arrayElem__output);
 		}
 		__output = array__output.getInternal();
 
@@ -135,7 +156,33 @@ namespace bs
 		ScriptArray array__output = ScriptArray::create<ScriptParticleEvolver>(arraySize__output);
 		for(int i = 0; i < arraySize__output; i++)
 		{
-			array__output.set(i, ScriptParticleEvolver::create(vec__output[i]));
+			MonoObject* arrayElem__output;
+			if(vec__output[i])
+			{
+				if(rtti_is_of_type<ParticleVelocity>(vec__output[i]))
+					arrayElem__output = ScriptParticleVelocity::create(std::static_pointer_cast<ParticleVelocity>(vec__output[i]));
+				else if(rtti_is_of_type<ParticleGravity>(vec__output[i]))
+					arrayElem__output = ScriptParticleGravity::create(std::static_pointer_cast<ParticleGravity>(vec__output[i]));
+				else if(rtti_is_of_type<ParticleForce>(vec__output[i]))
+					arrayElem__output = ScriptParticleForce::create(std::static_pointer_cast<ParticleForce>(vec__output[i]));
+				else if(rtti_is_of_type<ParticleTextureAnimation>(vec__output[i]))
+					arrayElem__output = ScriptParticleTextureAnimation::create(std::static_pointer_cast<ParticleTextureAnimation>(vec__output[i]));
+				else if(rtti_is_of_type<ParticleOrbit>(vec__output[i]))
+					arrayElem__output = ScriptParticleOrbit::create(std::static_pointer_cast<ParticleOrbit>(vec__output[i]));
+				else if(rtti_is_of_type<ParticleColor>(vec__output[i]))
+					arrayElem__output = ScriptParticleColor::create(std::static_pointer_cast<ParticleColor>(vec__output[i]));
+				else if(rtti_is_of_type<ParticleSize>(vec__output[i]))
+					arrayElem__output = ScriptParticleSize::create(std::static_pointer_cast<ParticleSize>(vec__output[i]));
+				else if(rtti_is_of_type<ParticleRotation>(vec__output[i]))
+					arrayElem__output = ScriptParticleRotation::create(std::static_pointer_cast<ParticleRotation>(vec__output[i]));
+				else if(rtti_is_of_type<ParticleCollisions>(vec__output[i]))
+					arrayElem__output = ScriptParticleCollisions::create(std::static_pointer_cast<ParticleCollisions>(vec__output[i]));
+				else
+					arrayElem__output = ScriptParticleEvolver::create(vec__output[i]);
+			}
+			else
+				arrayElem__output = ScriptParticleEvolver::create(vec__output[i]);
+			array__output.set(i, arrayElem__output);
 		}
 		__output = array__output.getInternal();
 

+ 18 - 0
Source/Scripting/SBansheeEngine/Generated/BsScriptCRenderable.generated.cpp

@@ -24,6 +24,8 @@ namespace bs
 		metaData.scriptClass->addInternalCall("Internal_getMaterial", (void*)&ScriptCRenderable::Internal_getMaterial);
 		metaData.scriptClass->addInternalCall("Internal_setMaterials", (void*)&ScriptCRenderable::Internal_setMaterials);
 		metaData.scriptClass->addInternalCall("Internal_getMaterials", (void*)&ScriptCRenderable::Internal_getMaterials);
+		metaData.scriptClass->addInternalCall("Internal_setCullDistanceFactor", (void*)&ScriptCRenderable::Internal_setCullDistanceFactor);
+		metaData.scriptClass->addInternalCall("Internal_getCullDistanceFactor", (void*)&ScriptCRenderable::Internal_getCullDistanceFactor);
 		metaData.scriptClass->addInternalCall("Internal_setLayer", (void*)&ScriptCRenderable::Internal_setLayer);
 		metaData.scriptClass->addInternalCall("Internal_getLayer", (void*)&ScriptCRenderable::Internal_getLayer);
 		metaData.scriptClass->addInternalCall("Internal_getBounds", (void*)&ScriptCRenderable::Internal_getBounds);
@@ -132,6 +134,22 @@ namespace bs
 		return __output;
 	}
 
+	void ScriptCRenderable::Internal_setCullDistanceFactor(ScriptCRenderable* thisPtr, float factor)
+	{
+		thisPtr->getHandle()->setCullDistanceFactor(factor);
+	}
+
+	float ScriptCRenderable::Internal_getCullDistanceFactor(ScriptCRenderable* thisPtr)
+	{
+		float tmp__output;
+		tmp__output = thisPtr->getHandle()->getCullDistanceFactor();
+
+		float __output;
+		__output = tmp__output;
+
+		return __output;
+	}
+
 	void ScriptCRenderable::Internal_setLayer(ScriptCRenderable* thisPtr, uint64_t layer)
 	{
 		thisPtr->getHandle()->setLayer(layer);

+ 2 - 0
Source/Scripting/SBansheeEngine/Generated/BsScriptCRenderable.generated.h

@@ -23,6 +23,8 @@ namespace bs
 		static MonoObject* Internal_getMaterial(ScriptCRenderable* thisPtr, uint32_t idx);
 		static void Internal_setMaterials(ScriptCRenderable* thisPtr, MonoArray* materials);
 		static MonoArray* Internal_getMaterials(ScriptCRenderable* thisPtr);
+		static void Internal_setCullDistanceFactor(ScriptCRenderable* thisPtr, float factor);
+		static float Internal_getCullDistanceFactor(ScriptCRenderable* thisPtr);
 		static void Internal_setLayer(ScriptCRenderable* thisPtr, uint64_t layer);
 		static uint64_t Internal_getLayer(ScriptCRenderable* thisPtr);
 		static void Internal_getBounds(ScriptCRenderable* thisPtr, Bounds* __output);

+ 3 - 1
Source/Scripting/SBansheeEngine/Generated/BsScriptMorphChannel.generated.cpp

@@ -51,7 +51,9 @@ namespace bs
 		ScriptArray array__output = ScriptArray::create<ScriptMorphShape>(arraySize__output);
 		for(int i = 0; i < arraySize__output; i++)
 		{
-			array__output.set(i, ScriptMorphShape::create(vec__output[i]));
+			MonoObject* arrayElem__output;
+			arrayElem__output = ScriptMorphShape::create(vec__output[i]);
+			array__output.set(i, arrayElem__output);
 		}
 		__output = array__output.getInternal();
 

+ 3 - 1
Source/Scripting/SBansheeEngine/Generated/BsScriptMorphShapes.generated.cpp

@@ -39,7 +39,9 @@ namespace bs
 		ScriptArray array__output = ScriptArray::create<ScriptMorphChannel>(arraySize__output);
 		for(int i = 0; i < arraySize__output; i++)
 		{
-			array__output.set(i, ScriptMorphChannel::create(vec__output[i]));
+			MonoObject* arrayElem__output;
+			arrayElem__output = ScriptMorphChannel::create(vec__output[i]);
+			array__output.set(i, arrayElem__output);
 		}
 		__output = array__output.getInternal();
 

+ 46 - 3
Source/Scripting/SBansheeEngine/Generated/BsScriptParticleEmitter.generated.cpp

@@ -3,9 +3,28 @@
 #include "BsMonoClass.h"
 #include "BsMonoUtil.h"
 #include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleEmitter.h"
+#include "Reflection/BsRTTIType.h"
+#include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleEmitter.h"
+#include "BsScriptParticleEmitterHemisphereShape.generated.h"
+#include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleEmitter.h"
+#include "BsScriptParticleEmitterCircleShape.generated.h"
 #include "BsScriptParticleEmitterShape.generated.h"
-#include "BsScriptParticleBurst.generated.h"
+#include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleEmitter.h"
+#include "BsScriptParticleEmitterSphereShape.generated.h"
+#include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleEmitter.h"
+#include "BsScriptParticleEmitterStaticMeshShape.generated.h"
+#include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleEmitter.h"
+#include "BsScriptParticleEmitterSkinnedMeshShape.generated.h"
+#include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleEmitter.h"
+#include "BsScriptParticleEmitterBoxShape.generated.h"
+#include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleEmitter.h"
+#include "BsScriptParticleEmitterConeShape.generated.h"
+#include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleEmitter.h"
+#include "BsScriptParticleEmitterLineShape.generated.h"
+#include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleEmitter.h"
+#include "BsScriptParticleEmitterRectShape.generated.h"
 #include "BsScriptTDistribution.generated.h"
+#include "BsScriptParticleBurst.generated.h"
 #include "BsScriptTDistribution.generated.h"
 #include "BsScriptColorDistribution.generated.h"
 #include "BsScriptParticleEmitter.generated.h"
@@ -77,10 +96,34 @@ namespace bs
 	MonoObject* ScriptParticleEmitter::Internal_getShape(ScriptParticleEmitter* thisPtr)
 	{
 		SPtr<ParticleEmitterShape> tmp__output;
-		*tmp__output = *thisPtr->getInternal()->getShape();
+		tmp__output = thisPtr->getInternal()->getShape();
 
 		MonoObject* __output;
-		__output = ScriptParticleEmitterShape::create(tmp__output);
+		if(tmp__output)
+		{
+			if(rtti_is_of_type<ParticleEmitterSphereShape>(tmp__output))
+				__output = ScriptParticleEmitterSphereShape::create(std::static_pointer_cast<ParticleEmitterSphereShape>(tmp__output));
+			else if(rtti_is_of_type<ParticleEmitterCircleShape>(tmp__output))
+				__output = ScriptParticleEmitterCircleShape::create(std::static_pointer_cast<ParticleEmitterCircleShape>(tmp__output));
+			else if(rtti_is_of_type<ParticleEmitterStaticMeshShape>(tmp__output))
+				__output = ScriptParticleEmitterStaticMeshShape::create(std::static_pointer_cast<ParticleEmitterStaticMeshShape>(tmp__output));
+			else if(rtti_is_of_type<ParticleEmitterConeShape>(tmp__output))
+				__output = ScriptParticleEmitterConeShape::create(std::static_pointer_cast<ParticleEmitterConeShape>(tmp__output));
+			else if(rtti_is_of_type<ParticleEmitterHemisphereShape>(tmp__output))
+				__output = ScriptParticleEmitterHemisphereShape::create(std::static_pointer_cast<ParticleEmitterHemisphereShape>(tmp__output));
+			else if(rtti_is_of_type<ParticleEmitterBoxShape>(tmp__output))
+				__output = ScriptParticleEmitterBoxShape::create(std::static_pointer_cast<ParticleEmitterBoxShape>(tmp__output));
+			else if(rtti_is_of_type<ParticleEmitterLineShape>(tmp__output))
+				__output = ScriptParticleEmitterLineShape::create(std::static_pointer_cast<ParticleEmitterLineShape>(tmp__output));
+			else if(rtti_is_of_type<ParticleEmitterRectShape>(tmp__output))
+				__output = ScriptParticleEmitterRectShape::create(std::static_pointer_cast<ParticleEmitterRectShape>(tmp__output));
+			else if(rtti_is_of_type<ParticleEmitterSkinnedMeshShape>(tmp__output))
+				__output = ScriptParticleEmitterSkinnedMeshShape::create(std::static_pointer_cast<ParticleEmitterSkinnedMeshShape>(tmp__output));
+			else
+				__output = ScriptParticleEmitterShape::create(tmp__output);
+		}
+		else
+			__output = ScriptParticleEmitterShape::create(tmp__output);
 
 		return __output;
 	}

+ 1 - 1
Source/Scripting/SBansheeEngine/Generated/BsScriptParticleEmitter.generated.h

@@ -2,8 +2,8 @@
 
 #include "BsScriptEnginePrerequisites.h"
 #include "BsScriptObject.h"
-#include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleEmitter.h"
 #include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleDistribution.h"
+#include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleEmitter.h"
 #include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleDistribution.h"
 #include "../../../bsf/Source/Foundation/bsfCore/Particles/BsParticleDistribution.h"
 

+ 18 - 0
Source/Scripting/SBansheeEngine/Generated/BsScriptRenderSettings.generated.cpp

@@ -63,6 +63,8 @@ namespace bs
 		metaData.scriptClass->addInternalCall("Internal_setoverlayOnly", (void*)&ScriptRenderSettings::Internal_setoverlayOnly);
 		metaData.scriptClass->addInternalCall("Internal_getenableSkybox", (void*)&ScriptRenderSettings::Internal_getenableSkybox);
 		metaData.scriptClass->addInternalCall("Internal_setenableSkybox", (void*)&ScriptRenderSettings::Internal_setenableSkybox);
+		metaData.scriptClass->addInternalCall("Internal_getcullDistance", (void*)&ScriptRenderSettings::Internal_getcullDistance);
+		metaData.scriptClass->addInternalCall("Internal_setcullDistance", (void*)&ScriptRenderSettings::Internal_setcullDistance);
 
 	}
 
@@ -447,4 +449,20 @@ namespace bs
 	{
 		thisPtr->getInternal()->enableSkybox = value;
 	}
+
+	float ScriptRenderSettings::Internal_getcullDistance(ScriptRenderSettings* thisPtr)
+	{
+		float tmp__output;
+		tmp__output = thisPtr->getInternal()->cullDistance;
+
+		float __output;
+		__output = tmp__output;
+
+		return __output;
+	}
+
+	void ScriptRenderSettings::Internal_setcullDistance(ScriptRenderSettings* thisPtr, float value)
+	{
+		thisPtr->getInternal()->cullDistance = value;
+	}
 }

+ 2 - 0
Source/Scripting/SBansheeEngine/Generated/BsScriptRenderSettings.generated.h

@@ -70,5 +70,7 @@ namespace bs
 		static void Internal_setoverlayOnly(ScriptRenderSettings* thisPtr, bool value);
 		static bool Internal_getenableSkybox(ScriptRenderSettings* thisPtr);
 		static void Internal_setenableSkybox(ScriptRenderSettings* thisPtr, bool value);
+		static float Internal_getcullDistance(ScriptRenderSettings* thisPtr);
+		static void Internal_setcullDistance(ScriptRenderSettings* thisPtr, float value);
 	};
 }

+ 12 - 1
Source/Scripting/SBansheeEngine/Generated/BsScriptViewport.generated.cpp

@@ -3,8 +3,11 @@
 #include "BsMonoClass.h"
 #include "BsMonoUtil.h"
 #include "../../../bsf/Source/Foundation/bsfCore/RenderAPI/BsViewport.h"
+#include "Reflection/BsRTTIType.h"
 #include "Wrappers/BsScriptColor.h"
 #include "BsScriptRenderTarget.generated.h"
+#include "../../../bsf/Source/Foundation/bsfCore/RenderAPI/BsRenderTexture.h"
+#include "BsScriptRenderTexture.generated.h"
 #include "BsScriptViewport.generated.h"
 
 namespace bs
@@ -60,7 +63,15 @@ namespace bs
 		tmp__output = thisPtr->getInternal()->getTarget();
 
 		MonoObject* __output;
-		__output = ScriptRenderTarget::create(tmp__output);
+		if(tmp__output)
+		{
+			if(rtti_is_of_type<RenderTexture>(tmp__output))
+				__output = ScriptRenderTexture::create(std::static_pointer_cast<RenderTexture>(tmp__output));
+			else
+				__output = ScriptRenderTarget::create(tmp__output);
+		}
+		else
+			__output = ScriptRenderTarget::create(tmp__output);
 
 		return __output;
 	}

+ 1 - 1
Source/Scripting/SBansheeEngine/Generated/BsScriptViewport.generated.h

@@ -3,9 +3,9 @@
 #include "BsScriptEnginePrerequisites.h"
 #include "BsScriptObject.h"
 #include "Image/BsColor.h"
+#include "../../../bsf/Source/Foundation/bsfCore/RenderAPI/BsViewport.h"
 #include "Math/BsRect2.h"
 #include "Math/BsRect2I.h"
-#include "../../../bsf/Source/Foundation/bsfCore/RenderAPI/BsViewport.h"
 
 namespace bs
 {

+ 1 - 1
Source/bsf

@@ -1 +1 @@
-Subproject commit f8b1c9cfcd8c929ffe24ea5269376bbf154b1116
+Subproject commit 8f7fbae676e54b1d15d6120dc987804b0e84ea0c