Skip to content
Snippets Groups Projects
Commit e71f1c46 authored by Richard Marcus's avatar Richard Marcus
Browse files

starting refactoring

parent 46185017
No related branches found
No related tags found
No related merge requests found
Showing
with 787 additions and 2 deletions
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using static CommunicationEvents;
public class AngleTool : Gadget
{
public override void OnHit(RaycastHit hit)
{
if (!this.isActiveAndEnabled) return;
if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Point"))
{
Fact tempFact = Facts[hit.transform.GetComponent<FactObject>().Id];
//If two points were already selected and now the third point got selected
if (FactManager.angleModeIsFirstPointSelected && FactManager.angleModeIsSecondPointSelected)
{
//Event for end of curve-drawing in "ShinyThings"
CommunicationEvents.StopCurveDrawingEvent.Invoke(null);
//Create AngleFact
//Check if new Point is equal to one of the previous points -> if true -> cancel
if (!(FactManager.angleModeFirstPointSelected.Id == tempFact.Id || FactManager.angleModeSecondPointSelected.Id == tempFact.Id))
{
//Check if exactly the same angle already exists
if (!FactManager.factAlreadyExists(new int[] { ((PointFact)FactManager.angleModeFirstPointSelected).Id, ((PointFact)FactManager.angleModeSecondPointSelected).Id, ((PointFact)tempFact).Id }))
CommunicationEvents.AddFactEvent.Invoke(FactManager.AddAngleFact(((PointFact)FactManager.angleModeFirstPointSelected).Id, ((PointFact)FactManager.angleModeSecondPointSelected).Id, ((PointFact)tempFact).Id, FactManager.GetFirstEmptyID()));
}
FactManager.angleModeIsFirstPointSelected = false;
FactManager.angleModeFirstPointSelected = null;
FactManager.angleModeIsSecondPointSelected = false;
FactManager.angleModeSecondPointSelected = null;
}
//If only one point was already selected
else if (FactManager.angleModeIsFirstPointSelected && !FactManager.angleModeIsSecondPointSelected)
{
//Check if the 2 selected points are the same: If not
if (FactManager.angleModeFirstPointSelected.Id != tempFact.Id)
{
FactManager.angleModeIsSecondPointSelected = true;
FactManager.angleModeSecondPointSelected = tempFact;
//Event for start of curve-drawing in "ShinyThings"
//Create new LineFact with the 2 points
LineFact tempLineFact = new LineFact();
tempLineFact.Pid1 = FactManager.angleModeFirstPointSelected.Id;
tempLineFact.Pid2 = FactManager.angleModeSecondPointSelected.Id;
CommunicationEvents.StartCurveDrawingEvent.Invoke(tempLineFact);
}
else
{
FactManager.angleModeFirstPointSelected = null;
FactManager.angleModeIsFirstPointSelected = false;
}
}
//If no point was selected before
else
{
//Save the first point selected
FactManager.angleModeIsFirstPointSelected = true;
FactManager.angleModeFirstPointSelected = tempFact;
}
}
//No point was hit
else
{
if (FactManager.angleModeIsFirstPointSelected && FactManager.angleModeIsSecondPointSelected)
{
//Event for end of curve-drawing in "ShinyThings"
CommunicationEvents.StopCurveDrawingEvent.Invoke(null);
}
//Reset Angle-Preview-Attributes
FactManager.angleModeIsFirstPointSelected = false;
FactManager.angleModeFirstPointSelected = null;
FactManager.angleModeIsSecondPointSelected = false;
FactManager.angleModeSecondPointSelected = null;
//TODO: Hint that only an angle can be created between 3 already existing points
}
}
}
fileFormatVersion: 2
guid: d10fd4395a48fea4bb8ac86ebabe002c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
......@@ -10,26 +10,26 @@ public class FactManager : MonoBehaviour
private List<int> NextEmpties = new List<int>();
//Variables for LineMode distinction
private bool lineModeIsFirstPointSelected = false;
private Fact lineModeFirstPointSelected = null;
public bool lineModeIsFirstPointSelected = false;
public Fact lineModeFirstPointSelected = null;
//Variables for AngleMode distinction
private bool angleModeIsFirstPointSelected = false;
private Fact angleModeFirstPointSelected = null;
private bool angleModeIsSecondPointSelected = false;
private Fact angleModeSecondPointSelected = null;
public bool angleModeIsFirstPointSelected = false;
public Fact angleModeFirstPointSelected = null;
public bool angleModeIsSecondPointSelected = false;
public Fact angleModeSecondPointSelected = null;
//Solving game parameters
public GameObject snapZoneTop;
public GameObject snapZoneBottom;
private static Vector3 solutionVector;
private static bool solved = false;
public static Vector3 solutionVector;
public static bool solved = false;
// Start is called before the first frame update
void Start()
{
CommunicationEvents.ToolModeChangedEvent.AddListener(OnToolModeChanged);
CommunicationEvents.TriggerEvent.AddListener(OnHit);
// CommunicationEvents.SnapEvent.AddListener(Rocket);
//We dont want to have this here anymore...
......@@ -48,19 +48,19 @@ void Update()
}
//TODO: change the return find....
PointFact AddPointFact(RaycastHit hit, int id)
public PointFact AddPointFact(RaycastHit hit, int id)
{
Facts.Insert(id, new PointFact(id, hit.point, hit.normal));
return Facts.Find(x => x.Id == id) as PointFact;
}
LineFact AddLineFact(int pid1, int pid2, int id)
public LineFact AddLineFact(int pid1, int pid2, int id)
{
Facts.Insert(id, new LineFact(id, pid1, pid2));
return Facts.Find(x => x.Id == id) as LineFact;
}
RayFact AddRayFact(int pid1, int pid2, int id)
public RayFact AddRayFact(int pid1, int pid2, int id)
{
Facts.Insert(id, new RayFact(id, pid1, pid2));
......@@ -119,7 +119,7 @@ RayFact AddRayFact(int pid1, int pid2, int id)
}
AngleFact AddAngleFact(int pid1, int pid2, int pid3, int id)
public AngleFact AddAngleFact(int pid1, int pid2, int pid3, int id)
{
Facts.Insert(id, new AngleFact(id, pid1, pid2, pid3));
......@@ -219,7 +219,7 @@ public static Boolean gameSolved() {
return false;
}
}
/*
//automatic 90 degree angle construction
public void Rocket(RaycastHit hit)
{
......@@ -277,13 +277,12 @@ public void SmallRocket(RaycastHit hit, int idA)
//90degree angle
CommunicationEvents.AddFactEvent.Invoke(this.AddAngleFact(idB, idA, idC, GetFirstEmptyID()));
}
}*/
public void OnToolModeChanged(ToolMode ActiveToolMode)
{
//We need to do this somehwere...
CommunicationEvents.ActiveToolMode = ActiveToolMode;
//TODO: instead of enabling/disabling colliders we want to change the raycast mask
switch (ActiveToolMode)
{
case ToolMode.MarkPointMode:
......@@ -361,223 +360,4 @@ public void OnToolModeChanged(ToolMode ActiveToolMode)
CommunicationEvents.StopPreviewsEvent.Invoke(null);
}
public void OnHit(RaycastHit hit)
{
switch (ActiveToolMode)
{
//If Left-Mouse-Button was pressed in MarkPointMode
case ToolMode.MarkPointMode:
var pid = this.GetFirstEmptyID();
CommunicationEvents.AddFactEvent.Invoke(this.AddPointFact(hit,pid ));
if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Ray")){
var oLid = GetFirstEmptyID();
Facts.Insert(oLid, new OnLineFact(oLid, pid, hit.transform.GetComponent<FactObject>().Id));
}
break;
//same as for linemode atm
case ToolMode.CreateRayMode:
//If Left-Mouse-Button was pressed in CreateLineMode
case ToolMode.CreateLineMode:
//Check if an existing Point was hit
if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Point"))
{
Fact tempFact = Facts[hit.transform.GetComponent<FactObject>().Id];
//we can only reach points that are lower than that with the measuring tape
if (ActiveToolMode == ToolMode.CreateLineMode && tempFact.Representation.transform.position.y > 2.5f)
return;
//no 0 distances
if (this.lineModeIsFirstPointSelected && this.lineModeFirstPointSelected.Id != tempFact.Id)
{
//Event for end of line-drawing in "ShinyThings"
CommunicationEvents.StopLineDrawingEvent.Invoke(null);
//Create LineFact
//Check if exactle the same line/distance already exists
if(!factAlreadyExists(new int[] { this.lineModeFirstPointSelected.Id, tempFact.Id }))
if(ActiveToolMode==ToolMode.CreateLineMode)
CommunicationEvents.AddFactEvent.Invoke(this.AddLineFact(this.lineModeFirstPointSelected.Id, tempFact.Id, this.GetFirstEmptyID()));
else
{
CommunicationEvents.AddFactEvent.Invoke(this.AddRayFact(this.lineModeFirstPointSelected.Id, tempFact.Id, this.GetFirstEmptyID()));
}
this.lineModeIsFirstPointSelected = false;
this.lineModeFirstPointSelected = null;
}
else
{
//Activate LineDrawing for preview
this.lineModeIsFirstPointSelected = true;
this.lineModeFirstPointSelected = tempFact;
//Event for start line-drawing in "ShinyThings"
CommunicationEvents.StartLineDrawingEvent.Invoke(this.lineModeFirstPointSelected);
}
}
//if we want to spawn a new point
else if (Input.GetKey(KeyCode.LeftShift))
{
if (this.lineModeIsFirstPointSelected)
{
CommunicationEvents.StopLineDrawingEvent.Invoke(null);
SmallRocket(hit, this.lineModeFirstPointSelected.Id);
this.lineModeIsFirstPointSelected = false;
this.lineModeFirstPointSelected = null;
}
}
//if we hit the top snap zone
else if (hit.transform.gameObject.tag=="SnapZone")
{
if (this.lineModeIsFirstPointSelected)
{
RaycastHit downHit;
if (Physics.Raycast(hit.transform.gameObject.transform.position-Vector3.down*2,Vector3.down, out downHit))
{
int idA = downHit.transform.gameObject.GetComponent<FactObject>().Id;
int idB = this.lineModeFirstPointSelected.Id;
int idC = GetFirstEmptyID();
CommunicationEvents.AddFactEvent.Invoke(this.AddPointFact(hit, idC));
//Event for end of line-drawing in "ShinyThings"
CommunicationEvents.StopLineDrawingEvent.Invoke(null);
//Create LineFact
CommunicationEvents.AddFactEvent.Invoke(this.AddAngleFact(idA, idB, idC, GetFirstEmptyID()));
this.lineModeIsFirstPointSelected = false;
this.lineModeFirstPointSelected = null;
}
}
}
//If no Point was hit
else
{
if (this.lineModeIsFirstPointSelected)
{
//Deactivate LineDrawing and first point selection
this.lineModeIsFirstPointSelected = false;
this.lineModeFirstPointSelected = null;
//Event for end of line-drawing in "ShinyThings"
CommunicationEvents.StopLineDrawingEvent.Invoke(null);
}
//TODO: Hint that only a line can be drawn between already existing points
}
break;
//If Left-Mouse-Button was pressed in CreateAngleMode
case ToolMode.CreateAngleMode:
//Check if an existing Point was hit
if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Point"))
{
Fact tempFact = Facts[hit.transform.GetComponent<FactObject>().Id];
//If two points were already selected and now the third point got selected
if (this.angleModeIsFirstPointSelected && this.angleModeIsSecondPointSelected)
{
//Event for end of curve-drawing in "ShinyThings"
CommunicationEvents.StopCurveDrawingEvent.Invoke(null);
//Create AngleFact
//Check if new Point is equal to one of the previous points -> if true -> cancel
if (!(angleModeFirstPointSelected.Id == tempFact.Id || angleModeSecondPointSelected.Id == tempFact.Id))
{
//Check if exactly the same angle already exists
if (!factAlreadyExists(new int[] { ((PointFact)angleModeFirstPointSelected).Id, ((PointFact)angleModeSecondPointSelected).Id, ((PointFact)tempFact).Id }))
CommunicationEvents.AddFactEvent.Invoke(this.AddAngleFact(((PointFact)angleModeFirstPointSelected).Id, ((PointFact)angleModeSecondPointSelected).Id, ((PointFact)tempFact).Id, GetFirstEmptyID()));
}
this.angleModeIsFirstPointSelected = false;
this.angleModeFirstPointSelected = null;
this.angleModeIsSecondPointSelected = false;
this.angleModeSecondPointSelected = null;
}
//If only one point was already selected
else if (this.angleModeIsFirstPointSelected && !this.angleModeIsSecondPointSelected) {
//Check if the 2 selected points are the same: If not
if (this.angleModeFirstPointSelected.Id != tempFact.Id)
{
this.angleModeIsSecondPointSelected = true;
this.angleModeSecondPointSelected = tempFact;
//Event for start of curve-drawing in "ShinyThings"
//Create new LineFact with the 2 points
LineFact tempLineFact = new LineFact();
tempLineFact.Pid1 = this.angleModeFirstPointSelected.Id;
tempLineFact.Pid2 = this.angleModeSecondPointSelected.Id;
CommunicationEvents.StartCurveDrawingEvent.Invoke(tempLineFact);
}
else {
this.angleModeFirstPointSelected = null;
this.angleModeIsFirstPointSelected = false;
}
}
//If no point was selected before
else
{
//Save the first point selected
this.angleModeIsFirstPointSelected = true;
this.angleModeFirstPointSelected = tempFact;
}
}
//No point was hit
else
{
if (this.angleModeIsFirstPointSelected && this.angleModeIsSecondPointSelected)
{
//Event for end of curve-drawing in "ShinyThings"
CommunicationEvents.StopCurveDrawingEvent.Invoke(null);
}
//Reset Angle-Preview-Attributes
this.angleModeIsFirstPointSelected = false;
this.angleModeFirstPointSelected = null;
this.angleModeIsSecondPointSelected = false;
this.angleModeSecondPointSelected = null;
//TODO: Hint that only an angle can be created between 3 already existing points
}
break;
/* //If Left-Mouse-Button was pressed in DeleteMode
case ToolMode.DeleteMode:
//Search for the Fact that was hit
//If the hit GameObject was a Point/Line/Angle
if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Point") || hit.transform.gameObject.layer == LayerMask.NameToLayer("Line") || hit.transform.gameObject.layer == LayerMask.NameToLayer("Angle"))
{
//Search for the suitable fact from the List
this.DeleteFact(Facts.Find(x => x.Id == hit.transform.GetComponent<FactObject>().Id));
}
break;*/
//If Left-Mouse-Button was pressed in ExtraMode
case ToolMode.ExtraMode:
/*
if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Point")) {
var menu = GameObject.Instantiate(SmartMenu);
menu.GetComponent<SmartMenu>().FactManager = this;
menu.GetComponent<Canvas>().worldCamera = Camera.main;
menu.transform.SetParent(hit.transform);
menu.transform.localPosition = Vector3.up - Camera.main.transform.forward;
}
else
{
PointFact fact = AddPointFact(hit, GetFirstEmptyID());
CommunicationEvents.AddFactEvent.Invoke(fact);
}*/
break;
}
}
}
fileFormatVersion: 2
guid: 16e6797023cf18f4a96388adf8cb188b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Gadget : MonoBehaviour
{
public ToolMode ToolMode;
public Sprite Sprite;
public FactManager FactManager;
// Start is called before the first frame update
void Start()
{
if (FactManager == null) FactManager = GameObject.FindObjectOfType<FactManager>();
CommunicationEvents.TriggerEvent.AddListener(OnHit);
}
public virtual void OnHit(RaycastHit hit)
{
}
}
fileFormatVersion: 2
guid: 55fad4c58cb54384ab07da78cebf86f9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GadgetManager : MonoBehaviour
{
Dictionary<ToolMode,Gadget> modeToGadget = new Dictionary<ToolMode, Gadget>();
public GameObject GadgetUI;
// Start is called before the first frame update
void Start()
{
CommunicationEvents.ToolModeChangedEvent.AddListener(OnToolModeChanged);
var gadgets = GetComponentsInChildren<Gadget>();
Debug.Log(gadgets.Length);
foreach (var gadget in gadgets)
{
modeToGadget.Add(gadget.ToolMode, gadget);
CreateButton(gadget);
gadget.gameObject.SetActive(false);
}
modeToGadget[CommunicationEvents.ActiveToolMode].gameObject.SetActive(true);
GadgetUI.GetComponent<ToolModeSelector>().enabled = true;
}
public void CreateButton(Gadget gadget)
{
var button = GameObject.Instantiate(Resources.Load("Prefabs/GadgetButton") as GameObject);
button.GetComponent<Image>().sprite = gadget.Sprite;
button.transform.SetParent(GadgetUI.transform);
var uiRect = GadgetUI.GetComponent<RectTransform>().rect;
var buttonRect = button.GetComponent<RectTransform>().rect;
button.transform.localPosition = Vector2.right*(-.5f * uiRect.width //left border
+ buttonRect.width * .75f //border distance including button width
+ buttonRect.width * 1.5f * (int)gadget.ToolMode); //offset
}
public void OnToolModeChanged(ToolMode ActiveToolMode)
{
modeToGadget[CommunicationEvents.ActiveToolMode].gameObject.SetActive(false);
CommunicationEvents.ActiveToolMode = ActiveToolMode;
modeToGadget[CommunicationEvents.ActiveToolMode].gameObject.SetActive(true);
}
// Update is called once per frame
void Update()
{
}
}
fileFormatVersion: 2
guid: f6c56cda17d48fa47a0c06cea90accba
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using static CommunicationEvents;
public class Pointer : Gadget
{
// Start is called before the first frame update
public override void OnHit(RaycastHit hit)
{
if (!this.isActiveAndEnabled) return;
var pid = FactManager.GetFirstEmptyID();
CommunicationEvents.AddFactEvent.Invoke(FactManager.AddPointFact(hit, pid));
if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Ray"))
{
var oLid = FactManager.GetFirstEmptyID();
Facts.Insert(oLid, new OnLineFact(oLid, pid, hit.transform.GetComponent<FactObject>().Id));
}
}
}
fileFormatVersion: 2
guid: ef930b2605bc4484e99f580e3db751c9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 8c00acf0711308b4eac44fb21f04a06f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
......@@ -9,7 +9,7 @@
public class ScrollDetails : MonoBehaviour
{
public GameObject cursor;
public WorldCursor cursor;
public GameObject parameterDisplayPrefab;
public Scroll scroll;
......@@ -28,7 +28,7 @@ public Vector3 GetPosition(int i)
// Start is called before the first frame update
void Start()
{
if (cursor == null) cursor = GameObject.FindObjectOfType<WorldCursor>();
}
// Update is called once per frame
......
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using static CommunicationEvents;
public class LineTool : Gadget
{
public override void OnHit(RaycastHit hit)
{
if (!this.isActiveAndEnabled) return;
if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Point"))
{
Fact tempFact = Facts[hit.transform.GetComponent<FactObject>().Id];
//we can only reach points that are lower than that with the measuring tape
if (ActiveToolMode == ToolMode.CreateLineMode && tempFact.Representation.transform.position.y > 2.5f)
return;
//no 0 distances
if (FactManager.lineModeIsFirstPointSelected && FactManager.lineModeFirstPointSelected.Id != tempFact.Id)
{
//Event for end of line-drawing in "ShinyThings"
CommunicationEvents.StopLineDrawingEvent.Invoke(null);
//Create LineFact
//Check if exactle the same line/distance already exists
if (!FactManager.factAlreadyExists(new int[] { FactManager.lineModeFirstPointSelected.Id, tempFact.Id }))
if (ActiveToolMode == ToolMode.CreateLineMode)
CommunicationEvents.AddFactEvent.Invoke(FactManager.AddLineFact(FactManager.lineModeFirstPointSelected.Id, tempFact.Id, FactManager.GetFirstEmptyID()));
else
{
CommunicationEvents.AddFactEvent.Invoke(FactManager.AddRayFact(FactManager.lineModeFirstPointSelected.Id, tempFact.Id, FactManager.GetFirstEmptyID()));
}
FactManager.lineModeIsFirstPointSelected = false;
FactManager.lineModeFirstPointSelected = null;
}
else
{
//Activate LineDrawing for preview
FactManager.lineModeIsFirstPointSelected = true;
FactManager.lineModeFirstPointSelected = tempFact;
//Event for start line-drawing in "ShinyThings"
CommunicationEvents.StartLineDrawingEvent.Invoke(FactManager.lineModeFirstPointSelected);
}
}
}
}
fileFormatVersion: 2
guid: da63673a5f7db65498fc07a7af282128
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: f0b0703a76fe0d347b051a50cd0164e9
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 2c3b978c36be0974d9ee891f0dda9cf6
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File added
fileFormatVersion: 2
guid: 77b64dedcbc1d5548b2c91fcda846c48
ModelImporter:
serializedVersion: 19301
internalIDToNameTable: []
externalObjects: {}
materials:
materialImportMode: 1
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVPackMargin: 4
useFileScale: 1
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment