Josh Engebretson 10 anni fa
parent
commit
a7cd600321

+ 4 - 1
Build/AtomicSharp/AtomicSharp.csproj

@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
     <ProjectGuid>{3A4C776B-61D6-412E-B1E9-7A1C84CD6B5B}</ProjectGuid>
     <OutputType>Library</OutputType>
-    <RootNamespace>AtomicSharp</RootNamespace>
+    <RootNamespace>Atomic</RootNamespace>
     <AssemblyName>AtomicSharp</AssemblyName>
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
   </PropertyGroup>
@@ -51,6 +51,9 @@
     <Compile Include="..\Source\Generated\MACOSX\CSharp\Packages\Atomic\Managed\CSModuleIO.cs">
       <Link>CSModuleIO.cs</Link>
     </Compile>
+    <Compile Include="..\Source\Generated\MACOSX\CSharp\Packages\AtomicPlayer\Managed\CSModulePlayer.cs">
+      <Link>CSModulePlayer.cs</Link>
+    </Compile>
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
 </Project>

+ 12 - 38
Build/AtomicSharp/AtomicSharpTest/Program.cs

@@ -1,55 +1,29 @@
 using System;
 
-using AtomicSharp;
-using Light = AtomicSharp.Light;
-using Node = AtomicSharp.Node;
+using Atomic;
+using AtomicPlayer;
 
 namespace AtomicSharpTest
 {
 	class MainClass
 	{
-		static Node CreateNode() {
+		static Scene CreateScene() {
 
-			return new AtomicSharp.Node ();
-			
-		}
-
-		static void AddLight(Node node) {
-
-			node.AddComponent (new Light (), 0, CreateMode.REPLICATED);
+			var node = new Node ();
+			var player = (Player)node.GetSubsystem ("Player");
+			player.LoadScene ("Scenes/Scene.scene", null);		
+			return player.CurrentScene;
 
 		}
-
-		static private Node parent;
-		static private Node child;
-
-		static void setup()
-		{
-			parent = CreateNode ();
-			AddLight (parent);
-			parent.Name = "MyNode";
-
-			child = parent.CreateChild ("Child", CreateMode.REPLICATED, 0);
-
-			child = null;
-
-		}
-
+				
 		public static void Main (string[] args)
 		{
-			AtomicSharp.AtomicSharp.Initialize ();
-
-			setup ();
-
-			while (AtomicSharp.AtomicSharp.RunFrame ()) {
-
-				child = parent.GetChild ("Child", false);
+			Atomic.AtomicSharp.Initialize ();
 
-				if (child.Parent.HasComponent("Light"))
-					Console.Write (child.Parent.Name + " has a light\n");
+			CreateScene ();
 
-				child = null;
-			
+			while (Atomic.AtomicSharp.RunFrame ()) {
+						
 				
 			}
 		}

+ 3 - 2
Build/AtomicSharp/MyClass.cs

@@ -2,7 +2,7 @@
 using System.Collections.Generic;
 using System.Runtime.InteropServices;
 
-namespace AtomicSharp
+namespace Atomic
 {
 
 	public static class AtomicSharp
@@ -33,6 +33,8 @@ namespace AtomicSharp
 			GraphicsModule.Initialize ();
 			SceneModule.Initialize ();		
 
+			AtomicPlayer.PlayerModule.Initialize ();
+
 			atomicsharp_initialize ();
 		}
 	}
@@ -92,7 +94,6 @@ namespace AtomicSharp
 				if (entry.Value.Target == null || !entry.Value.IsAlive) {										
 					released.Add (entry.Key);
 
-					Console.WriteLine("Not Alive");
 				} else {
 					
 				}

+ 16 - 2
Source/AtomicSharp/CMakeLists.txt

@@ -20,9 +20,21 @@ set (CSFILES CSModuleAtomic2D.cpp;CSModuleAtomic3D.cpp;CSModuleAudio.cpp;CSModul
              CSModuleNetwork.cpp;CSModulePhysics.cpp;CSModuleResource.cpp;CSPackageAtomic.cpp;
              CSModuleScene.cpp;CSModuleUI.cpp)
 
+set (CSATOMICPLAYERFILES CSModulePlayer.cpp)
+
 foreach(CSFILE ${CSFILES})
 
-  set (CSFILEPATH "${CMAKE_SOURCE_DIR}/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/CSharp/Packages/Atomic/Native/${JSFILE}")
+  set (CSFILEPATH "${CMAKE_SOURCE_DIR}/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/CSharp/Packages/Atomic/Native/${CSFILE}")
+
+  if (NOT EXISTS ${CSFILEPATH})
+    file(WRITE "${CSFILEPATH}" "// will be created by JSBind")
+  endif()
+
+endforeach()
+
+foreach(CSFILE ${CSATOMICPLAYERFILES})
+
+  set (CSFILEPATH "${CMAKE_SOURCE_DIR}/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/CSharp/Packages/AtomicPlayer/Native/${CSFILE}")
 
   if (NOT EXISTS ${CSFILEPATH})
     file(WRITE "${CSFILEPATH}" "// will be created by JSBind")
@@ -33,7 +45,9 @@ endforeach()
 
 file (GLOB CSHARP_BINDINGS_SOURCE ${CMAKE_SOURCE_DIR}/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/CSharp/Packages/Atomic/Native/*.cpp)
 
-set (SOURCE_FILES ${CSHARP_SOURCES} ${CSHARP_BINDINGS_SOURCE})
+file (GLOB CSHARPATOMICPLAYER_BINDINGS_SOURCE ${CMAKE_SOURCE_DIR}/Build/Source/Generated/${JAVASCRIPT_BINDINGS_PLATFORM}/CSharp/Packages/AtomicPlayer/Native/*.cpp)
+
+set (SOURCE_FILES ${CSHARP_SOURCES} ${CSHARP_BINDINGS_SOURCE} ${CSHARPATOMICPLAYER_BINDINGS_SOURCE})
 
 add_library(AtomicSharp SHARED ${SOURCE_FILES})
 

+ 12 - 1
Source/ToolCore/JSBind/CSharp/CSFunctionWriter.cpp

@@ -254,6 +254,7 @@ void CSFunctionWriter::WriteNativeFunction(String& source)
     Indent();
 
     bool returnValue = false;
+    bool sharedPtrReturn = false;
 
     String returnStatement;
 
@@ -267,6 +268,11 @@ void CSFunctionWriter::WriteNativeFunction(String& source)
     {
         returnStatement = "*returnValue = ";
     }
+    else if (function_->GetReturnClass() && function_->GetReturnType()->isSharedPtr_)
+    {
+        returnStatement = ToString("SharedPtr<%s> returnValue = ", function_->GetReturnClass()->GetNativeName().CString());
+        sharedPtrReturn = true;
+    }
     else
     {
         if (returnType != "void")
@@ -301,7 +307,12 @@ void CSFunctionWriter::WriteNativeFunction(String& source)
 
     source += IndentLine(line);
 
-    if (returnType == "const char*")
+    if (sharedPtrReturn)
+    {
+        source += IndentLine("returnValue->AddRef();\n");
+        source += IndentLine("return returnValue;\n");
+    }
+    else if (returnType == "const char*")
     {
         source += IndentLine("return returnValue.CString();\n");
     }

+ 9 - 4
Source/ToolCore/JSBind/CSharp/CSModuleWriter.cpp

@@ -343,11 +343,16 @@ void CSModuleWriter::GenerateManagedSource()
 {
     String source = "// Autogenerated";
 
-    source += "\nusing System;\nusing System.Collections.Generic;\nusing System.Runtime.InteropServices;\n\n\n";
-
     String moduleName = module_->GetPackage()->GetName();
-    if (moduleName == "Atomic")
-        moduleName = "AtomicSharp";
+
+    source += "\nusing System;\nusing System.Collections.Generic;\nusing System.Runtime.InteropServices;\n";
+
+    if (moduleName != "Atomic")
+    {
+        source += "using Atomic;\n";
+    }
+
+    source += "\n\n";
 
     source += "namespace " + moduleName + "\n";
     source += "{\n";

+ 1 - 0
Source/ToolCore/JSBind/JSBHeaderVisitor.h

@@ -167,6 +167,7 @@ public:
                         FullySpecifiedType pfst = tnid->templateArgumentAt(0);
                         type = pfst.type();
                         isTemplate = true;
+                        isSharedPtr = true;
                     }
                 }
             }