private CacheManager() { _colorMaterialPrefab = Resources.Load <Material>("Materials/AlphaMaterial"); _textureMaterialPrefab = Resources.Load <Material>("Materials/TextureMaterial"); _transparentMaterialPrefab = Resources.Load <Material>("Materials/AlphaMaterial"); _carMirrorMaterialPrefab = Resources.Load <Material>("Materials/CarMirror"); ProjectilePrefab = Resources.Load <GameObject>("Prefabs/ProjectilePrefab"); _3DObjectPrefab = Resources.Load <GameObject>("Prefabs/ObjectPrefab"); _noColliderPrefab = Resources.Load <GameObject>("Prefabs/NoColliderPrefab"); _steerWheelPrefab = Resources.Load <RaySusp>("Prefabs/SteerWheelPrefab"); _driveWheelPrefab = Resources.Load <RaySusp>("Prefabs/DriveWheelPrefab"); _carBodyPrefab = Resources.Load <GameObject>("Prefabs/CarBodyPrefab"); _carPrefab = Resources.Load <Car>("Prefabs/CarPrefab"); VirtualFilesystem.Instance.Init(); _materialCache["default"] = Object.Instantiate(_textureMaterialPrefab); Palette = ActPaletteParser.ReadActPalette("p02.act"); }
private RaySusp[] CreateWheelPair(Dictionary <string, GameObject> partDict, string placement, int wheelIndex, GameObject car, Vdf vdf, Vtf vtf, Wdf wheelDef) { string wheel1Name = placement + "Right"; RaySusp wheel = Object.Instantiate(placement == "Front" ? _steerWheelPrefab : _driveWheelPrefab, car.transform); wheel.gameObject.name = wheel1Name; wheel.WheelRadius = wheelDef.Radius; // This is not correct - find out where the radius is really stored wheel.SpringLength = wheelDef.Radius; ImportCarParts(partDict, wheel.transform.Find("Mesh").gameObject, vtf, wheelDef.Parts, _noColliderPrefab, false); wheel.transform.localPosition = vdf.WheelLoc[wheelIndex].Position; RaySusp wheel2 = Object.Instantiate(wheel, car.transform); wheel2.name = placement + "Left"; wheel2.transform.localPosition = vdf.WheelLoc[wheelIndex + 1].Position; wheel2.transform.Find("Mesh").localScale = new Vector3(-1, 1, 1); return(new[] { wheel, wheel2 }); }