void Start() { int i = 0; cubes = new CubeParams[8]; cubes[i] = new CubeParams("red", cubeColors[i++], new int[] { 0, 1, 3, 6, 9, 15 }); cubes[i] = new CubeParams("green", cubeColors[i++], new int[] { 2, 4, 7, 13, 19, 24 }); cubes[i] = new CubeParams("blue", cubeColors[i++], new int[] { 28, 5, 8, 10, 20, 47 }); cubes[i] = new CubeParams("pink", cubeColors[i++], new int[] { 33, 34, 11, 12, 17, 22 }); cubes[i] = new CubeParams("yellow", cubeColors[i++], new int[] { 14, 16, 37, 27, 39, 41 }); cubes[i] = new CubeParams("purple", cubeColors[i++], new int[] { 18, 21, 43, 44, 46, 23 }); cubes[i] = new CubeParams("cyan", cubeColors[i++], new int[] { 25, 26, 29, 35, 42, 38 }); cubes[i] = new CubeParams("brown", cubeColors[i++], new int[] { 30, 31, 32, 36, 45, 40 }); i = 0; rotation = new RotationParams[6]; rotation[i++] = new RotationParams(Axis4D.xy, 0f); rotation[i++] = new RotationParams(Axis4D.xz, 0f); rotation[i++] = new RotationParams(Axis4D.xw, 0f); rotation[i++] = new RotationParams(Axis4D.yz, 0f); rotation[i++] = new RotationParams(Axis4D.yw, 0f); rotation[i++] = new RotationParams(Axis4D.zw, 0f); ResetVertices(); SetupLineRenderer(); for (i = 0; i < faces.Length; i++) { FaceParams p = faces[i]; DrawFace(rotatedVerts[p.a], rotatedVerts[p.b], rotatedVerts[p.c], rotatedVerts[p.d], Vector3.zero, i, p.faceColor, p.faceGroup, p); } }
void AddToRotationDictionary(Axis4D axis, float theta) { for (int i = 0; i < rotation.Length; i++) { RotationParams rp = rotation[i]; if (rp.axis == axis) { rp.amount += theta; if (rp.amount > 360) { rp.amount -= 360; } } } }
public UserDefinedFormatFactory(UserDefinedFactoryParams createParams) : base(createParams) { var formatSpecificNode = createParams.FormatSpecificNode; ReadPatterns(formatSpecificNode, patterns); var boundsNodes = formatSpecificNode.Elements("bounds").Take(1); var beginFinder = BoundFinder.CreateBoundFinder(boundsNodes.Select(n => n.Element("begin")).FirstOrDefault()); var endFinder = BoundFinder.CreateBoundFinder(boundsNodes.Select(n => n.Element("end")).FirstOrDefault()); tempFilesManager = createParams.TempFilesManager; fieldsProcessorFactory = createParams.FieldsProcessorFactory; regexFactory = createParams.RegexFactory; traceSourceFactory = createParams.TraceSourceFactory; fmtInfo = new Lazy <FormatInfo>(() => { FieldsProcessor.IInitializationParams fieldsInitParams = fieldsProcessorFactory.CreateInitializationParams( formatSpecificNode.Element("fields-config"), performChecks: true); MessagesReaderExtensions.XmlInitializationParams extensionsInitData = new MessagesReaderExtensions.XmlInitializationParams( formatSpecificNode.Element("extensions")); DejitteringParams?dejitteringParams = DejitteringParams.FromConfigNode( formatSpecificNode.Element("dejitter")); TextStreamPositioningParams textStreamPositioningParams = TextStreamPositioningParams.FromConfigNode( formatSpecificNode); RotationParams rotationParams = RotationParams.FromConfigNode( formatSpecificNode.Element("rotation")); FormatInfo.FormatFlags flags = FormatInfo.FormatFlags.None; if (formatSpecificNode.Element("plain-text-search-optimization").AttributeValue("allowed") == "yes") { flags |= FormatInfo.FormatFlags.AllowPlainTextSearchOptimization; } return(new FormatInfo( ReadRe(formatSpecificNode, "head-re", ReOptions.Multiline), ReadRe(formatSpecificNode, "body-re", ReOptions.Singleline), ReadParameter(formatSpecificNode, "encoding"), fieldsInitParams, extensionsInitData, dejitteringParams, textStreamPositioningParams, flags, rotationParams, beginFinder, endFinder )); }); uiKey = ReadParameter(formatSpecificNode, "ui-key"); }
public FormatInfo( LoadedRegex headRe, LoadedRegex bodyRe, string encoding, FieldsProcessor.InitializationParams fieldsParams, MessagesReaderExtensions.XmlInitializationParams extensionsInitData, DejitteringParams?dejitteringParams, TextStreamPositioningParams textStreamPositioningParams, FormatFlags flags, RotationParams rotationParams ) : base(extensionsInitData) { this.HeadRe = headRe; this.BodyRe = bodyRe; this.Encoding = encoding; this.FieldsProcessorParams = fieldsParams; this.DejitteringParams = dejitteringParams; this.TextStreamPositioningParams = textStreamPositioningParams; this.Flags = flags; this.RotationParams = rotationParams; }
public UserDefinedFormatFactory(UserDefinedFactoryParams createParams) : base(createParams) { var formatSpecificNode = createParams.FormatSpecificNode; ReadPatterns(formatSpecificNode, patterns); tempFilesManager = createParams.TempFilesManager; fmtInfo = new Lazy <FormatInfo>(() => { Type precompiledUserCode = ReadPrecompiledUserCode(createParams.RootNode); FieldsProcessor.InitializationParams fieldsInitParams = new FieldsProcessor.InitializationParams( formatSpecificNode.Element("fields-config"), true, precompiledUserCode); MessagesReaderExtensions.XmlInitializationParams extensionsInitData = new MessagesReaderExtensions.XmlInitializationParams( formatSpecificNode.Element("extensions")); DejitteringParams?dejitteringParams = DejitteringParams.FromConfigNode( formatSpecificNode.Element("dejitter")); TextStreamPositioningParams textStreamPositioningParams = TextStreamPositioningParams.FromConfigNode( formatSpecificNode); RotationParams rotationParams = RotationParams.FromConfigNode( formatSpecificNode.Element("rotation")); FormatInfo.FormatFlags flags = FormatInfo.FormatFlags.None; if (formatSpecificNode.Element("plain-text-search-optimization").AttributeValue("allowed") == "yes") { flags |= FormatInfo.FormatFlags.AllowPlainTextSearchOptimization; } return(new FormatInfo( ReadRe(formatSpecificNode, "head-re", ReOptions.Multiline), ReadRe(formatSpecificNode, "body-re", ReOptions.Singleline), ReadParameter(formatSpecificNode, "encoding"), fieldsInitParams, extensionsInitData, dejitteringParams, textStreamPositioningParams, flags, rotationParams )); }); uiKey = ReadParameter(formatSpecificNode, "ui-key"); }
internal void RotationParamChanged(RotationParams param, OpenMetaverse.Quaternion newValue) { // Update the active shadow copy. _props.ParamsRot[param] = newValue; _actor.WakeUp(); }
/// <summary> /// Clamps a rotation param /// /// WARNING: This code is almost always executed from outside the physics thread. /// </summary> /// <param name="param"></param> /// <param name="newValue"></param> /// <returns>clamped_newvalue</returns> internal static OpenMetaverse.Quaternion ClampRotationParam(RotationParams param, OpenMetaverse.Quaternion newValue) { if (float.IsNaN(newValue.X)) newValue.X = 0; if (float.IsNaN(newValue.Y)) newValue.Y = 0; if (float.IsNaN(newValue.Z)) newValue.Z = 0; if (float.IsNaN(newValue.W)) newValue.W = 0; switch (param) { case RotationParams.VehicleReferenceFrame: newValue = OpenMetaverse.Quaternion.Normalize(newValue); break; } return newValue; }
public override void SetVehicleRotationParam(RotationParams param, OpenMetaverse.Quaternion value) { _scene.QueueCommand( new Commands.GenericSyncCmd(this, (PhysxScene scene) => { value = Vehicle.VehicleDynamics.ClampRotationParam(param, value); CheckCreateVehicleProperties(); _properties.VehicleProps.ParamsRot[param] = value; CheckCreateVehicleDynamics(); _vehicleDynamics.RotationParamChanged(param, value); } ) ); }