private static void LoadScene(string levelName) { var path = PhyConfiguration.GetValue("ModDir"); string[] searchPath = { "", "downloaded", string.Format(@"../{0}_schinese", path), string.Format(@"../{0}_schinese/downloaded",path) }; string filePath = null; foreach (var i in searchPath) { filePath = Path.Combine(path, i, levelName); if (File.Exists(filePath)) { Debug.LogLine("Load map {0}", filePath); var bspLoader = new BspLoader(filePath); _kinematicsManager?.Clear(); _kinematicsManager = new KinematicsManager(bspLoader.Models); _sceneStaticObjects.Add(BulletHelper.CreateStaticBody(Matrix.Translation(0, 0, 0), new BvhTriangleMeshShape(bspLoader.Models[0], true), BWorld.Instance)); return; } } throw new FileNotFoundException(string.Format("Cannot found map file {0} on these paths: {1}", levelName, "\n" + string.Join("\n", searchPath))); }
/// <summary> /// Init physics system /// if the struct layout is different from default layout, that will throw a fatal error. /// </summary> /// <param name="pStudioRenderer">the address of StudioModelRenderer's first field. (m_clTime)</param> /// <param name="lastFieldAddress">>the address of StudioModelRenderer's last field. (m_plighttransform)</param> /// <param name="engineStudioAPI">pIEngineStudio</param> public static unsafe void InitSystem([In] sbyte *modFolder, void *pEngineStudioAPI) { InitGlobal(); PhyConfiguration.Init(Marshal.PtrToStringAnsi((IntPtr)modFolder)); SetEngineStudioAPI(pEngineStudioAPI); BippedBoneManager.Init(); }
public static void Set([In] sbyte *key, [In] sbyte *value) { PhyConfiguration.SetValue( Marshal.PtrToStringAnsi((IntPtr)key), Marshal.PtrToStringAnsi((IntPtr)value) ); }