1
0
Fork 0

sync changes

This commit is contained in:
coaljoe 2020-09-08 00:01:33 +03:00
parent 857b08a39a
commit 1cbad2da04
3 changed files with 73 additions and 10 deletions

View File

@ -10,8 +10,8 @@ enum ElemType {
water oil lava
// Gas(?)
vapour methane
// Extra(?)
soil biomass silt
// Extra(?) / Compounds
soil biomass silt grass
//// Secondary form
glass concrete brick steel plastic cement

53
isotest/bits/material.v Normal file
View File

@ -0,0 +1,53 @@
module bits
// Material Elem Record
struct MaterialElem {
mut:
// n_bits
bits_size int
elem &Elem
}
// Many objects can share the same material
// Can be compound / multiple elements per material
// XXX TODO: ? bits amount values / calculations in percentages?
// XXX like 20% wood 80% grass?
// XXX how to calculate the amount of material/bits?
// XXX via object mass/weight (must be specified)?
// XXX or 10% glass 90% concrete?
// XXX do we really need such materials?
struct Material {
mut:
name string
//elems map[string]&Elem
elems map[string]&MaterialElem
}
fn new_material() &Material {
m := &Material{}
return m
}
// Add elem record
fn (mut m Material) add_elem(bits_size int, elem &Elem) {
me := &MaterialElem{bits_size, elem}
m.elems[elem.name] = me
}
// Get elem record by name
fn (m &Material) get_elem_name(elem_name string) &MaterialElem {
me := m.elems[elem_name]
//if isnil(me) {
// panic(2)
//}
return me
}

View File

@ -20,7 +20,8 @@ mut:
// XXX use volume to calculate object bounds.
// Material/Elem
elem &Elem // XXX use id/enum
//elem &Elem // XXX use id/enum
mat &Material
// Position in the world
// XXX in map cells/coords?
@ -34,7 +35,7 @@ mut:
// Object size/volume in bits
// amount of bits
bits_size int
//bits_size int
// Bits of object's voxel model
//bits [10][10]ObjectBit
@ -42,7 +43,8 @@ mut:
fn new_object() &Object {
o := &Object{
elem: &Elem(0),
//elem: &Elem(0),
mat: &Material(0),
//transform: new_transform(),
}
return o
@ -59,14 +61,22 @@ fn (o &Object) volume() f32 {
return bits_to_m3(o.bits_volume())
}
// Calc mass in kg
// Calc total mass in kg
fn (o &Object) mass() f32 {
mat_density := o.elem.density
mat_volume := o.volume()
ret := mat_density * mat_volume
mut total_mass := 0
return ret
for _, me in o.mat.elems {
mat_density := me.elem.density
mat_volume := me.bits_size
mass := mat_density * mat_volume
total_mass += mass
}
return total_mass
}
// Set size in meters