protected override void Start() { Rigidbody = GetComponent <Rigidbody>(); base.Start(); if (!isServer && isClient) { var anim = GetComponent <Animator>(); if (anim != null) { anim.applyRootMotion = false; } return; } if (!isServer) { return; } HerbivoreSensor = new OctreeSensor <HerbivoreBase>(transform, SensingRadius, MaximumHerdSizeToAttack + 1, OctreeManager.Get(OctreeType.Herbivore)); //Starts the carnivore slightly hungry TimeSinceEating = DayClock.Singleton.DaysToSeconds(1.01f); }
private void Start() { if (isServer) m_PlayerSensor = new OctreeSensor<NetworkIdentity>(OriginTransform, m_InteractRange, OctreeManager.Get(OctreeType.Player)) { RefreshRate = .1f.Randomize(.03f) }; }
public MachineMonitor( IConcurrencyProvider concurrencyProvider, ITemperatureSensor temperatureSensor, IProximitySensor proximitySensor) { _concurrencyProvider = concurrencyProvider; _temperatureSensor = temperatureSensor; _proximitySensor = proximitySensor; }
private IEnumerator InitializePlayerSensor() { while (!OctreeManager.Contains(OctreeType.Player)) { yield return(new WaitForSeconds(.5f)); } m_PlayerSensor = new OctreeSensor <Transform>(transform, CalculateEnclosingRadius(), OctreeManager.Get(OctreeType.Player)) { RefreshRate = .1f.Randomize(.05f) }; }
public override void OnStartServer() { m_AnimAudioController = GetComponent <TriHorseAnimAudioController>(); m_AnimAudioController.OnEatingFinished += OnEatingFinished; m_AnimAudioController.OnDyingFinished += Die; Grower = new ScaledGrowth(transform, DataStore.GetFloat(Data.TriHorseInitialScale), DataStore.GetFloat(Data.TriHorseFinalScaleMin), DataStore.GetFloat(Data.TriHorseFinalScaleMax)); Grower.StartGrowing(); Scale = Grower.Scale; AgeData.DaysToGrown = DataStore.GetFloat(Data.TriHorseDaysToGrown); AgeData.LifeSpan = DataStore.GetFloat(Data.TriHorseLifeSpan); BaseSpeed = DataStore.GetFloat(Data.TriHorseBaseSpeed); DaysBeforeReproducing = DataStore.GetFloat(Data.TriHorseDaysBeforeReproducing); DaysBetweenReproductions = DataStore.GetFloat(Data.TriHorseDaysBetweenReproductions); StarvingDamageAmount = DataStore.GetFloat(Data.TriHorseStarvingDamageAmount); StructureCollisionDamageAmount = DataStore.GetFloat(Data.TriHorseStructureCollisionDamageAmount); SensingRadius = DataStore.GetFloat(Data.TriHorseSensingRadius); WanderParameters.Radius = DataStore.GetFloat(Data.TriHorseWanderRadius); WanderParameters.Distance = DataStore.GetFloat(Data.TriHorseWanderDistance); WanderParameters.Jitter = DataStore.GetFloat(Data.TriHorseWanderJitter); FlockingOptions.WanderWeight = DataStore.GetFloat(Data.TriHorseWanderWeight); FlockingOptions.AlignmentWeight = DataStore.GetFloat(Data.TriHorseAlignWeight); FlockingOptions.MinDispersion = DataStore.GetFloat(Data.TriHorseMinFlockDispersion); FlockingOptions.MaxDispersion = DataStore.GetFloat(Data.TriHorseMaxFlockDispersion); FlockingOptions.MinDispersionSquared = FlockingOptions.MinDispersion * FlockingOptions.MinDispersion; FlockingOptions.MaxDispersionSquared = FlockingOptions.MaxDispersion * FlockingOptions.MaxDispersion; m_FlockmateSensor = new OctreeSensor <TriHorse>(transform, SensingRadius, 20, OctreeManager.Get(OctreeType.Herbivore)); m_FlockmateSensor.RefreshRate = m_FlockmateSensor.RefreshRate.Randomize(.05f); base.OnStartServer(); Scale = Grower.Scale; BehaviourBrain.In(BehaviourState.SeekingFood) .If(() => Health <= 0) .GoTo(BehaviourState.Death) .If(() => m_InDeathThrows) .GoTo(BehaviourState.Dying) .If(() => m_TimeSinceEating < DayClock.Singleton.DaysToSeconds(.4f)) .GoTo(BehaviourState.Flocking) .If(CanReproduce) .GoTo(BehaviourState.Reproducing) .If(() => m_EatingNodule) .GoTo(BehaviourState.Eating) .ExecuteWhileIn(SeekFood, StarvationCheck); BehaviourBrain.In(BehaviourState.Flocking) .If(() => Health <= 0) .GoTo(BehaviourState.Death) .If(() => m_InDeathThrows) .GoTo(BehaviourState.Dying) .If(() => m_TimeSinceEating > DayClock.Singleton.DaysToSeconds(.4f)) .GoTo(BehaviourState.SeekingFood) .If(CanReproduce) .GoTo(BehaviourState.Reproducing) .ExecuteWhileIn(Flocking); BehaviourBrain.In(BehaviourState.Eating) .If(() => m_InDeathThrows) .GoTo(BehaviourState.Dying) .If(() => !m_EatingNodule) .GoTo(BehaviourState.Flocking) .ExecuteOnEntry(StartEating) .ExecuteWhileIn(EatNodule) .ExecuteOnExit(EndEating); BehaviourBrain.In(BehaviourState.Reproducing) .DoOnce(Reproduce) .If(() => true) .GoTo(BehaviourState.SeekingFood); //Empty state. All action is handled through anim callbacks or outside function calls //Once we enter this state, we do not leave it. BehaviourBrain.In(BehaviourState.Dying); BehaviourBrain.In(BehaviourState.Death) .DoOnce(Die); BehaviourBrain.Initialize(BehaviourState.SeekingFood); //This forces the herbivore to start in the seeking food state m_TimeSinceEating = DayClock.Singleton.DaysToSeconds(.4f); }
public LockingMechanism(IProximitySensor _sensor) { Sensor = _sensor; }
private void Start() { m_Sensor = new OctreeSensor <Transform>(transform, Range, 1, OctreeManager.Get(OctreeType.Player)); }