using System.Collections.Generic;
using UnityEngine;
namespace CreatureControl {
///
/// A rig or skeleton for a six-legged insect
///
public class InsectRig : TargetRig {
///
/// The left front leg
///
public TargetLeg leftFrontLeg;
///
/// The left middle leg
///
public TargetLeg leftMiddleLeg;
///
/// The left hind leg
///
public TargetLeg leftBackLeg;
///
/// The right front leg
///
public TargetLeg rightFrontLeg;
///
/// The right middle leg
///
public TargetLeg rightMiddleLeg;
///
/// The right hindLeg
///
public TargetLeg rightBackLeg;
private TargetLeg[] _legs;
public TargetLeg[] legs {
get {
if (_legs == null) {
_legs = new TargetLeg[6];
_legs[0] = leftFrontLeg;
_legs[1] = leftMiddleLeg;
_legs[2] = leftBackLeg;
_legs[3] = rightFrontLeg;
_legs[4] = rightMiddleLeg;
_legs[5] = rightBackLeg;
}
return _legs;
}
}
public bool render;
public float legLength; // smalled leg length
public override void Pose() {
this.leftBackLeg.PoseLimb();
this.leftMiddleLeg.PoseLimb();
this.leftFrontLeg.PoseLimb();
this.rightBackLeg.PoseLimb();
this.rightMiddleLeg.PoseLimb();
this.rightFrontLeg.PoseLimb();
}
public override void MatchTo(Creature creature, ref bool anythingChanged) {
base.MatchTo(creature, ref anythingChanged);
if (creature is not Insect insect)
return;
if (this.leftFrontLeg != null && insect.leftFrontLeg != null)
this.leftFrontLeg.MatchTo(insect.leftFrontLeg);
if (this.leftMiddleLeg != null && insect.leftMiddleLeg != null)
this.leftMiddleLeg.MatchTo(insect.leftMiddleLeg);
if (this.leftBackLeg != null && insect.leftHindLeg != null)
this.leftBackLeg.MatchTo(insect.leftHindLeg);
if (this.rightFrontLeg != null && insect.rightFrontLeg != null)
this.rightFrontLeg.MatchTo(insect.rightFrontLeg);
if (this.rightMiddleLeg != null && insect.rightMiddleLeg != null)
this.rightMiddleLeg.MatchTo(insect.rightMiddleLeg);
if (this.rightBackLeg != null && insect.rightHindLeg != null)
this.rightBackLeg.MatchTo(insect.rightHindLeg);
}
public void ApplyRenderToChildren(bool value) {
// Find all renderers under this GameObject (including inactive)
var renderers = GetComponentsInChildren(true);
foreach (var r in renderers) r.enabled = value;
}
}
}