1
Fork 0
mirror of https://github.com/thegeneralist01/Scene-Manager-DevRepo synced 2026-01-11 15:40:29 +01:00

Added Path property. Removed Rage.Object inheritance

This commit is contained in:
Rich Dunne 2021-05-15 09:36:45 -06:00
parent 91aaf9b7f2
commit 14b94fe19f

View file

@ -1,5 +1,6 @@
using Rage; using Rage;
using SceneManager.Managers; using SceneManager.Managers;
using SceneManager.Paths;
using SceneManager.Utils; using SceneManager.Utils;
namespace SceneManager.Barriers namespace SceneManager.Barriers
@ -14,26 +15,66 @@ namespace SceneManager.Barriers
public bool Immobile { get; set; } public bool Immobile { get; set; }
public bool LightsEnabled { get; set; } public bool LightsEnabled { get; set; }
public int TextureVariation { get; set; } public int TextureVariation { get; set; }
internal Path Path { get; set; }
public PoolHandle Handle => ((IHandleable)_object).Handle; public PoolHandle Handle => ((IHandleable)_object).Handle;
private Barrier() { } private Barrier() { }
internal Barrier(string modelName, Vector3 position, float heading, bool invincible, bool immobile, int textureVariation = 0, bool lightsEnabled = false) internal Barrier(Barrier obj, bool invincible, bool immobile, int textureVariation = 0, bool lightsEnabled = false)
{ {
ModelName = modelName; ModelName = obj.ModelName;
Position = position; Position = obj.Position;
Heading = heading; Heading = obj.Heading;
Invincible = invincible; Invincible = invincible;
Immobile = immobile; Immobile = immobile;
TextureVariation = textureVariation; TextureVariation = textureVariation;
LightsEnabled = lightsEnabled; LightsEnabled = lightsEnabled;
if (obj.IsValid())
{
obj.Delete();
}
_object = new Object(ModelName, Position, Heading); _object = new Object(ModelName, Position, Heading);
if (BarrierManager.PlaceholderBarrier) _object.SetPositionWithSnap(Position);
Rage.Native.NativeFunction.Natives.PLACE_OBJECT_ON_GROUND_PROPERLY<bool>(_object);
Rage.Native.NativeFunction.Natives.SET_ENTITY_DYNAMIC(_object, true);
if (Invincible)
{ {
_object.SetPositionWithSnap(BarrierManager.PlaceholderBarrier.Position); Rage.Native.NativeFunction.Natives.SET_DISABLE_FRAG_DAMAGE(_object, true);
if (ModelName != "prop_barrier_wat_03a")
{
Rage.Native.NativeFunction.Natives.SET_DISABLE_BREAKING(_object, true);
}
} }
_object.IsPositionFrozen = Immobile;
if (Settings.EnableAdvancedBarricadeOptions)
{
SetAdvancedOptions();
}
}
internal Barrier(Object obj, bool invincible, bool immobile, int textureVariation = 0, bool lightsEnabled = false)
{
ModelName = obj.Model.Name;
Position = obj.Position;
Heading = obj.Heading;
Invincible = invincible;
Immobile = immobile;
TextureVariation = textureVariation;
LightsEnabled = lightsEnabled;
if(BarrierManager.PlaceholderBarrier)
{
BarrierManager.PlaceholderBarrier.Delete();
}
_object = new Object(ModelName, Position, Heading);
_object.SetPositionWithSnap(Position);
Rage.Native.NativeFunction.Natives.PLACE_OBJECT_ON_GROUND_PROPERLY<bool>(_object);
Rage.Native.NativeFunction.Natives.SET_ENTITY_DYNAMIC(_object, true); Rage.Native.NativeFunction.Natives.SET_ENTITY_DYNAMIC(_object, true);
if (Invincible) if (Invincible)
@ -73,8 +114,9 @@ namespace SceneManager.Barriers
} }
} }
internal void LoadFromImport() internal void LoadFromImport(Path path)
{ {
Path = path;
Game.LogTrivial($"===== BARRIER DATA ====="); Game.LogTrivial($"===== BARRIER DATA =====");
Game.LogTrivial($"Model: {ModelName}"); Game.LogTrivial($"Model: {ModelName}");
Game.LogTrivial($"Position: {Position}"); Game.LogTrivial($"Position: {Position}");
@ -83,18 +125,22 @@ namespace SceneManager.Barriers
Game.LogTrivial($"Immobile: {Immobile}"); Game.LogTrivial($"Immobile: {Immobile}");
Game.LogTrivial($"LightsEnabled: {LightsEnabled}"); Game.LogTrivial($"LightsEnabled: {LightsEnabled}");
Game.LogTrivial($"Texture Variation: {TextureVariation}"); Game.LogTrivial($"Texture Variation: {TextureVariation}");
var barrier = new Barrier(ModelName, Position, Heading, Invincible, Immobile, TextureVariation, LightsEnabled); var barrier = new Barrier(this, Invincible, Immobile, TextureVariation, LightsEnabled);
Path.Barriers.Add(barrier);
BarrierManager.Barriers.Add(barrier); BarrierManager.Barriers.Add(barrier);
} }
public void Delete() public void Delete()
{ {
((IDeletable)_object).Delete(); if (_object)
{
((IDeletable)_object).Delete();
}
} }
public bool IsValid() public bool IsValid()
{ {
return ((IHandleable)_object).IsValid(); return _object != null;
} }
public bool Equals(IHandleable other) public bool Equals(IHandleable other)